From: Chris M. <zm...@us...> - 2002-01-30 20:41:07
|
Update of /cvsroot/kuml/kuml/libkuml/uml/tools In directory usw-pr-cvs1:/tmp/cvs-serv29902 Modified Files: gen_class_ccs.xsl gen_package_ccs.xsl gen_package_hs.xsl gen_proxy_ccs.xsl gen_proxy_hs.xsl Log Message: Get the parent package of an proxy class mod. Index: gen_class_ccs.xsl =================================================================== RCS file: /cvsroot/kuml/kuml/libkuml/uml/tools/gen_class_ccs.xsl,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -r1.10 -r1.11 *** gen_class_ccs.xsl 2001/12/28 23:42:41 1.10 --- gen_class_ccs.xsl 2002/01/30 20:41:04 1.11 *************** *** 11,14 **** --- 11,71 ---- + <xsl:template name="CONSTRUCT_ATTRIBUTE"> + + <xsl:variable name="type_ref" select="@type"/> + + <!-- Define the value of the CORBA_type variable by applying templates + in the type_name mode to the descendant of the root node whos xmi.id + attribute matches type_ref. + --> + <xsl:variable name="CORBA_type"> + <xsl:apply-templates + select='/descendant::*[@xmi.id=$type_ref]' + mode="type_name"/> + </xsl:variable> + + <xsl:if test='$CORBA_type = "char*"'> + + <xsl:variable name="attribute"> + <xsl:call-template name="get_name"> + <xsl:with-param name="the_xmi_id" select="@xmi.id"/> + <xsl:with-param name="the_name" select="@name"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="attr_name"> + <xsl:call-template name="to_name"> + <xsl:with-param name="text"> + <xsl:value-of select="$attribute"/> + </xsl:with-param> + <xsl:with-param name="position" select="1"/> + </xsl:call-template> + </xsl:variable> + + <xsl:text> fc_</xsl:text> + <xsl:value-of select="$attr_name"/> + <xsl:text> = NULL; </xsl:text> + + </xsl:if> + + </xsl:template> + + + <!-- Replace the default rule. --> + <xsl:template match="*" mode="constructor"/> + + + <!-- Certain nodes do nothing. --> + <xsl:template + match="/ | XMI | XMI.content | Model:Package | Model:Namespace.contents | Model:DataType.typeCode | XMI.CorbaTypeCode" mode="constructor"> + <xsl:apply-templates mode="constructor"/> + </xsl:template> + + + <xsl:template match="Model:Attribute" mode="constructor"> + <xsl:call-template name="CONSTRUCT_ATTRIBUTE"/> + </xsl:template> + + <xsl:template name="CLASS_INSTANCE"> *************** *** 47,50 **** --- 104,111 ---- <xsl:text>#include "list_ops.h" </xsl:text> + <xsl:text>#include <stdlib.h> </xsl:text> + + <xsl:text>#include <string.h> </xsl:text> + <xsl:text> </xsl:text> *************** *** 72,75 **** --- 133,138 ---- <xsl:text>::_duplicate(_this())); </xsl:text> + <xsl:apply-templates mode="constructor"/> + <xsl:text>}; </xsl:text> *************** *** 197,203 **** <xsl:when test='$CORBA_type="char*"'> <xsl:text>{ CORBA::String_var str; </xsl:text> ! <xsl:text> str = fc_</xsl:text> <xsl:value-of select="$attr_name"/> ! <xsl:text>; </xsl:text> <xsl:text> return str._retn(); </xsl:text> <xsl:text>} </xsl:text> --- 260,266 ---- <xsl:when test='$CORBA_type="char*"'> <xsl:text>{ CORBA::String_var str; </xsl:text> ! <xsl:text> str = strdup(fc_</xsl:text> <xsl:value-of select="$attr_name"/> ! <xsl:text>); </xsl:text> <xsl:text> return str._retn(); </xsl:text> <xsl:text>} </xsl:text> *************** *** 235,241 **** <xsl:when test='$CORBA_type="char*"'> <xsl:text>{ CORBA::String_var str; </xsl:text> ! <xsl:text> str = fc_</xsl:text> <xsl:value-of select="$attr_name"/> ! <xsl:text>; </xsl:text> <xsl:text> return str._retn(); </xsl:text> <xsl:text>} </xsl:text> --- 298,304 ---- <xsl:when test='$CORBA_type="char*"'> <xsl:text>{ CORBA::String_var str; </xsl:text> ! <xsl:text> str = strdup(fc_</xsl:text> <xsl:value-of select="$attr_name"/> ! <xsl:text>); </xsl:text> <xsl:text> return str._retn(); </xsl:text> <xsl:text>} </xsl:text> *************** *** 296,302 **** <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ fc_</xsl:text> ! <xsl:value-of select="$attr_name"/> ! <xsl:text> = new_value; </xsl:text> <xsl:text>} </xsl:text> <xsl:text> </xsl:text> --- 359,388 ---- <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:choose> ! ! <xsl:when test='$CORBA_type="char*"'> ! ! <xsl:text>{ if (fc_</xsl:text> ! <xsl:value-of select="$attr_name"/> ! <xsl:text> != NULL) free(fc_</xsl:text> ! <xsl:value-of select="$attr_name"/> ! <xsl:text>); </xsl:text> ! ! <xsl:text> fc_</xsl:text> ! <xsl:value-of select="$attr_name"/> ! <xsl:text> = strdup(new_value); </xsl:text> ! ! </xsl:when> ! ! <xsl:otherwise> ! ! <xsl:text>{ fc_</xsl:text> ! <xsl:value-of select="$attr_name"/> ! <xsl:text> = new_value; </xsl:text> ! ! </xsl:otherwise> ! ! </xsl:choose> ! <xsl:text>} </xsl:text> <xsl:text> </xsl:text> *************** *** 736,740 **** <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = _this()->ref_immediate_package(); </xsl:text> <xsl:text> </xsl:text> --- 822,826 ---- <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = get_parent_package();; </xsl:text> <xsl:text> </xsl:text> *************** *** 753,757 **** <xsl:text>::</xsl:text> <xsl:value-of select="$assoc_name"/> ! <xsl:text>_ptr assoc_proxy = cp-></xsl:text> <xsl:value-of select="$lc_assoc_name"/> <xsl:text>_ref(); </xsl:text> --- 839,844 ---- <xsl:text>::</xsl:text> <xsl:value-of select="$assoc_name"/> ! <xsl:text>_ptr assoc_proxy = </xsl:text> ! <xsl:text> cp-></xsl:text> <xsl:value-of select="$lc_assoc_name"/> <xsl:text>_ref(); </xsl:text> *************** *** 800,804 **** <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = _this()->ref_immediate_package(); </xsl:text> <xsl:text> </xsl:text> --- 887,891 ---- <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = get_parent_package(); </xsl:text> <xsl:text> </xsl:text> *************** *** 816,820 **** <xsl:text>::</xsl:text> <xsl:value-of select="$assoc_name"/> ! <xsl:text>_ptr assoc_proxy = cp-></xsl:text> <xsl:value-of select="$lc_assoc_name"/> <xsl:text>_ref(); </xsl:text> --- 903,908 ---- <xsl:text>::</xsl:text> <xsl:value-of select="$assoc_name"/> ! <xsl:text>_ptr assoc_proxy = </xsl:text> ! <xsl:text> cp-></xsl:text> <xsl:value-of select="$lc_assoc_name"/> <xsl:text>_ref(); </xsl:text> *************** *** 864,868 **** <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = _this()->ref_immediate_package(); </xsl:text> <xsl:text> </xsl:text> --- 952,956 ---- <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = get_parent_package(); </xsl:text> <xsl:text> </xsl:text> *************** *** 918,922 **** <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = _this()->ref_immediate_package(); </xsl:text> <xsl:text> </xsl:text> --- 1006,1010 ---- <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = get_parent_package(); </xsl:text> <xsl:text> </xsl:text> *************** *** 1050,1054 **** <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = _this()->ref_immediate_package(); </xsl:text> <xsl:text> </xsl:text> --- 1138,1142 ---- <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = get_parent_package(); </xsl:text> <xsl:text> </xsl:text> *************** *** 1117,1121 **** <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = _this()->ref_immediate_package(); </xsl:text> <xsl:text> </xsl:text> --- 1205,1209 ---- <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = get_parent_package(); </xsl:text> <xsl:text> </xsl:text> *************** *** 1181,1185 **** <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = _this()->ref_immediate_package(); </xsl:text> <xsl:text> </xsl:text> --- 1269,1273 ---- <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = get_parent_package(); </xsl:text> <xsl:text> </xsl:text> *************** *** 1240,1244 **** <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = _this()->ref_immediate_package(); </xsl:text> <xsl:text> </xsl:text> --- 1328,1332 ---- <xsl:text> ::Reflective::MofError) </xsl:text> ! <xsl:text>{ Reflective::RefPackage_ptr rp = get_parent_package(); </xsl:text> <xsl:text> </xsl:text> Index: gen_package_ccs.xsl =================================================================== RCS file: /cvsroot/kuml/kuml/libkuml/uml/tools/gen_package_ccs.xsl,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** gen_package_ccs.xsl 2001/12/26 00:03:36 1.3 --- gen_package_ccs.xsl 2002/01/30 20:41:04 1.4 *************** *** 27,31 **** <xsl:text>/</xsl:text> <xsl:value-of select="$ClassName"/> ! <xsl:text>.h" </xsl:text> </xsl:template> --- 27,31 ---- <xsl:text>/</xsl:text> <xsl:value-of select="$ClassName"/> ! <xsl:text>Package_impl.h" </xsl:text> </xsl:template> *************** *** 102,105 **** --- 102,224 ---- + <xsl:template name="IMPORTED_CNSTRCTR"> + + <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="ClassName"> + <xsl:call-template name="toName"> + <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:variable name="class_name"> + <xsl:call-template name="to_name"> + <xsl:with-param name="text"> + <xsl:value-of select="$ClassName"/> + </xsl:with-param> + <xsl:with-param name="position" select="1"/> + </xsl:call-template> + </xsl:variable> + + <xsl:text> fc_</xsl:text> + <xsl:value-of select="$class_name"/> + <xsl:text> = </xsl:text> + <xsl:value-of select="$ClassName"/> + <xsl:text>::</xsl:text> + <xsl:value-of select="$ClassName"/> + <xsl:text>Package::_nil(); </xsl:text> + + </xsl:template> + + + <xsl:template name="CLASS_CNSTRCTR"> + + <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="ClassName"> + <xsl:call-template name="get_name"> + <xsl:with-param name="the_xmi_id" select="@xmi.id"/> + <xsl:with-param name="the_name" select="@name"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="class_name"> + <xsl:call-template name="to_name"> + <xsl:with-param name="text"> + <xsl:value-of select="$ClassName"/> + </xsl:with-param> + <xsl:with-param name="position" select="1"/> + </xsl:call-template> + </xsl:variable> + + <xsl:text> fc_</xsl:text> + <xsl:value-of select="$class_name"/> + <xsl:text> = </xsl:text> + <xsl:value-of select="$package_name"/> + <xsl:text>::</xsl:text> + <xsl:value-of select="$ClassName"/> + <xsl:text>Class::_nil(); </xsl:text> + + </xsl:template> + + + + <xsl:template name="ASSOCIATION_CNSTRCTR"> + + <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="ClassName"> + <xsl:call-template name="toName"> + <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:variable name="class_name"> + <xsl:call-template name="to_name"> + <xsl:with-param name="text"> + <xsl:value-of select="$ClassName"/> + </xsl:with-param> + <xsl:with-param name="position" select="1"/> + </xsl:call-template> + </xsl:variable> + + <xsl:text> fc_</xsl:text> + <xsl:value-of select="$class_name"/> + <xsl:text> = </xsl:text> + <xsl:value-of select="$package_name"/> + <xsl:text>::</xsl:text> + <xsl:value-of select="$ClassName"/> + <xsl:text>::_nil(); </xsl:text> + + </xsl:template> + + <xsl:template name="IMPORTED_IMPL"> *************** *** 139,144 **** <xsl:value-of select="$class_name"/> <xsl:text>_ref() </xsl:text> - <xsl:text>{ }; </xsl:text> </xsl:template> --- 258,290 ---- <xsl:value-of select="$class_name"/> <xsl:text>_ref() </xsl:text> + <xsl:text>{ if (CORBA::is_nil(fc_</xsl:text> + <xsl:value-of select="$class_name"/> + <xsl:text>)) </xsl:text> + + <xsl:text> { </xsl:text> + <xsl:value-of select="$ClassName"/> + <xsl:text>Package_impl* impl = new </xsl:text> + <xsl:value-of select="$ClassName"/> + <xsl:text>Package_impl; </xsl:text> + + <xsl:text> fc_</xsl:text> + <xsl:value-of select="$class_name"/> + <xsl:text> = impl->_this(); </xsl:text> + + <xsl:text> } </xsl:text> + + <xsl:text> return </xsl:text> + <xsl:value-of select="$ClassName"/> + <xsl:text>::</xsl:text> + <xsl:value-of select="$ClassName"/> + <xsl:text>Package::_duplicate(fc_</xsl:text> + <xsl:value-of select="$class_name"/> + <xsl:text>); </xsl:text> + + <xsl:text>}; </xsl:text> + + <xsl:text> </xsl:text> + </xsl:template> *************** *** 194,197 **** --- 340,345 ---- <xsl:text> = impl->_this(); </xsl:text> + <xsl:text> impl->set_parent_package(_this()); </xsl:text> + <xsl:text> } </xsl:text> *************** *** 303,306 **** --- 451,456 ---- <xsl:text> </xsl:text> + <xsl:text> </xsl:text> + </xsl:template> *************** *** 344,347 **** --- 494,523 ---- <!-- Replace the default rule. --> + <xsl:template match="*" mode="constructor"/> + + + <!-- Certain nodes do nothing. --> + <xsl:template + match="/ | XMI | XMI.content | Model:Package | Model:Namespace.contents | Model:DataType.typeCode | XMI.CorbaTypeCode" mode="constructor"> + <xsl:apply-templates mode="constructor"/> + </xsl:template> + + + <xsl:template match="Model:Import" mode="constructor"> + <xsl:call-template name="IMPORTED_CNSTRCTR"/> + </xsl:template> + + + <xsl:template match="Model:Class" mode="constructor"> + <xsl:call-template name="CLASS_CNSTRCTR"/> + </xsl:template> + + + <xsl:template match="Model:Association" mode="constructor"> + <xsl:call-template name="ASSOCIATION_CNSTRCTR"/> + </xsl:template> + + + <!-- Replace the default rule. --> <xsl:template match="*" mode="implementations"/> *************** *** 412,415 **** --- 588,602 ---- <xsl:call-template name="PACKAGE_HDR"/> + + <!-- Output the constructor function def --> + <xsl:value-of select="$ClassName"/> + <xsl:text>Package_impl::</xsl:text> + <xsl:value-of select="$ClassName"/> + <xsl:text>Package_impl() </xsl:text> + <xsl:text>{ </xsl:text> + + <xsl:apply-templates mode="constructor"/> + + <xsl:text>} </xsl:text> <xsl:text> </xsl:text> Index: gen_package_hs.xsl =================================================================== RCS file: /cvsroot/kuml/kuml/libkuml/uml/tools/gen_package_hs.xsl,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** gen_package_hs.xsl 2001/12/26 00:03:36 1.2 --- gen_package_hs.xsl 2002/01/30 20:41:04 1.3 *************** *** 280,283 **** --- 280,293 ---- <xsl:text>{ </xsl:text> + <xsl:text> </xsl:text> + + <xsl:text> public: </xsl:text> + + <xsl:text> </xsl:text> + + <xsl:text> </xsl:text> + <xsl:value-of select="$package_name"/> + <xsl:text>Package_impl(); </xsl:text> + </xsl:template> Index: gen_proxy_ccs.xsl =================================================================== RCS file: /cvsroot/kuml/kuml/libkuml/uml/tools/gen_proxy_ccs.xsl,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** gen_proxy_ccs.xsl 2001/12/26 00:03:36 1.4 --- gen_proxy_ccs.xsl 2002/01/30 20:41:04 1.5 *************** *** 235,238 **** --- 235,246 ---- </xsl:if> + <xsl:text>Reflective::RefPackage_ptr </xsl:text> + <xsl:value-of select="$class_name"/> + <xsl:text>Class_impl::parent_package = </xsl:text> + + <xsl:text> Reflective::RefPackage::_nil(); </xsl:text> + + <xsl:text> </xsl:text> + <!-- Constructor. --> *************** *** 251,254 **** --- 259,276 ---- <xsl:text>{ } </xsl:text> + <xsl:text> </xsl:text> + + <!-- get_parent_package --> + <xsl:text>Reflective::RefPackage_ptr </xsl:text> + <xsl:value-of select="$class_name"/> + <xsl:text>Class_impl::get_parent_package() </xsl:text> + <xsl:text>{ return Reflective::RefPackage::_duplicate(parent_package); } </xsl:text> + <xsl:text> </xsl:text> + + <!-- set_parent_package --> + <xsl:text>void </xsl:text> + <xsl:value-of select="$class_name"/> + <xsl:text>Class_impl::set_parent_package(Reflective::RefPackage_ptr new_value) </xsl:text> + <xsl:text>{ parent_package = Reflective::RefPackage::_duplicate(new_value); } </xsl:text> <xsl:text> </xsl:text> Index: gen_proxy_hs.xsl =================================================================== RCS file: /cvsroot/kuml/kuml/libkuml/uml/tools/gen_proxy_hs.xsl,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** gen_proxy_hs.xsl 2001/12/26 00:03:36 1.11 --- gen_proxy_hs.xsl 2002/01/30 20:41:04 1.12 *************** *** 276,279 **** --- 276,287 ---- </xsl:if> + <xsl:text> Reflective::RefPackage_ptr get_parent_package(); </xsl:text> + + <xsl:text> </xsl:text> + + <xsl:text> void set_parent_package(Reflective::RefPackage_ptr new_value); </xsl:text> + + <xsl:text> </xsl:text> + <xsl:text> protected: </xsl:text> *************** *** 303,306 **** --- 311,322 ---- </xsl:if> + + <xsl:text> private: </xsl:text> + + <xsl:text> </xsl:text> + + <xsl:text> static Reflective::RefPackage_ptr parent_package; </xsl:text> + + <xsl:text> </xsl:text> <xsl:text>}; </xsl:text> |