generate_java_struct_writer(out, tstruct);
}
scope_down(out);
+ out << endl;
}
void t_java_generator::generate_java_struct_reader(ofstream& out,
t_struct* tstruct) {
out <<
- indent() << "public static " << tstruct->get_name() << " read(TProtocol _iprot, TTransport _itrans) throws TException {" << endl;
+ indent() << "public void read(TProtocol _iprot, TTransport _itrans) throws TException {" << endl;
indent_up();
const vector<t_field*>& fields = tstruct->get_members();
// Declare stack tmp variables
out <<
- indent() << tstruct->get_name() << " _value = new " << tstruct->get_name() << "();" << endl <<
indent() << "TField _field;" << endl <<
indent() << "TStruct _struct = _iprot.readStructBegin(_itrans);" << endl;
indent(out) <<
"case " << (*f_iter)->get_key() << ":" << endl;
indent_up();
- generate_deserialize_field(out, *f_iter, "_value.");
+ generate_deserialize_field(out, *f_iter, "this.");
out <<
- indent() << "_value.__isset." << (*f_iter)->get_name() << " = true;" << endl;
+ indent() << "this.__isset." << (*f_iter)->get_name() << " = true;" << endl;
indent(out) <<
"break;" << endl;
indent_down();
scope_down(out);
out <<
- indent() << "_iprot.readStructEnd(_itrans);" << endl <<
- indent() << "return _value;" << endl;
+ indent() << "_iprot.readStructEnd(_itrans);" << endl;
indent_down();
out <<
indent_down();
out <<
- indent() << "}" << endl <<
- endl;
+ indent() << "}" << endl;
}
void t_java_generator::generate_java_struct_result_writer(ofstream& out,
f_service_ <<
indent() << "TMessage _msg = _iprot.readMessageBegin(_itrans);" << endl <<
- indent() << resultname << " __result = " << resultname << ".read(_iprot, _itrans);" << endl <<
+ indent() << resultname << " __result = new " << resultname << "();" << endl <<
+ indent() << "__result.read(_iprot, _itrans);" << endl <<
indent() << "_iprot.readMessageEnd(_itrans);" << endl <<
endl;
string resultname = tfunction->get_name() + "_result";
f_service_ <<
- indent() << argsname << " __args = " << argsname << ".read(_iprot, _itrans);" << endl <<
+ indent() << argsname << " __args = new " << argsname << "();" << endl <<
+ indent() << "__args.read(_iprot, _itrans);" << endl <<
indent() << "_iprot.readMessageEnd(_itrans);" << endl;
t_struct* xs = tfunction->get_xceptions();
t_struct* tstruct,
string prefix) {
out <<
- indent() << prefix << " = " << tstruct->get_name() << ".read(_iprot, _itrans);" << endl;
+ indent() << prefix << " = new " << tstruct->get_name() << "();" << endl <<
+ indent() << prefix << ".read(_iprot, _itrans);" << endl;
}
void t_java_generator::generate_deserialize_container(ofstream& out,
break;
}
- } else if (ttype->is_enum()) {
+ } else if (ttype->is_enum()) {
result += " = 0";
+ } else if (ttype->is_container()) {
+ result += " = new " + type_name(ttype) + "()";
} else {
- result += " = new " + type_name(tfield->get_type()) + "()";
+ result += " = null";
}
}
return result + ";";
void t_php_generator::generate_php_struct(t_struct* tstruct,
bool is_exception) {
generate_php_struct_definition(f_types_, tstruct, is_exception);
- generate_php_struct_reader(f_types_, tstruct);
- generate_php_struct_writer(f_types_, tstruct);
}
/**
"public $" << (*m_iter)->get_name() << " = null;" << endl;
}
- indent_down();
+ out << endl;
+
+ generate_php_struct_reader(out, tstruct);
+ generate_php_struct_writer(out, tstruct);
+ indent_down();
out <<
indent() << "}" << endl <<
endl;
vector<t_field*>::const_iterator f_iter;
indent(out) <<
- "function read_struct_" << tstruct->get_name() <<
- "($iprot, $itrans, &$value) " << endl;
+ "public function read($iprot, $itrans) " << endl;
scope_up(out);
out <<
indent(out) <<
"case " << (*f_iter)->get_key() << ":" << endl;
indent_up();
- generate_deserialize_field(out, *f_iter, "value->");
+ generate_deserialize_field(out, *f_iter, "this->");
indent(out) <<
"break;" << endl;
indent_down();
if (binary_inline_) {
indent(out) <<
- "function write_struct_" << name <<
- "(&$_output, &$value) {" << endl;
+ "public function write(&$_output) {" << endl;
} else {
indent(out) <<
- "function write_struct_" << name <<
- "($oprot, $otrans, &$value) {" << endl;
+ "public function write($oprot, $otrans) {" << endl;
}
indent_up();
}
// Write field contents
- generate_serialize_field(out, *f_iter, "value->");
+ generate_serialize_field(out, *f_iter, "this->");
// Write field closer
if (!binary_inline_) {
for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
t_struct* ts = (*f_iter)->get_arglist();
generate_php_struct_definition(f_service_, ts, false);
- generate_php_struct_reader(f_service_, ts);
- generate_php_struct_writer(f_service_, ts);
generate_php_function_helpers(*f_iter);
}
}
}
generate_php_struct_definition(f_service_, &result, false);
- generate_php_struct_reader(f_service_, &result);
}
/**
// Write to the stream
if (binary_inline_) {
f_service_ <<
- indent() << "write_struct_" << argsname << "($_output, $__args);" << endl <<
+ indent() << "$__args->write($_output, $__args);" << endl <<
indent() << "$this->_otrans->write($_output);" << endl;
} else {
f_service_ <<
- indent() << "write_struct_" << argsname << "($this->_oprot, $this->_otrans, $__args);" << endl <<
+ indent() << "$__args->write($this->_oprot, $this->_otrans);" << endl <<
indent() << "$this->_oprot->writeMessageEnd($this->_otrans);" << endl;
}
f_service_ <<
indent() << "$__result = new " << resultname << "();" << endl <<
- indent() << "read_struct_" << resultname << "($this->_iprot, $this->_otrans, $__result);" << endl;
+ indent() << "$__result->read($this->_iprot, $this->_otrans);" << endl;
if (!binary_inline_) {
f_service_ <<
string prefix) {
out <<
indent() << "$" << prefix << " = new " << tstruct->get_name() << "();" << endl <<
- indent() << "$xfer += read_struct_" << tstruct->get_name() << "($iprot, $itrans, $" << prefix << ");" << endl;
+ indent() << "$xfer += $" << prefix << "->read($iprot, $itrans);" << endl;
}
void t_php_generator::generate_deserialize_container(ofstream &out,
string prefix) {
if (binary_inline_) {
indent(out) <<
- "$xfer += write_struct_" << tstruct->get_name() << "($_output, $" << prefix << ");" << endl;
+ "$xfer += $" << prefix << "->write($_output);" << endl;
} else {
indent(out) <<
- "$xfer += write_struct_" << tstruct->get_name() << "($oprot, $otrans, $" << prefix << ");" << endl;
+ "$xfer += $" << prefix << "->write($oprot, $otrans);" << endl;
}
}
}
} else if (type->is_enum()) {
return "TType::I32";
- } else if (type->is_struct()) {
+ } else if (type->is_struct() || type->is_xception()) {
return "TType::STRUCT";
} else if (type->is_map()) {
return "TType::MAP";