Changeset 1070 for trunk/packages/optimizer/src/rp_optimizer_tcl.c
- Timestamp:
- Jun 26, 2008, 7:46:14 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/optimizer/src/rp_optimizer_tcl.c
r1062 r1070 47 47 * ---------------------------------------------------------------------- 48 48 */ 49 50 RpCustomTclOptionGet RpOption_GetRandDist; 51 RpCustomTclOptionParse RpOption_ParseRandDist; 52 RpTclOptionType RpOption_RandDist = { 53 "pga_randdist", RpOption_ParseRandDist,RpOption_GetRandDist,NULL 54 }; 49 55 RpTclOption rpOptimNumberOpts[] = { 50 56 {"-min", RP_OPTION_DOUBLE, Rp_Offset(RpOptimParamNumber,min)}, 51 57 {"-max", RP_OPTION_DOUBLE, Rp_Offset(RpOptimParamNumber,max)}, 58 {"-mutnrate",RP_OPTION_DOUBLE, Rp_Offset(RpOptimParamNumber,mutnrate)}, 59 {"-randdist",&RpOption_RandDist,Rp_Offset(RpOptimParamNumber,randdist)}, 60 {"-strictmin",RP_OPTION_BOOLEAN,Rp_Offset(RpOptimParamNumber,strictmin)}, 61 {"-strictmax",RP_OPTION_BOOLEAN,Rp_Offset(RpOptimParamNumber,strictmax)}, 62 {"-stddev",RP_OPTION_DOUBLE,Rp_Offset(RpOptimParamNumber,stddev)}, 63 {"-mean",RP_OPTION_DOUBLE,Rp_Offset(RpOptimParamNumber,mean)}, 52 64 {NULL, NULL, 0} 53 65 }; … … 884 896 return result; 885 897 } 898 899 /* 900 * ====================================================================== 901 * OPTION: -randdist <=> RAND_NUMBER_DIST_GAUSSIAN / RAND_NUMBER_DIST_UNIFORM 902 * ====================================================================== 903 */ 904 int 905 RpOption_ParseRandDist(interp, valObj, cdata, offset) 906 Tcl_Interp *interp; /* interpreter handling this request */ 907 Tcl_Obj *valObj; /* set option to this new value */ 908 ClientData cdata; /* save in this data structure */ 909 int offset; /* save at this offset in cdata */ 910 { 911 int *ptr = (int*)(cdata+offset); 912 char *val = Tcl_GetStringFromObj(valObj, (int*)NULL); 913 if (strcmp(val,"gaussian") == 0) { 914 *ptr = RAND_NUMBER_DIST_GAUSSIAN; 915 } 916 else if (strcmp(val,"uniform") == 0) { 917 *ptr = RAND_NUMBER_DIST_UNIFORM; 918 } 919 else { 920 Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), 921 "bad value \"", val, "\": should be gaussian or uniform", 922 (char*)NULL); 923 return TCL_ERROR; 924 } 925 return TCL_OK; 926 } 927 928 int 929 RpOption_GetRandDist(interp, cdata, offset) 930 Tcl_Interp *interp; /* interpreter handling this request */ 931 ClientData cdata; /* get from this data structure */ 932 int offset; /* get from this offset in cdata */ 933 { 934 int *ptr = (int*)(cdata+offset); 935 switch (*ptr) { 936 case RAND_NUMBER_DIST_GAUSSIAN: 937 Tcl_SetResult(interp, "gaussian", TCL_STATIC); 938 break; 939 case RAND_NUMBER_DIST_UNIFORM: 940 Tcl_SetResult(interp, "uniform", TCL_STATIC); 941 break; 942 default: 943 Tcl_SetResult(interp, "???", TCL_STATIC); 944 break; 945 } 946 return TCL_OK; 947 }
Note: See TracChangeset
for help on using the changeset viewer.