Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  cppheader.xsl   Sprache: unbekannt

 
<?xml version="1.0" encoding="UTF-8"?>
<!--
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
-->

<!-- Generate a .hxx file with type-safe C++ abstractions (based on
     comphelper/configuration.hxx) for all the <prop> and <set> elements in an
     .xcs file.

     Takes up to three parameters ns1, ns2, ns3 that represent the .xcs file's
     nesting within the org/openoffice hierarchy (e.g., for
     officecfg/registry/schema/org/openoffice/Office/Common.xcs, ns1 would be
     "Office", ns2 would be "Common", and ns3 would remain unset.

     TODO: Does not yet handle <node-ref> indirections (as, e.g., used in
     officecfg/registry/schema/org/openoffice/Office/Common.xcs as
     "ApplicationControlLayout").  Also, the available abstractions can still be
     improved (e.g., for extensible groups or for set element types).
-->

<xsl:stylesheet
    version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:oor="http://openoffice.org/2001/registry">
  <xsl:param name="ns1"/>
  <xsl:param name="ns2"/>
  <xsl:param name="ns3"/>
  <xsl:output method="text"/>

  <xsl:template match="/oor:component-schema">
    <xsl:apply-templates select="component">
      <xsl:with-param name="path">
        <xsl:text>/</xsl:text>
        <xsl:value-of select="@oor:package"/>
        <xsl:text>.</xsl:text>
        <xsl:value-of select="@oor:name"/>
      </xsl:with-param>
    </xsl:apply-templates>
  </xsl:template>

  <xsl:template match="component">
    <xsl:param name="path"/>
    <xsl:text>#ifndef INCLUDED_OFFICECFG_</xsl:text>
    <xsl:value-of
        select="translate($ns1, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
    <xsl:if test="$ns2">
      <xsl:text>_</xsl:text>
      <xsl:value-of
          select="translate($ns2, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
      <xsl:if test="$ns3">
        <xsl:text>_</xsl:text>
        <xsl:value-of
            select="translate($ns3, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
      </xsl:if>
    </xsl:if>
    <xsl:text>_HXX </xsl:text>
    <xsl:text>#define INCLUDED_OFFICECFG_</xsl:text>
    <xsl:value-of
        select="translate($ns1, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
    <xsl:if test="$ns2">
      <xsl:text>_</xsl:text>
      <xsl:value-of
          select="translate($ns2, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
      <xsl:if test="$ns3">
        <xsl:text>_</xsl:text>
        <xsl:value-of
            select="translate($ns3, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
      </xsl:if>
    </xsl:if>
    <xsl:text>_HXX </xsl:text>
    <xsl:text> </xsl:text>
    <xsl:text>#include "sal/config.h" </xsl:text>
    <xsl:text> </xsl:text>
    <xsl:if test=".//prop or .//set">
      <xsl:if
          test=".//prop[count(@oor:nillable) = 0 or @oor:nillable = 'true']">
        <xsl:text>#include <optional> </xsl:text>
      </xsl:if>
      <xsl:if test=".//prop/@oor:type = 'oor:any'">
        <xsl:text>#include "com/sun/star/uno/Any.hxx" </xsl:text>
      </xsl:if>
      <xsl:if test=".//prop/@oor:type = 'xs:hexBinary' or .//prop/@oor:type = 'oor:boolean-list' or .//prop/@oor:type = 'oor:short-list' or .//prop/@oor:type = 'oor:int-list' or .//prop/@oor:type = 'oor:long-list' or .//prop/@oor:type = 'oor:double-list' or .//prop/@oor:type = 'oor:string-list'">
        <xsl:text>#include "com/sun/star/uno/Sequence.hxx" </xsl:text>
      </xsl:if>
      <xsl:text>#include "rtl/ustring.h" </xsl:text>
      <xsl:text>#include "rtl/ustring.hxx" </xsl:text>
      <xsl:if test=".//prop/@oor:type = 'xs:short' or .//prop/@oor:type = 'xs:int' or .//prop/@oor:type = 'xs:long' or .//prop/@oor:type = 'xs:hexBinary'">
        <xsl:text>#include "sal/types.h" </xsl:text>
      </xsl:if>
      <xsl:text>#include "comphelper/configuration.hxx" </xsl:text>
      <xsl:text> </xsl:text>
      <xsl:text>namespace officecfg { namespace </xsl:text>
      <xsl:value-of select="$ns1"/>
      <xsl:if test="$ns2">
        <xsl:text> { namespace </xsl:text>
        <xsl:value-of select="$ns2"/>
        <xsl:if test="$ns3">
          <xsl:text> { namespace </xsl:text>
          <xsl:value-of select="$ns3"/>
        </xsl:if>
      </xsl:if>
      <xsl:text> { </xsl:text>
      <xsl:text> </xsl:text>
      <xsl:apply-templates select="group|set|prop">
        <xsl:with-param name="path" select="$path"/>
      </xsl:apply-templates>
      <xsl:if test="$ns2">
        <xsl:text>} </xsl:text>
        <xsl:if test="$ns3">
          <xsl:text>} </xsl:text>
        </xsl:if>
      </xsl:if>
      <xsl:text>} } </xsl:text>
      <xsl:text> </xsl:text>
    </xsl:if>
    <xsl:text>#endif </xsl:text>
  </xsl:template>

  <xsl:template match="group">
    <xsl:param name="path"/>
    <xsl:if test="not(info/deprecated) and (.//prop or .//set)">
      <xsl:variable name="name" select="translate(@oor:name, '-.', '__')"/>
      <xsl:text>struct </xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>: public comphelper::ConfigurationGroup< </xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>> { </xsl:text>
      <xsl:text>    static OUString path() { static constexpr OUString PATH(<!--
      -->u"</xsl:text>
      <xsl:value-of select="$path"/>
      <xsl:text>/</xsl:text>
      <xsl:value-of select="@oor:name"/>
      <xsl:text>"_ustr); return PATH; } </xsl:text>
      <xsl:text> </xsl:text>
      <xsl:apply-templates select="group|set|prop">
        <xsl:with-param name="path">
          <xsl:value-of select="$path"/>
          <xsl:text>/</xsl:text>
          <xsl:value-of select="@oor:name"/>
        </xsl:with-param>
      </xsl:apply-templates>
      <xsl:text>private: </xsl:text>
      <xsl:text>    </xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>(); // not defined </xsl:text>
      <xsl:text>    ~</xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>(); // not defined </xsl:text>
      <xsl:text>}; </xsl:text>
      <xsl:text> </xsl:text>
    </xsl:if>
  </xsl:template>

  <xsl:template match="set">
    <xsl:param name="path"/>
    <xsl:if test="not(info/deprecated)">
      <xsl:variable name="name" select="translate(@oor:name, '-.', '__')"/>
      <xsl:text>struct </xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>: public comphelper::ConfigurationSet< </xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>> { </xsl:text>
      <xsl:text>    static OUString path() { static constexpr OUString PATH(<!--
      -->u"</xsl:text>
      <xsl:value-of select="$path"/>
      <xsl:text>/</xsl:text>
      <xsl:value-of select="@oor:name"/>
      <xsl:text>"_ustr); return PATH; } </xsl:text>
      <xsl:text>private: </xsl:text>
      <xsl:text>    </xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>(); // not defined </xsl:text>
      <xsl:text>    ~</xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>(); // not defined </xsl:text>
      <xsl:text>}; </xsl:text>
      <xsl:text> </xsl:text>
    </xsl:if>
  </xsl:template>

  <xsl:template match="prop">
    <xsl:param name="path"/>
    <xsl:if test="not(info/deprecated)">
      <xsl:variable name="name" select="translate(@oor:name, '-.', '__')"/>
      <xsl:text>struct </xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>: public comphelper::</xsl:text>
      <xsl:choose>
        <xsl:when test="@oor:localized = 'true'">
          <xsl:text>ConfigurationLocalizedProperty</xsl:text>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>ConfigurationProperty</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:text><</xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>, </xsl:text>
      <xsl:if test="not(@oor:nillable = 'false')">
        <xsl:text>std::optional<</xsl:text>
      </xsl:if>
      <xsl:choose>
        <xsl:when test="@oor:type='oor:any'">
          <xsl:text>com::sun::star::uno::Any</xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='xs:boolean'">
          <xsl:text>bool</xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='xs:short'">
          <xsl:text>sal_Int16</xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='xs:int'">
          <xsl:text>sal_Int32</xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='xs:long'">
          <xsl:text>sal_Int64</xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='xs:double'">
          <xsl:text>double</xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='xs:string'">
          <xsl:text>OUString</xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='xs:hexBinary'">
          <xsl:text>com::sun::star::uno::Sequence<sal_Int8> </xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='oor:boolean-list'">
          <xsl:text>com::sun::star::uno::Sequence<bool> </xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='oor:short-list'">
          <xsl:text>com::sun::star::uno::Sequence<sal_Int16> </xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='oor:int-list'">
          <xsl:text>com::sun::star::uno::Sequence<sal_Int32> </xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='oor:long-list'">
          <xsl:text>com::sun::star::uno::Sequence<sal_Int64> </xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='oor:double-list'">
          <xsl:text>com::sun::star::uno::Sequence<double> </xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='oor:string-list'">
          <xsl:text>com::sun::star::uno::Sequence<OUString> </xsl:text>
        </xsl:when>
        <xsl:when test="@oor:type='oor:hexBinary-list'">
          <xsl:text>com::sun::star::uno::Sequence<<!--
          -->com::sun::star::uno::Sequence<sal_Int8> > </xsl:text>
        </xsl:when>
      </xsl:choose>
      <xsl:if test="not(@oor:nillable = 'false')">
        <xsl:text>> </xsl:text>
      </xsl:if>
      <xsl:text>> { </xsl:text>
      <xsl:text>    static OUString path() { static constexpr OUString PATH(<!--
      -->u"</xsl:text>
      <xsl:value-of select="$path"/>
      <xsl:text>/</xsl:text>
      <xsl:value-of select="@oor:name"/>
      <xsl:text>"_ustr); return PATH; } </xsl:text>
      <xsl:text>private: </xsl:text>
      <xsl:text>    </xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>(); // not defined </xsl:text>
      <xsl:text>    ~</xsl:text>
      <xsl:value-of select="$name"/>
      <xsl:text>(); // not defined </xsl:text>
      <xsl:text>}; </xsl:text>
      <xsl:text> </xsl:text>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

[ Dauer der Verarbeitung: 0.3 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge