Changeset 15275
- Timestamp:
- 2013-02-22T13:28:51+01:00 (11 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Compiler/runtime/systemimpl.c
r15269 r15275 2096 2096 cur += snprintf(cur, 8191-(buf-cur), "<-%s>\n %s\n", FLAG_NAME[i], desc[i]); 2097 2097 } else if (FLAG_TYPE[i] == FLAG_TYPE_OPTION) { 2098 cur += snprintf(cur, 8191-(buf-cur), "<-%s=value>\n %s\n", FLAG_NAME[i], desc[i]); 2099 } else if (FLAG_TYPE[i] == FLAG_TYPE_FLAG_VALUE) { 2100 cur += snprintf(cur, 8191-(buf-cur), "<-%s value>\n %s\n", FLAG_NAME[i], desc[i]); 2098 cur += snprintf(cur, 8191-(buf-cur), "<-%s=value> or <-%s value>\n %s\n", FLAG_NAME[i], FLAG_NAME[i], desc[i]); 2101 2099 } else { 2102 2100 cur += snprintf(cur, 8191-(buf-cur), "[unknown flag-type] <-%s>\n", FLAG_NAME[i]); -
trunk/SimulationRuntime/c/simulation/options.c
r15253 r15275 35 35 #include <stdio.h> 36 36 37 int flagSet(const char*, int, char**); /* -f */ 38 int optionSet(const char *option, int argc, char** argv); /* -f=value */ 39 const char* getOption(const char*, int, char **); /* -f=value; returns NULL if not found */ 40 const char* getFlagValue(const char *, int , char **); /* -f value; returns NULL if not found */ 41 42 int omc_flag[FLAG_MAX]; 43 char *omc_flagValue[FLAG_MAX]; 44 37 45 int checkCommandLineArguments(int argc, char **argv) 38 46 { 39 47 int i,j; 48 49 /* This works not that well - but is probably better than no check */ 50 ASSERT(!strcmp(FLAG_NAME[FLAG_MAX], "FLAG_MAX"), "unbalanced command line flag structure: FLAG_NAME"); 51 ASSERT(!strcmp(FLAG_DESC[FLAG_MAX], "FLAG_MAX"), "unbalanced command line flag structure: FLAG_DESC"); 52 ASSERT(!strcmp(FLAG_DETAILED_DESC[FLAG_MAX], "FLAG_MAX"), "unbalanced command line flag structure: FLAG_DETAILED_DESC"); 53 54 for(i=0; i<FLAG_MAX; ++i) 55 { 56 omc_flag[i] = 0; 57 omc_flagValue[i] = NULL; 58 } 59 60 #ifdef USE_DEBUG_OUTPUT 61 DEBUG(LOG_STDOUT, "used command line options"); 62 INDENT(LOG_STDOUT); 40 63 for(i=1; i<argc; ++i) 41 { 64 DEBUG1(LOG_STDOUT, "%s", argv[i]); 65 RELEASE(LOG_STDOUT); 66 67 DEBUG(LOG_STDOUT, "interpreted command line options"); 68 #endif 69 70 for(i=1; i<argc; ++i) 71 { 42 72 int found=0; 73 43 74 for(j=1; j<FLAG_MAX; ++j) 44 75 { 45 if (((FLAG_TYPE[j] == FLAG_TYPE_FLAG) && flagSet(FLAG_NAME[j],1,argv+i)) || 46 ((FLAG_TYPE[j] == FLAG_TYPE_FLAG_VALUE) && flagSet(FLAG_NAME[j],1,argv+i) && (++i < argc)) || 47 ((FLAG_TYPE[j] == FLAG_TYPE_OPTION) && optionSet(FLAG_NAME[j],1,argv+i))) { 76 if ((FLAG_TYPE[j] == FLAG_TYPE_FLAG) && flagSet(FLAG_NAME[j], 1, argv+i)) 77 { 78 if(omc_flag[j]) 79 { 80 WARNING1(LOG_STDOUT, "each command line option can only be used once: %s", argv[i]); 81 return 1; 82 } 83 84 omc_flag[j] = 1; 48 85 found=1; 86 87 #ifdef USE_DEBUG_OUTPUT 88 INDENT(LOG_STDOUT); 89 DEBUG1(LOG_STDOUT, "-%s", FLAG_NAME[j]); 90 RELEASE(LOG_STDOUT); 91 #endif 92 93 break; 94 } 95 else if((FLAG_TYPE[j] == FLAG_TYPE_OPTION) && flagSet(FLAG_NAME[j], 1, argv+i) && (i+1 < argc)) 96 { 97 if(omc_flag[j]) 98 { 99 WARNING1(LOG_STDOUT, "each command line option can only be used once: %s", argv[i]); 100 return 1; 101 } 102 103 omc_flag[j] = 1; 104 omc_flagValue[j] = (char*)getFlagValue(FLAG_NAME[j], 1, argv+i); 105 i++; 106 found=1; 107 108 #ifdef USE_DEBUG_OUTPUT 109 INDENT(LOG_STDOUT); 110 DEBUG2(LOG_STDOUT, "-%s %s", FLAG_NAME[j], omc_flagValue[j]); 111 RELEASE(LOG_STDOUT); 112 #endif 113 114 break; 115 } 116 else if((FLAG_TYPE[j] == FLAG_TYPE_OPTION) && optionSet(FLAG_NAME[j], 1, argv+i)) 117 { 118 if(omc_flag[j]) 119 { 120 WARNING1(LOG_STDOUT, "each command line option can only be used once: %s", argv[i]); 121 return 1; 122 } 123 124 omc_flag[j] = 1; 125 omc_flagValue[j] = (char*)getOption(FLAG_NAME[j], 1, argv+i); 126 found=1; 127 128 #ifdef USE_DEBUG_OUTPUT 129 INDENT(LOG_STDOUT); 130 DEBUG2(LOG_STDOUT, "-%s=%s", FLAG_NAME[j], omc_flagValue[j]); 131 RELEASE(LOG_STDOUT); 132 #endif 49 133 break; 50 134 } 51 135 } 52 if (!found) { 136 137 if(!found) 138 { 53 139 WARNING1(LOG_STDOUT, "invalid command line option: %s", argv[i]); 54 140 return 1; … … 62 148 { 63 149 int i; 64 for (i=0; i<argc;i++)150 for(i=0; i<argc; i++) 65 151 { 66 if (argv[i][0] == '-' && 0==strcmp(option,argv[i]+1))152 if((argv[i][0] == '-') && (0 == strcmp(option, argv[i]+1))) 67 153 return 1; 68 154 } … … 70 156 } 71 157 158 int helpFlagSet(int argc, char** argv) 159 { 160 return flagSet("?", argc, argv) || flagSet("help", argc, argv); 161 } 162 72 163 int optionSet(const char *option, int argc, char** argv) 73 164 { 74 return getOption(option, argc,argv) != NULL;165 return getOption(option, argc, argv) != NULL; 75 166 } 76 167 … … 79 170 { 80 171 int optLen = strlen(option), i; 81 for (i=0; i<argc;i++) {82 if (argv[i][0] == '-' && 0==strncmp(option,argv[i]+1,optLen) && argv[i][optLen+1]=='='){83 return argv[i]+optLen+2;84 }172 for(i=0; i<argc; i++) 173 { 174 if((argv[i][0] == '-') && (0 == strncmp(option, argv[i]+1, optLen)) && (argv[i][optLen+1] == '=')) 175 return argv[i] + optLen + 2; 85 176 } 86 177 return NULL; … … 91 182 { 92 183 int i; 93 for(i=0; i<argc -1;i++)184 for(i=0; i<argc; i++) 94 185 { 95 if (argv[i][0] == '-' && 0==strcmp(option,argv[i]+1))186 if((argv[i][0] == '-') && (0 == strcmp(option, argv[i]+1))) 96 187 return argv[i+1]; 97 188 } -
trunk/SimulationRuntime/c/simulation/options.h
r15253 r15275 36 36 37 37 #ifdef __cplusplus 38 extern "C" {38 extern "C" { 39 39 #endif 40 41 extern int omc_flag[FLAG_MAX]; 42 extern char *omc_flagValue[FLAG_MAX]; 43 44 int helpFlagSet(int argc, char** argv); 40 45 int checkCommandLineArguments(int argc, char **argv); 41 46 42 int flagSet(const char*, int, char**); /* -f */43 int optionSet(const char *option, int argc, char** argv); /* -f=value */44 const char* getOption(const char*, int, char **); /* -f=value; returns NULL if not found */45 const char* getFlagValue(const char *, int , char **); /* -f value; returns NULL if not found */46 47 #ifdef __cplusplus 47 }48 } 48 49 #endif 49 50 -
trunk/SimulationRuntime/c/simulation/simulation_input_xml.cpp
r15268 r15275 222 222 223 223 /* read the filename from the command line (if any) */ 224 if (optionSet("f",argc,argv)) {225 filename = getOption("f",argc,argv);224 if(omc_flag[FLAG_F]) { 225 filename = omc_flagValue[FLAG_F]; 226 226 } else { 227 227 /* no file given on the command line? use the default */ … … 284 284 285 285 // deal with override 286 const char* override = getFlagValue("override", argc, argv);287 const char* overrideFile = getFlagValue("overrideFile", argc, argv);286 const char* override = omc_flagValue[FLAG_OVERRIDE]; 287 const char* overrideFile = omc_flagValue[FLAG_OVERRIDE_FILE]; 288 288 doOverride(mi, modelData, override, overrideFile); 289 289 -
trunk/SimulationRuntime/c/simulation/simulation_runtime.cpp
r15259 r15275 156 156 void setGlobalVerboseLevel(int argc, char**argv) 157 157 { 158 const char *cflags = getOption("lv", argc, argv);158 const char *cflags = omc_flagValue[FLAG_LV]; 159 159 const string *flags = cflags ? new string(cflags) : NULL; 160 160 int i; 161 161 int error; 162 162 163 if( flagSet("w", argc, argv))163 if(omc_flag[FLAG_W]) 164 164 showAllWarnings = 1; 165 165 … … 251 251 int getNonlinearSolverMethod(int argc, char**argv) 252 252 { 253 const char *cflags = getOption("nls", argc, argv);253 const char *cflags = omc_flagValue[FLAG_NLS]; 254 254 const string *method = cflags ? new string(cflags) : NULL; 255 255 … … 276 276 int getlinearSolverMethod(int argc, char**argv) 277 277 { 278 const char *cflags = getOption("ls", argc, argv);278 const char *cflags = omc_flagValue[FLAG_LS]; 279 279 const string *method = cflags ? new string(cflags) : NULL; 280 280 … … 385 385 386 386 /* linear model option is set : <-l lintime> */ 387 int create_linearmodel = o ptionSet("l", argc, argv);388 const char* lintime = getOption("l", argc, argv);387 int create_linearmodel = omc_flag[FLAG_L]; 388 const char* lintime = omc_flagValue[FLAG_L]; 389 389 390 390 /* activated measure time option with LOG_STATS */ 391 if( (ACTIVE_STREAM(LOG_STATS) || flagSet("cpu", argc, argv))&& !measure_time_flag)391 if(ACTIVE_STREAM(LOG_STATS) || omc_flag[FLAG_CPU] && !measure_time_flag) 392 392 { 393 393 measure_time_flag = 1; … … 401 401 enum omc_rt_clock_t clock = OMC_CLOCK_REALTIME; 402 402 const char *clockName; 403 if (clockName= getOption("clock",argc,argv)) {404 if (0==strcmp(clockName, "CPU")) {403 if (clockName=omc_flagValue[FLAG_CLOCK]) { 404 if (0==strcmp(clockName, "CPU")) { 405 405 clock = OMC_CLOCK_CPUTIME; 406 } else if (0==strcmp(clockName, "RT")) {406 } else if (0==strcmp(clockName, "RT")) { 407 407 clock = OMC_CLOCK_REALTIME; 408 408 } else { … … 435 435 } 436 436 437 if(o ptionSet("s", argc, argv))438 { 439 const string *method = new string( getOption("s", argc, argv));437 if(omc_flag[FLAG_S]) 438 { 439 const string *method = new string(omc_flagValue[FLAG_S]); 440 440 if(method) 441 441 { … … 446 446 447 447 // Create a result file 448 const char *result_file = getOption("r", argc, argv);448 const char *result_file = omc_flagValue[FLAG_R]; 449 449 string result_file_cstr; 450 450 if(!result_file) … … 461 461 int init_lambda_steps = 5; 462 462 string outputVariablesAtEnd = ""; 463 int cpuTime = flagSet("cpu", argc, argv); 464 465 if(optionSet("iim", argc, argv)) { 466 init_initMethod = getOption("iim", argc, argv); 467 } 468 if(optionSet("iom", argc, argv)) { 469 init_optiMethod = getOption("iom", argc, argv); 470 } 471 if(optionSet("iif", argc, argv)) { 472 init_file = getOption("iif", argc, argv); 473 } 474 if(optionSet("iit", argc, argv)) 475 { 476 init_time_string = getOption("iit", argc, argv); 463 int cpuTime = omc_flag[FLAG_CPU]; 464 465 if(omc_flag[FLAG_IIM]) 466 { 467 init_initMethod = omc_flagValue[FLAG_IIM]; 468 } 469 if(omc_flag[FLAG_IOM]) 470 { 471 init_optiMethod = omc_flagValue[FLAG_IOM]; 472 } 473 if(omc_flag[FLAG_IIF]) 474 { 475 init_file = omc_flagValue[FLAG_IIF]; 476 } 477 if(omc_flag[FLAG_IIT]) 478 { 479 init_time_string = omc_flagValue[FLAG_IIT]; 477 480 init_time = atof(init_time_string.c_str()); 478 481 } 479 if(o ptionSet("ils", argc, argv))480 { 481 init_lambda_steps_string = getOption("ils", argc, argv);482 if(omc_flag[FLAG_ILS]) 483 { 484 init_lambda_steps_string = omc_flagValue[FLAG_ILS]; 482 485 init_lambda_steps = atoi(init_lambda_steps_string.c_str()); 483 486 } 484 485 if(flagSet("output", argc, argv)){486 outputVariablesAtEnd = getFlagValue("output", argc, argv);487 if(omc_flag[FLAG_OUTPUT]) 488 { 489 outputVariablesAtEnd = omc_flagValue[FLAG_OUTPUT]; 487 490 } 488 491 … … 512 515 const string plotFile = string(data->modelData.modelFilePrefix) + "_prof.plt"; 513 516 rt_accumulate(SIM_TIMER_TOTAL); 514 const char* plotFormat = getOption("measureTimePlotFormat", argc, argv);517 const char* plotFormat = omc_flagValue[FLAG_MEASURETIMEPLOTFORMAT]; 515 518 retVal = printModelInfo(data, modelInfo.c_str(), plotFile.c_str(), plotFormat ? plotFormat : "svg", 516 519 data->simulationInfo.solverMethod, data->simulationInfo.outputFormat, result_file_cstr.c_str()) && retVal; … … 665 668 initDumpSystem(); 666 669 667 if( flagSet("?", argc, argv) || flagSet("help",argc, argv) || checkCommandLineArguments(argc, argv))670 if(helpFlagSet(argc, argv) || checkCommandLineArguments(argc, argv)) 668 671 { 669 672 INFO1(LOG_STDOUT, "usage: %s", argv[0]); … … 675 678 INFO2(LOG_STDOUT, "<-%s>\n %s", FLAG_NAME[i], FLAG_DESC[i]); 676 679 else if(FLAG_TYPE[i] == FLAG_TYPE_OPTION) 677 INFO2(LOG_STDOUT, "<-%s=value>\n %s", FLAG_NAME[i], FLAG_DESC[i]); 678 else if(FLAG_TYPE[i] == FLAG_TYPE_FLAG_VALUE) 679 INFO2(LOG_STDOUT, "<-%s value>\n %s", FLAG_NAME[i], FLAG_DESC[i]); 680 INFO3(LOG_STDOUT, "<-%s=value> or <-%s value>\n %s", FLAG_NAME[i], FLAG_NAME[i], FLAG_DESC[i]); 680 681 else 681 682 WARNING1(LOG_STDOUT, "[unknown flag-type] <-%s>", FLAG_NAME[i]); … … 686 687 } 687 688 688 if(o ptionSet("help", argc, argv))689 { 690 std::string option = getOption("help", argc, argv);689 if(omc_flag[FLAG_HELP]) 690 { 691 std::string option = omc_flagValue[FLAG_HELP]; 691 692 692 693 for(i=1; i<FLAG_MAX; ++i) … … 697 698 INFO2(LOG_STDOUT, "detaild flag-description for: <-%s>\n%s", FLAG_NAME[i], FLAG_DETAILED_DESC[i]); 698 699 else if(FLAG_TYPE[i] == FLAG_TYPE_OPTION) 699 INFO2(LOG_STDOUT, "detaild flag-description for: <-%s=value>\n%s", FLAG_NAME[i], FLAG_DETAILED_DESC[i]); 700 else if(FLAG_TYPE[i] == FLAG_TYPE_FLAG_VALUE) 701 INFO2(LOG_STDOUT, "detaild flag-description for: <-%s value>\n%s", FLAG_NAME[i], FLAG_DETAILED_DESC[i]); 700 INFO3(LOG_STDOUT, "detaild flag-description for: <-%s=value> or <-%s value>\n%s", FLAG_NAME[i], FLAG_NAME[i], FLAG_DETAILED_DESC[i]); 702 701 else 703 702 WARNING1(LOG_STDOUT, "[unknown flag-type] <-%s>", FLAG_NAME[i]); … … 751 750 } 752 751 753 /* verbose flag is set : -v */ 754 if(flagSet("v", argc, argv)) 755 useStream[LOG_STATS] = 1; 756 sim_noemit = flagSet("noemit", argc, argv); 757 752 sim_noemit = omc_flag[FLAG_NOEMIT]; 758 753 759 754 // ppriv - NO_INTERACTIVE_DEPENDENCY - for simpler debugging in Visual Studio 760 755 761 756 #ifndef NO_INTERACTIVE_DEPENDENCY 762 interactiveSimulation = flagSet("interactive", argc, argv); 763 if(interactiveSimulation && flagSet("port", argc, argv)) { 757 interactiveSimulation = omc_flag[FLAG_INTERACTIVE]; 758 if(interactiveSimulation && omc_flag[FLAG_PORT]) 759 { 764 760 cout << "userPort" << endl; 765 const char *portvalue = getOption("port", argc, argv); 766 std::istringstream stream(portvalue); 761 std::istringstream stream(omc_flagValue[FLAG_PORT]); 767 762 int userPort; 768 763 stream >> userPort; 769 764 setPortOfControlServer(userPort); 770 } else if(!interactiveSimulation && flagSet("port", argc, argv))771 {772 const char *portvalue = getOption("port", argc, argv);773 std::istringstream stream( portvalue);765 } 766 else if(!interactiveSimulation && omc_flag[FLAG_PORT]) 767 { 768 std::istringstream stream(omc_flagValue[FLAG_PORT]); 774 769 int port; 775 770 stream >> port; -
trunk/SimulationRuntime/c/util/simulation_options.c
r15253 r15275 31 31 #include "simulation_options.h" 32 32 33 const char *FLAG_NAME[FLAG_MAX] = { 34 "LOG_UNKNOWN", 33 const char *FLAG_NAME[FLAG_MAX+1] = { 34 "FLAG_UNKNOWN", 35 35 36 /* FLAG_CLOCK */ "clock", 36 37 /* FLAG_CPU */ "cpu", … … 44 45 /* FLAG_IOM */ "iom", 45 46 /* FLAG_L */ "l", 47 /* FLAG_LS */ "ls", 46 48 /* FLAG_LV */ "lv", 47 49 /* FLAG_MEASURETIMEPLOTFORMAT */ "measureTimePlotFormat", … … 54 56 /* FLAG_R */ "r", 55 57 /* FLAG_S */ "s", 56 /* FLAG_W */ "w" 58 /* FLAG_W */ "w", 59 60 "FLAG_MAX" 57 61 }; 58 62 59 const char *FLAG_DESC[FLAG_MAX ] = {63 const char *FLAG_DESC[FLAG_MAX+1] = { 60 64 "unknown", 65 61 66 /* FLAG_CLOCK */ "selects the type of clock to use -clock=RT or -clock=CPU", 62 67 /* FLAG_CPU */ "dumps the cpu-time into the results-file", … … 70 75 /* FLAG_IOM */ "value specifies the initialization optimization method", 71 76 /* FLAG_L */ "value specifies a time where the linearization of the model should be performed", 77 /* FLAG_LS */ "value specifies the linear solver method", 72 78 /* FLAG_LV */ "[string list] value specifies the logging level", 73 79 /* FLAG_MEASURETIMEPLOTFORMAT */ "value specifies the output format of the measure time functionality", … … 80 86 /* FLAG_R */ "value specifies a new result file than the default Model_res.mat", 81 87 /* FLAG_S */ "value specifies the solver", 82 /* FLAG_W */ "shows all warnings even if a related log-stream is inactive" 88 /* FLAG_W */ "shows all warnings even if a related log-stream is inactive", 89 90 "FLAG_MAX" 83 91 }; 84 92 85 const char *FLAG_DETAILED_DESC[FLAG_MAX ] = {93 const char *FLAG_DETAILED_DESC[FLAG_MAX+1] = { 86 94 "unknown", 87 95 … … 97 105 /* FLAG_IOM */ "value specifies the initialization optimization method\n nelder_mead_ex\n nelder_mead_ex2\n simplex\n newuoa", 98 106 /* FLAG_L */ "value specifies a time where the linearization of the model should be performed", 107 /* FLAG_LS */ "value specifies the linear solver method\n lapack", 99 108 /* FLAG_LV */ "value specifies the logging level", 100 109 /* FLAG_MEASURETIMEPLOTFORMAT */ "value specifies the output format of the measure time functionality\n svg\n jpg\n ps\n gif\n ...", … … 107 116 /* FLAG_R */ "value specifies a new result file than the default Model_res.mat", 108 117 /* FLAG_S */ "value specifies the solver\n dassl\n euler\n rungekutta\n inline-euler\n inline-rungekutta\n dasslwort\n dasslSymJac\n dasslNumJac\n dasslColorSymJac\n dasslInternalNumJac\n qss", 109 /* FLAG_W */ "shows all warnings even if a related log-stream is inactive" 118 /* FLAG_W */ "shows all warnings even if a related log-stream is inactive", 119 120 "FLAG_MAX" 110 121 }; 111 122 … … 124 135 /* FLAG_IOM */ FLAG_TYPE_OPTION, 125 136 /* FLAG_L */ FLAG_TYPE_OPTION, 137 /* FLAG_LS */ FLAG_TYPE_OPTION, 126 138 /* FLAG_LV */ FLAG_TYPE_OPTION, 127 139 /* FLAG_MEASURETIMEPLOTFORMAT */ FLAG_TYPE_OPTION, 128 140 /* FLAG_NLS */ FLAG_TYPE_OPTION, 129 141 /* FLAG_NOEMIT */ FLAG_TYPE_FLAG, 130 /* FLAG_OUTPUT */ FLAG_TYPE_ FLAG_VALUE,131 /* FLAG_OVERRIDE */ FLAG_TYPE_ FLAG_VALUE,132 /* FLAG_OVERRIDE_FILE */ FLAG_TYPE_ FLAG_VALUE,142 /* FLAG_OUTPUT */ FLAG_TYPE_OPTION, 143 /* FLAG_OVERRIDE */ FLAG_TYPE_OPTION, 144 /* FLAG_OVERRIDE_FILE */ FLAG_TYPE_OPTION, 133 145 /* FLAG_PORT */ FLAG_TYPE_OPTION, 134 146 /* FLAG_R */ FLAG_TYPE_OPTION, … … 136 148 /* FLAG_W */ FLAG_TYPE_FLAG 137 149 }; 138 139 -
trunk/SimulationRuntime/c/util/simulation_options.h
r15253 r15275 34 34 35 35 #if defined(__cplusplus) 36 extern "C" {36 extern "C" { 37 37 #endif 38 38 … … 52 52 FLAG_IOM, 53 53 FLAG_L, 54 FLAG_LS, 54 55 FLAG_LV, 55 56 FLAG_MEASURETIMEPLOTFORMAT, … … 72 73 73 74 FLAG_TYPE_FLAG, /* e.g. -f */ 74 FLAG_TYPE_OPTION, /* e.g. -f=value */ 75 FLAG_TYPE_FLAG_VALUE, /* e.g. -f value */ 75 FLAG_TYPE_OPTION, /* e.g. -f=value or -f value */ 76 76 77 77 FLAG_TYPE_MAX 78 78 }; 79 79 80 extern const char *FLAG_NAME[FLAG_MAX ];81 extern const char *FLAG_DESC[FLAG_MAX ];82 extern const char *FLAG_DETAILED_DESC[FLAG_MAX ];80 extern const char *FLAG_NAME[FLAG_MAX+1]; 81 extern const char *FLAG_DESC[FLAG_MAX+1]; 82 extern const char *FLAG_DETAILED_DESC[FLAG_MAX+1]; 83 83 extern const int FLAG_TYPE[FLAG_MAX]; 84 84 85 85 #if defined(__cplusplus) 86 }86 } 87 87 #endif 88 88
Note: See TracChangeset
for help on using the changeset viewer.