in activemq-cpp-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/marshallers/AmqCppMarshallingClassesGenerator.java [567:791]
protected void generateFile(PrintWriter out) throws Exception {
generateLicence(out);
out.println("");
out.println("#include <activemq/wireformat/openwire/marshal/generated/"+className+".h>");
out.println("");
out.println("#include <activemq/commands/"+jclass.getSimpleName()+".h>");
out.println("#include <activemq/exceptions/ActiveMQException.h>");
out.println("#include <decaf/lang/Pointer.h>");
out.println("");
out.println("//");
out.println("// NOTE!: This file is autogenerated - do not modify!");
out.println("// if you need to make a change, please see the Java Classes in the");
out.println("// activemq-core module");
out.println("//");
out.println("");
out.println("using namespace std;");
out.println("using namespace activemq;");
out.println("using namespace activemq::exceptions;");
out.println("using namespace activemq::commands;");
out.println("using namespace activemq::wireformat;");
out.println("using namespace activemq::wireformat::openwire;");
out.println("using namespace activemq::wireformat::openwire::marshal;");
out.println("using namespace activemq::wireformat::openwire::utils;");
out.println("using namespace activemq::wireformat::openwire::marshal::generated;");
out.println("using namespace decaf;");
out.println("using namespace decaf::io;");
out.println("using namespace decaf::lang;");
out.println("");
String typeName = jclass.getSimpleName().toUpperCase();
if( !isAbstractClass() ) {
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("DataStructure* "+className+"::createObject() const {");
out.println(" return new "+jclass.getSimpleName()+"();");
out.println("}");
out.println("");
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("unsigned char "+className+"::getDataStructureType() const {");
out.println(" return "+jclass.getSimpleName()+"::ID_"+typeName+";");
out.println("}");
out.println("");
}
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("void "+className+"::tightUnmarshal(OpenWireFormat* wireFormat, DataStructure* dataStructure, DataInputStream* dataIn, BooleanStream* bs) {");
out.println("");
out.println(" try {");
out.println("");
out.println(" "+baseClass+"::tightUnmarshal(wireFormat, dataStructure, dataIn, bs);");
out.println("");
List<JProperty> properties = getProperties();
boolean marshallerAware = isMarshallerAware();
if( !properties.isEmpty() || marshallerAware ) {
String properClassName = getProperClassName( jclass.getSimpleName() );
out.println(" "+properClassName+"* info =");
out.println(" dynamic_cast<"+properClassName+"*>(dataStructure);");
}
if( marshallerAware ) {
out.println(" info->beforeUnmarshal(wireFormat);");
out.println("");
}
if( checkNeedsWireFormatVersion() ) {
out.println("");
out.println(" int wireVersion = wireFormat->getVersion();");
out.println("");
}
generateTightUnmarshalBody(out);
if( marshallerAware ) {
out.println("");
out.println(" info->afterUnmarshal( wireFormat );");
}
out.println(" }");
out.println(" AMQ_CATCH_RETHROW(decaf::io::IOException)" );
out.println(" AMQ_CATCH_EXCEPTION_CONVERT(exceptions::ActiveMQException, decaf::io::IOException)" );
out.println(" AMQ_CATCHALL_THROW(decaf::io::IOException)" );
out.println("}");
out.println("");
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("int "+className+"::tightMarshal1(OpenWireFormat* wireFormat, DataStructure* dataStructure, BooleanStream* bs) {");
out.println("");
out.println(" try {");
out.println("");
if( checkNeedsInfoPointerTM1() ) {
String properClassName = getProperClassName( jclass.getSimpleName() );
out.println(" "+properClassName+"* info =");
out.println(" dynamic_cast<"+properClassName+"*>(dataStructure);");
out.println("");
}
if( marshallerAware ) {
out.println(" info->beforeMarshal(wireFormat);");
}
out.println(" int rc = "+baseClass+"::tightMarshal1(wireFormat, dataStructure, bs);");
if( checkNeedsWireFormatVersion() ) {
out.println("");
out.println(" int wireVersion = wireFormat->getVersion();");
out.println("");
}
int baseSize = generateTightMarshal1Body(out);
out.println("");
out.println(" return rc + "+baseSize+";");
out.println(" }");
out.println(" AMQ_CATCH_RETHROW(decaf::io::IOException)" );
out.println(" AMQ_CATCH_EXCEPTION_CONVERT(exceptions::ActiveMQException, decaf::io::IOException)" );
out.println(" AMQ_CATCHALL_THROW(decaf::io::IOException)" );
out.println("}");
out.println("");
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("void "+className+"::tightMarshal2(OpenWireFormat* wireFormat, DataStructure* dataStructure, DataOutputStream* dataOut, BooleanStream* bs) {");
out.println("");
out.println(" try {");
out.println("");
out.println(" "+baseClass+"::tightMarshal2(wireFormat, dataStructure, dataOut, bs );");
out.println("");
if( checkNeedsInfoPointerTM2() ) {
String properClassName = getProperClassName( jclass.getSimpleName() );
out.println(" "+properClassName+"* info =");
out.println(" dynamic_cast<"+properClassName+"*>(dataStructure);");
}
if( checkNeedsWireFormatVersion() ) {
out.println("");
out.println(" int wireVersion = wireFormat->getVersion();");
out.println("");
}
generateTightMarshal2Body(out);
if( marshallerAware ) {
out.println(" info->afterMarshal(wireFormat);");
}
out.println(" }");
out.println(" AMQ_CATCH_RETHROW(decaf::io::IOException)" );
out.println(" AMQ_CATCH_EXCEPTION_CONVERT( exceptions::ActiveMQException, decaf::io::IOException)" );
out.println(" AMQ_CATCHALL_THROW(decaf::io::IOException)" );
out.println("}");
out.println("");
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("void "+className+"::looseUnmarshal(OpenWireFormat* wireFormat, DataStructure* dataStructure, DataInputStream* dataIn) {");
out.println("");
out.println(" try {");
out.println("");
out.println(" "+baseClass+"::looseUnmarshal(wireFormat, dataStructure, dataIn);");
if( !properties.isEmpty() || marshallerAware ) {
String properClassName = getProperClassName( jclass.getSimpleName() );
out.println(" "+properClassName+"* info =");
out.println(" dynamic_cast<"+properClassName+"*>(dataStructure);");
}
if( marshallerAware ) {
out.println(" info->beforeUnmarshal(wireFormat);");
}
if( checkNeedsWireFormatVersion() ) {
out.println("");
out.println(" int wireVersion = wireFormat->getVersion();");
out.println("");
}
generateLooseUnmarshalBody(out);
if( marshallerAware ) {
out.println(" info->afterUnmarshal(wireFormat);");
}
out.println(" }");
out.println(" AMQ_CATCH_RETHROW(decaf::io::IOException)" );
out.println(" AMQ_CATCH_EXCEPTION_CONVERT(exceptions::ActiveMQException, decaf::io::IOException)" );
out.println(" AMQ_CATCHALL_THROW(decaf::io::IOException)" );
out.println("}");
out.println("");
out.println("///////////////////////////////////////////////////////////////////////////////");
out.println("void "+className+"::looseMarshal(OpenWireFormat* wireFormat, DataStructure* dataStructure, DataOutputStream* dataOut) {");
out.println("");
out.println(" try {");
out.println("");
if( !properties.isEmpty() || marshallerAware ) {
String properClassName = getProperClassName( jclass.getSimpleName() );
out.println(" "+properClassName+"* info =");
out.println(" dynamic_cast<"+properClassName+"*>(dataStructure);");
}
if( marshallerAware ) {
out.println(" info->beforeMarshal(wireFormat);");
}
out.println(" "+baseClass+"::looseMarshal(wireFormat, dataStructure, dataOut);");
if( checkNeedsWireFormatVersion() ) {
out.println("");
out.println(" int wireVersion = wireFormat->getVersion();");
out.println("");
}
generateLooseMarshalBody(out);
if( marshallerAware ) {
out.println(" info->afterMarshal(wireFormat);");
}
out.println(" }");
out.println(" AMQ_CATCH_RETHROW(decaf::io::IOException)" );
out.println(" AMQ_CATCH_EXCEPTION_CONVERT(exceptions::ActiveMQException, decaf::io::IOException)" );
out.println(" AMQ_CATCHALL_THROW(decaf::io::IOException)" );
out.println("}");
out.println("");
}