diff options
| author | Kim van der Riet <kpvdr@apache.org> | 2006-10-25 20:15:28 +0000 |
|---|---|---|
| committer | Kim van der Riet <kpvdr@apache.org> | 2006-10-25 20:15:28 +0000 |
| commit | c07e58d50b7a6d54b12732db1e6613a87f21660c (patch) | |
| tree | c22bc23d2c178d93c6891b407b08a94f24921ae4 /gentools/templ.cpp/MethodBodyClass.h.tmpl | |
| parent | 8da6e337e89a5af2cbe7d4b1a649f417c05b7cda (diff) | |
| download | qpid-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.tmpl | 139 |
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 + |
