//-------------------------------------------------------------------------- static void setup_got(void) { netnode n("$ got"); if ( exist(n) ) got = n.altval(0) - 1; if ( got == BADADDR ) get_name_value(BADADDR, "_GLOBAL_OFFSET_TABLE_", &got); if ( got == BADADDR ) { segment_t *s = get_segm_by_name(".got"); if ( s != NULL ) got = s->startEA; } msg("DP is assumed to be %08a\n", got); }
static void parse_line( classifier_type& inst, const feature_generator& fgen, std::string& label, bool& truth, const option& opt, const std::string& line, int lines = 0 ) { double value; std::string name; // Split the line with tab characters. tokenizer values(line, opt.token_separator); tokenizer::iterator itv = values.begin(); if (itv == values.end()) { throw invalid_data("no field found in the line", line, lines); } // Make sure that the first token (class) is not empty. if (itv->empty()) { throw invalid_data("an empty label found", line, lines); } // Set the truth value for this candidate. if (itv->compare(0, 1, "+") == 0) { truth = true; } else if (itv->compare(0, 1, "-") == 0) { truth = false; } else { throw invalid_data("a class label must begins with '+' or '-'", line, lines); } label = itv->substr(1); // Create a new candidate. int i = inst.size(); inst.resize(i+1); // Set featuress for the instance. for (++itv;itv != values.end();++itv) { if (!itv->empty()) { get_name_value(*itv, name, value, opt.value_separator); inst.set(i, fgen, name, 0, value); } } }