Skip to content

Commit 3e289b9

Browse files
authored
Merge pull request #757 from lethosor/stl-array
Support stl-array
2 parents f644b6f + 7529475 commit 3e289b9

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

StructFields.pm

+6
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,12 @@ my %custom_container_handlers = (
148148
header_ref("vector");
149149
return "std::vector<bool>";
150150
},
151+
'stl-array' => sub {
152+
my $item = get_container_item_type($_, -void => 'void*');
153+
my $count = get_container_count($_);
154+
header_ref("array");
155+
return "std::array<$item, $count>";
156+
},
151157
'stl-map' => sub {
152158
# TODO: implement get_container_key_type?
153159
my $key = 'void*';

data-definition.xsd

+16-3
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@
219219
<xs:element name="stl-vector" type="StlVectorField" />
220220
<xs:element name="stl-bit-vector" type="StlBitVectorField" />
221221
<xs:element name="stl-deque" type="StlDequeField" />
222+
<xs:element name="stl-array" type="StlArrayField" />
222223
<xs:element name="stl-set" type="StlSetField" />
223224
<xs:element name="stl-map" type="StlMapField" />
224225
<xs:element name="stl-unordered-map" type="StlMapField" />
@@ -329,6 +330,14 @@
329330
</xs:extension>
330331
</xs:complexContent>
331332
</xs:complexType>
333+
<xs:complexType name="SizedContainerFieldType" mixed="true">
334+
<xs:complexContent>
335+
<xs:extension base="ContainerFieldType">
336+
<xs:attribute name="count" type="xs:positiveInteger">
337+
</xs:attribute>
338+
</xs:extension>
339+
</xs:complexContent>
340+
</xs:complexType>
332341
<xs:complexType name="BitContainerFieldType" mixed="true">
333342
<xs:complexContent>
334343
<xs:extension base="SimpleFieldType">
@@ -388,6 +397,12 @@
388397
</xs:extension>
389398
</xs:complexContent>
390399
</xs:complexType>
400+
<xs:complexType name="StlArrayField">
401+
<xs:complexContent>
402+
<xs:extension base="SizedContainerFieldType">
403+
</xs:extension>
404+
</xs:complexContent>
405+
</xs:complexType>
391406
<xs:complexType name="StlSetField">
392407
<xs:complexContent>
393408
<xs:extension base="ContainerFieldType">
@@ -458,9 +473,7 @@
458473
</xs:complexType>
459474
<xs:complexType name="StaticArrayField">
460475
<xs:complexContent>
461-
<xs:extension base="ContainerFieldType">
462-
<xs:attribute name="count" type="xs:positiveInteger">
463-
</xs:attribute>
476+
<xs:extension base="SizedContainerFieldType">
464477
</xs:extension>
465478
</xs:complexContent>
466479
</xs:complexType>

lower-1.xslt

+1-1
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ Error: field <xsl:value-of select='$enum-key'/> corresponds to an enum value of
339339
</xsl:template>
340340

341341
<!-- Misc containers: meta='container' subtype='$tag' -->
342-
<xsl:template match='stl-vector|stl-deque|stl-set|stl-bit-vector|stl-map|stl-unordered-map|stl-optional|stl-variant|stl-shared-ptr|stl-weak-ptr|stl-function|df-flagarray|df-static-flagarray|df-array|df-linked-list'>
342+
<xsl:template match='stl-vector|stl-deque|stl-set|stl-bit-vector|stl-array|stl-map|stl-unordered-map|stl-optional|stl-variant|stl-shared-ptr|stl-weak-ptr|stl-function|df-flagarray|df-static-flagarray|df-array|df-linked-list'>
343343
<xsl:param name='level' select='-1'/>
344344
<ld:field ld:meta='container'>
345345
<xsl:attribute name='ld:level'><xsl:value-of select='$level'/></xsl:attribute>

0 commit comments

Comments
 (0)