makefile adjustments

[SVN r9396]
This commit is contained in:
John Maddock
2001-03-03 11:37:50 +00:00
parent db6b4db44d
commit 831160baa2
6 changed files with 132 additions and 76 deletions

View File

@ -1,20 +0,0 @@
# Makefile for timer application
#
# for SUN workshop 5.0 C++ compiler
#
CXX=CC
CPP_FLAGS = -O -I../../../../ -I./
%.o : %.cpp
$(CXX) -c -o $@ $(CPP_FLAGS) $<
jgrep : jgrep.o main.o
$(CXX) -o $@ $(CPP_FLAGS) jgrep.o main.o -L../../lib -lregex++
clean:
rm -rf SunWS_cache
rm -f jgrep.o jgrep main.o

View File

@ -1,29 +0,0 @@
# Makefile for timer application
#
# for SUN workshop 5.0 C++ compiler
#
CXX=CC
CPP_FLAGS = -O -I../../../../ -I./
all: r2 r5
r2 tests.txt
r5 tests.txt
%.o : %.cpp
$(CXX) -c -o $@ $(CPP_FLAGS) $<
r2 : tests.cpp parse.cpp regress.cpp
$(CXX) -o $@ $(CPP_FLAGS) tests.cpp parse.cpp regress.cpp -L../../lib -lregex++
r5 : tests.cpp parse.cpp regress.cpp
$(CXX) -o $@ $(CPP_FLAGS) -DTEST_UNICODE tests.cpp parse.cpp regress.cpp -L../../lib -lregex++
clean:
rm -rf SunWS_cache
rm -f r2.o r2 r5 r5.o

View File

@ -0,0 +1,82 @@
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <boost/regex.hpp>
// match some kind of html tag:
boost::regex e("<[^>]*>");
// count how many:
unsigned int tags = 0;
// saved position of partial match:
char* next_pos = 0;
bool grep_callback(const boost::match_results<char*>& m)
{
if(m[0].matched == false)
{
// save position and return:
next_pos = m[0].first;
}
else
++tags;
return true;
}
void search(std::istream& is)
{
char buf[4096];
next_pos = buf + sizeof(buf);
bool have_more = true;
while(have_more)
{
// how much do we copy forward from last try:
unsigned leftover = (buf + sizeof(buf)) - next_pos;
// and how much is left to fill:
unsigned size = next_pos - buf;
// copy forward whatever we have left:
memcpy(buf, next_pos, leftover);
// fill the rest from the stream:
unsigned read = is.readsome(buf + leftover, size);
// check to see if we've run out of text:
have_more = read == size;
// reset next_pos:
next_pos = buf + sizeof(buf);
// and then grep:
boost::regex_grep(grep_callback,
buf,
buf + read + leftover,
e,
boost::match_default | boost::match_partial);
}
}
int main(int argc, char* argv[])
{
if(argc > 1)
{
for(unsigned int i = 1; i < argc; ++i)
{
std::ifstream fs(argv[i]);
if(fs.bad()) continue;
search(fs);
}
}
else
{
std::string one("<META NAME=\"keywords\" CONTENT=\"regex++, regular expressions, regular expression library, C++\">");
std::string what;
while(what.size() < 10000)
{
what.append(one);
what.append(13, ' ');
}
std::stringstream ss;
ss.str(what);
search(ss);
}
std::cout << "total tag count was " << tags << std::endl;
return 0;
}

View File

@ -0,0 +1,46 @@
#include <string>
#include <iostream>
#include <boost/regex.hpp>
boost::regex e("(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})");
bool is_possible_card_number(const std::string& input)
{
//
// return false for partial match, true for full match, or throw for
// impossible match based on what we have so far...
boost::match_results<std::string::const_iterator> what;
if(0 == boost::regex_match(input, what, e, boost::match_default | boost::match_partial))
{
// the input so far could not possibly be valid so reject it:
throw std::runtime_error("Invalid data entered - this could not possibly be a valid card number");
}
// OK so far so good, but have we finished?
if(what[0].matched)
{
// excellent, we have a result:
return true;
}
// what we have so far is only a partial match...
return false;
}
int main(int argc, char* argv[])
{
try{
std::string input;
std::cin >> input;
if(is_possible_card_number(input))
{
std::cout << "Matched OK..." << std::endl;
}
else
std::cout << "Got a partial match..." << std::endl;
}
catch(const std::exception& e)
{
std::cout << e.what() << std::endl;
}
return 0;
}

View File

@ -3,13 +3,14 @@
# #
# GNU compiler GCC # GNU compiler GCC
# #
CXX=-I../../../../ -I./ CXX= $(INCLUDES) -I../../../../ -I./ $(CXXFLAGS)
timer : regex_timer.cpp timer : regex_timer.cpp
g++ $(CXX) -O2 -o timer regex_timer.cpp -L../../lib/gcc -lregex++ g++ $(CXX) -O2 -o timer regex_timer.cpp -L../../lib/gcc $(LDFLAGS) -lregex++ $(LIBS)
debug : regex_timer.cpp timer.cpp debug : regex_timer.cpp timer.cpp
g++ $(CXX) -g -o timer regex_timer.cpp -L../../lib/gcc -lregex++debug g++ $(CXX) -g -o timer regex_timer.cpp -L../../lib/gcc $(LDFLAGS) -lregex++debug $(LIBS)

View File

@ -1,24 +0,0 @@
# Makefile for timer application
#
# for SUN workshop 5.0 C++ compiler
#
CXX=CC
CPP_FLAGS = -O -I../../../../ -I./
%.o : %.cpp
$(CXX) -c -o $@ $(CPP_FLAGS) $<
timer : regex_timer.o
$(CXX) -o $@ $(CPP_FLAGS) regex_timer.o -L../../lib -lregex++
timer.o : ../../../timer/timer.cpp
$(CXX) -c $(CPPFLAGS) ../../../timer/timer.cpp
clean:
rm -rf SunWS_cache
rm -f timer.o timer