From 22c323f9c9348a651e1f78913b438535b554edfc 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@564409 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/rubygen/cppgen.rb | 8 ++-- qpid/cpp/rubygen/templates/MethodHolder.rb | 67 ++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 3 deletions(-) create mode 100755 qpid/cpp/rubygen/templates/MethodHolder.rb (limited to 'qpid/cpp/rubygen') diff --git a/qpid/cpp/rubygen/cppgen.rb b/qpid/cpp/rubygen/cppgen.rb index 8feaeb9ba5..64987e763f 100755 --- a/qpid/cpp/rubygen/cppgen.rb +++ b/qpid/cpp/rubygen/cppgen.rb @@ -136,7 +136,9 @@ class CppGen < Generator end def include(header) - genl /<.*>/.match(header) ? "#include #{header}" : "#include \"#{header}\"" + header+=".h" unless /(\.h|[">])$/===header + header="\"#{header}\"" unless /(^<.*>$)|(^".*"$)/===header + genl "#include #{header}" end def scope(open="{",close="}", &block) @@ -154,11 +156,11 @@ class CppGen < Generator genl end - def struct_class(type, name, *bases, &block) + def struct_class(type, name, bases, &block) genl gen "#{type} #{name}" gen ": #{bases.join(', ')}" unless bases.empty? - scope(" {","};", &block) + scope(" {","};") { yield } end def struct(name, *bases, &block) struct_class("struct", name, bases, &block); end diff --git a/qpid/cpp/rubygen/templates/MethodHolder.rb b/qpid/cpp/rubygen/templates/MethodHolder.rb new file mode 100755 index 0000000000..a99270055f --- /dev/null +++ b/qpid/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