for(vector<UCOpcodeData>::iterator op=opcode_table_data.begin(); op!=opcode_table_data.end(); op++)
for(std::vector<UCOpcodeData>::iterator op=opcode_table_data.begin(); op!=opcode_table_data.end(); op++)
void init_usecodetables(const Configuration &config, bool noconf, bool verbose){	string ucxtroot;	// just to handle if people are going to compile with makefile.unix, unsupported, but occasionally useful	#ifdef HAVE_CONFIG_H	if(noconf == false) config.value("config/ucxt/root", ucxtroot, EXULT_DATADIR);	#else	if(noconf == false) config.value("config/ucxt/root", ucxtroot, "data/");	#endif		if(verbose) cout << "ucxtroot: " << ucxtroot << endl;	if(ucxtroot.size() && ucxtroot[ucxtroot.size()-1]!='/' && ucxtroot[ucxtroot.size()-1]!='\\') ucxtroot+='/';	ucxtroot+= "opcodes.txt";	ifstream file;	U7open(file, ucxtroot.c_str(), true);		if(file.fail())	{		cout << "error. could not locate " << ucxtroot << ". exiting." << endl;		exit(1);	}		string s;	while(!file.eof())	{		getline(file, s);		if(s.size() && s[0]=='>')		{			UCOpcodeData uco(str2vec(s));			assert(uco.opcode<MAX_NO_OPCODES);			opcode_table_data[uco.opcode] = uco;		}		}	file.close();		/* Create an {opcode, parameter_index} array of all opcodes that		execute a 'jump' statement */	for(vector<UCOpcodeData>::iterator op=opcode_table_data.begin(); op!=opcode_table_data.end(); op++)	{		for(unsigned int i=0; i<op->param_sizes.size(); i++)		{			if(op->param_sizes[i].second==true) // this is a calculated offset			{				opcode_jumps.push_back(pair<unsigned int, unsigned int>(op->opcode, i+1)); // parameters are stored as base 1			}		}	}		#if 0	cout << "Calculated Opcode pairs:" << endl;	for(vector<pair<unsigned int, unsigned int> >::iterator i=opcode_jumps.begin(); i!=opcode_jumps.end(); i++)		cout << setw(4) << i->first << '\t' << setw(4) << i->second << endl;	#endif}