#!/usr/bin/env ruby # Usage: output_directory xml_spec_file [xml_spec_file...] # $: << '..' require 'cppgen' require 'fileutils' require 'etc' require 'pathname' class OperationsGen < CppGen def initialize(chassis, outdir, amqp) super(outdir, amqp) @chassis=chassis @classname="AMQP_#{@chassis.caps}Operations" end def handler_method (m) return_type = m.result ? m.result.cpptype.ret : "void" gen "\nvirtual #{return_type} #{m.cppname}(" gen m.signature.join(",\n") gen ") = 0;\n" end def handler_classname(c) c.name.caps+"Handler"; end def handler_class(c) if (!c.methods_on(@chassis).empty?) handlerclass=handler_classname c gen < #include "qpid/framing/ProtocolVersion.h" #include "qpid/framing/amqp_structs.h" namespace qpid { namespace framing { class AMQMethodBody; class #{@classname} { public: class Invoker; // Declared in #{@chassis.caps}Invoker virtual ~#{@classname}() {} virtual ProtocolVersion getVersion() const = 0; // Inner classes EOS indent { @amqp.classes.each { |c| handler_class(c) } } gen <