cfg: added cppcheck-cfg.rng schema that cfg files can be validated against

This commit is contained in:
Daniel Marjamäki 2015-01-28 07:39:08 +01:00
parent 5c56e63996
commit 7d0f5ad7c1
1 changed files with 272 additions and 0 deletions

272
cfg/cppcheck-cfg.rng Normal file
View File

@ -0,0 +1,272 @@
<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start>
<element name="def">
<optional>
<attribute name="format"><data type="integer"/></attribute>
</optional>
<zeroOrMore>
<choice>
<element name="define">
<attribute name="name"><text/></attribute>
<attribute name="value"><text/></attribute>
</element>
<element name="memory">
<zeroOrMore>
<choice>
<element name="dealloc"><ref name="DATA-NAME"/></element>
<element name="alloc">
<optional>
<attribute name="init"><ref name="DATA-BOOL"/></attribute>
</optional>
<ref name="DATA-NAME"/>
</element>
<element name="use"><ref name="DATA-NAME"/></element>
</choice>
</zeroOrMore>
</element>
<element name="resource">
<zeroOrMore>
<choice>
<element name="dealloc"><ref name="DATA-NAME"/></element>
<element name="alloc">
<optional>
<attribute name="init"><ref name="DATA-BOOL"/></attribute>
</optional>
<ref name="DATA-NAME"/>
</element>
<element name="use"><ref name="DATA-NAME"/></element>
</choice>
</zeroOrMore>
</element>
<element name="function">
<attribute name="name">
<ref name="DATA-NAME"/>
</attribute>
<zeroOrMore>
<choice>
<element name="noreturn"><ref name="DATA-BOOL"/></element>
<element name="pure"><empty/></element>
<element name="ignorefunction"><ref name="DATA-BOOL"/></element>
<element name="leak-ignore"><empty/></element>
<element name="use-retval"><empty/></element>
<element name="formatstr">
<optional>
<attribute name="scan"><ref name="DATA-BOOL"/></attribute>
</optional>
<optional>
<attribute name="secure"><ref name="DATA-BOOL"/></attribute>
</optional>
<empty/>
</element>
<element name="arg">
<attribute name="nr">
<choice>
<data type="integer">
<param name="minInclusive">1</param>
<param name="maxInclusive">20</param>
</data>
<value>any</value>
</choice>
</attribute>
<zeroOrMore>
<choice>
<element name="formatstr"><empty/></element>
<element name="strz"><empty/></element>
<element name="not-bool"><empty/></element>
<element name="not-null"><empty/></element>
<element name="not-uninit"><empty/></element>
<element name="valid"><text/></element>
<element name="minsize">
<attribute name="type">
<ref name="DATA-NAME"/>
</attribute>
<attribute name="arg">
<text/>
</attribute>
<optional>
<attribute name="arg2"><text/></attribute>
</optional>
</element>
</choice>
</zeroOrMore>
</element>
</choice>
</zeroOrMore>
</element>
<element name="markup">
<attribute name="ext">
<data type="string">
<param name="pattern">[.][a-z]+</param>
</data>
</attribute>
<attribute name="aftercode"><ref name="DATA-BOOL"/></attribute>
<attribute name="reporterrors"><ref name="DATA-BOOL"/></attribute>
<optional>
<element name="keywords">
<zeroOrMore>
<element name="keyword">
<attribute name="name"><ref name="DATA-NAME"/></attribute>
</element>
</zeroOrMore>
</element>
</optional>
<zeroOrMore>
<element name="codeblocks">
<zeroOrMore>
<element name="block">
<attribute name="name"><ref name="DATA-NAME"/></attribute>
</element>
</zeroOrMore>
<optional>
<element name="structure">
<attribute name="offset"><data type="integer"/></attribute>
<attribute name="start"><text/></attribute>
<attribute name="end"><text/></attribute>
</element>
</optional>
</element>
</zeroOrMore>
<optional>
<element name="exported">
<zeroOrMore>
<element name="exporter">
<attribute name="prefix"><ref name="DATA-NAME"/></attribute>
<zeroOrMore>
<choice>
<element name="prefix"><ref name="DATA-NAME"/></element>
<element name="suffix"><ref name="DATA-NAME"/></element>
</choice>
</zeroOrMore>
</element>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="imported">
<zeroOrMore>
<element name="importer"><ref name="DATA-NAME"/></element>
</zeroOrMore>
</element>
</optional>
</element>
<element name="reflection">
<zeroOrMore>
<element name="call">
<attribute name="arg"><data type="integer"/></attribute>
<ref name="DATA-NAME"/>
</element>
</zeroOrMore>
</element>
<element name="container">
<attribute name="id"><text/></attribute>
<optional>
<attribute name="endPattern"><text/></attribute>
</optional>
<optional>
<attribute name="startPattern"><text/></attribute>
</optional>
<optional>
<attribute name="inherits"><text/></attribute>
</optional>
<zeroOrMore>
<choice>
<element name="type">
<choice>
<attribute name="templateParameter"><text/></attribute>
<attribute name="string"><text/></attribute>
</choice>
<empty/>
</element>
<element name="size">
<optional>
<attribute name="templateParameter"><data type="integer"/></attribute>
</optional>
<zeroOrMore>
<element name="function">
<attribute name="name"><ref name="DATA-NAME"/></attribute>
<choice>
<attribute name="action"><text/></attribute>
<attribute name="yields"><text/></attribute>
</choice>
<empty/>
</element>
</zeroOrMore>
</element>
<element name="access">
<optional>
<attribute name="indexOperator"><text/></attribute>
</optional>
<zeroOrMore>
<element name="function">
<attribute name="name"><ref name="DATA-NAME"/></attribute>
<choice>
<attribute name="action"><text/></attribute>
<attribute name="yields"><text/></attribute>
</choice>
<empty/>
</element>
</zeroOrMore>
</element>
</choice>
</zeroOrMore>
</element>
<element name="podtype">
<attribute name="name"><ref name="DATA-NAME"/></attribute>
<optional>
<attribute name="size"><text/></attribute>
</optional>
<optional>
<attribute name="sign"><ref name="DATA-NAME"/></attribute>
</optional>
<empty/>
</element>
<element name="platformtype">
<attribute name="name"><ref name="DATA-NAME"/></attribute>
<attribute name="value"><ref name="DATA-NAME"/></attribute>
<oneOrMore>
<choice>
<element name="unsigned"><empty/></element>
<element name="long"><empty/></element>
<element name="pointer"><empty/></element>
<element name="const_ptr"><empty/></element>
<element name="ptr_ptr"><empty/></element>
<element name="platform">
<attribute name="type"><ref name="DATA-NAME"/></attribute>
<empty/>
</element>
</choice>
</oneOrMore>
</element>
</choice>
</zeroOrMore>
</element>
</start>
<define name="DATA-BOOL">
<choice>
<value>true</value>
<value>false</value>
</choice>
</define>
<define name="DATA-NAME">
<data type="string">
<param name="pattern">[a-zA-Z_][a-zA-Z_0-9]*</param>
</data>
</define>
</grammar>