From: Chris M. <zm...@us...> - 2001-08-07 22:35:58
|
Update of /cvsroot/kuml/kuml/libkuml/uml/tools In directory usw-pr-cvs1:/tmp/cvs-serv23263/tools Modified Files: gen_class_hs.xsl gen_proxy_hs.xsl Added Files: common_proxy_code.xsl gen_proxy_ccs.xsl Log Message: First shot at proxy_ccs code. --- NEW FILE --- <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="org.apache.xalan.xslt.extensions.Redirect" xmlns:Model="omg.org/mof.Model/1.3" extension-element-prefixes="xalan" version="1.0" > <!-- Templates for finding CORBA IDL type implementations. --> <!-- These use the type_name mode and setup the CORBA_type variable. --> <xsl:template match="Model:DataType | Model:DataType.typeCode | XMI.CorbaTypeCode" mode="create_param_type_name"> <xsl:param name="collection"/> <xsl:apply-templates mode="create_param_type_name"> <xsl:with-param name="collection"> <xsl:value-of select="$collection"/> </xsl:with-param> </xsl:apply-templates> </xsl:template> <xsl:template match="XMI.CorbaTcBoolean" mode="create_param_type_name"> <xsl:param name="collection"/> <xsl:text>CORBA::Boolean</xsl:text> </xsl:template> <xsl:template match="XMI.CorbaTcAlias" mode="create_param_type_name"> <xsl:param name="collection"/> <xsl:variable name="package_name"> <xsl:call-template name="toName"> <xsl:with-param name="text"> <xsl:value-of select="ancestor::Model:Package/@name"/> </xsl:with-param> <xsl:with-param name="position" select="1"/> </xsl:call-template> </xsl:variable> <xsl:variable name="type_name" select="@xmi.tcName"/> <xsl:choose> <xsl:when test='not(string-length($collection) = 0)'> <xsl:text>const Core</xsl:text> </xsl:when> <xsl:otherwise> <xsl:value-of select="$package_name"/> </xsl:otherwise> </xsl:choose> <xsl:text>::</xsl:text> <xsl:value-of select="$type_name"/> <xsl:value-of select="$collection"/> </xsl:template> <!-- If we got this far it must be xmi.id='a23' name='String' --> <xsl:template match="XMI.CorbaTcString" mode="create_param_type_name"> <xsl:param name="collection"/> <xsl:text>const char*</xsl:text> </xsl:template> <xsl:template match="XMI.CorbaTcEnum" mode="create_param_type_name"> <xsl:param name="collection"/> <xsl:variable name="package_name"> <xsl:call-template name="toName"> <xsl:with-param name="text"> <xsl:value-of select="ancestor::Model:Package/@name"/> </xsl:with-param> <xsl:with-param name="position" select="1"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test='not(string-length($collection) = 0)'> <xsl:text>const Core</xsl:text> </xsl:when> <xsl:otherwise> <xsl:value-of select="$package_name"/> </xsl:otherwise> </xsl:choose> <xsl:text>::</xsl:text> <xsl:value-of select="@xmi.tcName"/> <xsl:value-of select="$collection"/> </xsl:template> <xsl:template match="Model:Class" mode="create_param_type_name"> <xsl:param name="collection"/> <xsl:variable name="package_name"> <xsl:call-template name="toName"> <xsl:with-param name="text"> <xsl:value-of select="ancestor::Model:Package/@name"/> </xsl:with-param> <xsl:with-param name="position" select="1"/> </xsl:call-template> </xsl:variable> <xsl:variable name="class_name"> <xsl:call-template name="get_name"> <xsl:with-param name="the_xmi_id"> <xsl:value-of select="@xmi.id"/> </xsl:with-param> <xsl:with-param name="the_name"> <xsl:value-of select="@name"/> </xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test='not(string-length($collection) = 0)'> <xsl:text>const Core</xsl:text> </xsl:when> <xsl:otherwise> <xsl:value-of select="$package_name"/> </xsl:otherwise> </xsl:choose> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:choose> <xsl:when test='not(string-length($collection) = 0)'> <xsl:value-of select="$collection"/> </xsl:when> <xsl:otherwise> <xsl:text>_ptr</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:template> <!-- Templates to do parameters to the create_<class> methods parameters. These templates all use the create_params mode. --> <!-- Replace the default rule. --> <xsl:template match="*" mode="create_params"/> <!-- Certain nodes do nothing. --> <xsl:template mode="create_params" match="/ | XMI | XMI.content | Model:Package | Model:Namespace.contents | Model:DataType.typeCode | XMI.CorbaTypeCode"> <xsl:apply-templates mode="create_params"/> </xsl:template> <xsl:template match="Model:Attribute" mode="create_params"> <!-- Hack!! If class name != ModelElement or attribute name != name.. --> <xsl:if test='not(ancestor::Model:Class/@name = "ModelElement" and @name = "name")'> <xsl:text>, </xsl:text> </xsl:if> <xsl:variable name="collection"> <xsl:call-template name="collection_name"/> </xsl:variable> <xsl:variable name="type_ref" select="@type"/> <xsl:apply-templates select='/descendant::*[attribute::xmi.id=$type_ref]' mode="create_param_type_name"> <xsl:with-param name="collection"> <xsl:value-of select="$collection"/> </xsl:with-param> </xsl:apply-templates> <xsl:text> </xsl:text> <xsl:call-template name="to_name"> <xsl:with-param name="text"> <xsl:value-of select="@name"/> </xsl:with-param> <xsl:with-param name="position" select="1"/> </xsl:call-template> </xsl:template> <xsl:template match="Model:Class" mode="create_params"> <!-- attempt to find this class's supertype --> <xsl:variable name="supertypes" select="@supertypes"/> <!-- if a supertype exists recurse on supertype --> <xsl:if test='count(attribute::supertypes) > 0'> <xsl:choose> <xsl:when test='contains(@supertypes," ")'> <xsl:apply-templates mode="create_params" select='/descendant::Model:Class[@xmi.id=substring-before($supertypes," ")]'/> <!-- Hack!! xsl:apply-templates mode="create_params" select='/descendant::Model:Class[@xmi.id=substring-after($supertypes," ")]'/ --> </xsl:when> <xsl:otherwise> <xsl:apply-templates mode="create_params" select='/descendant::Model:Class[@xmi.id=$supertypes]'/> </xsl:otherwise> </xsl:choose> </xsl:if> <!-- output the current nodes attributes --> <xsl:apply-templates mode="create_params"/> </xsl:template> </xsl:transform> --- NEW FILE --- <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="org.apache.xalan.xslt.extensions.Redirect" xmlns:Model="omg.org/mof.Model/1.3" extension-element-prefixes="xalan" version="1.0" > <xsl:include href="common_code.xsl"/> <xsl:include href="common_proxy_code.xsl"/> <!-- Templates to use the parameters to the create_<class> method. These templates all use the set_attrs mode. --> <!-- Replace the default rule. --> <xsl:template match="*" mode="set_attrs"/> <!-- Certain nodes do nothing. --> <xsl:template mode="set_attrs" match="/ | XMI | XMI.content | Model:Package | Model:Namespace.contents | Model:DataType.typeCode | XMI.CorbaTypeCode"> <xsl:apply-templates mode="set_attrs"/> </xsl:template> <xsl:template match="Model:Attribute" mode="set_attrs"> <xsl:variable name="the_attr"> <xsl:call-template name="to_name"> <xsl:with-param name="text"> <xsl:value-of select="@name"/> </xsl:with-param> <xsl:with-param name="position" select="1"/> </xsl:call-template> </xsl:variable> <xsl:text> impl->set_</xsl:text> <xsl:value-of select="$the_attr"/> <xsl:text>(</xsl:text> <xsl:value-of select="$the_attr"/> <xsl:text>); </xsl:text> </xsl:template> <xsl:template match="Model:Class" mode="set_attrs"> <!-- attempt to find this class's supertype --> <xsl:variable name="supertypes" select="@supertypes"/> <!-- if a supertype exists recurse on supertype --> <xsl:if test='count(attribute::supertypes) > 0'> <xsl:choose> <xsl:when test='contains(@supertypes," ")'> <xsl:apply-templates mode="set_attrs" select='/descendant::Model:Class[@xmi.id=substring-before($supertypes," ")]'/> <!-- Hack!! xsl:apply-templates mode="set_attrs" select='/descendant::Model:Class[@xmi.id=substring-after($supertypes," ")]'/ --> </xsl:when> <xsl:otherwise> <xsl:apply-templates mode="set_attrs" select='/descendant::Model:Class[@xmi.id=$supertypes]'/> </xsl:otherwise> </xsl:choose> </xsl:if> <!-- output the current nodes attributes --> <xsl:apply-templates mode="set_attrs"/> </xsl:template> <xsl:template name="CLASS_PROXY"> <xsl:variable name="package_name" select="ancestor::Model:Package/@name"/> <xsl:variable name="class_name"> <xsl:call-template name="get_name"> <xsl:with-param name="the_xmi_id"> <xsl:value-of select="@xmi.id"/> </xsl:with-param> <xsl:with-param name="the_name"> <xsl:value-of select="@name"/> </xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:variable name="processed_cn"> <xsl:call-template name="to_name"> <xsl:with-param name="text"> <xsl:value-of select="$class_name"/> </xsl:with-param> <xsl:with-param name="position" select="1"/> </xsl:call-template> </xsl:variable> <!-- Includes. --> <xsl:text>#include "</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl.h" </xsl:text> <xsl:if test='@isAbstract = "false"'> <xsl:text>#include "</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>_impl.h" </xsl:text> </xsl:if> <xsl:text>#include "copy_to_iseq.h" </xsl:text> <xsl:text>#include "list_ops.h" </xsl:text> <xsl:text> </xsl:text> <xsl:text>// Implementation for interface </xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Class </xsl:text> <xsl:text> </xsl:text> <xsl:text>list<</xsl:text> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>_ptr> </xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl::fc_all_of_type_</xsl:text> <xsl:value-of select="$processed_cn"/> <xsl:text>; </xsl:text> <xsl:text> </xsl:text> <xsl:if test='@isAbstract = "false"'> <xsl:text>list<</xsl:text> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>_ptr> </xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl::fc_all_of_class_</xsl:text> <xsl:value-of select="$processed_cn"/> <xsl:text>; </xsl:text> <xsl:text> </xsl:text> </xsl:if> <!-- Constructor. --> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl() </xsl:text> <xsl:text>{ } </xsl:text> <!-- Destructor. --> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl::~</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl() </xsl:text> <xsl:text>{ } </xsl:text> <xsl:text> </xsl:text> <!-- all_of_type --> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Set* </xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl::</xsl:text> <xsl:text>all_of_type_</xsl:text> <xsl:value-of select="$processed_cn"/> <xsl:text>() </xsl:text> <xsl:text>{ </xsl:text> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Set_var seq = new </xsl:text> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Set; </xsl:text> <xsl:text> copy_to_seq(seq, fc_all_of_type_</xsl:text> <xsl:value-of select="$processed_cn"/> <xsl:text>); </xsl:text> <xsl:text> return seq._retn(); </xsl:text> <xsl:text>} </xsl:text> <xsl:text> </xsl:text> <xsl:if test='@isAbstract = "false"'> <!-- all_of_class --> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Set* </xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl::</xsl:text> <xsl:text>all_of_class_</xsl:text> <xsl:value-of select="$processed_cn"/> <xsl:text>() </xsl:text> <xsl:text>{ </xsl:text> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Set_var seq = new </xsl:text> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Set; </xsl:text> <xsl:text> copy_to_seq(seq, fc_all_of_class_</xsl:text> <xsl:value-of select="$processed_cn"/> <xsl:text>); </xsl:text> <xsl:text> return seq._retn(); </xsl:text> <xsl:text>} </xsl:text> </xsl:if> <xsl:text> </xsl:text> <!-- create_<class> method. --> <xsl:if test='@isAbstract = "false"'> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>_ptr </xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl::</xsl:text> <xsl:text>create_</xsl:text> <xsl:value-of select="$processed_cn"/> <xsl:text>( </xsl:text> <xsl:apply-templates mode="create_params" select="."/> <xsl:text> ) </xsl:text> <xsl:text> throw( </xsl:text> <xsl:text> ::CORBA::SystemException, </xsl:text> <xsl:text> ::Reflective::MofError) </xsl:text> <xsl:text>{ </xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>_impl* impl = new </xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>_impl; </xsl:text> <xsl:text> </xsl:text> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>_ptr retval = impl->_this(); </xsl:text> <xsl:apply-templates mode="set_attrs" select="."/> <xsl:text> fc_all_of_class_</xsl:text> <xsl:value-of select="$processed_cn"/> <xsl:text>.push_back(</xsl:text> <xsl:value-of select="$package_name"/> <xsl:text>::</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>::_duplicate(retval)); </xsl:text> <xsl:text> return retval; </xsl:text> <xsl:text>} </xsl:text> <xsl:text> </xsl:text> </xsl:if> </xsl:template> <!-- Main program starts here! --> <!-- Allow complete control over format. --> <xsl:strip-space elements="*"/> <!-- Output in text format. --> <xsl:output method="text"/> <!-- Replace the default rule. --> <xsl:template match="*"/> <!-- Certain nodes do nothing. --> <xsl:template match="/ | XMI | XMI.content | Model:Package | Model:Namespace.contents | Model:DataType.typeCode | XMI.CorbaTypeCode"> <xsl:apply-templates/> </xsl:template> <xsl:template match="Model:Class"> <xsl:variable name="package_name" select="ancestor::Model:Package/@name"/> <xsl:variable name="class_name"> <xsl:call-template name="get_name"> <xsl:with-param name="the_xmi_id"> <xsl:value-of select="@xmi.id"/> </xsl:with-param> <xsl:with-param name="the_name"> <xsl:value-of select="@name"/> </xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:variable name="proxy_filename"> <xsl:text>../</xsl:text> <xsl:value-of select="$package_name"/> <xsl:text>/</xsl:text> <xsl:value-of select="$class_name"/> <xsl:text>Class_impl.cc</xsl:text> </xsl:variable> <xalan:write select="$proxy_filename"> <xsl:call-template name="CLASS_PROXY"/> </xalan:write> </xsl:template> </xsl:transform> Index: gen_class_hs.xsl =================================================================== RCS file: /cvsroot/kuml/kuml/libkuml/uml/tools/gen_class_hs.xsl,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** gen_class_hs.xsl 2001/07/26 21:18:43 1.5 --- gen_class_hs.xsl 2001/08/07 22:35:54 1.6 *************** *** 26,40 **** <xsl:template mode="include" match="/ | XMI | XMI.content | Model:Package | Model:Namespace.contents | Model:DataType.typeCode | XMI.CorbaTypeCode"> <xsl:apply-templates mode="include"/> </xsl:template> <xsl:template match="Model:Class" mode="include"> ! <xsl:variable name="classname" select="@name"/> ! <xsl:text>#include "</xsl:text> ! <xsl:value-of select="@name"/> ! <xsl:text>_impl.h" </xsl:text> ! <xsl:text> </xsl:text> </xsl:template> --- 26,43 ---- <xsl:template mode="include" match="/ | XMI | XMI.content | Model:Package | Model:Namespace.contents | Model:DataType.typeCode | XMI.CorbaTypeCode"> + <xsl:apply-templates mode="include"/> + </xsl:template> <xsl:template match="Model:Class" mode="include"> ! ! <xsl:variable name="classname" select="@name"/> ! <xsl:text>#include "</xsl:text> ! <xsl:value-of select="@name"/> ! <xsl:text>_impl.h" </xsl:text> ! <xsl:text> </xsl:text> </xsl:template> *************** *** 42,70 **** <xsl:template name="include-supertypes"> ! <xsl:choose> ! <xsl:when test="count(attribute::supertypes) = 0"> ! <xsl:text>#include "Reflective_impl.h" </xsl:text> ! </xsl:when> ! <xsl:otherwise> ! <xsl:variable name="supertypes" select="@supertypes"/> ! <xsl:choose> ! <xsl:when test='contains(@supertypes," ")'> ! <xsl:apply-templates mode="include" select='/descendant::Model:Class[@xmi.id=substring-before($supertypes," ")]'/> ! <xsl:apply-templates mode="include" select='/descendant::Model:Class[@xmi.id=substring-after($supertypes," ")]'/> ! </xsl:when> ! <xsl:otherwise> ! <xsl:apply-templates mode="include" ! select='/descendant::Model:Class[@xmi.id=$supertypes]'/> ! </xsl:otherwise> ! </xsl:choose> ! </xsl:otherwise> ! </xsl:choose> </xsl:template> --- 45,68 ---- <xsl:template name="include-supertypes"> ! <xsl:if test="count(attribute::supertypes) > 0"> ! <xsl:variable name="supertypes" select="@supertypes"/> ! <xsl:choose> ! <xsl:when test='contains(@supertypes," ")'> ! <xsl:apply-templates mode="include" select='/descendant::Model:Class[@xmi.id=substring-before($supertypes," ")]'/> ! <xsl:apply-templates mode="include" select='/descendant::Model:Class[@xmi.id=substring-after($supertypes," ")]'/> ! </xsl:when> ! <xsl:otherwise> ! <xsl:apply-templates mode="include" ! select='/descendant::Model:Class[@xmi.id=$supertypes]'/> ! </xsl:otherwise> ! </xsl:choose> ! </xsl:if> </xsl:template> *************** *** 82,122 **** <xsl:template mode="inherit" match="/ | XMI | XMI.content | Model:Package | Model:Namespace.contents | Model:DataType.typeCode | XMI.CorbaTypeCode"> <xsl:apply-templates mode="inherit"/> </xsl:template> <xsl:template match="Model:Class" mode="inherit"> ! <xsl:text> virtual public </xsl:text> ! <xsl:value-of select="@name"/> ! <xsl:text>_impl, </xsl:text> </xsl:template> <xsl:template name="inherits"> ! <xsl:choose> ! <xsl:when test="count(attribute::supertypes) = 0"> ! <xsl:text> virtual public Reflective::RefObject, </xsl:text> ! </xsl:when> ! <xsl:otherwise> ! <xsl:variable name="supertypes" select="@supertypes"/> ! <xsl:choose> ! <xsl:when test='contains(@supertypes," ")'> ! <xsl:apply-templates mode="inherit" select='/descendant::Model:Class[@xmi.id=substring-before($supertypes," ")]'/> ! <xsl:apply-templates mode="inherit" select='/descendant::Model:Class[@xmi.id=substring-after($supertypes," ")]'/> ! </xsl:when> ! <xsl:otherwise> ! <xsl:apply-templates mode="inherit" ! select='/descendant::Model:Class[@xmi.id=$supertypes]'/> ! </xsl:otherwise> ! </xsl:choose> ! </xsl:otherwise> ! </xsl:choose> </xsl:template> --- 80,119 ---- <xsl:template mode="inherit" match="/ | XMI | XMI.content | Model:Package | Model:Namespace.contents | Model:DataType.typeCode | XMI.CorbaTypeCode"> + <xsl:apply-templates mode="inherit"/> + </xsl:template> <xsl:template match="Model:Class" mode="inherit"> ! ! <xsl:text> virtual public </xsl:text> ! <xsl:value-of select="@name"/> ! <xsl:text>_impl, </xsl:text> ! </xsl:template> <xsl:template name="inherits"> ! <xsl:if test="count(attribute::supertypes) > 0"> ! <xsl:variable name="supertypes" select="@supertypes"/> ! <xsl:choose> ! <xsl:when test='contains(@supertypes," ")'> ! <xsl:apply-templates mode="inherit" select='/descendant::Model:Class[@xmi.id=substring-before($supertypes," ")]'/> ! <xsl:apply-templates mode="inherit" select='/descendant::Model:Class[@xmi.id=substring-after($supertypes," ")]'/> ! </xsl:when> ! <xsl:otherwise> ! <xsl:apply-templates mode="inherit" ! select='/descendant::Model:Class[@xmi.id=$supertypes]'/> ! </xsl:otherwise> ! </xsl:choose> ! </xsl:if> </xsl:template> Index: gen_proxy_hs.xsl =================================================================== RCS file: /cvsroot/kuml/kuml/libkuml/uml/tools/gen_proxy_hs.xsl,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** gen_proxy_hs.xsl 2001/07/26 21:18:43 1.9 --- gen_proxy_hs.xsl 2001/08/07 22:35:54 1.10 *************** *** 9,12 **** --- 9,13 ---- <xsl:include href="common_code.xsl"/> + <xsl:include href="common_proxy_code.xsl"/> *************** *** 96,100 **** <xsl:choose> <xsl:when test="count(attribute::supertypes) = 0"> ! <xsl:text> virtual public Reflective::RefObject, </xsl:text> </xsl:when> <xsl:otherwise> --- 97,101 ---- <xsl:choose> <xsl:when test="count(attribute::supertypes) = 0"> ! <xsl:text> virtual public RefObject_impl, </xsl:text> </xsl:when> <xsl:otherwise> *************** *** 119,337 **** </xsl:otherwise> </xsl:choose> - </xsl:template> - - - <!-- Templates for finding CORBA IDL type implementations. --> - <!-- These use the type_name mode and setup the CORBA_type variable. --> - - - <xsl:template - match="Model:DataType | Model:DataType.typeCode | XMI.CorbaTypeCode" - mode="create_param_type_name"> - <xsl:param name="collection"/> - - <xsl:apply-templates mode="create_param_type_name"> - <xsl:with-param name="collection"> - <xsl:value-of select="$collection"/> - </xsl:with-param> - </xsl:apply-templates> - - </xsl:template> - - - <xsl:template match="XMI.CorbaTcBoolean" mode="create_param_type_name"> - <xsl:param name="collection"/> - <xsl:text>CORBA::Boolean</xsl:text> - </xsl:template> - - - <xsl:template match="XMI.CorbaTcAlias" mode="create_param_type_name"> - <xsl:param name="collection"/> - - <xsl:variable name="package_name"> - <xsl:call-template name="toName"> - <xsl:with-param name="text"> - <xsl:value-of select="ancestor::Model:Package/@name"/> - </xsl:with-param> - <xsl:with-param name="position" select="1"/> - </xsl:call-template> - </xsl:variable> - - <xsl:variable name="type_name" select="@xmi.tcName"/> - - <xsl:choose> - <xsl:when test='not(string-length($collection) = 0)'> - <xsl:text>const Core</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$package_name"/> - </xsl:otherwise> - </xsl:choose> - - <xsl:text>::</xsl:text> - <xsl:value-of select="$type_name"/> - <xsl:value-of select="$collection"/> - - </xsl:template> - - - <!-- If we got this far it must be xmi.id='a23' name='String' --> - <xsl:template match="XMI.CorbaTcString" mode="create_param_type_name"> - <xsl:param name="collection"/> - <xsl:text>const char*</xsl:text> - </xsl:template> - - - <xsl:template match="XMI.CorbaTcEnum" mode="create_param_type_name"> - <xsl:param name="collection"/> - - <xsl:variable name="package_name"> - <xsl:call-template name="toName"> - <xsl:with-param name="text"> - <xsl:value-of select="ancestor::Model:Package/@name"/> - </xsl:with-param> - <xsl:with-param name="position" select="1"/> - </xsl:call-template> - </xsl:variable> - - <xsl:choose> - <xsl:when test='not(string-length($collection) = 0)'> - <xsl:text>const Core</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$package_name"/> - </xsl:otherwise> - </xsl:choose> - - <xsl:text>::</xsl:text> - <xsl:value-of select="@xmi.tcName"/> - <xsl:value-of select="$collection"/> - - </xsl:template> - - - <xsl:template match="Model:Class" mode="create_param_type_name"> - <xsl:param name="collection"/> - - <xsl:variable name="package_name"> - <xsl:call-template name="toName"> - <xsl:with-param name="text"> - <xsl:value-of select="ancestor::Model:Package/@name"/> - </xsl:with-param> - <xsl:with-param name="position" select="1"/> - </xsl:call-template> - </xsl:variable> - - <xsl:variable name="class_name"> - <xsl:call-template name="get_name"> - <xsl:with-param name="the_xmi_id"> - <xsl:value-of select="@xmi.id"/> - </xsl:with-param> - <xsl:with-param name="the_name"> - <xsl:value-of select="@name"/> - </xsl:with-param> - </xsl:call-template> - </xsl:variable> - - <xsl:choose> - <xsl:when test='not(string-length($collection) = 0)'> - <xsl:text>const Core</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$package_name"/> - </xsl:otherwise> - </xsl:choose> - - <xsl:text>::</xsl:text> - - <xsl:value-of select="$class_name"/> - - <xsl:choose> - <xsl:when test='not(string-length($collection) = 0)'> - <xsl:value-of select="$collection"/> - </xsl:when> - <xsl:otherwise> - <xsl:text>_ptr</xsl:text> - </xsl:otherwise> - </xsl:choose> - - </xsl:template> - - - <!-- Templates to do parameters to the create_<class> methods parameters. - These templates all use the create_params mode. - --> - - - <!-- Replace the default rule. --> - <xsl:template match="*" mode="create_params"/> - - - <!-- Certain nodes do nothing. --> - <xsl:template mode="create_params" - match="/ | XMI | XMI.content | Model:Package | Model:Namespace.contents | Model:DataType.typeCode | XMI.CorbaTypeCode"> - <xsl:apply-templates mode="create_params"/> - </xsl:template> - - - <xsl:template match="Model:Attribute" mode="create_params"> - - <!-- Hack!! If class name != ModelElement or attribute name != name.. --> - <xsl:if - test='not(ancestor::Model:Class/@name = "ModelElement" and @name = "name")'> - <xsl:text>, </xsl:text> - </xsl:if> - - <xsl:variable name="collection"> - <xsl:call-template name="collection_name"/> - </xsl:variable> - - <xsl:variable name="type_ref" select="@type"/> - <xsl:apply-templates - select='/descendant::*[attribute::xmi.id=$type_ref]' - mode="create_param_type_name"> - <xsl:with-param name="collection"> - <xsl:value-of select="$collection"/> - </xsl:with-param> - </xsl:apply-templates> - - <xsl:text> </xsl:text> - - <xsl:call-template name="to_name"> - <xsl:with-param name="text"> - <xsl:value-of select="@name"/> - </xsl:with-param> - <xsl:with-param name="position" select="1"/> - </xsl:call-template> - - </xsl:template> - - - <xsl:template match="Model:Class" mode="create_params"> - - <!-- attempt to find this class's supertype --> - <xsl:variable name="supertypes" select="@supertypes"/> - - <!-- if a supertype exists recurse on supertype --> - <xsl:if test='count(attribute::supertypes) > 0'> - - <xsl:choose> - <xsl:when test='contains(@supertypes," ")'> - <xsl:apply-templates mode="create_params" - select='/descendant::Model:Class[@xmi.id=substring-before($supertypes," ")]'/> - <!-- Hack!! xsl:apply-templates mode="create_params" - select='/descendant::Model:Class[@xmi.id=substring-after($supertypes," ")]'/ --> - </xsl:when> - <xsl:otherwise> - <xsl:apply-templates mode="create_params" - select='/descendant::Model:Class[@xmi.id=$supertypes]'/> - </xsl:otherwise> - </xsl:choose> - - </xsl:if> - - <!-- output the current nodes attributes --> - <xsl:apply-templates mode="create_params"/> - </xsl:template> --- 120,123 ---- |