summaryrefslogtreecommitdiff
path: root/cpp/rubygen/templates
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-08-17 15:52:07 +0000
committerAlan Conway <aconway@apache.org>2007-08-17 15:52:07 +0000
commitfd00bd1ca14d2ac2add8b0d0dba9477aafebc7d2 (patch)
treed277cf2d25a29a7688b43be1a008056f5cfdd655 /cpp/rubygen/templates
parentc534d81e9ef0b19a57dce9c115e6a436d9a82320 (diff)
downloadqpid-python-fd00bd1ca14d2ac2add8b0d0dba9477aafebc7d2.tar.gz
* Fixes for code generation.
- Generate make fragments in $(srcdir) to fix VPATH builds. - rubygen: generates its own .mk fragment - rubygen: moved template info from Makefile.am to generated rubygen.mk, fixes circular dependency between Makefile and rubygen.mk - removed unused templates. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@567072 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/rubygen/templates')
-rwxr-xr-xcpp/rubygen/templates/ClassBodyVariant.rb29
-rwxr-xr-xcpp/rubygen/templates/method_variants.rb72
2 files changed, 0 insertions, 101 deletions
diff --git a/cpp/rubygen/templates/ClassBodyVariant.rb b/cpp/rubygen/templates/ClassBodyVariant.rb
deleted file mode 100755
index dce14c5652..0000000000
--- a/cpp/rubygen/templates/ClassBodyVariant.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env ruby
-$: << ".." # Include .. in load path
-require 'cppgen'
-
-class ClassBodyVariant < CppGen
-
- def initialize(outdir, amqp)
- super(outdir, amqp)
- end
-
- def class_body(c)
- h_file (c.body_name) {
- c.amqp_methods.each { |m| genl "#include \"#{m.body_name}.h\""; }
- genl
- genl "#include <boost/visitor.hpp>"
- genl
- gen "typedef boost::variant<"
- indent { genl c.amqp_methods().collect { |m| m.body_name }.join(",\n") }
- genl "> #{c.body_name};"
- }
- end
-
- def generate()
- @amqp.amqp_classes.each{ |c| class_body c }
- end
-end
-
-ClassBodyVariant.new(Outdir, Amqp).generate();
-
diff --git a/cpp/rubygen/templates/method_variants.rb b/cpp/rubygen/templates/method_variants.rb
deleted file mode 100755
index 886c7559bb..0000000000
--- a/cpp/rubygen/templates/method_variants.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env ruby
-$: << ".." # Include .. in load path
-require 'cppgen'
-
-# Generate the full AMQP class/method model as C++ types.
-class AmqpCppModelGen < CppGen
-
- def initialize(outdir, amqp)
- super(outdir, amqp)
- end
-
- def gen_set_variant(varname, idtype, pairs, errmsg)
- pairs.sort!
- scope("inline void setVariant(#{varname}& var, #{idtype} id) {") {
- scope("switch (id) {") {
- pairs.each { |i,t|
- genl "case #{i}: var=#{t}(); break;";
- }
- genl "default: THROW_QPID_ERROR(FRAMING_ERROR, (boost::format(\"#{errmsg}\")%id).str());"
- }
- }
- genl
- end
-
- def gen_class(c)
- varname="#{c.name.caps}Variant"
- mtypes=c.amqp_methods.map { |m| m.body_name }
- typedef(blank_variant(mtypes), varname)
- genl
- pairs=c.amqp_methods.map { |m| [m.index.to_i,m.body_name] }
- gen_set_variant(varname, "MethodId", pairs,
- "%d is not a valid method index in class #{c.name}")
- mtypes.each { |t|
- genl "template<> struct ClassVariant<#{t}> { typedef #{varname} value; };"
- }
- genl
- end
-
- def gen_all()
- varname="MethodVariant"
- types=@amqp.amqp_classes.map { |c| "#{c.name.caps}Variant" }
- pairs=@amqp.amqp_classes.map { |c| [c.index.to_i,"#{c.name.caps}Variant"] }
- typedef(blank_variant(types), varname)
- genl
- gen_set_variant(varname, "ClassId", pairs,
- "%d is not a valid class index.")
- end
-
- def generate()
- h_file("qpid/framing/method_variants.h") {
- @amqp.amqp_methods.each { |m| include "qpid/framing/#{m.body_name}.h"}
- include "qpid/framing/amqp_types.h"
- include "qpid/QpidError.h"
- include "qpid/framing/variant.h"
- include "<boost/format.hpp>"
- genl
- namespace("qpid::framing") {
- genl "// Metafunction returns class variant containing method T."
- genl "template <class T> struct ClassVariant {};"
- genl
- @amqp.amqp_classes.each { |c| gen_class c }
- }
- namespace("qpid::framing") {
- gen_all
- genl
- }
- }
- end
-end
-
-AmqpCppModelGen.new(Outdir, Amqp).generate();
-