int main(int argc, char* argv[]) { char *srcFileName = 0; char *dtbFileName = 0; char *hstFileName = 0; // --- read command line parameter -------------------------------------- if (argc < 2 || argc > 4) { Help("Wong number of arguments"); return 1; } srcFileName = argv[1]; if (srcFileName == 0) { Help(); return 1; } for (int i=2; i<argc; i++) { if (argv[i][0] != '-') Help("Wrong argument"); switch (argv[i][1]) { case 'd': dtbFileName = &(argv[i][2]); break; case 'h': hstFileName = &(argv[i][2]); break; default: Help("Wong argument opti"); return 1; } } CreateTimeStamp(); // --- analyze C++ file ------------------------------------------ FILE *f; functList cmdList; CppParser parser; try { parser.Open(srcFileName); while(true) { parser.GetRpcExport(); parser.GetFunctionDecl(); cmdList.push_back(parser.GetFname() + '$' + parser.GetFparam()); printf("%s$%s\n", parser.GetFname().c_str(), parser.GetFparam().c_str()); } } catch (CPError e) { if (e.error != CPError::END_OF_FILE) { e.What(); return 1; } } parser.Close(); // --- create server functions if (dtbFileName) { f = fopen(dtbFileName, "wt"); if (!f) { printf("ERROR: could not create DTB code file\n"); return 1; } GenerateServerCodeHeader(f); GenerateServerCode(cmdList, f); GenerateServerCodeTrailer(cmdList, f); fclose(f); } // generate host functions if (hstFileName) { f = fopen(hstFileName, "wt"); if (!f) { printf("ERROR: could not create host code file\n"); return 2; } GenerateClientCodeHeader(cmdList, f); GenerateClientCode(cmdList, f); fclose(f); } // system("pause"); return 0; }