00001 #include <string>
00002 #include <sstream>
00003
00004 #ifndef FATALMIND_INCLUDE_CSVLEXER
00005 #undef yyFlexLexer
00006 #define yyFlexLexer csvFlexLexer
00007 #include <FlexLexer.h>
00008 #endif
00009
00010 namespace fatalmind {
00011
00012 class csv: public csvFlexLexer {
00013 public:
00014 csv(std::istream& a_in);
00015 virtual ~csv() {
00016 }
00017 void parse();
00018
00019 virtual void endRecord(int f, int r, int l, const std::ostringstream&) {
00020 };
00021 virtual void endFile(int f) {
00022 };
00023 virtual void field(int field,int r, const std::ostringstream&) = 0;
00024 int getRecords() {
00025 return r;
00026 };
00027 int getLines() {
00028 return l;
00029 }
00030 private:
00031 int yylex ();
00032 void field_found();
00033 void endRecord_found();
00034
00035 std::ostringstream os;
00036 int l;
00037 int f;
00038 int r;
00039 std::ostringstream record;
00040 };
00041
00042 }
00043
00044
00045 extern "C" {
00046 inline int csvwrap() {
00047 return 1;
00048 }
00049 }
00050
00051