Commit 994b8e5d authored by Pavel Vainerman's avatar Pavel Vainerman

Добавил в uniset-codegen обработку параметра node, для каждой переменной.

parent a1a2d99e
...@@ -4,3 +4,7 @@ bin_SCRIPTS = @PACKAGE@-codegen ...@@ -4,3 +4,7 @@ bin_SCRIPTS = @PACKAGE@-codegen
xsldir = $(datadir)/uniset/xslt xsldir = $(datadir)/uniset/xslt
xsl_DATA = *.xsl xsl_DATA = *.xsl
all-local:
chmod 'a+x' @PACKAGE@-codegen
...@@ -23,13 +23,6 @@ ...@@ -23,13 +23,6 @@
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>
<xsl:template name="setnode">
<xsl:choose>
<xsl:when test="normalize-space(@node)=''">conf->getLocalNode()</xsl:when>
<xsl:when test="normalize-space(@node)!=''">conf->getNodeID(<xsl:value-of select="@node"/> )</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="preinclude"> <xsl:template name="preinclude">
<xsl:if test="normalize-space($LOCALINC)!=''"> <xsl:if test="normalize-space($LOCALINC)!=''">
<xsl:text>&quot;</xsl:text> <xsl:text>&quot;</xsl:text>
...@@ -55,13 +48,13 @@ ...@@ -55,13 +48,13 @@
<xsl:choose> <xsl:choose>
<xsl:when test="$GENTYPE='H'"> <xsl:when test="$GENTYPE='H'">
const UniSetTypes::ObjectId <xsl:value-of select="../../@name"/>; /*!&lt; <xsl:value-of select="../../@textname"/> */ const UniSetTypes::ObjectId <xsl:value-of select="../../@name"/>; /*!&lt; <xsl:value-of select="../../@textname"/> */
const UniSetTypes::ObjectId node_<xsl:value-of select="../../@name"/>; UniSetTypes::ObjectId node_<xsl:value-of select="../../@name"/>;
<xsl:call-template name="settype"><xsl:with-param name="iotype" select="../../@iotype" /></xsl:call-template><xsl:text> </xsl:text><xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>; /*!&lt; текущее значение */ <xsl:call-template name="settype"><xsl:with-param name="iotype" select="../../@iotype" /></xsl:call-template><xsl:text> </xsl:text><xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>; /*!&lt; текущее значение */
<xsl:call-template name="settype"><xsl:with-param name="iotype" select="../../@iotype" /></xsl:call-template><xsl:text> prev_</xsl:text><xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>; /*!&lt; предыдущее значение */ <xsl:call-template name="settype"><xsl:with-param name="iotype" select="../../@iotype" /></xsl:call-template><xsl:text> prev_</xsl:text><xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>; /*!&lt; предыдущее значение */
</xsl:when> </xsl:when>
<xsl:when test="$GENTYPE='C'"><xsl:value-of select="../../@name"/>(<xsl:value-of select="../../@id"/>), <xsl:when test="$GENTYPE='C'"><xsl:value-of select="../../@name"/>(<xsl:value-of select="../../@id"/>),
<xsl:if test="not(normalize-space(../../@node)='')"> <xsl:if test="not(normalize-space(../../@node)='')">
node_<xsl:value-of select="../../@name"/>(<xsl:value-of select="../../@node"/>), node_<xsl:value-of select="../../@name"/>(conf->getNodeID("<xsl:value-of select="../../@node"/>")),
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(../../@node)=''"> <xsl:if test="normalize-space(../../@node)=''">
node_<xsl:value-of select="../../@name"/>(UniSetTypes::conf->getLocalNode()), node_<xsl:value-of select="../../@name"/>(UniSetTypes::conf->getLocalNode()),
...@@ -96,7 +89,7 @@ ...@@ -96,7 +89,7 @@
</xsl:when> </xsl:when>
<xsl:when test="$GENTYPE='CHECK'"> <xsl:when test="$GENTYPE='CHECK'">
<xsl:if test="normalize-space(@no_check_id)!='1'"> <xsl:if test="normalize-space(@no_check_id)!='1'">
<xsl:if test="normalize-space(../../@id)=''">unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": NotFound (Message)OID for mid_<xsl:value-of select="normalize-space(../../@name)"/>" &lt;&lt; endl; <xsl:if test="normalize-space(../../@id)=''">unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": Not found (Message)OID for mid_<xsl:value-of select="normalize-space(../../@name)"/>" &lt;&lt; endl;
</xsl:if> </xsl:if>
</xsl:if> </xsl:if>
</xsl:when> </xsl:when>
...@@ -218,7 +211,7 @@ ...@@ -218,7 +211,7 @@
/*! получить числовое свойство из конф. файла по привязанной confnode */ /*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string name) { return UniSetTypes::conf->getIntProp(confnode, name); } int getIntProp(const std::string name) { return UniSetTypes::conf->getIntProp(confnode, name); }
/*! получить текстовое свойство из конф. файла по привязанной confnode */ /*! получить текстовое свойство из конф. файла по привязанной confnode */
const std::string getProp(const std::string name) { return UniSetTypes::conf->getProp(confnode, name); } inline const std::string getProp(const std::string name) { return UniSetTypes::conf->getProp(confnode, name); }
int smReadyTimeout; /*!&lt; время ожидания готовности SM */ int smReadyTimeout; /*!&lt; время ожидания готовности SM */
bool activated; bool activated;
...@@ -478,11 +471,11 @@ askPause(2000) ...@@ -478,11 +471,11 @@ askPause(2000)
// Инициализация идентификаторов (имена берутся из конф. файла) // Инициализация идентификаторов (имена берутся из конф. файла)
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:value-of select="normalize-space(@name)"/>(conf->getSensorID(conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>"))), <xsl:value-of select="normalize-space(@name)"/>(conf->getSensorID(conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>"))),
node_<xsl:value-of select="normalize-space(@name)"/>(<xsl:call-template name="setnode"/>), node_<xsl:value-of select="normalize-space(@name)"/>( conf->getNodeID("node_<xsl:value-of select="normalize-space(@name)"/>") ),
</xsl:for-each> </xsl:for-each>
// Используемые идентификаторы сообщений (имена берутся из конф. файла) // Используемые идентификаторы сообщений (имена берутся из конф. файла)
<xsl:for-each select="//msgmap/item"><xsl:value-of select="normalize-space(@name)"/>(conf->getSensorID(conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>"))), <xsl:for-each select="//msgmap/item"><xsl:value-of select="normalize-space(@name)"/>(conf->getSensorID(conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>"))),
node_<xsl:value-of select="normalize-space(@name)"/>(<xsl:call-template name="setnode"/>), node_<xsl:value-of select="normalize-space(@name)"/>(conf->getNodeID("node_<xsl:value-of select="normalize-space(@name)"/>")),
</xsl:for-each> </xsl:for-each>
sleep_msec(<xsl:call-template name="settings"><xsl:with-param name="varname" select="'sleep-msec'"/></xsl:call-template>), sleep_msec(<xsl:call-template name="settings"><xsl:with-param name="varname" select="'sleep-msec'"/></xsl:call-template>),
active(true), active(true),
...@@ -503,20 +496,25 @@ askPause(conf->getPIntProp(cnode,"askPause",2000)) ...@@ -503,20 +496,25 @@ askPause(conf->getPIntProp(cnode,"askPause",2000))
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@no_check_id)!='1'"> <xsl:if test="normalize-space(@no_check_id)!='1'">
if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
throw Exception( myname + ": NotFound ID for (<xsl:value-of select="@name"/>) " + conf->getProp(cnode,"<xsl:value-of select="@name"/>") ); throw Exception( myname + ": Not found ID for (<xsl:value-of select="@name"/>) " + conf->getProp(cnode,"<xsl:value-of select="@name"/>") );
<xsl:if test="normalize-space(@node)!=''"> <xsl:if test="normalize-space(@node)!=''">
if( node_<xsl:value-of select="normalize-space(@node)"/> == UniSetTypes::DefaultObjectId ) if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
throw Exception( myname + ": NotFound NodeID for (node=<xsl:value-of select="@node"/>) " + conf->getProp(cnode,"<xsl:value-of select="@node"/>") ); {
if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() )
throw Exception( myname + ": Not found NodeID for (node=<xsl:value-of select="@node"/>) " + conf->getProp(cnode,"<xsl:value-of select="@node"/>") );
node_<xsl:value-of select="normalize-space(@name)"/> = conf->getLocalNode();
}
</xsl:if> </xsl:if>
</xsl:if> </xsl:if>
</xsl:for-each> </xsl:for-each>
<xsl:for-each select="//msgmap/item"> <xsl:for-each select="//msgmap/item">
if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": NotFound (Message)OID for (<xsl:value-of select="normalize-space(@name)"/>) " &lt;&lt; conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>") &lt;&lt; endl; unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": Not found (Message)OID for (<xsl:value-of select="normalize-space(@name)"/>) " &lt;&lt; conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>") &lt;&lt; endl;
if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
{ {
unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": NotFound (Message)NodeID for node=(<xsl:value-of select="normalize-space(@node)"/>)" &lt;&lt; conf->getProp(cnode,"<xsl:value-of select="normalize-space(@node)"/>") unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": Not found (Message)NodeID for node=(<xsl:value-of select="normalize-space(@node)"/>)" &lt;&lt; conf->getProp(cnode,"<xsl:value-of select="normalize-space(@node)"/>")
&lt;&lt; ". Use localNode=" &lt;&lt; conf->getLocalNode() &lt;&lt; ". Use localNode=" &lt;&lt; conf->getLocalNode()
&lt;&lt; endl; &lt;&lt; endl;
} }
......
...@@ -56,13 +56,13 @@ class <xsl:value-of select="$CLASSNAME"/>_SK: ...@@ -56,13 +56,13 @@ class <xsl:value-of select="$CLASSNAME"/>_SK:
// Используемые идентификаторы // Используемые идентификаторы
<xsl:for-each select="//smap/item">const UniSetTypes::ObjectId <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ <xsl:for-each select="//smap/item">const UniSetTypes::ObjectId <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
const UniSetTypes::ObjectId node_<xsl:value-of select="@name"/>; UniSetTypes::ObjectId node_<xsl:value-of select="@name"/>;
</xsl:for-each> </xsl:for-each>
// Используемые идентификаторы сообщений // Используемые идентификаторы сообщений
<xsl:for-each select="//msgmap/item"> <xsl:for-each select="//msgmap/item">
const UniSetTypes::ObjectId <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ const UniSetTypes::ObjectId <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
const UniSetTypes::ObjectId node_<xsl:value-of select="@name"/>; UniSetTypes::ObjectId node_<xsl:value-of select="@name"/>;
bool m_<xsl:value-of select="@name"/>; /*!&lt; текущее состояние /> */ bool m_<xsl:value-of select="@name"/>; /*!&lt; текущее состояние /> */
bool prev_m_<xsl:value-of select="@name"/>; /*!&lt; предыдущее состояние /> */ bool prev_m_<xsl:value-of select="@name"/>; /*!&lt; предыдущее состояние /> */
</xsl:for-each> </xsl:for-each>
......
...@@ -13,10 +13,10 @@ GENERATED=TestGen_SK.h TestGen_SK.cc TestGen-main.cc ...@@ -13,10 +13,10 @@ GENERATED=TestGen_SK.h TestGen_SK.cc TestGen-main.cc
GENERATED2=TestGenAlone_SK.h TestGenAlone_SK.cc TestGenAlone-main.cc GENERATED2=TestGenAlone_SK.h TestGenAlone_SK.cc TestGenAlone-main.cc
$(GENERATED): ../@PACKAGE@-codegen testgen.src.xml ../*.xsl $(GENERATED): ../@PACKAGE@-codegen testgen.src.xml ../*.xsl
@UNISET_CODEGEN@ --local-include -l --ask -n TestGen testgen.src.xml ../@PACKAGE@-codegen -l $(top_builddir)/Utilities/codegen --local-include --ask -n TestGen testgen.src.xml
$(GENERATED2): ../@PACKAGE@-codegen testgen-alone.src.xml ../*.xsl $(GENERATED2): ../@PACKAGE@-codegen testgen-alone.src.xml ../*.xsl
@UNISET_CODEGEN@ --local-include -l --ask --alone -n TestGenAlone testgen-alone.src.xml ../@PACKAGE@-codegen -l $(top_builddir)/Utilities/codegen --local-include --ask --alone -n TestGenAlone testgen-alone.src.xml
clean-local: clean-local:
rm -rf $(GENERATED) $(GENERATED2) rm -rf $(GENERATED) $(GENERATED2)
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<consumer name="TestGenAlone" vartype="in" type="objects"/> <consumer name="TestGenAlone" vartype="in" type="objects"/>
</consumers> </consumers>
</item> </item>
<item id="31" name="output1_c" iotype="DO" textname="xxx"> <item id="31" name="output1_c" iotype="DO" textname="xxx" node="Test1Node">
<consumers> <consumers>
<consumer name="TestGenAlone" vartype="out" type="objects"/> <consumer name="TestGenAlone" vartype="out" type="objects"/>
</consumers> </consumers>
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</settings> </settings>
<smap> <smap>
<!-- name - название переменной в конф. файле --> <!-- name - название переменной в конф. файле -->
<item name="input1_s" vartype="in" iotype="DI" comment="comment for input1" /> <item name="input1_s" vartype="in" iotype="DI" comment="comment for input1" node="K1Node"/>
<item name="input2_s" vartype="in" iotype="DI" comment="comment for input2" /> <item name="input2_s" vartype="in" iotype="DI" comment="comment for input2" />
<item name="output1_c" vartype="out" iotype="DO" omment="comment for output1" /> <item name="output1_c" vartype="out" iotype="DO" omment="comment for output1" />
</smap> </smap>
......
...@@ -31,7 +31,7 @@ EOF ...@@ -31,7 +31,7 @@ EOF
} }
#parse command line options #parse command line options
TEMP=`getopt -n $PROG -o h,n:,m:,a,l -l help,name:,main:,no-main,topdir:,path:,alone,ask,local,local-include,add-cc-include,add-hh-include -- "$@"` || exit 1 TEMP=`getopt -n $PROG -o h,n:,m:,a,l: -l help,name:,main:,no-main,topdir:,path:,alone,ask,local:,local-include,add-cc-include,add-hh-include -- "$@"` || exit 1
eval set -- "$TEMP" eval set -- "$TEMP"
name= name=
...@@ -97,7 +97,9 @@ while :; do ...@@ -97,7 +97,9 @@ while :; do
;; ;;
-l|--local) -l|--local)
xsltdir=. shift
xsltdir=$1
[ -z "${xsltdir}" ] && xsltdir=.
;; ;;
--xsltdir) --xsltdir)
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
Name: libuniset Name: libuniset
Version: 1.0 Version: 1.0
Release: alt35 Release: alt36
Summary: UniSet - library for building distributed industrial control systems Summary: UniSet - library for building distributed industrial control systems
License: GPL License: GPL
Group: Development/C++ Group: Development/C++
...@@ -207,6 +207,9 @@ rm -f %buildroot%_libdir/*.la ...@@ -207,6 +207,9 @@ rm -f %buildroot%_libdir/*.la
%changelog %changelog
* Tue May 24 2011 Pavel Vainerman <pv@altlinux.ru> 1.0-alt36
- add 'node' param processing for uniset-codegen
* Fri May 20 2011 Pavel Vainerman <pv@altlinux.ru> 1.0-alt35 * Fri May 20 2011 Pavel Vainerman <pv@altlinux.ru> 1.0-alt35
- minor fixed in UniXML::getProp() - minor fixed in UniXML::getProp()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment