Commit d95cf5d4 authored by Pavel Vainerman's avatar Pavel Vainerman

(uniset-codegen): Добавил поддержку списка переменных (<variables>)

parent a538d602
......@@ -581,6 +581,43 @@ askPause(conf->getPIntProp(cnode,"askPause",2000))
int msec = conf->getArgPInt("--startup-timeout", 10000);
ptStartUpTimeout.setTiming(msec);
// ===================== &lt;variables&gt; =====================
<xsl:for-each select="//variables/item">
std::string tmp_<xsl:value-of select="@name"/>( conf->getArgParam("--<xsl:value-of select="../@arg_prefix"/><xsl:value-of select="@name"/>",it.getProp("<xsl:value-of select="@name"/>")) );
<xsl:if test="normalize-space(@default)!=''">if( tmp_<xsl:value-of select="@name"/>.empty() )
tmp_<xsl:value-of select="@name"/> = "<xsl:value-of select="@default"/>";
</xsl:if>
<xsl:if test="normalize-space(@type)='int'">
<xsl:value-of select="@name"/> = uni_atoi(tmp_<xsl:value-of select="@name"/>);
</xsl:if>
<xsl:if test="normalize-space(@type)='float'">
<xsl:value-of select="@name"/> = atof(tmp_<xsl:value-of select="@name"/>.c_str());
</xsl:if>
<xsl:if test="normalize-space(@type)='bool'">
<xsl:value-of select="@name"/> = uni_atoi(tmp_<xsl:value-of select="@name"/>);
</xsl:if>
<xsl:if test="normalize-space(@type)='str'">
<xsl:value-of select="@name"/> = tmp_<xsl:value-of select="@name"/>;
</xsl:if>
<xsl:if test="normalize-space(@min)!=''">
if( <xsl:value-of select="@name"/> &lt; <xsl:value-of select="@min"/> )
{
unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": RANGE WARNING: <xsl:value-of select="@name"/>=" &lt;&lt; <xsl:value-of select="@name"/> &lt;&lt; " &lt; <xsl:value-of select="@min"/>" &lt;&lt; endl;
<xsl:if test="normalize-space(@no_range_exception)=''">throw UniSetTypes::SystemError(myname+"(init): <xsl:value-of select="@name"/> &lt; <xsl:value-of select="@min"/>");</xsl:if>
}
</xsl:if>
<xsl:if test="normalize-space(@max)!=''">
if( <xsl:value-of select="@name"/> &gt; <xsl:value-of select="@max"/> )
{
unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": RANGE WARNING: <xsl:value-of select="@name"/>=" &lt;&lt; <xsl:value-of select="@name"/> &lt;&lt; " &gt; <xsl:value-of select="@max"/>" &lt;&lt; endl;
<xsl:if test="normalize-space(@no_range_exception)=''">throw UniSetTypes::SystemError(myname+"(init): <xsl:value-of select="@name"/> &gt; <xsl:value-of select="@max"/>");</xsl:if>
}
</xsl:if>
// ----------
</xsl:for-each>
// ===================== end of &lt;variables&gt; =====================
}
// -----------------------------------------------------------------------------
......
......@@ -16,6 +16,24 @@
<set name="msg-count" val="20"/>
<set name="sleep-msec" val="150"/>
</settings>
<variables arg_prefix="test-">
<!-- type = [int,str,bool,float]
int: max,min,no_range_exception=[0,1]
str:
float: max,min,no_range_exception=[0,1]
bool:
min - минимальное значение (может быть не задано)
max - максимальное значение (может быть не задано)
default - значение по умолчанию (может быть не задано)
no_range_exception=1 - при выходе за границы min или max только писать unideb[WARN].
-->
<item name="test_int" type="int" min="0" comment="test int variable"/>
<item name="test_int2" type="int" max="100" default="110" no_range_exception="1"/>
<item name="test_float" type="float" max="100.0" default="50.0" />
<item name="test_bool" type="bool" />
<item name="test_str" type="str" default1="ddd"/>
</variables>
<smap>
<!-- name - название переменной в конф. файле -->
<item name="input1_s" vartype="in" iotype="DI" comment="comment for input1" />
......
......@@ -3,7 +3,7 @@
Name: libuniset
Version: 1.0
Release: alt46
Release: alt48
Summary: UniSet - library for building distributed industrial control systems
License: GPL
Group: Development/C++
......@@ -212,6 +212,9 @@ rm -f %buildroot%_libdir/*.la
%changelog
* Sat Oct 22 2011 Pavel Vainerman <pv@altlinux.ru> 1.0-alt48
- added support for list of variables (<variables>) in uniset-codegen
* Tue Oct 11 2011 Pavel Vainerman <pv@altlinux.ru> 1.0-alt47
- new build
......
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