From f82c2029963a67ee6586ab03c7f5ef3f2a728c0b Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Thu, 9 Aug 2007 22:31:59 +0000 Subject: * src/qpid/framing/MethodHolder.h, .cpp: Replace boost::variant with Blob. * rubygen/templates/MethodHolder.rb: Generate support files for Blob-based MethodHolder. * src/Makefile.am: generate MethodHolder suppport files. * rubygen/cppgen.rb: Minor fixes/enhancements. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@564409 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/rubygen/templates/MethodHolder.rb | 67 +++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 cpp/rubygen/templates/MethodHolder.rb (limited to 'cpp/rubygen/templates') diff --git a/cpp/rubygen/templates/MethodHolder.rb b/cpp/rubygen/templates/MethodHolder.rb new file mode 100755 index 0000000000..a99270055f --- /dev/null +++ b/cpp/rubygen/templates/MethodHolder.rb @@ -0,0 +1,67 @@ +#!/usr/bin/env ruby +$: << ".." # Include .. in load path +require 'cppgen' + +class MethodHolderGen < CppGen + + def initialize(outdir, amqp) + super(outdir, amqp) + @namespace="qpid::framing" + @classname="MethodHolder" + @filename="qpid/framing/MethodHolder" + end + + def gen_max_size() + # Generate program to generate MaxSize.h + cpp_file("generate_#{@classname}MaxSize_h") { + @amqp.amqp_methods.each { |m| include "qpid/framing/#{m.body_name}" } + genl + include "" + include "" + genl + genl "using namespace std;" + genl "using namespace qpid::framing;" + genl + scope("int main(int argc, char** argv) {") { + genl "size_t maxSize=0;" + @amqp.amqp_methods.each { |m| + genl "maxSize=max(maxSize, sizeof(#{m.body_name}));" } + gen <()); break;" + }} + genl "break;" + }} + genl "id=newId;"; + }}} + end + + + def generate + gen_max_size + gen_construct + end +end + +MethodHolderGen.new(Outdir, Amqp).generate(); + -- cgit v1.2.1