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


Quelle  cppheader.xsl

  Sprache: XML
 

<?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(<!--
      -->

      <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(<!--
      -->

      <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<<!--
          -->

        </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(<!--
      -->

      <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>

Messung V0.5 in Prozent
C=98 H=100 G=98

¤ Dauer der Verarbeitung: 0.23 Sekunden  (vorverarbeitet am  2026-05-07) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


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