This is the verbatim text of the file ini__main.cpp part of the LLOOP package. Copyright (C) 2005-2006 ERSA. All rights reserved.
int main(int argc, char** argv)
{
if (argc != 2)
{
cerr << "Usage: " << argv[0] << " or 'selftest'" << endl;
return -1;
}
/*
if (argc == 2)
{
if ((::strcmp(argv[1], "--help") == 0) ||
(::strcmp(argv[1], "-H") == 0) ||
(::strcmp(argv[1], "-h") == 0))
{
}
}
*/
ini::Parser parser(argv[1]);
// ## Self-testing
// ##
universal::String sArg(argv[1]);
if (sArg == "selftest")
{
if (!parser.testSymbols(cout))
return -1;
return 0;
}
// ## Parsing
// ##
clock_t startstamp;
clock_t endstamp;
startstamp = clock();
parser.run();
if (parser.fail())
{
if (parser.syntaxerror())
{
parser.outputFailureContext(cerr,4);
}
parser.outputFailureMessage(cerr);
cerr << endl;
cerr << parser.getStreamName() << ": parse error." << endl;
}
endstamp = clock();
double dTime = ((double)(endstamp - startstamp))/(double)CLOCKS_PER_SEC ;
cout << "done in " << dTime << " seconds." << endl; cout.flush();
cout << "Press to expand parsed code..." << endl;
getchar();
// ## Expanding : this is the parse reverse operation
// ## Only for test purposes: It allows to check what was actually parsed.
// ##
if (!parser.fail())
{
cout << "This is what you have parsed:" << endl;
parser.root().expand(cout);
}
// ## Memory clean-up
// ##
if (!parser.fail())
{
ini::SIniFile* pRoot = &parser.root();
parser.root().factory().destroy(pRoot);
}
return 0;
}