| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!-- $Id$ --> |
| <xsl:stylesheet version="1.0" |
| xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
| |
| <xsl:include href="./propinc.xsl"/> |
| |
| <xsl:output method="text" /> |
| |
| <xsl:template match="allprops"> |
| <xsl:variable name="constlist"> |
| <xsl:for-each select="document(propfile)//generic-property-list |
| //enumeration/value"> |
| <xsl:sort select="@const"/> |
| <xsl:value-of select="@const"/>:</xsl:for-each> |
| </xsl:variable> |
| |
| <xsl:variable name="propertylist"> |
| <xsl:for-each select="document(propfile)//generic-property-list// |
| property[not(@type = 'generic')]"> |
| <xsl:sort select="name"/> |
| <xsl:text>PR_</xsl:text> |
| <xsl:call-template name="makeEnumConstant"> |
| <xsl:with-param name="propstr" select="name" /> |
| </xsl:call-template> |
| <xsl:text>:</xsl:text> |
| </xsl:for-each> |
| </xsl:variable> |
| |
| <xsl:variable name="compoundpropertylist"> |
| <xsl:for-each select="document(propfile)//generic-property-list// |
| property/compound/subproperty"> |
| <xsl:sort select="name"/> |
| <xsl:text>CP_</xsl:text> |
| <xsl:call-template name="makeEnumConstant"> |
| <xsl:with-param name="propstr" select="name" /> |
| </xsl:call-template> |
| <xsl:text>:</xsl:text> |
| </xsl:for-each> |
| </xsl:variable> |
| |
| <xsl:variable name="elementlist"> |
| <xsl:for-each select="document(elementfile)//element"> |
| <xsl:sort select="name"/> |
| <xsl:text>FO_</xsl:text> |
| <xsl:call-template name="makeEnumConstant"> |
| <xsl:with-param name="propstr" select="name" /> |
| </xsl:call-template> |
| <xsl:text>:</xsl:text> |
| </xsl:for-each> |
| </xsl:variable> |
| |
| <xsl:text> |
| |
| package org.apache.fop.fo; |
| |
| public interface Constants {</xsl:text> |
| |
| // element constants |
| <xsl:call-template name="sortconsts"> |
| <xsl:with-param name="consts" select="$elementlist"/> |
| <xsl:with-param name="counter" select="'ELEMENT'"/> |
| </xsl:call-template> |
| |
| // Masks |
| int COMPOUND_SHIFT = 9; |
| int PROPERTY_MASK = (1 << COMPOUND_SHIFT)-1; |
| int COMPOUND_MASK = ~PROPERTY_MASK; |
| int COMPOUND_COUNT = 11; |
| |
| // property constants |
| <xsl:call-template name="sortconsts"> |
| <xsl:with-param name="consts" select="$propertylist"/> |
| <xsl:with-param name="counter" select="'PROPERTY'"/> |
| </xsl:call-template> |
| |
| // compound property constants |
| <xsl:call-template name="sortconsts"> |
| <xsl:with-param name="consts" select="$compoundpropertylist"/> |
| <xsl:with-param name="suffix" select="' << COMPOUND_SHIFT'"/> |
| </xsl:call-template> |
| |
| // Enumeration constants |
| <xsl:call-template name="sortconsts"> |
| <xsl:with-param name="consts" select="$constlist"/> |
| </xsl:call-template> |
| |
| // Enumeration Interfaces |
| |
| public interface GenericBooleanInterface { |
| int TRUE = Constants.TRUE; |
| int FALSE = Constants.FALSE; |
| } |
| |
| public interface GenericBorderStyleInterface { |
| int NONE = Constants.NONE; |
| int HIDDEN = Constants.HIDDEN; |
| int DOTTED = Constants.DOTTED; |
| int DASHED = Constants.DASHED; |
| int SOLID = Constants.SOLID; |
| int DOUBLE = Constants.DOUBLE; |
| int GROOVE = Constants.GROOVE; |
| int RIDGE = Constants.RIDGE; |
| int INSET = Constants.INSET; |
| int OUTSET = Constants.OUTSET; |
| } |
| |
| public interface GenericBreakInterface { |
| int AUTO = Constants.AUTO; |
| int COLUMN = Constants.COLUMN; |
| int PAGE = Constants.PAGE; |
| int EVEN_PAGE = Constants.EVEN_PAGE; |
| int ODD_PAGE = Constants.ODD_PAGE; |
| } |
| |
| public interface GenericCondBorderWidthInterface { |
| public interface Conditionality { |
| int DISCARD = Constants.DISCARD; |
| int RETAIN = Constants.RETAIN; |
| } |
| } |
| |
| public interface GenericCondPaddingInterface { |
| public interface Conditionality { |
| int DISCARD = Constants.DISCARD; |
| int RETAIN = Constants.RETAIN; |
| } |
| } |
| |
| public interface GenericKeepInterface { |
| public interface WithinPage { |
| int AUTO = Constants.AUTO; |
| int ALWAYS = Constants.ALWAYS; |
| } |
| public interface WithinLine { |
| int AUTO = Constants.AUTO; |
| int ALWAYS = Constants.ALWAYS; |
| } |
| public interface WithinColumn { |
| int AUTO = Constants.AUTO; |
| int ALWAYS = Constants.ALWAYS; |
| } |
| } |
| |
| public interface GenericSpaceInterface { |
| public interface Precedence { |
| int FORCE = Constants.FORCE; |
| } |
| public interface Conditionality { |
| int DISCARD = Constants.DISCARD; |
| int RETAIN = Constants.RETAIN; |
| } |
| } |
| |
| <xsl:apply-templates select = "document(propfile)//property[not(@type='generic')]"> |
| <xsl:sort select="name"/> |
| </xsl:apply-templates> |
| |
| <xsl:text> |
| } |
| </xsl:text> |
| </xsl:template> |
| |
| <xsl:template match="property"> |
| <xsl:variable name="classname"> |
| <xsl:choose> |
| <xsl:when test="class-name"> |
| <xsl:value-of select="class-name"/> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:call-template name="makeClassName"> |
| <xsl:with-param name="propstr" select="name"/> |
| </xsl:call-template> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:variable> |
| <xsl:variable name="bEnum"> |
| <xsl:call-template name="hasEnum"/> |
| </xsl:variable> |
| <xsl:variable name="bSubpropEnum"> |
| <xsl:call-template name="hasSubpropEnum"/> |
| </xsl:variable> |
| |
| <xsl:if test="$bEnum='true' or contains($bSubpropEnum, 'true')"> |
| <!--redirect:write select="concat($classname, '.java')"--> |
| <!-- Handle enumeration values --> |
| <xsl:text> |
| public interface </xsl:text> |
| <xsl:value-of select="$classname"/> |
| <xsl:if test="use-generic"> |
| <xsl:text> extends </xsl:text> |
| <xsl:value-of select="use-generic"/> |
| <xsl:text>Interface</xsl:text> |
| </xsl:if> |
| <xsl:text> {</xsl:text> |
| <xsl:for-each select="enumeration/value"> |
| <xsl:text> |
| int </xsl:text> |
| <xsl:value-of select="@const"/> |
| <xsl:text> = Constants.</xsl:text> |
| <xsl:value-of select="@const"/> |
| <xsl:text>;</xsl:text> |
| </xsl:for-each> |
| <xsl:text> } |
| </xsl:text> |
| </xsl:if> |
| </xsl:template> |
| |
| <xsl:template name="sortconsts"> |
| <xsl:param name="consts"/> |
| <xsl:param name="prevconst"/> |
| <xsl:param name="num" select="1"/> |
| <xsl:param name="suffix" select="''"/> |
| <xsl:param name="counter" select="''"/> |
| <xsl:variable name="cval" select="substring-before($consts,':')"/> |
| <xsl:choose> |
| <xsl:when test="$consts = ''"> |
| <xsl:if test="$counter != ''"> |
| <xsl:text> |
| int </xsl:text> |
| <xsl:value-of select="$counter"/>_COUNT = <xsl:value-of select="$num - 1"/>; |
| </xsl:if> |
| </xsl:when> |
| <xsl:when test="$cval = $prevconst"> |
| <xsl:call-template name="sortconsts"> |
| <xsl:with-param name="consts" select="substring-after($consts,concat($cval, ':'))"/> |
| <xsl:with-param name="num" select="$num"/> |
| <xsl:with-param name="prevconst" select="$cval"/> |
| <xsl:with-param name="counter" select="$counter"/> |
| <xsl:with-param name="suffix" select="$suffix"/> |
| </xsl:call-template> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:text> |
| int </xsl:text> |
| <xsl:value-of select="$cval"/> |
| <xsl:text> = </xsl:text> |
| <xsl:value-of select="$num"/> |
| <xsl:value-of select="$suffix"/> |
| <xsl:text>;</xsl:text> |
| <xsl:call-template name="sortconsts"> |
| <xsl:with-param name="consts" select="substring-after($consts,concat($cval, ':'))"/> |
| <xsl:with-param name="num" select="$num + 1"/> |
| <xsl:with-param name="prevconst" select="$cval"/> |
| <xsl:with-param name="counter" select="$counter"/> |
| <xsl:with-param name="suffix" select="$suffix"/> |
| </xsl:call-template> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:template> |
| </xsl:stylesheet> |