diff options
Diffstat (limited to 'writerfilter/source/doctok/resources.xsl')
-rw-r--r-- | writerfilter/source/doctok/resources.xsl | 914 |
1 files changed, 914 insertions, 0 deletions
diff --git a/writerfilter/source/doctok/resources.xsl b/writerfilter/source/doctok/resources.xsl new file mode 100644 index 000000000000..e1fc68ba5323 --- /dev/null +++ b/writerfilter/source/doctok/resources.xsl @@ -0,0 +1,914 @@ +<!-- +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +--> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:UML = 'org.omg.xmi.namespace.UML' xml:space="default"> + <xsl:output method="text" /> + + <xsl:template match="/"> + <out xml:space="preserve"> + <xsl:text> +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * http://www.openoffice.org/license.html + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +/* + + THIS FILE IS GENERATED AUTOMATICALLY! DO NOT EDIT! + +*/ +#ifndef INCLUDED_RESOURCES_HXX +#define INCLUDED_RESOURCES_HXX + +#include <vector> +#include <boost/shared_ptr.hpp> + +#ifndef INCLUDED_OUTPUT_WITH_DEPTH_HXX +#include <resourcemodel/OutputWithDepth.hxx> +#endif + +#ifndef INCLUDED_RESOURCESIDS_HXX +#include <doctok/resourceids.hxx> +#endif + +#ifndef INCLUDED_WW8_STRUCT_BASE_HXX +#include <WW8StructBase.hxx> +#endif + +#ifndef INCLUDED_WW8_RESOURCE_MODEL_IMPL_HXX +#include <WW8ResourceModelImpl.hxx> +#endif + +#ifndef INCLUDED_WW8_PROPERTY_SET_IMPL_HXX +#include <WW8PropertySetImpl.hxx> +#endif + +#ifndef INCLUDED_DFF_HXX +#include <Dff.hxx> +#endif + +namespace writerfilter { +namespace doctok { + +class WW8DocumentImpl; +typedef const WW8DocumentImpl * WW8DocumentImplPointer; + +using namespace ::std;
</xsl:text> + <xsl:apply-templates select="//UML:Class" mode="class"/> + <xsl:text> +rtl::OUString getDffOptName(sal_uInt32 nPid); +bool isBooleanDffOpt(sal_uInt32 nId); +}} +#endif // INCLUDED_RESOURCES_HXX
</xsl:text></out> +</xsl:template> + + <xsl:template match="UML:Class" mode="class"> + <xsl:choose> + <xsl:when test='.//UML:Stereotype[@xmi.idref = "ww8resource"]'> + <xsl:apply-templates select="." mode="ww8resource"/> + </xsl:when> + <xsl:when test='.//UML:Stereotype[@xmi.idref = "dffrecord"]'> + <xsl:apply-templates select="." mode="dffrecord"/> + </xsl:when> + <xsl:when test='.//UML:Stereotype[@xmi.idref = "dffopt"]'> + <xsl:apply-templates select="." mode="dffopt"/> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template match="UML:Class" mode="ww8resource"> + <xsl:variable name="parentresource"> + <xsl:call-template name='parenttype'> + <xsl:with-param name='type'><xsl:value-of select='@xmi.id'/></xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:variable name='size_'><xsl:value-of select='./*/UML:TaggedValue[./*/UML:TagDefinition/@xmi.idref="size"]/UML:TaggedValue.dataValue'/></xsl:variable> + <xsl:variable name='size'> + <xsl:choose> + <xsl:when test='$size_ != ""'><xsl:value-of select='$size_'/></xsl:when> + <xsl:otherwise>0</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="classname">WW8<xsl:value-of select="@name"/></xsl:variable> + <xsl:variable name="superclass"> + <xsl:choose> + <xsl:when test='.//UML:Stereotype[@xmi.idref = "ww8sprm"]'>WW8PropertyImpl</xsl:when> + <xsl:otherwise>WW8StructBase</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="surroundclass"> + <xsl:choose> + <xsl:when test='.//UML:Stereotype[@xmi.idref = "ww8sprm"]'>WW8PropertyImpl</xsl:when> + <xsl:otherwise>WW8StructBase</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:text> +/** + Automatically generated class: </xsl:text><xsl:value-of select="@name"/><xsl:text> + </xsl:text> + <xsl:for-each select='./UML:ModelElement.stereotype/UML:Stereotype'> + <xsl:text> + Stereotype </xsl:text> + <xsl:value-of select='@xmi.idref'/> + <xsl:text>
</xsl:text> + </xsl:for-each> + <xsl:text> + Parent Resource: </xsl:text> + <xsl:value-of select="$parentresource"/> + <xsl:text> + Size: </xsl:text><xsl:value-of select='$size'/> + <xsl:text> +*/ +class </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>: public </xsl:text> + <xsl:value-of select='$superclass'/> + <xsl:if test='$parentresource != ""'> + <xsl:text>, public writerfilter::Reference< </xsl:text> + <xsl:value-of select='$parentresource'/> + <xsl:text>></xsl:text> + </xsl:if> + <xsl:text> +{</xsl:text> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="withindex"]'> + <xsl:text> sal_uInt32 mnIndex;</xsl:text> + </xsl:if> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="withmembers"]'> + <xsl:for-each select='.//UML:Attribute[@name!="reserved"]'> + <xsl:apply-templates select='.' mode='declmembers'/> + </xsl:for-each> + </xsl:if> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="needsdocument"]'> + <xsl:text> WW8DocumentImplPointer mpDoc;
</xsl:text> + </xsl:if> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="plcf"]'> + <xsl:text> + sal_uInt32 mnPlcfPayloadOffset; + vector<sal_uInt32> entryOffsets; + vector<sal_uInt32> payloadOffsets; + vector<sal_uInt32> payloadIndices; + </xsl:text> + </xsl:if> + <xsl:text> + public: + typedef boost::shared_ptr<</xsl:text> + <xsl:value-of select='$classname'/> + <xsl:text>> Pointer_t; + + </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>( + WW8Stream & rStream, + sal_uInt32 nOffset = 0, + sal_uInt32 nCount = </xsl:text> + <xsl:value-of select='$size'/> + <xsl:text>) + : </xsl:text><xsl:value-of select='$superclass'/> + <xsl:text>(rStream, nOffset, nCount)</xsl:text> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="withindex"]'> + <xsl:text>, mnIndex(0)</xsl:text> + </xsl:if> + <xsl:text> + { + init(); + } + </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>( + WW8StructBase * pParent, + sal_uInt32 nOffset = 0, + sal_uInt32 nCount = </xsl:text> + <xsl:value-of select='$size'/> + <xsl:text>) + : </xsl:text> + <xsl:value-of select='$superclass'/> + <xsl:text>(pParent, nOffset, nCount)</xsl:text> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="withindex"]'> + <xsl:text>, mnIndex(0)</xsl:text> + </xsl:if> + <xsl:text> + { + init(); + }
 </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>( const </xsl:text> + <xsl:value-of select='$surroundclass'/> + <xsl:text>& rSurround, + sal_uInt32 nOffset = 0, sal_uInt32 nCount = </xsl:text> + <xsl:value-of select='$size'/>) + <xsl:text> + : </xsl:text> + <xsl:value-of select='$superclass'/> + <xsl:text>(rSurround, nOffset, nCount)</xsl:text> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="withindex"]'> + <xsl:text>, mnIndex(0)</xsl:text> + </xsl:if> + <xsl:text> + { + init(); + }
 + </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>( + const Sequence & + rSequence, sal_uInt32 nOffset = 0, + sal_uInt32 nCount = </xsl:text> + <xsl:value-of select='$size'/> + <xsl:text>) + : </xsl:text> + <xsl:value-of select='$superclass'/> + <xsl:text>(rSequence, nOffset, nCount)</xsl:text> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="withindex"]'> + <xsl:text>, mnIndex(0)</xsl:text> + </xsl:if> + <xsl:text> + { + init(); + } + + virtual ~</xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>();
