Commit 43b5b747 authored by Pavel Vainerman's avatar Pavel Vainerman

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

parent 88e765a5
......@@ -4,3 +4,8 @@ bin_SCRIPTS = @PACKAGE@-codegen
xsldir = $(datadir)/uniset/xslt
xsl_DATA = *.xsl
all-local:
chmod 'a+x' @PACKAGE@-codegen
\ No newline at end of file
......@@ -23,13 +23,6 @@
</xsl:choose>
</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:if test="normalize-space($LOCALINC)!=''">
<xsl:text>&quot;</xsl:text>
......@@ -55,13 +48,13 @@
<xsl:choose>
<xsl:when test="$GENTYPE='H'">
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> prev_</xsl:text><xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>; /*!&lt; предыдущее значение */
</xsl:when>
<xsl:when test="$GENTYPE='C'"><xsl:value-of select="../../@name"/>(<xsl:value-of select="../../@id"/>),
<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 test="normalize-space(../../@node)=''">
node_<xsl:value-of select="../../@name"/>(UniSetTypes::conf->getLocalNode()),
......@@ -96,7 +89,7 @@
</xsl:when>
<xsl:when test="$GENTYPE='CHECK'">
<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:when>
......@@ -218,7 +211,7 @@
/*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string name) { return UniSetTypes::conf->getIntProp(confnode, name); }
/*! получить текстовое свойство из конф. файла по привязанной 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 */
bool activated;
......@@ -478,11 +471,11 @@ askPause(2000)
// Инициализация идентификаторов (имена берутся из конф. файла)
<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)"/>"))),
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 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>
sleep_msec(<xsl:call-template name="settings"><xsl:with-param name="varname" select="'sleep-msec'"/></xsl:call-template>),
active(true),
......@@ -503,20 +496,25 @@ askPause(conf->getPIntProp(cnode,"askPause",2000))
<xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@no_check_id)!='1'">
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)!=''">
if( node_<xsl:value-of select="normalize-space(@node)"/> == UniSetTypes::DefaultObjectId )
throw Exception( myname + ": NotFound NodeID for (node=<xsl:value-of select="@node"/>) " + conf->getProp(cnode,"<xsl:value-of select="@node"/>") );
if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
{
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:for-each>
<xsl:for-each select="//msgmap/item">
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 )
{
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; endl;
}
......
......@@ -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"/> */
const UniSetTypes::ObjectId node_<xsl:value-of select="@name"/>;
UniSetTypes::ObjectId node_<xsl:value-of select="@name"/>;
</xsl:for-each>
// Используемые идентификаторы сообщений
<xsl:for-each select="//msgmap/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"/>;
bool m_<xsl:value-of select="@name"/>; /*!&lt; текущее состояние /> */
bool prev_m_<xsl:value-of select="@name"/>; /*!&lt; предыдущее состояние /> */
</xsl:for-each>
......
......@@ -13,10 +13,10 @@ GENERATED=TestGen_SK.h TestGen_SK.cc TestGen-main.cc
GENERATED2=TestGenAlone_SK.h TestGenAlone_SK.cc TestGenAlone-main.cc
$(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
@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:
rm -rf $(GENERATED) $(GENERATED2)
......
......@@ -34,7 +34,7 @@
<consumer name="TestGenAlone" vartype="in" type="objects"/>
</consumers>
</item>
<item id="31" name="output1_c" iotype="DO" textname="xxx">
<item id="31" name="output1_c" iotype="DO" textname="xxx" node="Test1Node">
<consumers>
<consumer name="TestGenAlone" vartype="out" type="objects"/>
</consumers>
......
......@@ -18,7 +18,7 @@
</settings>
<smap>
<!-- 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="output1_c" vartype="out" iotype="DO" omment="comment for output1" />
</smap>
......
......@@ -31,7 +31,7 @@ EOF
}
#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"
name=
......@@ -97,7 +97,9 @@ while :; do
;;
-l|--local)
xsltdir=.
shift
xsltdir=$1
[ -z "${xsltdir}" ] && xsltdir=.
;;
--xsltdir)
......
......@@ -3,7 +3,7 @@
Name: libuniset
Version: 1.0
Release: alt35
Release: alt36
Summary: UniSet - library for building distributed industrial control systems
License: GPL
Group: Development/C++
......@@ -207,6 +207,9 @@ rm -f %buildroot%_libdir/*.la
%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
- 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