From 317838e6fced8a01896444caa78b3e2a783d8925 Mon Sep 17 00:00:00 2001 From: Kim van der Riet Date: Wed, 25 Oct 2006 20:15:28 +0000 Subject: 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@467750 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/gentools/templ.cpp/MethodBodyClass.h.tmpl | 139 +++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 qpid/gentools/templ.cpp/MethodBodyClass.h.tmpl (limited to 'qpid/gentools/templ.cpp/MethodBodyClass.h.tmpl') diff --git a/qpid/gentools/templ.cpp/MethodBodyClass.h.tmpl b/qpid/gentools/templ.cpp/MethodBodyClass.h.tmpl new file mode 100644 index 0000000000..b89f7c5c3d --- /dev/null +++ b/qpid/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 +#include +#include + +#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 classIdMap; + static std::map 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 ${CLASS}${METHOD}Body::classIdMap; +std::map ${CLASS}${METHOD}Body::methodIdMap; + +} /* namespace framing */ +} /* namespace qpid */ + +#endif + -- cgit v1.2.1