</xsl:text> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="initimpl"]'> + <xsl:text> void initImpl();
</xsl:text> + </xsl:if> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="plcf"]'> + <xsl:text> void initPayload();</xsl:text> + </xsl:if> + <xsl:text> + void init(); + + /** + Return type of resource. + */ + virtual string getType() const + { + return "</xsl:text> + <xsl:value-of select="@name"/> + <xsl:text>"; + } + + /** + Return static size. + */ + static sal_uInt32 getSize() { return </xsl:text> + <xsl:value-of select='$size'/> + <xsl:text>; } + + /** + Calculate actual size. + */ + sal_uInt32 calcSize(); + + </xsl:text> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="plcf"]'> + <xsl:text> + /** + Return offset for entry of PLCF. + + @param nIndex index of entry + */ + sal_uInt32 getEntryOffset(sal_uInt32 nIndex) + { + return entryOffsets[nIndex]; + } + + /** + Calculate offset for payload. + */ + sal_uInt32 calcPayloadOffset(); + + /** + Set offset for payloads. + + @param nOffset the offset to set + */ + void setPayloadOffset(sal_uInt32 nOffset) + { + mnPlcfPayloadOffset = nOffset; + } + + /** + Return offset for payload of PLCF. + + @param nIndex index of entry + */ + sal_uInt32 getPayloadOffset(sal_uInt32 nIndex) + { + return payloadOffsets[nIndex]; + } + + /** + Return size of payload. + */ + sal_uInt32 getPayloadSize(sal_uInt32 nIndex) const + { + return payloadOffsets[nIndex + 1] - payloadOffsets[nIndex]; + } + + + /** + Return payload index of an entry. + + */ + sal_uInt32 getPayloadIndex(sal_uInt32 nIndex) + { + return payloadIndices[nIndex]; + } + </xsl:text> + </xsl:if> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="withindex"]'> + <xsl:text> + /** + Set index in parent. + + @param nIndex the index + */ + void setIndex(sal_uInt32 nIndex) { mnIndex = nIndex; } + </xsl:text> + </xsl:if> + <xsl:if test='.//UML:Stereotype[@xmi.idref ="ww8sprm"]'> + <xsl:variable name='propsreftype'>writerfilter::Reference < Properties >::Pointer_t</xsl:variable> + <xsl:text> /** + Return reference to properties of Sprm. + */ + </xsl:text> + <xsl:value-of select='$propsreftype'/> + <xsl:text> getProps() + { + return </xsl:text> + <xsl:value-of select='$propsreftype'/> + <xsl:text> (new </xsl:text> + <xsl:value-of select='$classname'/> + <xsl:text>(*this)); + } + </xsl:text> + </xsl:if> + + <xsl:if test='.//UML:Stereotype[@xmi.idref ="ww8sprmbinary"]'> + <xsl:text> + virtual writerfilter::Reference < BinaryObj > ::Pointer_t getBinary(); + </xsl:text> + </xsl:if> + + <xsl:if test='.//UML:Stereotype[@xmi.idref ="needsdocument"]'> + <xsl:text> + void setDoc(WW8DocumentImplPointer pDoc) + { + mpDoc = pDoc; + } + </xsl:text> + </xsl:if> + <xsl:apply-templates select="." mode="declsProperties"/> + <xsl:if test='$parentresource="Table"'> + <xsl:apply-templates select="." mode="declsTable"/> + </xsl:if> + <xsl:choose> + <xsl:when test='$parentresource="Properties"'> + <xsl:apply-templates select="." mode="resolveProperties"/> + </xsl:when> + <xsl:when test='$parentresource="Table"'> + <xsl:apply-templates select="." mode="resolveTable"/> + </xsl:when> + </xsl:choose> + <xsl:text> + }; + </xsl:text> + </xsl:template> + +<xsl:template match='UML:Class' mode='declsProperties'> + <xsl:choose> + <xsl:when test='.//UML:Stereotype[@xmi.idref ="withmembers"]'> + <xsl:for-each select='.//UML:Attribute[@name!="reserved"]'> + <xsl:apply-templates select='.' mode='accessmembers'/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="debug"> + <xsl:choose> + <xsl:when test='.//UML:Stereotype[@xmi.idref="debug"]'> + <xsl:text>true</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:for-each select='.//UML:Attribute[@name!="reserved"]'> + <xsl:apply-templates select='.' mode='access'> + <xsl:with-param name="debug"> + <xsl:value-of select="$debug"/> + </xsl:with-param> + </xsl:apply-templates> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + <xsl:for-each select='.//UML:Operation[@name!="reserved"]'> + <xsl:apply-templates select='.' mode='declsOperations'/> + </xsl:for-each> +</xsl:template> + +<xsl:template match="UML:Class" mode="resolveProperties"> + <xsl:if test='.//UML:Stereotype[@xmi.idref = "resolvenoauto"]'> + void resolveNoAuto(Properties & rHandler); + </xsl:if> + + void dump(OutputWithDepth < string > & o) const; + + void resolve(Properties & rHandler); +</xsl:template> + +<xsl:template match="UML:Class" mode="declsTable"> + sal_uInt32 getEntryCount(); + writerfilter::Reference< Properties >::Pointer_t getEntry(sal_uInt32 nIndex); +</xsl:template> + +<xsl:template match="UML:Class" mode="resolveTable"> + void resolve(Table & rHandler); +</xsl:template> + +<xsl:template match="UML:Attribute" mode="access"> + <xsl:param name="debug"/> + <xsl:variable name="stereotype"><xsl:value-of select=".//UML:Stereotype[1]/@xmi.idref"/></xsl:variable> + <xsl:variable name="offset_"><xsl:value-of select='translate(.//UML:TaggedValue[.//UML:TagDefinition/@xmi.idref="offset"]/UML:TaggedValue.dataValue, "ABCDEFX", "abcdefx")'/></xsl:variable> + <xsl:variable name="offset"> + <xsl:value-of select='$offset_'/> + </xsl:variable> + <xsl:variable name="shift"><xsl:value-of select='.//UML:TaggedValue[.//UML:TagDefinition/@xmi.idref="shift"]/UML:TaggedValue.dataValue'/></xsl:variable> + <xsl:variable name="mask_"><xsl:value-of select='translate(.//UML:TaggedValue[.//UML:TagDefinition/@xmi.idref="mask"]/UML:TaggedValue.dataValue, "ABCDEFX", "abcdefx")'/></xsl:variable> + <xsl:variable name="mask"> + <xsl:if test='$mask_ != "" and not(starts-with($mask_, "0x"))'>0x</xsl:if> + <xsl:value-of select='$mask_'/> + </xsl:variable> + <xsl:variable name='type'> + <xsl:value-of select="UML:StructuralFeature.type/UML:DataType/@xmi.idref"/> + </xsl:variable> + <xsl:variable name="completetype"> + <xsl:text>WW8</xsl:text> + <xsl:value-of select="$type"/> + </xsl:variable> + <xsl:variable name="saltype"> + <xsl:apply-templates select="." mode="returntype"/> + </xsl:variable> + <xsl:variable name='typetype'> + <xsl:call-template name='typetype'> + <xsl:with-param name='type'><xsl:value-of select="$type"/></xsl:with-param> + </xsl:call-template> + </xsl:variable> + + /** + <xsl:value-of select='.//UML:TaggedValue[.//UML:TagDefinition/@xmi.idref="comment"]/UML:TaggedValue.dataValue'/> + + <table> + <tr> + <th> + Name + </th> + <td> + <xsl:value-of select='@name'/>(<xsl:value-of select='$stereotype'/>) + </td> + </tr> + <tr> + <th> + Offset + </th> + <td> + <xsl:value-of select='$offset'/> + </td> + </tr> + <tr> + <th> + Mask + </th> + <td> + <xsl:value-of select='$mask'/> + </td> + </tr> + <tr> + <th> + Shift + </th> + <td> + <xsl:value-of select='$shift'/> + </td> + </tr> + </table> + */ + +<xsl:choose> + <xsl:when test='$stereotype = "attribute"'> + <xsl:if test='././/UML:Stereotype[@xmi.idref="virtual"]'> + <xsl:text>virtual </xsl:text> + </xsl:if> + <xsl:value-of select='$saltype'/> get_<xsl:value-of select='@name'/>() const + { + <xsl:if test='$debug="true"'> + <xsl:text> + clog << "<called></xsl:text> + <xsl:value-of select="@name"/> + <xsl:text></called>" + << endl;
 + </xsl:text> + </xsl:if> + <xsl:choose> + <xsl:when test='././/UML:Stereotype[@xmi.idref="attributeremainder"]'> + <xsl:text>return writerfilter::Reference < BinaryObj >::Pointer_t(new WW8BinaryObjReference(getRemainder(</xsl:text> + <xsl:value-of select="$offset"/> + <xsl:text>)));
</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test='$typetype = "complex"'> + <xsl:text> return </xsl:text> + <xsl:value-of select="$saltype"/> + <xsl:text>(new </xsl:text> + <xsl:value-of select="$completetype"/> + <xsl:text>(*this, </xsl:text> + <xsl:value-of select="$offset"/> + <xsl:text>));
</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> return (get</xsl:text> + <xsl:value-of select="$type"/> + <xsl:text>(</xsl:text> + <xsl:value-of select="$offset"/> + <xsl:text>)</xsl:text> + <xsl:if test="string-length($mask)>0"> + <xsl:text>& </xsl:text> + <xsl:value-of select="$mask"/> + </xsl:if> + <xsl:text>)</xsl:text> + <xsl:if test="$shift>0"> + <xsl:text>>> </xsl:text> + <xsl:value-of select="$shift"/> + </xsl:if> + <xsl:text>;</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + } + </xsl:when> + <xsl:when test='$stereotype = "array"'> + <xsl:text>sal_uInt32 get_</xsl:text> + <xsl:value-of select='@name'/> + <xsl:text>_count() const </xsl:text> + <xsl:choose> + <xsl:when test='.//UML:TaggedValue[.//UML:TagDefinition/@xmi.idref = "arraycount"]'> + <xsl:text>{ return </xsl:text> + <xsl:value-of select='.//UML:TaggedValue[.//UML:TagDefinition/@xmi.idref = "arraycount"]/UML:TaggedValue.dataValue'/> + <xsl:text>; }
</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>;
</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:value-of select='$saltype'/> + <xsl:text> get_</xsl:text> + <xsl:value-of select='@name'/> + <xsl:text>(sal_uInt32 nIndex) const {</xsl:text> + <xsl:choose> + <xsl:when test="$typetype='complex'"> + <xsl:text> return </xsl:text> + <xsl:value-of select="$saltype"/> + <xsl:text>( new </xsl:text> + <xsl:value-of select="$completetype"/> + <xsl:text>(static_cast<const WW8StructBase >(*this), </xsl:text> + <xsl:value-of select="$offset"/> + <xsl:text> + nIndex * </xsl:text> + <xsl:value-of select="$completetype"/> + <xsl:text>::getSize()));</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> return get</xsl:text> + <xsl:value-of select='$type'/> + <xsl:text>(</xsl:text><xsl:value-of select='$offset'/> + <xsl:text> + nIndex * sizeof(</xsl:text> + <xsl:value-of select='$saltype'/> + <xsl:text>))</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:text>; }
</xsl:text> + </xsl:when> + <xsl:when test='$stereotype = "string"'> + rtl::OUString get_<xsl:value-of select='@name'/>() const { return getString(<xsl:value-of select='$offset'/>); } + </xsl:when> +</xsl:choose> +</xsl:template> + +<xsl:template match='UML:Attribute' mode='accessmembers'> + <xsl:text> </xsl:text> + <xsl:call-template name='saltype'> + <xsl:with-param name='type'> + <xsl:value-of select='.//UML:DataType/@xmi.idref'/> + </xsl:with-param> + </xsl:call-template> + <xsl:text> get_</xsl:text> + <xsl:value-of select='@name'/> + <xsl:text>() const { return m</xsl:text> + <xsl:value-of select='@name'/> + <xsl:text>; } + </xsl:text> +</xsl:template> + + +<xsl:template match="UML:Operation" mode="declsOperations"> + <xsl:choose> + <xsl:when test='.//UML:Stereotype/@xmi.idref = "array"'> + <xsl:variable name="elementtype"> + <xsl:value-of select='.//UML:Parameter.type/UML:Class/@xmi.idref'/> + </xsl:variable> + <xsl:variable name="parentclass"> + <xsl:call-template name='parenttype'> + <xsl:with-param name='type'> + <xsl:value-of select='$elementtype'/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:variable name='saltype'> + <xsl:call-template name='saltype'> + <xsl:with-param name='type'> + <xsl:value-of select='$elementtype'/> + </xsl:with-param> + <xsl:with-param name='parenttype'> + <xsl:value-of select='$parentclass'/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + /** + Array: <xsl:value-of select="@name"/> + ElementType: <xsl:value-of select="$elementtype"/>(<xsl:value-of select="$parentclass"/>) + */ + + sal_uInt32 get_<xsl:value-of select="@name"/>_count(); + + <xsl:text> </xsl:text><xsl:value-of select='$saltype'/> get_<xsl:value-of select="@name"/>(sal_uInt32 pos); + </xsl:when> + <xsl:when test='.//UML:Stereotype/@xmi.idref = "attribute" or .//UML:Stereotype/@xmi.idref = "binary"'> + <xsl:variable name="returntype_"> + <xsl:value-of select='.//UML:Parameter.type/UML:Class/@xmi.idref'/> + </xsl:variable> + <xsl:variable name="returntype"> + <xsl:call-template name='saltype'> + <xsl:with-param name='type'> + <xsl:value-of select='$returntype_'/> + </xsl:with-param> + <xsl:with-param name='parenttype'> + <xsl:call-template name='parenttype'> + <xsl:with-param name='type'> + <xsl:value-of select='$returntype_'/> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + /** + Operation: <xsl:value-of select="@name"/> + */ + + <xsl:text> </xsl:text> + <xsl:value-of select='$returntype'/> + <xsl:text> get_</xsl:text> + <xsl:value-of select='@name'/> + <xsl:text>();
</xsl:text> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="UML:Attribute" mode='declmembers'> + <xsl:text> </xsl:text> + <xsl:call-template name='saltype'> + <xsl:with-param name='type'> + <xsl:value-of select='.//UML:DataType/@xmi.idref'/> + </xsl:with-param> + </xsl:call-template> + <xsl:text> m</xsl:text> + <xsl:value-of select="@name"/> + <xsl:text>; + </xsl:text> +</xsl:template> + +<xsl:template name='idtoqname'> + <xsl:param name='id'/>NS_<xsl:value-of select='substring-before($id, ":")'/>::LN_<xsl:value-of select='substring-after($id, ":")'/> +</xsl:template> + +<xsl:template name='saltype'> + <xsl:param name='type'/> + <xsl:param name='parenttype'/> + <xsl:choose> + <xsl:when test="$type='U8'">sal_uInt8</xsl:when> + <xsl:when test="$type='S8'">sal_Int8</xsl:when> + <xsl:when test="$type='U16'">sal_uInt16</xsl:when> + <xsl:when test="$type='S16'">sal_Int16</xsl:when> + <xsl:when test="$type='U32'">sal_uInt32</xsl:when> + <xsl:when test="$type='S32'">sal_Int32</xsl:when> + <xsl:when test="$type='String'">rtl::OUString</xsl:when> + <xsl:when test="$type='Value'">WW8Value::Pointer_t</xsl:when> + <xsl:when test="$type='Binary'">WW8BinaryObjReference::Pointer_t</xsl:when> + <xsl:when test="$parenttype=''"> + <xsl:value-of select="$type"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>writerfilter::Reference < </xsl:text> + <xsl:value-of select='$parenttype'/> + <xsl:text> >::Pointer_t</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name='typetype'> + <xsl:param name='type'/><xsl:choose> + <xsl:when test="$type='U8'">simple</xsl:when> + <xsl:when test="$type='S8'">simple</xsl:when> + <xsl:when test="$type='U16'">simple</xsl:when> + <xsl:when test="$type='S16'">simple</xsl:when> + <xsl:when test="$type='U32'">simple</xsl:when> + <xsl:when test="$type='S32'">simple</xsl:when> + <xsl:when test="$type='String'">string</xsl:when> + <xsl:when test="$type='Value'">value</xsl:when> + <xsl:otherwise>complex</xsl:otherwise> +</xsl:choose> +</xsl:template> + +<xsl:template match="UML:Attribute" mode="valuetype"> + <xsl:variable name='type'> + <xsl:value-of select='.//UML:DataType/@xmi.idref'/> + </xsl:variable> + <xsl:choose> + <xsl:when test='$type="U8"'>WW8IntValue</xsl:when> + <xsl:when test='$type="S8"'>WW8IntValue</xsl:when> + <xsl:when test='$type="U16"'>WW8IntValue</xsl:when> + <xsl:when test='$type="S16"'>WW8IntValue</xsl:when> + <xsl:when test='$type="U32"'>WW8IntValue</xsl:when> + <xsl:when test='$type="S32"'>WW8IntValue</xsl:when> + <xsl:otherwise>WW8PropertiesValue</xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="UML:Class" mode="dffrecord"> + <xsl:variable name="classname"> + <xsl:text>Dff</xsl:text><xsl:value-of select="@name"/> + </xsl:variable> + <xsl:text> +/** + Automaticallay generated class: + </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>
 +*/
 +class </xsl:text> +<xsl:value-of select="$classname"/> +<xsl:text> : public DffRecord +{ +public: + typedef boost::shared_ptr < </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text> > Pointer_t;
 + </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>(WW8StructBase * pParent, sal_uInt32 nOffset, sal_uInt32 nCount)
 + : DffRecord(pParent, nOffset, nCount) {}
 + </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>(WW8Stream & rStream, sal_uInt32 nOffset, sal_uInt32 nCount)
 + : DffRecord(rStream, nOffset, nCount) {}
 + </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>(DffRecord & rRecord)
 + : DffRecord(rRecord) {} + virtual ~</xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>(); + + virtual void resolveLocal(Properties & props);</xsl:text> + <xsl:if test='.//UML:Stereotype[@xmi.idref = "resolvenoauto"]'> + void resolveNoAuto(Properties & rHandler); + </xsl:if> + <xsl:text> + virtual void dump(OutputWithDepth < string > & o) const; + + virtual DffRecord * clone() const { return new </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>(*this); }
 + virtual string getType() const + { + return "</xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>"; + } + + virtual string getName() const { return ""; } + </xsl:text> + <xsl:apply-templates select="." mode="declsProperties"/> + <xsl:text> +}; +</xsl:text> +</xsl:template> + + +<xsl:template match="UML:Class" mode="dffopt"> +<!-- + <xsl:variable name="classname"> + <xsl:text>DffOpt</xsl:text><xsl:value-of select="@name"/> + </xsl:variable> + <xsl:text> +/** + Automaticallay generated class: + </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>
 +*/
 +class </xsl:text> +<xsl:value-of select="$classname"/> +<xsl:text> : public WW8FOPTE +{ + </xsl:text> + <xsl:value-of select="$classname"/> + <xsl:text>(WW8FOPTE & rOpt) : WW8FOPTE(rOpt) {} + + virtual string getName() const + { + return "</xsl:text> + <xsl:value-of select="@name"/> + <xsl:text>"; + }
</xsl:text> + + <xsl:text> +}; +</xsl:text> +--> +</xsl:template> + +<xsl:template name="parenttype"> + <xsl:param name='type'/> + <xsl:for-each select='/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:Generalization[UML:Generalization.child/UML:Class/@xmi.idref=$type]'> + <xsl:value-of select='./UML:Generalization.parent/UML:Class/@xmi.idref'/> + </xsl:for-each> +</xsl:template> + +<xsl:template match="UML:Attribute" mode="returntype"> + <xsl:variable name='type'> + <xsl:value-of select="UML:StructuralFeature.type/UML:DataType/@xmi.idref"/> + </xsl:variable> + <xsl:call-template name='saltype'> + <xsl:with-param name='type'> + <xsl:value-of select="$type"/> + </xsl:with-param> + <xsl:with-param name='parenttype'> + <xsl:call-template name='parenttype'> + <xsl:with-param name='type'><xsl:value-of select='$type'/></xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +</xsl:stylesheet> + |