static void exp2cxx_usage( void ) { fprintf( stderr, "usage: %s [-s|-S] [-a|-A] [-L] [-v] [-d # | -d 9 -l nnn -u nnn] [-n] [-p <object_type>] {-w|-i <warning>} express_file\n", EXPRESSprogram_name ); fprintf( stderr, "where\t-s or -S uses only single inheritance in the generated C++ classes\n" ); fprintf( stderr, "\t-a or -A generates the early bound access functions for entity classes the old way (without an underscore)\n" ); fprintf( stderr, "\t-L prints logging code in the generated C++ classes\n" ); fprintf( stderr, "\t-v produces the version description below\n" ); fprintf( stderr, "\t-d turns on debugging (\"-d 0\" describes this further\n" ); fprintf( stderr, "\t-p turns on printing when processing certain objects (see below)\n" ); fprintf( stderr, "\t-n do not pause for internal errors (useful with delta script)\n" ); fprintf( stderr, "\t-w warning enable\n" ); fprintf( stderr, "\t-i warning ignore\n" ); fprintf( stderr, "and <warning> is one of:\n" ); fprintf( stderr, "\tnone\n\tall\n" ); LISTdo( ERRORwarnings, opt, Error_Warning ) fprintf( stderr, "\t%s\n", opt->name ); LISTod fprintf( stderr, "and <object_type> is one or more of:\n" ); fprintf( stderr, " e entity\n" ); fprintf( stderr, " p procedure\n" ); fprintf( stderr, " r rule\n" ); fprintf( stderr, " f function\n" ); fprintf( stderr, " t type\n" ); fprintf( stderr, " s schema or file\n" ); fprintf( stderr, " # pass #\n" ); fprintf( stderr, " E everything (all of the above)\n" ); print_fedex_version(); exit( 2 ); }
static void usage( void ) { fprintf( stderr, "usage: %s [-v] [-d # | -d 9 [-l nnn | -u nnn]] [-n] [-p <object_type>] {-w|-i <warning>} express_file\n", EXPRESSprogram_name ); fprintf( stderr, "where\t-v produces the following version description:\n" ); print_fedex_version(); fprintf( stderr, "\t-d turns on debugging (\"-d 0\" describes this further\n" ); fprintf( stderr, "\t-p turns on printing when processing certain objects (see below)\n" ); fprintf( stderr, "\t-n do not pause for internal errors (useful with delta script)\n" ); fprintf( stderr, "\t-w warning enable\n" ); fprintf( stderr, "\t-i warning ignore\n" ); fprintf( stderr, "and <warning> is one of:\n" ); fprintf( stderr, "\tnone\n\tall\n" ); LISTdo( ERRORwarnings, opt, Error_Warning ) fprintf( stderr, "\t%s\n", opt->name ); LISTod fprintf( stderr, "and <object_type> is one or more of:\n" ); fprintf( stderr, " e entity\n" ); fprintf( stderr, " p procedure\n" ); fprintf( stderr, " r rule\n" ); fprintf( stderr, " f function\n" ); fprintf( stderr, " t type\n" ); fprintf( stderr, " s schema or file\n" ); fprintf( stderr, " # pass #\n" ); fprintf( stderr, " E everything (all of the above)\n" ); exit( 2 ); }
int main( int argc, char ** argv ) { int c; int rc; char * cp; int no_warnings = 1; int resolve = 1; int result; bool buffer_messages = false; Express model; EXPRESSprogram_name = argv[0]; ERRORusage_function = 0; EXPRESSinit_init(); EXPRESSinitialize(); if( EXPRESSinit_args ) { ( *EXPRESSinit_args )( argc, argv ); } sc_optind = 1; while( ( c = sc_getopt( argc, argv, EXPRESSgetopt_options ) ) != -1 ) { switch( c ) { case 'd': ERRORdebugging = 1; switch( atoi( sc_optarg ) ) { case 0: fprintf( stderr, "\ndebug codes:\n" ); fprintf( stderr, " 0 - this help\n" ); fprintf( stderr, " 1 - basic debugging\n" ); #ifdef debugging fprintf( stderr, " 4 - light malloc debugging\n" ); fprintf( stderr, " 5 - heavy malloc debugging\n" ); fprintf( stderr, " 6 - heavy malloc debugging while resolving\n" ); #endif /* debugging*/ #ifdef YYDEBUG fprintf( stderr, " 8 - set YYDEBUG\n" ); #endif /*YYDEBUG*/ break; case 1: debug = 1; break; #ifdef debugging case 4: malloc_debug( 1 ); break; case 5: malloc_debug( 2 ); break; case 6: malloc_debug_resolve = 1; break; #endif /*debugging*/ #ifdef YYDEBUG case 8: exp_yydebug = 1; break; #endif /* YYDEBUG */ } break; case 'B': buffer_messages = true; break; case 'b': buffer_messages = false; break; case 'e': input_filename = sc_optarg; break; case 'r': resolve = 0; break; case 'i': case 'w': no_warnings = 0; ERRORset_warning( sc_optarg, c == 'w' ); break; case 'p': for( cp = sc_optarg; *cp; cp++ ) { if( *cp == '#' ) { print_objects_while_running |= OBJ_PASS_BITS; } else if( *cp == 'E' ) { print_objects_while_running = OBJ_ANYTHING_BITS; } else { print_objects_while_running |= OBJget_bits( *cp ); } } break; case 'v': print_fedex_version(); no_need_to_work = 1; break; default: rc = 1; if( EXPRESSgetopt ) { rc = ( *EXPRESSgetopt )( c, sc_optarg ); } if( rc == 1 ) { if( ERRORusage_function ) { ( *ERRORusage_function )(); } else { EXPRESSusage(1); } } break; } } if( !input_filename ) { input_filename = argv[sc_optind]; if( !input_filename ) { EXPRESScleanup(); if( no_need_to_work ) { return( 0 ); } else { ( *ERRORusage_function )(); } } } if( no_warnings ) { ERRORset_all_warnings( 1 ); } ERRORbuffer_messages( buffer_messages ); if( EXPRESSinit_parse ) { ( *EXPRESSinit_parse )(); } model = EXPRESScreate(); EXPRESSparse( model, ( FILE * )0, input_filename ); if( ERRORoccurred ) { result = EXPRESS_fail( model ); EXPRESScleanup(); EXPRESSdestroy( model ); return result; } #ifdef debugging if( malloc_debug_resolve ) { malloc_verify(); malloc_debug( 2 ); } #endif /*debugging*/ if( resolve ) { EXPRESSresolve( model ); if( ERRORoccurred ) { result = EXPRESS_fail( model ); EXPRESScleanup(); EXPRESSdestroy( model ); return result; } } if( EXPRESSbackend ) { ( *EXPRESSbackend )( model ); } if( ERRORoccurred ) { result = EXPRESS_fail( model ); EXPRESScleanup(); EXPRESSdestroy( model ); return result; } result = EXPRESS_succeed( model ); EXPRESScleanup(); EXPRESSdestroy( model ); return result; }
int main( int argc, char ** argv ) { int c; int rc; char * cp; int no_warnings = 1; int resolve = 1; bool buffer_messages = false; char * filename = 0; Express model; EXPRESSprogram_name = argv[0]; ERRORusage_function = usage; #ifdef YYDEBUG yydebug = 0; #endif EXPRESSinit_init(); EXPRESSinitialize(); if( EXPRESSinit_args ) { ( *EXPRESSinit_args )( argc, argv ); } optind = 1; while( ( c = getopt( argc, argv, EXPRESSgetopt_options ) ) != -1 ) switch( c ) { case 'd': ERRORdebugging = 1; switch( atoi( optarg ) ) { case 0: fprintf( stderr, "\ndebug codes:\n" ); fprintf( stderr, " 0 - this help\n" ); fprintf( stderr, " 1 - basic debugging\n" ); #ifdef debugging fprintf( stderr, " 4 - light malloc debugging\n" ); fprintf( stderr, " 5 - heavy malloc debugging\n" ); fprintf( stderr, " 6 - heavy malloc debugging while resolving\n" ); #endif /* debugging*/ #ifdef YYDEBUG fprintf( stderr, " 8 - set yydebug\n" ); fprintf( stderr, " 9 - set yydebug selectively, must use -u and/or -l. Also increases verbosity for some errors\n" ); fprintf( stderr, "-u nnn: upper line limit\n" ); fprintf( stderr, "-l nnn: lower line limit\n" ); #endif /*YYDEBUG*/ break; case 1: debug = 1; break; #ifdef debugging case 4: malloc_debug( 1 ); break; case 5: malloc_debug( 2 ); break; case 6: malloc_debug_resolve = 1; break; #endif /*debugging*/ #ifdef YYDEBUG case 8: yydebug = 1; break; case 9: yydbg_verbose = true; //yydebug gets set in expscan.l when in the line range set by -l and -u break; #endif /* YYDEBUG */ } break; #ifdef YYDEBUG case 'u': yydbg_upper_limit = atoi( optarg ); break; case 'l': yydbg_lower_limit = atoi( optarg ); break; #endif /* YYDEBUG */ case 'B': buffer_messages = true; break; case 'b': buffer_messages = false; break; case 'e': filename = optarg; break; case 'n': skip_exp_pause = true; break; case 'r': resolve = 0; break; case 'i': case 'w': no_warnings = 0; ERRORset_warning( optarg, c == 'w' ); break; case 'p': for( cp = optarg; *cp; cp++ ) { if( *cp == '#' ) { print_objects_while_running |= OBJ_PASS_BITS; } else if( *cp == 'E' ) { print_objects_while_running = OBJ_ANYTHING_BITS; } else { print_objects_while_running |= OBJget_bits( *cp ); } } break; case 'v': print_fedex_version(); break; case 'z': /* to allow user to attach debugger and continue */ printf( "pid = %d\n", getpid() ); #ifndef __WIN32__ pause(); #else //windows getchar(); abort(); #endif break; default: rc = 1; if( EXPRESSgetopt ) { rc = ( *EXPRESSgetopt )( c, optarg ); } if( rc == 1 ) { ( *ERRORusage_function )(); } break; } if( !filename ) { filename = argv[optind]; if( !filename ) { if( no_need_to_work ) { return( 0 ); } else { ( *ERRORusage_function )(); } } } if( no_warnings ) { ERRORset_all_warnings( 1 ); } ERRORbuffer_messages( buffer_messages ); if( EXPRESSinit_parse ) { ( *EXPRESSinit_parse )(); } model = EXPRESScreate(); EXPRESSparse( model, ( FILE * )0, filename ); if( ERRORoccurred ) { return( EXPRESS_fail( model ) ); } #ifdef debugging if( malloc_debug_resolve ) { malloc_verify(); malloc_debug( 2 ); } #endif /*debugging*/ if( resolve ) { EXPRESSresolve( model ); if( ERRORoccurred ) { return( EXPRESS_fail( model ) ); } } if( EXPRESSbackend ) { ( *EXPRESSbackend )( model ); } if( ERRORoccurred ) { return( EXPRESS_fail( model ) ); } return( EXPRESS_succeed( model ) ); }