for (v_iter = val.begin(); v_iter != val.end(); ++v_iter) {
f_consts_ << indent();
print_const_value(etype, *v_iter);
+ if (type->is_set()) {
+ f_consts_ << " => true";
+ }
f_consts_ << "," << endl;
}
indent_down();
generate_deserialize_field(out, &felem);
indent(out) <<
- "$" << prefix << " []= $" << elem << ";" << endl;
+ "$" << prefix << "[$" << elem << "] = true;" << endl;
}
void t_php_generator::generate_deserialize_list_element(ofstream &out,
} else if (ttype->is_set()) {
string iter = tmp("iter");
indent(out) <<
- "foreach ($" << prefix << " as $" << iter << ")" << endl;
+ "foreach ($" << prefix << " as $" << iter << " => $true)" << endl;
scope_up(out);
generate_serialize_set_element(out, (t_set*)ttype, iter);
scope_down(out);
} else {
etype = ((t_set*)type)->get_elem_type();
}
+ if (type->is_set()) {
+ f_consts_ << "set(";
+ }
f_consts_ << "[" << endl;
indent_up();
const vector<t_const_value*>& val = value->get_list();
}
indent_down();
indent(f_consts_) << "]";
+ if (type->is_set()) {
+ f_consts_ << ")";
+ }
}
}
indent() << "(" << ktype << ", " << vtype << ", " << size << " ) = iprot.readMapBegin() " << endl;
} else if (ttype->is_set()) {
out <<
- indent() << prefix << " = []" << endl <<
+ indent() << prefix << " = set()" << endl <<
indent() << "(" << etype << ", " << size << ") = iprot.readSetBegin()" << endl;
} else if (ttype->is_list()) {
out <<
generate_deserialize_field(out, &felem);
indent(out) <<
- prefix << ".append(" << elem << ")" << endl;
+ prefix << ".add(" << elem << ")" << endl;
}
/**
*/
intconstant ([+-]?[0-9]+)
+hexconstant ("0x"[0-9A-Fa-f]+)
dubconstant ([+-]?[0-9]*(\.[0-9]+)?([eE][+-]?[0-9]+)?)
identifier ([a-zA-Z_][\.a-zA-Z_0-9]*)
whitespace ([ \t\r\n]*)
return tok_int_constant;
}
+{hexconstant} {
+ sscanf(yytext+2, "%x", &yylval.iconst);
+ printf("%d\n", yylval.iconst);
+ return tok_int_constant;
+}
+
{dubconstant} {
yylval.dconst = atof(yytext);
return tok_dub_constant;