summaryrefslogtreecommitdiff
path: root/trunk/qpid/cpp/rubygen/0-10/typecode.rb
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/qpid/cpp/rubygen/0-10/typecode.rb')
-rwxr-xr-xtrunk/qpid/cpp/rubygen/0-10/typecode.rb117
1 files changed, 0 insertions, 117 deletions
diff --git a/trunk/qpid/cpp/rubygen/0-10/typecode.rb b/trunk/qpid/cpp/rubygen/0-10/typecode.rb
deleted file mode 100755
index 0ab9c4be5d..0000000000
--- a/trunk/qpid/cpp/rubygen/0-10/typecode.rb
+++ /dev/null
@@ -1,117 +0,0 @@
-#!/usr/bin/env ruby
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-#
-$: << ".." # Include .. in load path
-require 'cppgen'
-
-class TypeCode < CppGen
- def initialize(outdir, amqp)
- super(outdir, amqp)
- @ns="qpid::amqp_#{@amqp.version.bars}"
- @dir="qpid/amqp_#{@amqp.version.bars}"
- @types = @amqp.collect_all(AmqpType).select { |t| t.code }
-
- end
-
- def type_for_code_h()
- h_file("#{@dir}/TypeForCode") {
- include "#{@dir}/built_in_types.h"
- include "#{@dir}/UnknownType.h"
- namespace(@ns) {
- genl
- genl "template <uint8_t Code> struct TypeForCode;"
- genl
- @types.each { |t|
- genl "template <> struct TypeForCode<#{t.code}> { typedef #{t.typename} type; };"
- }
- genl
- genl "template <class V> typename V::result_type"
- scope("apply_visitor(V& visitor, uint8_t code) {") {
- scope("switch (code) {", "}") {
- @types.each { |t|
- genl "case #{t.code}: return visitor((#{t.typename}*)0);"
- }
- genl "default: return visitor((UnknownType*)0);"
- }
- }
- genl
- genl "std::string typeName(uint8_t code);"
- }
- }
- end
-
- def type_for_code_cpp()
- cpp_file("#{@dir}/TypeForCode") {
- include "<string>"
- include "<sstream>"
- namespace(@ns) {
- namespace("") {
- struct("Names") {
- scope("Names() {") {
- scope("for (int i =0; i < 256; ++i) {") {
- genl "std::ostringstream os;"
- genl "os << \"UnknownType<\" << i << \">\";"
- genl "names[i] = os.str();"
- }
- @types.each { |t| genl "names[#{t.code}] = \"#{t.name}\";" }
- }
- genl "std::string names[256];"
- }
- genl "Names names;"
- }
- genl "std::string typeName(uint8_t code) { return names.names[code]; }"
- }}
- end
-
- def code_for_type_h()
- name="#{@dir}/CodeForType"
- h_file(name) {
- include "#{@dir}/built_in_types.h"
-
- namespace(@ns) {
- genl
- genl "template <class T> struct CodeForType;"
- genl
- @types.each { |t|
- genl "template <> struct CodeForType<#{t.typename}> { static const uint8_t value; };"
- }
- genl
- genl "template <class T> uint8_t codeFor(const T&) { return CodeForType<T>::value; }"
- }
- }
-
- cpp_file(name) {
- include name
- namespace(@ns) {
- @types.each { |t|
- genl "const uint8_t CodeForType<#{t.typename}>::value=#{t.code};"
- }
- }
- }
- end
-
- def generate
- type_for_code_h
- type_for_code_cpp
- code_for_type_h
- end
-end
-
-TypeCode.new($outdir, $amqp).generate();
-