@@ -1391,9 +1391,14 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1391
1391
length)};
1392
1392
std::vector<uint32_t > bounds;
1393
1393
dimensionsToArrayBounds (memberArray, bounds);
1394
- member = factory->create_array_type (
1394
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1395
1395
inner_builder->build (),
1396
- bounds)->build ();
1396
+ bounds);
1397
+ member = nullptr ;
1398
+ if (nullptr != builder)
1399
+ {
1400
+ member = builder->build ();
1401
+ }
1397
1402
}
1398
1403
}
1399
1404
else if (strncmp (memberType, BOOLEAN, BOOLEAN_len) == 0 )
@@ -1406,9 +1411,14 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1406
1411
{
1407
1412
std::vector<uint32_t > bounds;
1408
1413
dimensionsToArrayBounds (memberArray, bounds);
1409
- member = factory->create_array_type (
1414
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1410
1415
factory->get_primitive_type (TK_BOOLEAN),
1411
- bounds)->build ();
1416
+ bounds);
1417
+ member = nullptr ;
1418
+ if (nullptr != builder)
1419
+ {
1420
+ member = builder->build ();
1421
+ }
1412
1422
}
1413
1423
}
1414
1424
else if (strncmp (memberType, CHAR, CHAR_len) == 0 )
@@ -1421,9 +1431,14 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1421
1431
{
1422
1432
std::vector<uint32_t > bounds;
1423
1433
dimensionsToArrayBounds (memberArray, bounds);
1424
- member = factory->create_array_type (
1434
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1425
1435
factory->get_primitive_type (TK_CHAR8),
1426
- bounds)->build ();
1436
+ bounds);
1437
+ member = nullptr ;
1438
+ if (nullptr != builder)
1439
+ {
1440
+ member = builder->build ();
1441
+ }
1427
1442
}
1428
1443
}
1429
1444
else if (strncmp (memberType, WCHAR, WCHAR_len) == 0 )
@@ -1436,9 +1451,14 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1436
1451
{
1437
1452
std::vector<uint32_t > bounds;
1438
1453
dimensionsToArrayBounds (memberArray, bounds);
1439
- member = factory->create_array_type (
1454
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1440
1455
factory->get_primitive_type (TK_CHAR16),
1441
- bounds)->build ();
1456
+ bounds);
1457
+ member = nullptr ;
1458
+ if (nullptr != builder)
1459
+ {
1460
+ member = builder->build ();
1461
+ }
1442
1462
}
1443
1463
}
1444
1464
else if (strncmp (memberType, TBYTE, TBYTE_len) == 0
@@ -1452,9 +1472,14 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1452
1472
{
1453
1473
std::vector<uint32_t > bounds;
1454
1474
dimensionsToArrayBounds (memberArray, bounds);
1455
- member = factory->create_array_type (
1475
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1456
1476
factory->get_primitive_type (TK_BYTE),
1457
- bounds)->build ();
1477
+ bounds);
1478
+ member = nullptr ;
1479
+ if (nullptr != builder)
1480
+ {
1481
+ member = builder->build ();
1482
+ }
1458
1483
}
1459
1484
}
1460
1485
else if (strncmp (memberType, UINT8, UINT8_len) == 0 )
@@ -1467,9 +1492,15 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1467
1492
{
1468
1493
std::vector<uint32_t > bounds;
1469
1494
dimensionsToArrayBounds (memberArray, bounds);
1470
- member = factory->create_array_type (
1495
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1471
1496
factory->get_primitive_type (TK_UINT8),
1472
- bounds)->build ();
1497
+ bounds);
1498
+
1499
+ member = nullptr ;
1500
+ if (nullptr != builder)
1501
+ {
1502
+ member = builder->build ();
1503
+ }
1473
1504
}
1474
1505
}
1475
1506
else if (strncmp (memberType, INT8, INT8_len) == 0 )
@@ -1482,9 +1513,15 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1482
1513
{
1483
1514
std::vector<uint32_t > bounds;
1484
1515
dimensionsToArrayBounds (memberArray, bounds);
1485
- member = factory->create_array_type (
1516
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1486
1517
factory->get_primitive_type (TK_INT8),
1487
- bounds)->build ();
1518
+ bounds);
1519
+
1520
+ member = nullptr ;
1521
+ if (nullptr != builder)
1522
+ {
1523
+ member = builder->build ();
1524
+ }
1488
1525
}
1489
1526
}
1490
1527
else if (strncmp (memberType, SHORT, SHORT_len) == 0 )
@@ -1497,9 +1534,15 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1497
1534
{
1498
1535
std::vector<uint32_t > bounds;
1499
1536
dimensionsToArrayBounds (memberArray, bounds);
1500
- member = factory->create_array_type (
1537
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1501
1538
factory->get_primitive_type (TK_INT16),
1502
- bounds)->build ();
1539
+ bounds);
1540
+
1541
+ member = nullptr ;
1542
+ if (nullptr != builder)
1543
+ {
1544
+ member = builder->build ();
1545
+ }
1503
1546
}
1504
1547
}
1505
1548
else if (strncmp (memberType, LONG, LONG_len) == 0 )
@@ -1512,9 +1555,15 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1512
1555
{
1513
1556
std::vector<uint32_t > bounds;
1514
1557
dimensionsToArrayBounds (memberArray, bounds);
1515
- member = factory->create_array_type (
1558
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1516
1559
factory->get_primitive_type (TK_INT32),
1517
- bounds)->build ();
1560
+ bounds);
1561
+
1562
+ member = nullptr ;
1563
+ if (nullptr != builder)
1564
+ {
1565
+ member = builder->build ();
1566
+ }
1518
1567
}
1519
1568
}
1520
1569
else if (strncmp (memberType, ULONG, ULONG_len) == 0 )
@@ -1527,9 +1576,15 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1527
1576
{
1528
1577
std::vector<uint32_t > bounds;
1529
1578
dimensionsToArrayBounds (memberArray, bounds);
1530
- member = factory->create_array_type (
1579
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1531
1580
factory->get_primitive_type (TK_UINT32),
1532
- bounds)->build ();
1581
+ bounds);
1582
+
1583
+ member = nullptr ;
1584
+ if (nullptr != builder)
1585
+ {
1586
+ member = builder->build ();
1587
+ }
1533
1588
}
1534
1589
}
1535
1590
else if (strncmp (memberType, USHORT, USHORT_len) == 0 )
@@ -1542,9 +1597,15 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1542
1597
{
1543
1598
std::vector<uint32_t > bounds;
1544
1599
dimensionsToArrayBounds (memberArray, bounds);
1545
- member = factory->create_array_type (
1600
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1546
1601
factory->get_primitive_type (TK_UINT16),
1547
- bounds)->build ();
1602
+ bounds);
1603
+
1604
+ member = nullptr ;
1605
+ if (nullptr != builder)
1606
+ {
1607
+ member = builder->build ();
1608
+ }
1548
1609
}
1549
1610
}
1550
1611
else if (strncmp (memberType, LONGLONG, LONGLONG_len) == 0 )
@@ -1557,9 +1618,15 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1557
1618
{
1558
1619
std::vector<uint32_t > bounds;
1559
1620
dimensionsToArrayBounds (memberArray, bounds);
1560
- member = factory->create_array_type (
1621
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1561
1622
factory->get_primitive_type (TK_INT64),
1562
- bounds)->build ();
1623
+ bounds);
1624
+
1625
+ member = nullptr ;
1626
+ if (nullptr != builder)
1627
+ {
1628
+ member = builder->build ();
1629
+ }
1563
1630
}
1564
1631
}
1565
1632
else if (strncmp (memberType, ULONGLONG, ULONGLONG_len) == 0 )
@@ -1572,9 +1639,18 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1572
1639
{
1573
1640
std::vector<uint32_t > bounds;
1574
1641
dimensionsToArrayBounds (memberArray, bounds);
1575
- member = factory->create_array_type (
1642
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1576
1643
factory->get_primitive_type (TK_UINT64),
1577
- bounds)->build ();
1644
+ bounds);
1645
+
1646
+ if (nullptr != builder)
1647
+ {
1648
+ member = builder->build ();
1649
+ }
1650
+ else
1651
+ {
1652
+ member = nullptr ;
1653
+ }
1578
1654
}
1579
1655
}
1580
1656
else if (strncmp (memberType, FLOAT, FLOAT_len) == 0 )
@@ -1587,9 +1663,15 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1587
1663
{
1588
1664
std::vector<uint32_t > bounds;
1589
1665
dimensionsToArrayBounds (memberArray, bounds);
1590
- member = factory->create_array_type (
1666
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1591
1667
factory->get_primitive_type (TK_FLOAT32),
1592
- bounds)->build ();
1668
+ bounds);
1669
+
1670
+ member = nullptr ;
1671
+ if (nullptr != builder)
1672
+ {
1673
+ member = builder->build ();
1674
+ }
1593
1675
}
1594
1676
}
1595
1677
else if (strncmp (memberType, DOUBLE, DOUBLE_len) == 0 )
@@ -1602,9 +1684,15 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1602
1684
{
1603
1685
std::vector<uint32_t > bounds;
1604
1686
dimensionsToArrayBounds (memberArray, bounds);
1605
- member = factory->create_array_type (
1687
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1606
1688
factory->get_primitive_type (TK_FLOAT64),
1607
- bounds)->build ();
1689
+ bounds);
1690
+
1691
+ member = nullptr ;
1692
+ if (nullptr != builder)
1693
+ {
1694
+ member = builder->build ();
1695
+ }
1608
1696
}
1609
1697
}
1610
1698
else if (strncmp (memberType, LONGDOUBLE, LONGDOUBLE_len) == 0 )
@@ -1617,9 +1705,15 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1617
1705
{
1618
1706
std::vector<uint32_t > bounds;
1619
1707
dimensionsToArrayBounds (memberArray, bounds);
1620
- member = factory->create_array_type (
1708
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1621
1709
factory->get_primitive_type (TK_FLOAT128),
1622
- bounds)->build ();
1710
+ bounds);
1711
+
1712
+ member = nullptr ;
1713
+ if (nullptr != builder)
1714
+ {
1715
+ member = builder->build ();
1716
+ }
1623
1717
}
1624
1718
}
1625
1719
else if (strncmp (memberType, STRING, STRING_len) == 0 )
@@ -1691,9 +1785,14 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1691
1785
{
1692
1786
std::vector<uint32_t > boundsArray;
1693
1787
dimensionsToArrayBounds (memberArray, boundsArray);
1694
- member = factory->create_array_type (
1788
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1695
1789
wstring_builder->build (),
1696
- boundsArray)->build ();
1790
+ boundsArray);
1791
+ member = nullptr ;
1792
+ if (nullptr != builder)
1793
+ {
1794
+ member = builder->build ();
1795
+ }
1697
1796
}
1698
1797
}
1699
1798
else // Complex type?
@@ -1718,9 +1817,14 @@ DynamicType::_ref_type XMLParser:: parseXMLMemberDynamicType(
1718
1817
{
1719
1818
std::vector<uint32_t > bounds;
1720
1819
dimensionsToArrayBounds (memberArray, bounds);
1721
- member = factory->create_array_type (
1820
+ DynamicTypeBuilder::_ref_type builder = factory->create_array_type (
1722
1821
type,
1723
- bounds)->build ();
1822
+ bounds);
1823
+ member = nullptr ;
1824
+ if (nullptr != builder)
1825
+ {
1826
+ member = builder->build ();
1827
+ }
1724
1828
}
1725
1829
}
1726
1830
0 commit comments