summaryrefslogtreecommitdiff
path: root/gentools/templ.cpp/MethodBodyClass.h.tmpl
diff options
context:
space:
mode:
authorKim van der Riet <kpvdr@apache.org>2006-10-25 20:15:28 +0000
committerKim van der Riet <kpvdr@apache.org>2006-10-25 20:15:28 +0000
commitc07e58d50b7a6d54b12732db1e6613a87f21660c (patch)
treec22bc23d2c178d93c6891b407b08a94f24921ae4 /gentools/templ.cpp/MethodBodyClass.h.tmpl
parent8da6e337e89a5af2cbe7d4b1a649f417c05b7cda (diff)
downloadqpid-python-c07e58d50b7a6d54b12732db1e6613a87f21660c.tar.gz
Some code tidy-up and debugging; first C++ templates and implementation of most of C++ MethodBody class generation methods.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@467750 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'gentools/templ.cpp/MethodBodyClass.h.tmpl')
-rw-r--r--gentools/templ.cpp/MethodBodyClass.h.tmpl139
1 files changed, 139 insertions, 0 deletions
diff --git a/gentools/templ.cpp/MethodBodyClass.h.tmpl b/gentools/templ.cpp/MethodBodyClass.h.tmpl
new file mode 100644
index 0000000000..b89f7c5c3d
--- /dev/null
+++ b/gentools/templ.cpp/MethodBodyClass.h.tmpl
@@ -0,0 +1,139 @@
+&{${CLASS}${METHOD}Body.h}
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+/*
+ * This file is auto-generated by ${GENERATOR} - do not modify.
+ * Supported AMQP versions:
+%{VLIST} * ${major}-${minor}
+ */
+
+#include <map>
+#include <string>
+#include <sstream>
+
+#include "qpid/framing/amqp_types.h"
+#include "AMQP_ServerOperations.h"
+#include "qpid/framing/AMQMethodBody.h"
+#include "qpid/framing/Buffer.h"
+#include "qpid/framing/FieldTable.h"
+
+#ifndef _${CLASS}${METHOD}Body_
+#define _${CLASS}${METHOD}Body_
+
+namespace qpid {
+namespace framing {
+
+class ${CLASS}${METHOD}Body : virtual public AMQMethodBody
+{
+ static std::map<std::string, int> classIdMap;
+ static std::map<std::string, int> methodIdMap;
+ static void initMaps()
+ {
+ if (classIdMap.empty())
+ {
+${CLASS_ID_INIT}
+ }
+ if (methodIdMap.empty())
+ {
+${METHOD_ID_INIT}
+ }
+ }
+
+ /* Method field declarations */
+
+%{FLIST} ${mb_field_declaration}
+
+
+public:
+ typedef std::tr1::shared_ptr<${CLASS}${METHOD}Body> shared_ptr;
+
+ ${CLASS}${METHOD}Body(u_int_8 major, u_int_8 minor)
+ {
+ super(major, minor);
+ initMaps();
+ }
+ virtual ~${CLASS}${METHOD}Body() {}
+
+%{FLIST} ${mb_field_get_method}
+
+ inline void print(std::ostream& out) const
+ {
+ out << "${CLASS}${METHOD}";
+%{FLIST} ${mb_field_print}
+ }
+
+ inline u_int16_t amqpClassId() const
+ {
+ std::stringstream ss;
+ ss << major << "-" << minor;
+ return classIdMap[ss.str()];
+ }
+
+ inline u_int16_t amqpMethodId() const
+ {
+ std::stringstream ss;
+ ss << major << "-" << minor;
+ return methodIdMap[ss.str()];
+ }
+
+ inline u_int32_t bodySize() const
+ {
+ u_int32_t size = 0;
+%{FLIST} ${mb_body_size}
+ return size;
+ }
+
+ inline void encodeContent(Buffer& buffer) const
+ {
+%{FLIST} ${mb_encode}
+ }
+
+ inline void decodeContent(Buffer& buffer)
+ {
+%{FLIST} ${mb_decode}
+ }
+
+ inline void invoke(AMQP_ServerOperations& target, u_int16_t channel)
+ {
+ target.getBasicHandler()->consume(
+%{FLIST} ${mb_field_list}
+ );
+ }
+
+ inline BasicConsumeBody(
+%{FLIST} ${mb_field_list_declare}
+ ) :
+%{FLIST} ${mb_field_list_initializer}
+ {
+ }
+
+ inline BasicConsumeBody()
+ {
+ }
+}; /* class ${CLASS}${METHOD}Body */
+
+// Static member declarations
+std::map<string, int> ${CLASS}${METHOD}Body::classIdMap;
+std::map<string, int> ${CLASS}${METHOD}Body::methodIdMap;
+
+} /* namespace framing */
+} /* namespace qpid */
+
+#endif
+