You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2006/09/20 00:07:25 UTC

svn commit: r447994 [6/46] - in /incubator/qpid/trunk/qpid: ./ cpp/ cpp/bin/ cpp/broker/ cpp/broker/inc/ cpp/broker/src/ cpp/broker/test/ cpp/client/ cpp/client/inc/ cpp/client/src/ cpp/client/test/ cpp/common/ cpp/common/concurrent/ cpp/common/concurr...

Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/code_utils.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/code_utils.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/code_utils.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/code_utils.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,210 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+  <!--
+  ========================
+  Function: amqp:copyright
+  ========================
+  Print out a standard Apache copyright notice and generated code warning.
+  -->
+  <xsl:function name="amqp:copyright">/**
+*
+* Copyright (c) 2006 The Apache Software Foundation
+*
+* Licensed 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.
+*
+*/
+ 
+/**
+*
+* NOTE: This file is generated directly from the AMQP XML specification.
+* === DO NOT EDIT ===
+*
+*/&#xA;</xsl:function>
+
+  <!--
+  ==========================
+  Function: amqp:upper-first
+  ==========================
+  Convert the first character of the parameter to upper-case
+  -->
+  <xsl:function name="amqp:upper-first">
+    <xsl:param name="in"/>
+    <xsl:value-of select="concat(upper-case(substring($in, 1, 1)), substring($in, 2))"/>
+  </xsl:function>
+
+  <!--
+  ========================
+  Function: amqp:cpp-name-1
+  ========================
+  Convert parameter "name" to a valid C++ identifier, finding spaces and '-'s
+  in the parameter name and replacing them with '_' chars. Also check for C++
+  reserved words and prefix them with '_'. No capitalization is performed.
+  -->
+  <xsl:function name="amqp:cpp-name-1">
+    <xsl:param name="name"/>
+    <xsl:choose>
+      <!-- C++ reserved words. -->
+      <xsl:when test="$name='delete'">delete_</xsl:when>
+      <xsl:when test="$name='return'">return_</xsl:when>
+      <!-- Change unsuitable C++ identifier characters. -->
+      <xsl:otherwise><xsl:value-of select="translate($name, ' -', '__')"/></xsl:otherwise>
+    </xsl:choose>
+  </xsl:function>
+
+  <!--
+  =======================
+  Function: amqp:cpp-name
+  =======================
+  Convert parameter "name" to a valid, camel cased C++ name. 
+  -->
+  <xsl:function name="amqp:cpp-name">
+    <xsl:param name="name"/>
+    <xsl:value-of select="amqp:cpp-name-1(amqp:camel-case($name))"/>
+  </xsl:function>
+
+  <!--
+  =============================
+  Function: amqp:cpp-class-name
+  =============================
+  Convert parameter "name" to a valid C++ identifier, finding spaces and '-'s
+  in the parameter name and replacing them with '_' chars. Also check for C++
+  reserved words and prefix them with '_'. First letter only is capitalized.
+  -->
+  <xsl:function name="amqp:cpp-class-name">
+    <xsl:param name="name"/>
+    <xsl:value-of select="amqp:upper-first(amqp:cpp-name($name))"/>
+  </xsl:function>
+
+  <!--
+  =========================
+  Function: amqp:camel-case
+  =========================
+  *** NOTE: Only works with *one* of either '-' or ' '. If a name contains 2 or
+  *** more of these characters, then this will break.
+  Convert parameter "name" to camel case, where words are separated by ' ' or '-'
+  -->
+  <xsl:function name="amqp:camel-case">
+    <xsl:param name="name"/>
+    <xsl:choose>
+        <xsl:when test="contains($name, ' ')">
+            <xsl:value-of select="concat(substring-before($name, ' '), amqp:upper-first(substring-after($name, ' ')))"/>
+        </xsl:when>
+        <xsl:when test="contains($name, '-')">
+            <xsl:value-of select="concat(substring-before($name, '-'), amqp:upper-first(substring-after($name, '-')))"/>
+        </xsl:when>
+        <xsl:otherwise>
+            <xsl:value-of select="$name"/>
+        </xsl:otherwise>
+    </xsl:choose>
+  </xsl:function>
+
+  <!--
+  =========================
+  Function: amqp:field-name
+  =========================
+  Get a valid field name, processing spaces and '-'s where appropriate
+  -->
+  <xsl:function name="amqp:field-name">
+    <xsl:param name="name"/>
+    <xsl:value-of select="amqp:upper-first(amqp:camel-case($name))"/>
+  </xsl:function>
+
+  <!--
+  =======================
+  Function: amqp:cpp-type
+  =======================
+  Map the set of simple AMQP types to C++ types. Also map the AMQP table
+  domain to appropriate C++ class.
+  -->
+  <xsl:function name="amqp:cpp-type">
+    <xsl:param name="type"/>
+    <xsl:choose>
+      <!-- Simple AMQP domain types -->
+      <xsl:when test="$type='octet'">u_int8_t</xsl:when>
+      <xsl:when test="$type='short'">u_int16_t</xsl:when>
+      <xsl:when test="$type='shortstr'">string</xsl:when>
+      <xsl:when test="$type='longstr'">string</xsl:when>
+      <xsl:when test="$type='bit'">bool</xsl:when>
+      <xsl:when test="$type='long'">u_int32_t</xsl:when>
+      <xsl:when test="$type='longlong'">u_int64_t</xsl:when>
+      <xsl:when test="$type='timestamp'">u_int64_t</xsl:when>
+      <!-- AMQP structures -->
+      <xsl:when test="$type='table'">FieldTable</xsl:when>
+      <!-- Fallback: unknown type -->
+      <xsl:otherwise>unknown_type /* WARNING: undefined type */</xsl:otherwise>
+    </xsl:choose>
+  </xsl:function>
+
+  <!--
+  ==========================
+  Function: amqp:cpp-arg-ref
+  ==========================
+  Determines whether a C++ reference is required for an argument.
+  -->
+  <xsl:function name="amqp:cpp-arg-ref">
+    <xsl:param name="type"/>
+    <xsl:choose>
+      <xsl:when test="$type='string'">&amp;</xsl:when>
+      <xsl:when test="$type='FieldTable'">&amp;</xsl:when>
+    </xsl:choose>
+  </xsl:function>
+
+  <!--
+  =========================
+  Function: amqp:cpp-lookup
+  =========================
+  Template and function for looking up the cpp type from the domain name.
+  The template runs on a lookup table XML generated by the "domain_table"
+  template in amqp_domaintypes.xsl.
+  -->
+  <xsl:template match="/" mode="cpp-lookup">
+    <xsl:param name="domain-name"/>
+    <xsl:for-each select="key('domain-lookup', $domain-name)">
+      <xsl:value-of select="@cpp-type"/>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:function name="amqp:cpp-lookup">
+    <xsl:param name="domain-name"/>
+    <xsl:param name="domain-cpp-table"/>
+    <xsl:apply-templates mode="cpp-lookup" select="$domain-cpp-table">
+      <xsl:with-param name="domain-name" select="$domain-name"/>
+    </xsl:apply-templates>
+  </xsl:function>
+
+  <!--
+  =========================
+  Function: amqp:cpp-lookup
+  =========================
+  Template and function for processing the possibly multiple <doc> elements
+  within a node.
+  -->
+  <xsl:template match="doc" mode="process-doc-elts">
+    <xsl:for-each select=".">
+      <xsl:choose>
+        <xsl:when test=".[@type='grammar']"><xsl:value-of select="."/></xsl:when>
+        <xsl:when test=".[@type='scenario']"><xsl:value-of select="concat('&#xA;Test Scenario: ', normalize-space(.))"/></xsl:when>
+        <xsl:otherwise><xsl:value-of select="normalize-space(.)"/></xsl:otherwise>
+      </xsl:choose>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:function name="amqp:process-docs">
+    <xsl:param name="doc-elts"/>
+    <xsl:apply-templates mode="process-doc-elts" select="$doc-elts"/>
+  </xsl:function>
+
+
+</xsl:stylesheet>
+

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/code_utils.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/convert_0.81.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/convert_0.81.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/convert_0.81.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/convert_0.81.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,407 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org"> 
+
+<xsl:template match="/">
+    <xsl:apply-templates select="/" mode="do-amqp"/> 
+</xsl:template> 
+
+<!-- ======
+     <amqp>
+     ====== -->
+<xsl:template match="amqp" mode="do-amqp">
+
+<!-- <xsl:text>&#xA;</xsl:text> -->
+<xsl:element name= "amqp">
+<xsl:attribute name="major"><xsl:value-of select="@major"/></xsl:attribute>
+<xsl:attribute name="minor"><xsl:value-of select="@minor"/></xsl:attribute>
+<xsl:attribute name="port"><xsl:value-of select="@port"/></xsl:attribute>
+<xsl:attribute name="comment"><xsl:value-of select="@comment"/></xsl:attribute>
+<xsl:text>&#xA;</xsl:text>
+
+<!-- constant elements -->
+<xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:comment>
+  ====================
+  Constants
+  ====================
+  </xsl:comment><xsl:text>&#xA;</xsl:text>
+<xsl:text>&#xA;</xsl:text>
+<xsl:apply-templates select="constant" mode="do-constant">
+<xsl:with-param name="indent" select="'  '"/>
+</xsl:apply-templates>
+
+<!-- domain elements -->
+<xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:comment>
+  ====================
+  Domains
+  ====================
+  </xsl:comment><xsl:text>&#xA;</xsl:text>
+<xsl:text>&#xA;</xsl:text>
+<xsl:apply-templates select="domain" mode="do-domain">
+<xsl:with-param name="indent" select="'  '"/>
+</xsl:apply-templates>
+
+<!-- required elementary domain definition elements added into v0.81 -->
+<xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:comment> Elementary domains </xsl:comment><xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:element name="domain">
+  <xsl:attribute name="name">bit</xsl:attribute>
+  <xsl:attribute name="type">bit</xsl:attribute>
+  <xsl:attribute name="label">single bit</xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:element name="domain">
+  <xsl:attribute name="name">octet</xsl:attribute>
+  <xsl:attribute name="type">octet</xsl:attribute>
+  <xsl:attribute name="label">single octet</xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:element name="domain">
+  <xsl:attribute name="name">short</xsl:attribute>
+  <xsl:attribute name="type">short</xsl:attribute>
+  <xsl:attribute name="label">16-bit integer</xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:element name="domain">
+  <xsl:attribute name="name">long</xsl:attribute>
+  <xsl:attribute name="type">long</xsl:attribute>
+  <xsl:attribute name="label">32-bit integer</xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:element name="domain">
+  <xsl:attribute name="name">longlong</xsl:attribute>
+  <xsl:attribute name="type">longlong</xsl:attribute>
+  <xsl:attribute name="label">64-bit integer</xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:element name="domain">
+  <xsl:attribute name="name">shortstr</xsl:attribute>
+  <xsl:attribute name="type">shortstr</xsl:attribute>
+  <xsl:attribute name="label">short string</xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:element name="domain">
+  <xsl:attribute name="name">longstr</xsl:attribute>
+  <xsl:attribute name="type">longstr</xsl:attribute>
+  <xsl:attribute name="label">long string</xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:element name="domain">
+  <xsl:attribute name="name">timestamp</xsl:attribute>
+  <xsl:attribute name="type">timestamp</xsl:attribute>
+  <xsl:attribute name="label">64-bit timestamp</xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:element name="domain">
+  <xsl:attribute name="name">table</xsl:attribute>
+  <xsl:attribute name="type">table</xsl:attribute>
+  <xsl:attribute name="label">field table</xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+
+<!-- class elements -->
+<xsl:text>&#xA;</xsl:text>
+<xsl:text>  </xsl:text><xsl:comment>
+  ====================
+  Classes
+  ====================
+  </xsl:comment><xsl:text>&#xA;</xsl:text>
+<xsl:apply-templates select="class" mode="do-class">
+<xsl:with-param name="indent" select="'  '"/>
+</xsl:apply-templates>
+
+</xsl:element><!-- amqp -->
+<!-- <xsl:text>&#xA;</xsl:text> -->
+</xsl:template>
+
+<!-- ==========
+     <constant>
+     ========== -->
+<xsl:template match="constant" mode="do-constant">
+<xsl:param name="indent"/>
+<xsl:variable name="constant" select="translate(@name, ' ', '-')"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="constant">
+<xsl:attribute name="name"><xsl:value-of select="$constant"/></xsl:attribute>
+<xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
+<xsl:if test="@class">
+<xsl:attribute name="class"><xsl:value-of select="translate(@class, ' ', '-')"/></xsl:attribute>
+</xsl:if>
+
+<!-- If there is content, place in child <doc> element -->
+<xsl:if test="string-length(.) > 0">
+<xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text>  </xsl:text><xsl:element name="doc"><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text>    </xsl:text><xsl:value-of select="normalize-space(.)"/><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text>  </xsl:text></xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/>
+</xsl:if>
+
+</xsl:element><xsl:text>&#xA;</xsl:text>
+
+</xsl:template> 
+
+<!-- ========
+     <domain>
+     ======== -->
+<xsl:template match="domain" mode="do-domain">
+<xsl:param name="indent"/>
+<xsl:variable name="domain" select="translate(@name, ' ', '-')"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="domain">
+<xsl:attribute name="name"><xsl:value-of select="$domain"/></xsl:attribute>
+<xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
+<xsl:if test="doc|assert|rule"><xsl:text>&#xA;</xsl:text></xsl:if>
+
+<!-- doc elements -->
+<xsl:apply-templates select="doc" mode="do-doc">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+</xsl:apply-templates>
+
+<!-- assert elements -->
+<xsl:apply-templates select="assert" mode="do-assert">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+</xsl:apply-templates>
+
+<!-- rule elements -->
+<xsl:apply-templates select="rule" mode="do-rule">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+<xsl:with-param name="label" select="$domain"/>
+</xsl:apply-templates>
+
+<xsl:if test="doc|assert|rule"><xsl:value-of select="$indent"/></xsl:if></xsl:element><xsl:text>&#xA;</xsl:text>
+
+</xsl:template> 
+
+<!-- ========
+     <class>
+     ======== -->
+
+<xsl:template match="class" mode="do-class">
+<xsl:param name="indent"/>
+<xsl:variable name="class" select="translate(@name, ' ', '-')"/>
+
+<!-- Ignore class test - removed from 0.81 -->
+<xsl:if test="not($class = 'test')">
+<xsl:text>&#xA;</xsl:text><xsl:value-of select="$indent"/><xsl:comment><xsl:value-of select="concat(' == Class: ', $class, ' == ')"/></xsl:comment><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/><xsl:element name="class">
+<xsl:attribute name="name"><xsl:value-of select="$class"/></xsl:attribute>
+<xsl:attribute name="handler"><xsl:value-of select="@handler"/></xsl:attribute>
+<xsl:attribute name="index"><xsl:value-of select="@index"/></xsl:attribute>
+<xsl:if test="doc|chassis|rule|field|method"><xsl:text>&#xA;</xsl:text></xsl:if>
+
+<!-- doc elements -->
+<xsl:apply-templates select="doc" mode="do-doc">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+<xsl:with-param name="label" select="$class"/>
+</xsl:apply-templates>
+
+<!-- chassis elements -->
+<xsl:apply-templates select="chassis" mode="do-chassis">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+</xsl:apply-templates>
+
+<!-- rule elements -->
+<xsl:apply-templates select="rule" mode="do-rule">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+<xsl:with-param name="label" select="$class"/>
+</xsl:apply-templates>
+
+<!-- field elements -->
+<xsl:apply-templates select="field" mode="do-field">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+<xsl:with-param name="label" select="$class"/>
+</xsl:apply-templates>
+
+<!-- method elements -->
+<xsl:apply-templates select="method" mode="do-method">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+<xsl:with-param name="label" select="$class"/>
+</xsl:apply-templates>
+
+<xsl:if test="doc|chassis|rule|field|method"><xsl:value-of select="$indent"/></xsl:if></xsl:element><xsl:text>&#xA;</xsl:text>
+</xsl:if>
+</xsl:template> 
+
+<!-- ========
+     <method>
+     ======== -->
+
+<xsl:template match="method" mode="do-method">
+<xsl:param name="indent"/>
+<xsl:param name="label"/>
+<xsl:variable name="method" select="translate(@name, ' ', '-')"/>
+
+<xsl:text>&#xA;</xsl:text><xsl:value-of select="$indent"/><xsl:comment><xsl:value-of select="concat(' == Method: ', $label, '.', $method, ' == ')"/></xsl:comment><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/><xsl:element name="method">
+<xsl:attribute name="name"><xsl:value-of select="$method"/></xsl:attribute>
+<xsl:if test="@synchronous"><xsl:attribute name="synchronous"><xsl:value-of select="@synchronous"/></xsl:attribute></xsl:if>
+<xsl:attribute name="index"><xsl:value-of select="@index"/></xsl:attribute>
+<xsl:if test="doc|chassis|response|rule|field"><xsl:text>&#xA;</xsl:text></xsl:if>
+
+<!-- doc elements -->
+<xsl:apply-templates select="doc" mode="do-doc">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+<xsl:with-param name="label" select="concat($label, '.', $method)"/>
+</xsl:apply-templates>
+
+<!-- chassis and response elements -->
+<xsl:apply-templates select="chassis" mode="do-chassis">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+</xsl:apply-templates>
+<xsl:apply-templates select="response" mode="do-response">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+</xsl:apply-templates>
+
+<!-- rule elements -->
+<xsl:apply-templates select="rule" mode="do-rule">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+<xsl:with-param name="label" select="concat($label, '.', $method)"/>
+</xsl:apply-templates>
+
+<!-- field elements -->
+<xsl:apply-templates select="field" mode="do-field">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+<xsl:with-param name="label" select="concat($label, '.', $method)"/>
+</xsl:apply-templates>
+
+<xsl:if test="doc|chassis|response|rule|field"><xsl:value-of select="$indent"/></xsl:if></xsl:element><xsl:text>&#xA;</xsl:text>
+
+</xsl:template> 
+
+<!-- ========
+     <field>
+     ======== -->
+
+<xsl:template match="field" mode="do-field">
+<xsl:param name="indent"/>
+<xsl:param name="label"/>
+<xsl:variable name="field" select="translate(@name, ' ', '-')"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="field">
+<xsl:attribute name="name"><xsl:value-of select="$field"/></xsl:attribute>
+<xsl:if test="@type">
+<xsl:attribute name="domain"><xsl:value-of select="translate(@type, ' ', '-')"/></xsl:attribute>
+</xsl:if>
+<xsl:if test="@domain">
+<xsl:attribute name="domain"><xsl:value-of select="translate(@domain, ' ', '-')"/></xsl:attribute>
+</xsl:if>
+<xsl:if test="doc|rule|assert"><xsl:text>&#xA;</xsl:text></xsl:if>
+
+<!-- doc elements -->
+<xsl:apply-templates select="doc" mode="do-doc">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+<xsl:with-param name="label" select="concat($label, '.', $field)"/>
+</xsl:apply-templates>
+
+<!-- rule elements -->
+<xsl:apply-templates select="rule" mode="do-rule">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+<xsl:with-param name="label" select="concat($label, '.', $field)"/>
+</xsl:apply-templates>
+
+<!-- assert elements -->
+<xsl:apply-templates select="assert" mode="do-assert">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+</xsl:apply-templates>
+
+<xsl:if test="doc|rule|assert"><xsl:value-of select="$indent"/></xsl:if></xsl:element><xsl:text>&#xA;</xsl:text>
+
+</xsl:template> 
+
+<!-- ========
+     <assert>
+     ======== -->
+<xsl:template match="assert" mode="do-assert">
+<xsl:param name="indent"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="assert">
+<xsl:attribute name="check"><xsl:value-of select="@check"/></xsl:attribute>
+<xsl:if test="@value"><xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute></xsl:if>
+<xsl:if test="@rule"><xsl:attribute name="rule"><xsl:value-of select="@rule"/></xsl:attribute></xsl:if>
+
+<xsl:apply-templates select="doc" mode="do-doc">
+<xsl:with-param name="indent" select="concat($indent, '  ')"/>
+</xsl:apply-templates>
+
+</xsl:element><xsl:text>&#xA;</xsl:text>
+
+</xsl:template> 
+
+<!-- ========
+     <rule>
+     ======== -->
+<xsl:template match="rule" mode="do-rule">
+<xsl:param name="indent"/>
+<xsl:param name="label"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="rule">
+<xsl:attribute name="name">rule_<xsl:value-of select="$label"/>_<xsl:number format="01"/></xsl:attribute>
+
+<!-- If there is content, place in child <doc> element -->
+
+<xsl:if test="string-length(.) > 0">
+<xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text>  </xsl:text><xsl:element name="doc"><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text>    </xsl:text><xsl:value-of select="normalize-space(.)"/><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text>  </xsl:text></xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/>
+</xsl:if>
+
+</xsl:element><xsl:text>&#xA;</xsl:text>
+
+</xsl:template> 
+
+<!-- =========
+     <chassis>
+     ========= -->
+<xsl:template match="chassis" mode="do-chassis">
+<xsl:param name="indent"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="chassis">
+<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+<xsl:attribute name="implement"><xsl:value-of select="@implement"/></xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+
+</xsl:template> 
+
+<!-- ==========
+     <response>
+     ========== -->
+<xsl:template match="response" mode="do-response">
+<xsl:param name="indent"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="response">
+<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+</xsl:element><xsl:text>&#xA;</xsl:text>
+
+</xsl:template> 
+
+<!-- =====
+     <doc>
+     ===== -->
+<xsl:template match="doc" mode="do-doc">
+<xsl:param name="indent"/>
+<xsl:param name="label"/>
+
+<!-- Handle cases of <doc name="rule>...</doc>: turn them into <rule><doc>...</doc></rule> -->
+<xsl:if test="@name = 'rule'">
+<xsl:value-of select="$indent"/><xsl:element name="rule">
+<xsl:if test="@test"><xsl:attribute name="name"><xsl:value-of select="@test"/></xsl:attribute></xsl:if>
+<xsl:if test="not(@test)"><xsl:attribute name="name">doc_rule_<xsl:value-of select="$label"/>_<xsl:number format="01"/></xsl:attribute></xsl:if>
+<xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="concat($indent, '  ')"/><xsl:element name="doc"><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="concat($indent, '  ')"/><xsl:text>  </xsl:text><xsl:value-of select="normalize-space(.)"/><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="concat($indent, '  ')"/></xsl:element><xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/></xsl:element><xsl:text>&#xA;</xsl:text>
+</xsl:if>
+
+<!-- Normal <doc>...</doc> elements -->
+<xsl:if test="not(@name = 'rule')">
+<xsl:value-of select="$indent"/><xsl:element name="doc">
+<xsl:if test="@name = 'grammar'">
+<xsl:attribute name="type">grammar</xsl:attribute>
+<xsl:value-of select="$indent"/><xsl:text>  </xsl:text><xsl:value-of select="."/>
+</xsl:if>
+<xsl:if test="not(@name = 'grammar')">
+<xsl:text>&#xA;</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text>  </xsl:text><xsl:value-of select="normalize-space(.)"/><xsl:text>&#xA;</xsl:text>
+</xsl:if>
+<xsl:value-of select="$indent"/></xsl:element><xsl:text>&#xA;</xsl:text>
+</xsl:if>
+
+</xsl:template> 
+
+</xsl:stylesheet> 

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/convert_0.81.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/cpp.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/cpp.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/cpp.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/cpp.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,318 @@
+<?xml version='1.0'?> 
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org"> 
+
+<!-- this class contains the templates for generating C++ source code for a given framing model -->
+
+<xsl:import href="utils.xsl"/>
+<xsl:output method="text" indent="yes" name="textFormat"/> 
+
+<xsl:template match="/"> 
+    <xsl:apply-templates mode="generate-multi" select="frames"/>
+    <xsl:apply-templates mode="method-list-header" select="frames"/>
+    <xsl:apply-templates mode="method-list-source" select="frames"/>
+    <xsl:apply-templates mode="method-interface" select="frames"/>
+</xsl:template>
+
+<!-- processes all frames outputting the classes in a single stream -->
+<xsl:template match="frames" mode="generate-single"> 
+    <xsl:result-document href="amqp_methods.h" format="textFormat">
+#include "amqp_framing.h"
+        <xsl:for-each select="frame">      
+           <xsl:call-template name="generate-class">
+                <xsl:with-param name="f" select="."/>
+            </xsl:call-template>
+        </xsl:for-each>      
+    </xsl:result-document>
+</xsl:template>
+
+<!-- generates seperate file for each class/frame -->
+<xsl:template match="frame" mode="generate-multi"> 
+    <xsl:variable name="uri" select="concat(@name, '.h')"/> 
+    <xsl:result-document href="{$uri}" format="textFormat"> 
+#include "amqp_types.h"
+#include "AMQP_ServerOperations.h"
+#include "AMQMethodBody.h"
+#include "Buffer.h"
+#include "FieldTable.h"
+
+#ifndef _<xsl:value-of select="@name"/>_
+#define _<xsl:value-of select="@name"/>_
+
+namespace qpid {
+namespace framing {
+
+    <xsl:call-template name="generate-class">
+        <xsl:with-param name="f" select="."/>
+    </xsl:call-template>
+}
+}
+
+#endif
+
+</xsl:result-document> 
+</xsl:template> 
+
+
+<!-- main class generation template -->
+<xsl:template name="generate-class"> 
+    <xsl:param name="f"/>
+/**
+ * This class is autogenerated, do not modify. [From <xsl:value-of select="$f/parent::frames/@protocol"/>]
+ */
+class <xsl:value-of select="$f/@name"/> : virtual public AMQMethodBody
+{ 
+    <xsl:for-each select="$f/field"> 
+        <xsl:value-of select="@cpp-type"/>
+        <xsl:text> </xsl:text>
+        <xsl:value-of select="@name"/>;    
+    </xsl:for-each> 
+
+public:
+    typedef std::tr1::shared_ptr&lt;<xsl:value-of select="$f/@name"/>&gt; shared_ptr;   
+
+    virtual ~<xsl:value-of select="$f/@name"/>() {}
+
+    <xsl:for-each select="$f/field"> 
+        inline <xsl:value-of select="concat(@cpp-arg-type, ' get', amqp:upper-first(@name), '() { return ', @name)"/>; }    
+    </xsl:for-each> 
+ 
+
+    inline void print(std::ostream&amp; out) const{
+	out &lt;&lt; "<xsl:value-of select="$f/@declaration_name"/>"
+        <xsl:for-each select="$f/field"> 
+	    <xsl:text> &lt;&lt; ", </xsl:text>
+            <xsl:value-of select="@name"/>="&lt;&lt;
+            <xsl:value-of select="@name"/>    
+        </xsl:for-each> 
+        ;
+    }
+
+    inline u_int16_t amqpClassId() const {
+        return <xsl:value-of select="$f/@class-id"/>;
+    }
+   
+    inline u_int16_t amqpMethodId() const {
+        return <xsl:value-of select="$f/@method-id"/>;
+    }
+
+    inline u_int32_t bodySize() const {
+        <xsl:choose> 
+        <xsl:when test="$f/field">
+        return
+        <xsl:for-each select="$f/field">
+            <xsl:if test="position() != 1">+
+            </xsl:if>
+            <xsl:value-of select="amqp:field-length(.)"/>
+        </xsl:for-each>		 
+        ;
+        </xsl:when>
+        <xsl:otherwise>return 0;</xsl:otherwise>
+        </xsl:choose> 
+    }
+
+    <xsl:if test="@server='true'">
+    inline void invoke(AMQP_ServerOperations&amp; target, u_int16_t channel) {
+	<xsl:if test="field">
+            <xsl:value-of select="concat('target.get', amqp:upper-first(parent::class/@name), 'Handler()->', @invocation_name, '(channel, ')"/>
+            <xsl:value-of select="$f/field/@name" separator=", "/>);
+	</xsl:if>
+	<xsl:if test="not(field)">
+            <xsl:value-of select="concat('target.get', amqp:upper-first(parent::class/@name), 'Handler()->', @invocation_name, '(channel)')"/>;
+	</xsl:if>
+    }
+    </xsl:if>
+
+    inline void encodeContent(Buffer&amp; buffer) const
+    {
+        <xsl:if test="$f/field[@type='bit']">        
+	    u_int8_t flags = 0;
+            <xsl:for-each select="$f/field[@type='bit']">
+                <xsl:value-of select="concat('flags |= ', @name,' &lt;&lt; (', @boolean-index, ' - 1)')"/>; 
+            </xsl:for-each>
+        </xsl:if>
+        <xsl:for-each select="$f/field">
+            <xsl:if test="@type != 'bit'">
+                <xsl:value-of select="amqp:encoder(.)"/>;
+            </xsl:if>
+            <xsl:if test="@type = 'bit' and @boolean-index = 1">
+                <xsl:text>buffer.putOctet(flags)</xsl:text>;
+            </xsl:if>
+        </xsl:for-each>		 
+    }
+
+    inline void decodeContent(Buffer&amp; buffer)
+    {
+       <xsl:if test="$f/field[@type='bit']">
+	  u_int8_t maxbit = <xsl:value-of select="$f/@bit-field-count"/>;
+       </xsl:if>
+        <xsl:for-each select="$f/field">
+            <xsl:choose>
+		<xsl:when test="@type = 'bit' and @boolean-index = 1">
+		    <xsl:text>u_int8_t flags = buffer.getOctet()</xsl:text>;
+		    <xsl:value-of select="amqp:decoder(.)"/>;
+		</xsl:when>
+		<xsl:otherwise>
+		    <xsl:value-of select="amqp:decoder(.)"/>;
+		</xsl:otherwise>
+            </xsl:choose>
+        </xsl:for-each>		 
+    }
+
+    <xsl:if test="$f/field">        
+    <!-- only generate overloaded constructor if there are fields in this method -->
+    inline <xsl:value-of select="$f/@name"/>(<xsl:value-of select="$f/field/concat(@cpp-arg-type, ' _', @name)" separator=", "/>) : <xsl:value-of select="$f/field/concat(@name, '(_', @name, ')')" separator=", "/>
+    {
+    }
+    </xsl:if>
+
+    inline <xsl:value-of select="$f/@name"/>()
+    {
+    }
+};
+
+</xsl:template> 
+
+<xsl:template match="frames" mode="method-list-header">	
+<xsl:result-document href="amqp_methods.h" format="textFormat">
+/**
+ * This file is autogenerated, do not modify.
+ */
+
+#ifndef AMQ_METHODS_H
+#define AMQ_METHODS_H
+
+        <xsl:for-each select="class/frame">
+#include "<xsl:value-of select="@name"/>.h"
+        </xsl:for-each>
+
+namespace qpid {
+namespace framing {
+
+        <xsl:for-each select="class/frame">
+const <xsl:value-of select="concat(@name, ' ', @declaration_name)"/>;
+        </xsl:for-each>
+
+AMQMethodBody* createAMQMethodBody(u_int16_t classId, u_int16_t methodId);
+
+}
+}
+
+#endif
+</xsl:result-document>
+</xsl:template> 
+
+<xsl:template match="frames" mode="method-list-source">	
+    <xsl:result-document href="amqp_methods.cpp" format="textFormat">
+#include "amqp_methods.h"
+#include "QpidError.h"
+
+namespace qpid {
+namespace framing {
+/**
+ * This method is autogenerated, do not modify.
+ */
+AMQMethodBody* createAMQMethodBody(u_int16_t classId, u_int16_t methodId){
+    switch(classId * 1000 + methodId)
+    {
+        <xsl:for-each select="class/frame">
+            <xsl:text>case </xsl:text>
+            <xsl:value-of select="@class-id"/>         
+	    <xsl:text> * 1000 + </xsl:text> 
+            <xsl:value-of select="@method-id"/>         
+	    <xsl:text>: return new </xsl:text> 
+            <xsl:value-of select="@name"/>();         
+        </xsl:for-each>
+    }
+    THROW_QPID_ERROR(FRAMING_ERROR, "Unknown method");	
+}
+
+}
+}
+</xsl:result-document>
+</xsl:template> 
+
+<xsl:template match="frames" mode="generate-interface">	
+    <xsl:result-document href="AMQPServer.h" format="textFormat">
+#include "amqp_types.h"
+#include "FieldTable.h"
+
+#ifndef _AMQPServer_
+#define _AMQPServer_
+
+namespace qpid {
+namespace framing {
+
+class AMQPServer
+{
+    public:
+
+    <xsl:for-each select="class">
+    class <xsl:value-of select="concat(amqp:upper-first(@name), 'Handler')"/>{
+        public:
+        <xsl:for-each select="frame[@server='true']">      
+        <xsl:if test="field">
+            virtual void <xsl:value-of select="@invocation_name"/>(u_int16_t channel, <xsl:value-of select="field/concat(@cpp-arg-type, ' ', @name)" separator=", "/>) = 0; 
+        </xsl:if>
+        <xsl:if test="not(field)">
+            virtual void <xsl:value-of select="@invocation_name"/>(u_int16_t channel) = 0; 
+        </xsl:if>
+        </xsl:for-each>      
+            virtual ~<xsl:value-of select="concat(amqp:upper-first(@name), 'Handler')"/>(){}
+    };
+
+    virtual <xsl:value-of select="concat(amqp:upper-first(@name), 'Handler* get', amqp:upper-first(@name), 'Handler')"/>() = 0;       
+ 
+    </xsl:for-each>      
+    virtual ~AMQPServer(){}
+};
+
+}
+}
+
+#endif
+</xsl:result-document>
+
+    <xsl:result-document href="AMQPClient.h" format="textFormat">
+#include "amqp_types.h"
+#include "FieldTable.h"
+
+#ifndef _AMQPClient_
+#define _AMQPClient_
+
+namespace qpid {
+namespace framing {
+
+class AMQPClient
+{
+    public:
+
+    <xsl:for-each select="class">
+    class <xsl:value-of select="concat(amqp:upper-first(@name), 'Handler')"/>{
+        public:
+        <xsl:for-each select="frame[@client='true']">      
+        <xsl:if test="field">
+            virtual void <xsl:value-of select="@invocation_name"/>(u_int16_t channel, <xsl:value-of select="field/concat(@cpp-arg-type, ' ', @name)" separator=", "/>) = 0; 
+        </xsl:if>
+        <xsl:if test="not(field)">
+            virtual void <xsl:value-of select="@invocation_name"/>(u_int16_t channel) = 0; 
+        </xsl:if>
+        </xsl:for-each>      
+            virtual ~<xsl:value-of select="concat(amqp:upper-first(@name), 'Handler')"/>(){}
+    };
+
+    virtual <xsl:value-of select="concat(amqp:upper-first(@name), 'Handler* get', amqp:upper-first(@name), 'Handler')"/>() = 0;       
+ 
+    </xsl:for-each>      
+
+    virtual ~AMQPClient(){}
+};
+
+}
+}
+
+#endif
+</xsl:result-document>
+
+</xsl:template> 
+
+</xsl:stylesheet>

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/cpp.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/framing.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/framing.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/framing.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/framing.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,49 @@
+<?xml version='1.0'?> 
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org"> 
+
+<xsl:import href="prepare1.xsl"/>
+<xsl:import href="prepare2.xsl"/>
+<xsl:import href="prepare3.xsl"/>
+<xsl:import href="cpp.xsl"/>
+
+<xsl:output indent="yes"/> 
+<xsl:output method="text" indent="yes" name="textFormat"/> 
+
+<xsl:template match="/">
+    <xsl:variable name="prepare1">
+        <xsl:apply-templates mode="prepare1" select="."/>
+    </xsl:variable>
+
+    <xsl:variable name="prepare2">
+        <xsl:apply-templates mode="prepare2" select="$prepare1"/>
+    </xsl:variable>
+
+    <xsl:variable name="model">
+        <xsl:apply-templates mode="prepare3" select="$prepare2"/>
+    </xsl:variable>
+
+    <xsl:apply-templates mode="generate-multi" select="$model"/>
+    <xsl:apply-templates mode="method-list-header" select="$model"/>
+    <xsl:apply-templates mode="method-list-source" select="$model"/>
+
+    <!-- these interfaces are now generated by the new scripts from kim -->
+    <!-- e.g. those of the form amqp-server/client-*.xsl                -->    
+    <!-- xsl:apply-templates mode="generate-interface" select="$model"/ -->
+
+    <!-- dump out the intermediary files for debugging -->
+    <!--
+    <xsl:result-document href="prepare1.out">
+        <xsl:copy-of select="$prepare1"/> 
+    </xsl:result-document>
+
+    <xsl:result-document href="prepare2.out">
+        <xsl:copy-of select="$prepare2"/> 
+    </xsl:result-document>
+
+    <xsl:result-document href="model.out">
+        <xsl:copy-of select="$model"/> 
+    </xsl:result-document>
+    -->
+</xsl:template>
+
+</xsl:stylesheet> 

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/framing.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare1.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare1.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare1.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare1.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,104 @@
+<?xml version='1.0'?> 
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org"> 
+
+<xsl:import href="utils.xsl"/>
+
+<xsl:output indent="yes"/> 
+<xsl:param name="asl_base"/>
+
+<!-- pre-process, phase 1 -->
+
+<xsl:template match="/">
+    <xsl:apply-templates select="protocol" mode="prepare1"/> 
+</xsl:template> 
+
+<xsl:template match="amqp"  mode="prepare1"> 
+    <frames>
+        <xsl:attribute name="protocol">
+            <xsl:value-of select="@comment"/>
+            <xsl:text> (</xsl:text>
+                <xsl:text>major=</xsl:text><xsl:value-of select="@major"/>
+                <xsl:text>, minor=</xsl:text><xsl:value-of select="@minor"/> 
+            <xsl:text>)</xsl:text>
+        </xsl:attribute>  
+        <xsl:apply-templates mode="prepare1" select="inherit"/> 
+        <xsl:apply-templates mode="prepare1" select="include"/> 
+        <xsl:apply-templates mode="prepare1" select="domain"/> 
+        <xsl:apply-templates mode="prepare1" select="class"/> 
+    </frames> 
+</xsl:template> 
+
+<xsl:template match="include" mode="prepare1"> 
+    <xsl:if test="@filename != 'asl_constants.asl'">
+        <!-- skip asl_constants.asl, we don't need it and it is not well formed so causes error warnings -->   
+        <xsl:apply-templates select="document(@filename)" mode="prepare1"/> 
+    </xsl:if> 
+</xsl:template> 
+
+<xsl:template match="inherit" mode="prepare1"> 
+    <xsl:variable name="ibase" select="concat('file:///', $asl_base, '/', @name, '.asl')"/>
+    <xsl:choose>
+        <xsl:when test="document($ibase)">  
+            <xsl:apply-templates select="document($ibase)" mode="prepare1"/>         
+        </xsl:when> 
+        <xsl:otherwise>
+            <xsl:message>
+            Could not inherit from <xsl:value-of select="$ibase"/>; file not found.
+            </xsl:message>
+        </xsl:otherwise>
+    </xsl:choose>
+</xsl:template> 
+
+<xsl:template match="class[@index]" mode="prepare1"> 
+<xsl:if test="not(@name = 'test')">
+    <class>    
+        <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+        <xsl:apply-templates select="method" mode="prepare1"/> 
+    </class>
+</xsl:if>
+</xsl:template> 
+
+<xsl:template match="method" mode="prepare1">
+    <xsl:if test="parent::class[@index]"><!-- there is a template class that has no index, which we want to skip -->
+    <frame>
+        <xsl:attribute name="name"><xsl:value-of select="amqp:class-name(parent::class/@name, @name)"/></xsl:attribute>
+        <xsl:attribute name="class-id"><xsl:value-of select="parent::class/@index"/></xsl:attribute>
+        <xsl:if test="@index">
+            <xsl:attribute name="method-id"><xsl:value-of select="@index"/></xsl:attribute>
+        </xsl:if>
+        <xsl:if test="not(@index)">
+            <xsl:attribute name="method-id"><xsl:number count="method"/></xsl:attribute>
+        </xsl:if>
+        <xsl:attribute name="invocation_name">
+             <xsl:value-of select="amqp:keyword-check(amqp:field-name(@name))"/>
+        </xsl:attribute>
+        <xsl:attribute name="declaration_name">
+             <xsl:value-of select="amqp:method-name(parent::class/@name, @name)"/>
+        </xsl:attribute>
+        <xsl:if test="chassis[@name='client']">
+            <xsl:attribute name="client">true</xsl:attribute>
+        </xsl:if>
+        <xsl:if test="chassis[@name='server']">
+            <xsl:attribute name="server">true</xsl:attribute>
+        </xsl:if>
+        <xsl:apply-templates select="field" mode="prepare1"/>
+    </frame>
+    </xsl:if>
+</xsl:template>
+
+<xsl:template match="domain" mode="prepare1"> 
+    <domain> 
+        <name><xsl:value-of select="@name"/></name> 
+        <type><xsl:value-of select="@type"/></type> 
+    </domain> 
+</xsl:template> 
+
+<xsl:template match="field" mode="prepare1">
+    <field>
+        <xsl:copy-of select="@name"/>
+        <xsl:copy-of select="@type"/>
+        <xsl:copy-of select="@domain"/>
+    </field>
+</xsl:template>
+
+</xsl:stylesheet> 

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare1.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare2.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare2.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare2.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare2.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,54 @@
+<?xml version='1.0'?> 
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org"> 
+
+<xsl:import href="utils.xsl"/>
+
+<xsl:output indent="yes"/> 
+
+<!-- pre-process, phase 2 -->
+
+<xsl:key name="domain-lookup" match="domain" use="name"/>
+
+<xsl:template match="/"> 
+    <xsl:apply-templates mode="prepare2" select="frames"/> 
+</xsl:template> 
+
+<xsl:template match="field[@domain]" mode="prepare2">
+     <field> 
+         <xsl:variable name="t1" select="key('domain-lookup', @domain)/type"/>
+         <xsl:attribute name="name"><xsl:value-of select="amqp:field-name(@name)"/></xsl:attribute>
+         <xsl:attribute name="type"><xsl:value-of select="$t1"/></xsl:attribute>
+     </field> 
+</xsl:template> 
+
+<xsl:template match="field[@type]" mode="prepare2">
+     <field> 
+         <xsl:attribute name="name"><xsl:value-of select="amqp:field-name(@name)"/></xsl:attribute>
+         <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
+     </field> 
+</xsl:template> 
+
+<xsl:template match="frames" mode="prepare2">
+    <frames>
+        <xsl:copy-of select="@protocol"/>
+        <xsl:apply-templates mode="prepare2"/>
+    </frames>
+</xsl:template>
+
+<xsl:template match="class" mode="prepare2">
+    <class>
+        <xsl:copy-of select="@*"/>
+        <xsl:apply-templates mode="prepare2"/>
+    </class>
+</xsl:template>
+
+<xsl:template match="frame" mode="prepare2">
+    <xsl:element name="{name()}">
+        <xsl:copy-of select="@*"/>
+        <xsl:apply-templates mode="prepare2" select="field"/>  
+    </xsl:element>
+</xsl:template>
+
+<xsl:template match="domain" mode="prepare2"></xsl:template> 
+
+</xsl:stylesheet> 

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare2.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare3.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare3.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare3.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare3.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,54 @@
+<?xml version='1.0'?> 
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org"> 
+
+<xsl:import href="utils.xsl"/>
+
+<xsl:output indent="yes"/> 
+
+<!-- final preparation of the model -->
+
+<xsl:template match="/">
+    <xsl:apply-templates mode="prepare3"/>
+</xsl:template>
+
+<xsl:template match="frames" mode="prepare3">
+    <frames>
+        <xsl:copy-of select="@protocol"/>
+        <xsl:apply-templates mode="prepare3"/>
+    </frames>
+</xsl:template>
+
+<xsl:template match="class" mode="prepare3">
+    <class>
+        <xsl:copy-of select="@*"/>
+        <xsl:apply-templates mode="prepare3"/>
+    </class>
+</xsl:template>
+
+<xsl:template match="frame" mode="prepare3">
+    <xsl:element name="frame">
+        <xsl:copy-of select="@*"/>
+	<xsl:if test="field[@type='bit']">
+            <xsl:attribute name="has-bit-field">true</xsl:attribute>
+            <xsl:attribute name="bit-field-count"><xsl:value-of select="count(field[@type='bit'])"/></xsl:attribute>
+        </xsl:if>
+        <xsl:apply-templates mode="prepare3"/>
+    </xsl:element>
+</xsl:template>
+
+
+<xsl:template match="field" mode="prepare3">
+     <field>
+         <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
+         <!-- ensure the field name is processed to be a valid java name -->
+         <xsl:attribute name="name"><xsl:value-of select="amqp:field-name(@name)"/></xsl:attribute>
+         <!-- add some attributes to make code generation easier -->
+         <xsl:attribute name="cpp-type"><xsl:value-of select="amqp:cpp-type(@type)"/></xsl:attribute>
+         <xsl:attribute name="cpp-arg-type"><xsl:value-of select="amqp:cpp-arg-type(@type)"/></xsl:attribute>
+         <xsl:if test="@type='bit'">
+             <xsl:attribute name="boolean-index"><xsl:number count="field[@type='bit']"/></xsl:attribute>
+         </xsl:if>
+     </field>
+</xsl:template>
+
+</xsl:stylesheet> 

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare3.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/registry.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/registry.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/registry.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/registry.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,12 @@
+<?xml version='1.0'?> 
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org"> 
+
+<xsl:import href="java.xsl"/>
+
+<xsl:output method="text" indent="yes" name="textFormat"/> 
+
+<xsl:template match="/">
+    <xsl:apply-templates mode="generate-registry" select="registries"/>
+</xsl:template>
+
+</xsl:stylesheet> 

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/registry.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/utils.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/utils.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/utils.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/utils.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,194 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+<!-- This file contains functions that are used in the generation of the java classes for framing -->
+
+<!-- retrieve the java type of a given amq type -->
+<xsl:function name="amqp:cpp-type">
+    <xsl:param name="t"/>
+    <xsl:choose>
+	 <xsl:when test="$t='octet'">u_int8_t</xsl:when> 		 		 
+	 <xsl:when test="$t='short'">u_int16_t</xsl:when> 		 		 
+	 <xsl:when test="$t='shortstr'">string</xsl:when> 		 		 
+	 <xsl:when test="$t='longstr'">string</xsl:when> 		 		 
+	 <xsl:when test="$t='bit'">bool</xsl:when> 		 		 
+	 <xsl:when test="$t='long'">u_int32_t</xsl:when> 		 		 
+	 <xsl:when test="$t='longlong'">u_int64_t</xsl:when> 		 		 
+	 <xsl:when test="$t='table'">FieldTable</xsl:when> 		 		 
+         <xsl:otherwise>Object /*WARNING: undefined type*/</xsl:otherwise>
+    </xsl:choose>
+</xsl:function>
+<xsl:function name="amqp:cpp-arg-type">
+    <xsl:param name="t"/>
+    <xsl:choose>
+	 <xsl:when test="$t='octet'">u_int8_t</xsl:when> 		 		 
+	 <xsl:when test="$t='short'">u_int16_t</xsl:when> 		 		 
+	 <xsl:when test="$t='shortstr'">string&amp;</xsl:when> 		 		 
+	 <xsl:when test="$t='longstr'">string&amp;</xsl:when> 		 		 
+	 <xsl:when test="$t='bit'">bool</xsl:when> 		 		 
+	 <xsl:when test="$t='long'">u_int32_t</xsl:when> 		 		 
+	 <xsl:when test="$t='longlong'">u_int64_t</xsl:when> 		 		 
+	 <xsl:when test="$t='table'">FieldTable&amp;</xsl:when> 		 		 
+         <xsl:otherwise>Object /*WARNING: undefined type*/</xsl:otherwise>
+    </xsl:choose>
+</xsl:function>
+
+<!-- retrieve the code to get the field size of a given amq type -->
+<xsl:function name="amqp:field-length">
+    <xsl:param name="f"/>
+    <xsl:choose>
+        <xsl:when test="$f/@type='bit' and $f/@boolean-index=1">
+            <xsl:value-of select="concat('1 /*', $f/@name, '*/')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='bit' and $f/@boolean-index &gt; 1">
+            <xsl:value-of select="concat('0 /*', $f/@name, '*/')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='char'">
+            <xsl:value-of select="concat('1 /*', $f/@name, '*/')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='octet'">
+            <xsl:value-of select="concat('1 /*', $f/@name, '*/')"/>
+        </xsl:when>
+	<xsl:when test="$f/@type='short'">
+            <xsl:value-of select="concat('2 /*', $f/@name, '*/')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='long'">
+            <xsl:value-of select="concat('4 /*', $f/@name, '*/')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='longlong'">
+            <xsl:value-of select="concat('8 /*', $f/@name, '*/')"/>
+        </xsl:when>
+	<xsl:when test="$f/@type='shortstr'">
+            <xsl:value-of select="concat('1 + ', $f/@name, '.length()')"/>
+        </xsl:when> 		 		 
+	<xsl:when test="$f/@type='longstr'">
+            <xsl:value-of select="concat('4 + ', $f/@name, '.length()')"/>
+        </xsl:when> 		 		 
+	<xsl:when test="$f/@type='table'">
+            <xsl:value-of select="concat($f/@name, '.size()')"/>
+        </xsl:when> 		 		 
+        <xsl:otherwise><xsl:text>/* WARNING: COULD NOT DETERMINE FIELD SIZE */</xsl:text></xsl:otherwise>
+    </xsl:choose>    
+</xsl:function>
+
+<!-- retrieve the code to encode a field of a given amq type -->
+<!-- Note:
+     This method will not provide an encoder for a bit field. 
+     Bit fields should be encoded together separately. -->
+
+<xsl:function name="amqp:encoder">
+    <xsl:param name="f"/>
+    <xsl:choose>
+        <xsl:when test="$f/@type='octet'">
+            <xsl:value-of select="concat('buffer.putOctet(', $f/@name, ')')"/>
+        </xsl:when>
+	<xsl:when test="$f/@type='short'">
+            <xsl:value-of select="concat('buffer.putShort(', $f/@name, ')')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='long'">
+            <xsl:value-of select="concat('buffer.putLong(', $f/@name, ')')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='longlong'">
+            <xsl:value-of select="concat('buffer.putLongLong(', $f/@name, ')')"/>
+        </xsl:when>
+	<xsl:when test="$f/@type='shortstr'">
+            <xsl:value-of select="concat('buffer.putShortString(', $f/@name, ')')"/>
+        </xsl:when> 		 		 
+	<xsl:when test="$f/@type='longstr'">
+            <xsl:value-of select="concat('buffer.putLongString(', $f/@name, ')')"/>
+        </xsl:when> 		 		 
+	<xsl:when test="$f/@type='table'">
+            <xsl:value-of select="concat('buffer.putFieldTable(', $f/@name, ')')"/>
+        </xsl:when> 		 		 
+        <xsl:otherwise><xsl:text>/* WARNING: COULD NOT DETERMINE ENCODER */</xsl:text></xsl:otherwise>
+    </xsl:choose>    
+</xsl:function>
+
+<!-- retrieve the code to decode a field of a given amq type -->
+<xsl:function name="amqp:decoder">
+    <xsl:param name="f"/>
+    <xsl:choose>
+        <xsl:when test="$f/@type='bit'">
+            <xsl:value-of select="concat($f/@name, ' = (1 &lt;&lt; (', $f/@boolean-index, ' - 1)) &amp; flags;')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='octet'">
+            <xsl:value-of select="concat($f/@name, ' = buffer.getOctet()')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='short'">
+            <xsl:value-of select="concat($f/@name, ' = buffer.getShort()')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='long'">
+            <xsl:value-of select="concat($f/@name, ' = buffer.getLong()')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='longlong'">
+            <xsl:value-of select="concat($f/@name, ' = buffer.getLongLong()')"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='shortstr'">
+            <xsl:value-of select="concat('buffer.getShortString(', $f/@name), ')'"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='longstr'">
+            <xsl:value-of select="concat('buffer.getLongString(', $f/@name), ')'"/>
+        </xsl:when>
+        <xsl:when test="$f/@type='table'">
+            <xsl:value-of select="concat('buffer.getFieldTable(', $f/@name, ')')"/>
+        </xsl:when>
+        <xsl:otherwise><xsl:text>/* WARNING: COULD NOT DETERMINE DECODER */</xsl:text></xsl:otherwise>
+    </xsl:choose>    
+</xsl:function>
+
+<!-- create the class name for a frame, based on class and method (passed in) -->
+<xsl:function name="amqp:class-name">
+    <xsl:param name="class"/>
+    <xsl:param name="method"/>
+    <xsl:value-of select="concat(amqp:upper-first($class),amqp:upper-first(amqp:field-name($method)), 'Body')"/>
+</xsl:function>
+
+<!-- create the class name for a frame, based on class and method (passed in) -->
+<xsl:function name="amqp:method-name">
+    <xsl:param name="class"/>
+    <xsl:param name="method"/>
+    <xsl:value-of select="concat(translate($class, '- ', '__'), '_', translate($method, '- ', '__'))"/>
+</xsl:function>
+
+<!-- get a valid field name, processing spaces and '-'s where appropriate -->
+<xsl:function name="amqp:field-name">
+    <xsl:param name="name"/>
+    <xsl:choose>
+        <xsl:when test="contains($name, ' ')">
+            <xsl:value-of select="concat(substring-before($name, ' '), amqp:upper-first(substring-after($name, ' ')))"/>
+        </xsl:when>
+        <xsl:when test="contains($name, '-')">
+            <xsl:value-of select="concat(substring-before($name, '-'), amqp:upper-first(substring-after($name, '-')))"/>
+        </xsl:when>
+        <xsl:otherwise>
+            <xsl:value-of select="$name"/>
+        </xsl:otherwise>
+    </xsl:choose>
+</xsl:function>
+
+<!-- convert the first character of the input to upper-case -->
+<xsl:function name="amqp:upper-first">
+    <xsl:param name="in"/>
+    <xsl:value-of select="concat(upper-case(substring($in, 1, 1)), substring($in, 2))"/>
+</xsl:function>
+
+
+<xsl:function name="amqp:keyword-check">
+    <xsl:param name="in"/>
+    <xsl:choose>
+        <xsl:when test="contains($in, 'delete')">
+            <xsl:value-of select="concat($in, '_')"/>
+        </xsl:when>
+        <xsl:when test="contains($in, 'string')">
+            <xsl:value-of select="concat($in, '_')"/>
+        </xsl:when>
+        <xsl:when test="contains($in, 'return')">
+            <xsl:value-of select="concat($in, '_')"/>
+        </xsl:when>
+        <xsl:otherwise>
+            <xsl:value-of select="$in"/>
+        </xsl:otherwise>
+    </xsl:choose>
+</xsl:function>
+
+</xsl:stylesheet>

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/utils.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQBody.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQBody.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQBody.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQBody.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,46 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 "memory.h"
+#include "amqp_types.h"
+#include "Buffer.h"
+
+#ifndef _AMQBody_
+#define _AMQBody_
+
+namespace qpid {
+    namespace framing {
+
+        class AMQBody
+        {
+        public:
+            typedef std::tr1::shared_ptr<AMQBody> shared_ptr;
+
+            virtual u_int32_t size() const = 0;
+            virtual u_int8_t type() const = 0;
+            virtual void encode(Buffer& buffer) const = 0;
+            virtual void decode(Buffer& buffer, u_int32_t size) = 0;
+            inline virtual ~AMQBody(){}
+        };
+
+        enum body_types {METHOD_BODY = 1, HEADER_BODY = 2, CONTENT_BODY = 3, HEARTBEAT_BODY = 8};
+
+    }
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQBody.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQContentBody.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQContentBody.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQContentBody.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQContentBody.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,49 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 "amqp_types.h"
+#include "AMQBody.h"
+#include "Buffer.h"
+
+#ifndef _AMQContentBody_
+#define _AMQContentBody_
+
+namespace qpid {
+namespace framing {
+
+class AMQContentBody : virtual public AMQBody
+{
+    string data;
+
+public:
+    typedef std::tr1::shared_ptr<AMQContentBody> shared_ptr;
+
+    AMQContentBody();
+    AMQContentBody(string& data);
+    inline virtual ~AMQContentBody(){}
+    inline u_int8_t type() const { return CONTENT_BODY; };
+    inline string& getData(){ return data; }
+    u_int32_t size() const;
+    void encode(Buffer& buffer) const;
+    void decode(Buffer& buffer, u_int32_t size);
+};
+
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQContentBody.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQDataBlock.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQDataBlock.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQDataBlock.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQDataBlock.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 "Buffer.h"
+
+#ifndef _AMQDataBlock_
+#define _AMQDataBlock_
+
+namespace qpid {
+namespace framing {
+
+class AMQDataBlock
+{
+public:
+    virtual ~AMQDataBlock() {}
+    virtual void encode(Buffer& buffer) = 0; 
+    virtual bool decode(Buffer& buffer) = 0; 
+    virtual u_int32_t size() const = 0;
+};
+
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQDataBlock.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQFrame.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQFrame.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQFrame.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQFrame.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,61 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 "amqp_methods.h"
+#include "amqp_types.h"
+#include "AMQBody.h"
+#include "AMQDataBlock.h"
+#include "AMQMethodBody.h"
+#include "AMQHeaderBody.h"
+#include "AMQContentBody.h"
+#include "AMQHeartbeatBody.h"
+#include "Buffer.h"
+
+#ifndef _AMQFrame_
+#define _AMQFrame_
+
+namespace qpid {
+    namespace framing {
+
+        class AMQFrame : virtual public AMQDataBlock
+        {
+            u_int16_t channel;
+            u_int8_t type;//used if the body is decoded separately from the 'head'
+            AMQBody::shared_ptr body;
+
+        public:
+            AMQFrame();
+            AMQFrame(u_int16_t channel, AMQBody* body);
+            AMQFrame(u_int16_t channel, AMQBody::shared_ptr& body);
+            virtual ~AMQFrame();
+            virtual void encode(Buffer& buffer); 
+            virtual bool decode(Buffer& buffer); 
+            virtual u_int32_t size() const;
+            u_int16_t getChannel();
+            AMQBody::shared_ptr& getBody();
+
+            u_int32_t decodeHead(Buffer& buffer); 
+            void decodeBody(Buffer& buffer, uint32_t size); 
+
+            friend std::ostream& operator<<(std::ostream& out, const AMQFrame& body);
+        };
+
+    }
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQFrame.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeaderBody.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeaderBody.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeaderBody.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeaderBody.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,55 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 "amqp_types.h"
+#include "AMQBody.h"
+#include "Buffer.h"
+#include "HeaderProperties.h"
+
+#ifndef _AMQHeaderBody_
+#define _AMQHeaderBody_
+
+namespace qpid {
+namespace framing {
+
+class AMQHeaderBody : virtual public AMQBody
+{
+    HeaderProperties* properties;
+    u_int16_t weight;
+    u_int64_t contentSize;
+
+    void createProperties(int classId);
+public:
+    typedef std::tr1::shared_ptr<AMQHeaderBody> shared_ptr;
+
+    AMQHeaderBody(int classId);
+    AMQHeaderBody();
+    inline u_int8_t type() const { return HEADER_BODY; }
+    HeaderProperties* getProperties(){ return properties; }
+    inline u_int64_t getContentSize() const { return contentSize; }
+    inline void setContentSize(u_int64_t size) { contentSize = size; }
+    virtual ~AMQHeaderBody();
+    virtual u_int32_t size() const;
+    virtual void encode(Buffer& buffer) const;
+    virtual void decode(Buffer& buffer, u_int32_t size);
+};
+
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeaderBody.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeartbeatBody.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeartbeatBody.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeartbeatBody.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeartbeatBody.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,43 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 "amqp_types.h"
+#include "AMQBody.h"
+#include "Buffer.h"
+
+#ifndef _AMQHeartbeatBody_
+#define _AMQHeartbeatBody_
+
+namespace qpid {
+namespace framing {
+
+class AMQHeartbeatBody : virtual public AMQBody
+{
+public:
+    typedef std::tr1::shared_ptr<AMQHeartbeatBody> shared_ptr;
+
+    virtual ~AMQHeartbeatBody() {}
+    inline u_int32_t size() const { return 0; }
+    inline u_int8_t type() const { return HEARTBEAT_BODY; }
+    inline void encode(Buffer& buffer) const {}
+    inline void decode(Buffer& buffer, u_int32_t size) {}
+};
+
+}
+}
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeartbeatBody.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQMethodBody.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQMethodBody.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQMethodBody.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQMethodBody.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,56 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 <iostream>
+#include "amqp_types.h"
+#include "AMQBody.h"
+#include "Buffer.h"
+#include "AMQP_ServerOperations.h"
+
+#ifndef _AMQMethodBody_
+#define _AMQMethodBody_
+
+namespace qpid {
+namespace framing {
+
+class AMQMethodBody : virtual public AMQBody
+{
+public:
+    typedef std::tr1::shared_ptr<AMQMethodBody> shared_ptr;
+
+    inline u_int8_t type() const { return METHOD_BODY; }
+    inline u_int32_t size() const { return 4 + bodySize(); }
+    inline virtual ~AMQMethodBody(){}
+    virtual void print(std::ostream& out) const = 0;
+    virtual u_int16_t amqpMethodId() const = 0;
+    virtual u_int16_t amqpClassId() const = 0;
+    virtual void invoke(AMQP_ServerOperations& target, u_int16_t channel);
+    virtual void encodeContent(Buffer& buffer) const = 0;
+    virtual void decodeContent(Buffer& buffer) = 0;
+    virtual u_int32_t bodySize() const = 0;
+    void encode(Buffer& buffer) const;
+    void decode(Buffer& buffer, u_int32_t size);
+    bool match(AMQMethodBody* other) const;
+};
+
+std::ostream& operator<<(std::ostream& out, const AMQMethodBody& body);
+
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQMethodBody.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/BasicHeaderProperties.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/BasicHeaderProperties.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/BasicHeaderProperties.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/BasicHeaderProperties.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,93 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 "amqp_types.h"
+#include "amqp_methods.h"
+#include "Buffer.h"
+#include "HeaderProperties.h"
+
+#ifndef _BasicHeaderProperties_
+#define _BasicHeaderProperties_
+
+namespace qpid {
+namespace framing {
+
+    //TODO: This could be easily generated from the spec
+    class BasicHeaderProperties : public HeaderProperties
+    {
+	string contentType;
+	string contentEncoding;
+	FieldTable headers;
+	u_int8_t deliveryMode;
+	u_int8_t priority;
+	string correlationId;
+	string replyTo;
+	string expiration;
+	string messageId;
+	u_int64_t timestamp;
+	string type;
+	string userId;
+	string appId;
+	string clusterId;
+	
+	u_int16_t getFlags() const;
+
+    public:
+	BasicHeaderProperties();
+	virtual ~BasicHeaderProperties();
+	virtual u_int32_t size() const;
+	virtual void encode(Buffer& buffer) const;
+	virtual void decode(Buffer& buffer, u_int32_t size);
+
+	inline virtual u_int8_t classId(){ return BASIC; }
+
+	inline string& getContentType(){ return contentType; }
+	inline string& getContentEncoding(){ return contentEncoding; }
+	inline FieldTable& getHeaders(){ return headers; }
+	inline u_int8_t getDeliveryMode(){ return deliveryMode; }
+	inline u_int8_t getPriority(){ return priority; }
+	inline string& getCorrelationId(){return correlationId; }
+	inline string& getReplyTo(){ return replyTo; }
+	inline string& getExpiration(){ return expiration; }
+	inline string& getMessageId(){return messageId; }
+	inline u_int64_t getTimestamp(){ return timestamp; }
+	inline string& getType(){ return type; }
+	inline string& getUserId(){ return userId; }
+	inline string& getAppId(){ return appId; }
+	inline string& getClusterId(){ return clusterId; }
+
+	void inline setContentType(string& type){ contentType = type; }
+	void inline setContentEncoding(string& encoding){ contentEncoding = encoding; }
+	void inline setHeaders(FieldTable& headers){ this->headers = headers; }
+	void inline setDeliveryMode(u_int8_t mode){ deliveryMode = mode; }
+	void inline setPriority(u_int8_t priority){ this->priority = priority; }
+	void inline setCorrelationId(string& correlationId){ this->correlationId = correlationId; }
+	void inline setReplyTo(string& replyTo){ this->replyTo = replyTo;}
+	void inline setExpiration(string&  expiration){ this->expiration = expiration; }
+	void inline setMessageId(string& messageId){ this->messageId = messageId; }
+	void inline setTimestamp(u_int64_t timestamp){ this->timestamp = timestamp; }
+	void inline setType(string& type){ this->type = type; }
+	void inline setUserId(string& userId){ this->userId = userId; }
+	void inline setAppId(string& appId){this->appId = appId; }
+	void inline setClusterId(string& clusterId){ this->clusterId = clusterId; }
+    };
+
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/BasicHeaderProperties.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/BodyHandler.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/BodyHandler.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/BodyHandler.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/BodyHandler.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,50 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 <string>
+
+#ifndef _BodyHandler_
+#define _BodyHandler_
+
+#include "AMQMethodBody.h"
+#include "AMQHeaderBody.h"
+#include "AMQContentBody.h"
+#include "AMQHeartbeatBody.h"
+
+namespace qpid {
+namespace framing {
+
+    class BodyHandler{
+    public:
+	virtual void handleMethod(AMQMethodBody::shared_ptr body) = 0;
+	virtual void handleHeader(AMQHeaderBody::shared_ptr body) = 0;
+	virtual void handleContent(AMQContentBody::shared_ptr body) = 0;
+	virtual void handleHeartbeat(AMQHeartbeatBody::shared_ptr body) = 0;
+
+        void handleBody(AMQBody::shared_ptr& body);
+    };
+
+    class UnknownBodyType{
+    public:
+	const u_int16_t type;
+	inline UnknownBodyType(u_int16_t _type) : type(_type){}
+    };
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/BodyHandler.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/Buffer.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/Buffer.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/Buffer.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/Buffer.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,77 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 "amqp_types.h"
+#include "FieldTable.h" 
+
+#ifndef _Buffer_
+#define _Buffer_
+
+namespace qpid {
+namespace framing {
+
+class Buffer
+{
+    const int size;
+    char* data;
+    int position;
+    int limit;
+    int r_position;
+    int r_limit;
+
+public:
+
+    Buffer(int size);
+    ~Buffer();
+
+    void flip();
+    void clear();
+    void compact();
+    void record();
+    void restore();
+    int available();
+    char* start();
+    void move(int bytes);
+    
+    void putOctet(u_int8_t i);
+    void putShort(u_int16_t i);
+    void putLong(u_int32_t i);
+    void putLongLong(u_int64_t i);
+
+    u_int8_t getOctet();
+    u_int16_t getShort(); 
+    u_int32_t getLong();
+    u_int64_t getLongLong();
+
+    void putShortString(const string& s);
+    void putLongString(const string& s);
+    void getShortString(string& s);
+    void getLongString(string& s);
+
+    void putFieldTable(const FieldTable& t);
+    void getFieldTable(FieldTable& t);
+
+    void putRawData(const string& s);
+    void getRawData(string& s, u_int32_t size);
+
+};
+
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/Buffer.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/FieldTable.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/FieldTable.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/FieldTable.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/FieldTable.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,68 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 <iostream>
+#include <vector>
+#include "amqp_types.h"
+
+#ifndef _FieldTable_
+#define _FieldTable_
+
+namespace qpid {
+namespace framing {
+
+    class NamedValue;
+    class Value;
+    class Buffer;
+
+    class FieldTable
+    {
+	std::vector<NamedValue*> values;
+	NamedValue* find(const std::string& name) const;
+
+	Value* getValue(const std::string& name) const;
+	void setValue(const std::string& name, Value* value);
+
+    public:
+	~FieldTable();
+	u_int32_t size() const;
+	int count() const;
+	void setString(const std::string& name, const std::string& value);
+	void setInt(const std::string& name, int value);
+	void setTimestamp(const std::string& name, u_int64_t value);
+	void setTable(const std::string& name, const FieldTable& value);
+	//void setDecimal(string& name, xxx& value);
+        std::string getString(const std::string& name);
+	int getInt(const std::string& name);
+	u_int64_t getTimestamp(const std::string& name);
+	void getTable(const std::string& name, FieldTable& value);
+	//void getDecimal(string& name, xxx& value);
+
+	void encode(Buffer& buffer) const;
+	void decode(Buffer& buffer);
+
+	friend std::ostream& operator<<(std::ostream& out, const FieldTable& body);
+    };
+
+    class FieldNotFoundException{};
+    class UnknownFieldName : public FieldNotFoundException{};
+    class IncorrectFieldType : public FieldNotFoundException{};
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/FieldTable.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/HeaderProperties.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/HeaderProperties.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/HeaderProperties.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/HeaderProperties.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,43 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 "amqp_types.h"
+#include "Buffer.h"
+
+#ifndef _HeaderProperties_
+#define _HeaderProperties_
+
+namespace qpid {
+namespace framing {
+
+    enum header_classes{BASIC = 60};
+
+    class HeaderProperties
+    {
+	
+    public:
+	inline virtual ~HeaderProperties(){}
+	virtual u_int8_t classId() = 0;
+	virtual u_int32_t size() const = 0;
+	virtual void encode(Buffer& buffer) const = 0;
+	virtual void decode(Buffer& buffer, u_int32_t size) = 0;
+    };
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/HeaderProperties.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/InitiationHandler.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/InitiationHandler.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/InitiationHandler.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/InitiationHandler.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 <string>
+
+#ifndef _InitiationHandler_
+#define _InitiationHandler_
+
+#include "ProtocolInitiation.h"
+
+namespace qpid {
+namespace framing {
+
+    class InitiationHandler{
+    public:
+	virtual void initiated(ProtocolInitiation* header) = 0;
+    };
+
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/InitiationHandler.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/InputHandler.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/InputHandler.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/InputHandler.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/InputHandler.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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 <string>
+
+#ifndef _InputHandler_
+#define _InputHandler_
+
+#include "AMQFrame.h"
+
+namespace qpid {
+namespace framing {
+
+    class InputHandler{
+    public:
+	virtual void received(AMQFrame* frame) = 0;
+    };
+
+}
+}
+
+
+#endif

Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/InputHandler.h
------------------------------------------------------------------------------
    svn:eol-style = native