UCOpcodeData(const vector<string> &v) {  if((v.size()==12)==false) { cerr << "Error in opcodes file:" << endl; for(unsigned int i=0; i<v.size(); i++) cerr << v[i] << '\t'; cerr << endl; }  assert(v.size()==12); opcode = strtol(v[1].c_str(), 0, 0); name = v[2]; asm_nmo = v[3]; asm_comment = v[4]; ucs_nmo = v[5]; num_bytes = strtol(v[6].c_str(), 0, 0); param_types = qnd_ocsplit(v[7]); num_pop = strtol(v[8].c_str(), 0, 0); num_push = strtol(v[9].c_str(), 0, 0); call_effect = strtol(v[10].c_str(), 0, 0); assert(v[11].size()>=2); flag_return = (v[11][0]=='0') ? false : true; flag_paren  = (v[11][1]=='0') ? false : true; map_type_size(param_types, param_sizes); };
UCOpcodeData() : opcode(0x00), num_bytes(0), num_pop(0), num_push(0), call_effect(0), flag_return(false), flag_paren(false), flag_indent_inc(false), flag_indent_dec(false), flag_indent_tmpinc(false), flag_indent_tmpdec(false) {};
		UCOpcodeData(const vector<string> &v)		{			//#if 0 // debugging			if((v.size()==12)==false)			{				cerr << "Error in opcodes file:" << endl;				for(unsigned int i=0; i<v.size(); i++)					cerr << v[i] << '\t';				cerr << endl;			}			//#endif			assert(v.size()==12);			opcode = strtol(v[1].c_str(), 0, 0);			name = v[2];			asm_nmo = v[3];			asm_comment = v[4];			ucs_nmo = v[5];			num_bytes = strtol(v[6].c_str(), 0, 0);			param_types = qnd_ocsplit(v[7]);			num_pop = strtol(v[8].c_str(), 0, 0);			num_push = strtol(v[9].c_str(), 0, 0);			call_effect = strtol(v[10].c_str(), 0, 0);			assert(v[11].size()>=2);			flag_return = (v[11][0]=='0') ? false : true;			flag_paren  = (v[11][1]=='0') ? false : true;			map_type_size(param_types, param_sizes);		};