#include <ArFileParser.h>
This class helps parse text files based on keywords followed by various values. To use it, add functors of different types of arguments with addHandler(), then call parseFile() to parse the file and invoke the various functors as items are read from the file. parseFile() returns true if there were no errors parsing and false if there were errors.
One side feature is that you can have ONE handler for the keyword NULL, and if there is a line read that isn't entirely comments or whitespace that handler will be given the line. There isn't an explicit set for them since then there'd be another set of 5 adds.
There should be some whitespace after keywords in the file, and any semicolon (;) will act as a comment with the rest of the line ignored. If no handler exists for the first word the line is passed to the handler above for NULL. You can't have any lines longer than 10000 characters or keywords longer than 512 characters (though I don't know why you'd have either). If you have more than 2048 words on a line you'll have problems as well.
Definition at line 57 of file ArFileParser.h.
Public Member Functions | |
bool | addHandler (const char *keyword, ArRetFunctor1< bool, ArArgumentBuilder * > *functor) |
Adds a functor to handle a keyword that wants an easily parsable string. | |
bool | addHandlerWithError (const char *keyword, ArRetFunctor3< bool, ArArgumentBuilder *, char *, size_t > *functor) |
Adds a functor to handle a keyword that wants an easily parsable string and returns error messages. | |
ArFileParser (const char *baseDirectory="./") | |
Constructor. | |
const char * | getBaseDirectory (void) const |
Gets the base directory. | |
bool | parseFile (FILE *file, char *buffer, int bufferLength, bool continueOnErrors=true, char *errorBuffer=NULL, size_t errorBufferLen=0) |
Parses an open file; the file is not closed by this method. | |
bool | parseFile (const char *fileName, bool continueOnErrors=true, bool noFileNotFoundMessage=false, char *errorBuffer=NULL, size_t errorBufferLen=0) |
The function to parse a file. | |
bool | parseLine (char *line, char *errorBuffer=NULL, size_t errorBufferLen=0) |
Function to parse a single line. | |
bool | remHandler (ArRetFunctor3< bool, ArArgumentBuilder *, char *, size_t > *functor) |
Removes any handlers with this functor. | |
bool | remHandler (ArRetFunctor1< bool, ArArgumentBuilder * > *functor) |
Removes any handlers with this functor. | |
bool | remHandler (const char *keyword, bool logIfCannotFind=true) |
Removes a handler for a keyword. | |
void | resetCounters (void) |
Function to reset counters. | |
void | setBaseDirectory (const char *baseDirectory) |
Sets the base directory. | |
~ArFileParser (void) | |
Destructor. | |
Protected Attributes | |
std::string | myBaseDir |
int | myLineNumber |
std::map< std::string, HandlerCBType *, ArStrCaseCmpOp > | myMap |
HandlerCBType * | myRemainderHandler |
|
Adds a functor to handle a keyword that wants an easily parsable string and returns error messages. This function has a different name than addProcessFileCB just so that if you mean to get this function but have the wrong functor you'll get an error. The rem's are the same though since that shouldn't matter. Definition at line 80 of file ArFileParser.cpp. |
|
Parses an open file; the file is not closed by this method.
Definition at line 512 of file ArFileParser.cpp. |
|
The function to parse a file.
if( setvbuf( file, buf, _IOFBF, sizeof( buf ) ) != 0 ) printf( "Incorrect type or size of buffer for file\n" ); else printf( "'file' now has a buffer of 1024 bytes\n" ); Definition at line 437 of file ArFileParser.cpp. |