char mtch_pnm(NVEOL *nveol, char *a_namestr, void *a_member, char a_type, char *legal_values_str) { char legal_valname_str[10][50], *legal_valname_p[10], legal_valcode_str[10][2], str[500], legal_min_str[20], legal_max_str[20], value_is_legal; int n_legal, i, n_scanned; float a; SSL *sslp; if(strcmp(a_namestr, nveol->namestr)) return FALSE; if(a_type == MP_FILENAME) sslp = &(((PARM_FILENAME *)a_member)->ssl); else if(a_type == MP_INT) sslp = &(((PARM_INT *)a_member)->ssl); else if(a_type == MP_FLOAT) sslp = &(((PARM_FLOAT *)a_member)->ssl); else /* a_type == MP_SWITCH */ sslp = &(((PARM_SWITCH *)a_member)->ssl); if(sslp->set_tried) { sprintf(str, "ERROR, line %d: %s set, but it was already set in \ line %d", nveol->linenum, a_namestr, sslp->linenum); strm_fmt(str, nveol->errstr); }
// Test operator forwarding BOOST_AUTO_TEST_CASE_TEMPLATE(operator_forwarding, CharT, char_types) { typedef CharT char_type; typedef std::basic_string< char_type > string_type; typedef std::basic_ostringstream< char_type > ostream_type; typedef logging::basic_formatting_ostream< char_type > formatting_ostream_type; string_type str_fmt; formatting_ostream_type strm_fmt(str_fmt); const my_namespace::A a = my_namespace::A(); // const lvalue my_namespace::B b; // lvalue strm_fmt << a << b << my_namespace::C(); // rvalue strm_fmt.flush(); ostream_type strm_correct; strm_correct << a << b << my_namespace::C(); BOOST_CHECK(equal_strings(strm_fmt.str(), strm_correct.str())); }
int got_blk(FILE *fp, PARMS *parms, char *gb_any_error, int *runblock_start_linenum) { char namestr[200], valstr[200], illegal_phrase[500], errstr[500], errstr2[500], some_content = FALSE, ret; int linenum; *gb_any_error = FALSE; memset(parms, 0, sizeof(PARMS)); while(1) { ret = get_phr(fp, namestr, valstr, illegal_phrase, &linenum); if(ret == WORD_PAIR) { if(!some_content) *runblock_start_linenum = linenum; some_content = TRUE; if(!st_nv_ok(namestr, valstr, linenum, parms, errstr)) { eb_cat(errstr); *gb_any_error = TRUE; } } else if(ret == NEWRUN) { if(some_content) return TRUE; else continue; } else if(ret == ILLEGAL_PHRASE) { if(!some_content) *runblock_start_linenum = linenum; some_content = TRUE; sprintf(errstr2, "ERROR, line %d: illegal phrase %s", linenum, illegal_phrase); strm_fmt(errstr2, errstr); eb_cat(errstr); *gb_any_error = TRUE; } else /* ret == FINISHED */ return some_content; } }
char st_nv_ok(char *namestr, char *valstr, int linenum, PARMS *parms, char *errstr) { char errstr2[200]; NVEOL nveol; nveol.namestr = namestr; nveol.valstr = valstr; nveol.errstr = errstr; nveol.ok = FALSE; nveol.linenum = linenum; if( !mtch_pnm(&nveol, "long_outfile", &(parms->long_outfile), MP_FILENAME, NULL) && !mtch_pnm(&nveol, "short_outfile", &(parms->short_outfile), MP_FILENAME, NULL) && !mtch_pnm(&nveol, "errfunc", &(parms->errfunc), MP_SWITCH, "mse 0 type_1 1 pos_sum 2") && !mtch_pnm(&nveol, "regfac", &(parms->regfac), MP_FLOAT, "0. +inf") && !mtch_pnm(&nveol, "alpha", &(parms->alpha), MP_FLOAT, NULL) && !mtch_pnm(&nveol, "purpose", &(parms->purpose), MP_SWITCH, "classifier 0 fitter 1") && !mtch_pnm(&nveol, "boltzmann", &(parms->boltzmann), MP_SWITCH, "no_prune 0 abs_prune 2 square_prune 3") && !mtch_pnm(&nveol, "temperature", &(parms->temperature), MP_FLOAT, "0. +inf") && !mtch_pnm(&nveol, "patterns_infile", &(parms->patterns_infile), MP_FILENAME, NULL) && !mtch_pnm(&nveol, "wts_infile", &(parms->wts_infile), MP_FILENAME, NULL) && !mtch_pnm(&nveol, "wts_outfile", &(parms->wts_outfile), MP_FILENAME, NULL) && !mtch_pnm(&nveol, "npats", &(parms->npats), MP_INT, "1 +inf") && !mtch_pnm(&nveol, "ninps", &(parms->ninps), MP_INT, "1 +inf") && !mtch_pnm(&nveol, "nhids", &(parms->nhids), MP_INT, "1 +inf") && !mtch_pnm(&nveol, "nouts", &(parms->nouts), MP_INT, "1 +inf") && !mtch_pnm(&nveol, "seed", &(parms->seed), MP_INT, "1 +inf") && !mtch_pnm(&nveol, "niter_max", &(parms->niter_max), MP_INT, "1 +inf") && !mtch_pnm(&nveol, "egoal", &(parms->egoal), MP_FLOAT, NULL) && !mtch_pnm(&nveol, "gwgoal", &(parms->gwgoal), MP_FLOAT, NULL) && !mtch_pnm(&nveol, "nfreq", &(parms->nfreq), MP_INT, NULL) && !mtch_pnm(&nveol, "errdel", &(parms->errdel), MP_FLOAT, NULL) && !mtch_pnm(&nveol, "oklvl", &(parms->oklvl), MP_FLOAT, "0. 1.") && !mtch_pnm(&nveol, "nokdel", &(parms->nokdel), MP_INT, NULL) && !mtch_pnm(&nveol, "train_or_test", &(parms->train_or_test), MP_SWITCH, "train 0 test 1") && !mtch_pnm(&nveol, "acfunc_hids", &(parms->acfunc_hids), MP_SWITCH, "sinusoid 0 sigmoid 1 linear 2") && !mtch_pnm(&nveol, "acfunc_outs", &(parms->acfunc_outs), MP_SWITCH, "sinusoid 0 sigmoid 1 linear 2") && !mtch_pnm(&nveol, "priors", &(parms->priors), MP_SWITCH, "allsame 0 class 1 pattern 2 both 3") && !mtch_pnm(&nveol, "class_wts_infile", &(parms->class_wts_infile), MP_FILENAME, NULL) && !mtch_pnm(&nveol, "pattern_wts_infile", &(parms->pattern_wts_infile), MP_FILENAME, NULL) && !mtch_pnm(&nveol, "lcn_scn_infile", &(parms->lcn_scn_infile), MP_FILENAME, NULL) && !mtch_pnm(&nveol, "patsfile_ascii_or_binary", &(parms->patsfile_ascii_or_binary), MP_SWITCH, "ascii 0 binary 1") && !mtch_pnm(&nveol, "trgoff", &(parms->trgoff), MP_FLOAT, "0. 1.") && !mtch_pnm(&nveol, "lbfgs_mem", &(parms->lbfgs_mem), MP_INT, "1 +inf") && !mtch_pnm(&nveol, "scg_earlystop_pct", &(parms->scg_earlystop_pct), MP_FLOAT, "0. +inf") && !mtch_pnm(&nveol, "lbfgs_gtol", &(parms->lbfgs_gtol), MP_FLOAT, "1.e-04 +inf") && !mtch_pnm(&nveol, "do_confuse", &(parms->do_confuse), MP_SWITCH, "false 0 true 1") && !mtch_pnm(&nveol, "show_acs_times_1000", &(parms->show_acs_times_1000), MP_SWITCH, "false 0 true 1") && !mtch_pnm(&nveol, "do_cvr", &(parms->do_cvr), MP_SWITCH, "false 0 true 1") ) { /* supposed parm-name does not match any legal parm-name */ sprintf(errstr2, "ERROR, line %d: illegal parm name %s", linenum, namestr); strm_fmt(errstr2, errstr); nveol.ok = FALSE; } return nveol.ok; }