From cfc8e6c5b113f48ccd6aad32214ae77822f1ae99 Mon Sep 17 00:00:00 2001 From: Jose Date: Wed, 17 Jan 2024 13:41:22 +0100 Subject: [PATCH] Upgrade Slice library to use shared_ptr (#1674) --- cpp/src/Slice/FileTracker.cpp | 2 +- cpp/src/Slice/FileTracker.h | 6 +- cpp/src/Slice/Grammar.cpp | 1404 +++++++++-------- cpp/src/Slice/Grammar.y | 822 +++++----- cpp/src/Slice/GrammarUtil.h | 47 +- cpp/src/Slice/Parser.cpp | 1370 ++++++++-------- cpp/src/Slice/Parser.h | 201 ++- cpp/src/Slice/Preprocessor.cpp | 2 +- cpp/src/Slice/Preprocessor.h | 11 +- cpp/src/Slice/PythonUtil.cpp | 60 +- cpp/src/Slice/RubyUtil.cpp | 30 +- cpp/src/Slice/Scanner.cpp | 214 +-- cpp/src/Slice/Scanner.l | 82 +- cpp/src/Slice/SliceUtil.cpp | 8 +- cpp/src/Slice/msbuild/slice.vcxproj | 6 +- cpp/src/Slice/msbuild/slice.vcxproj.filters | 9 +- cpp/src/ice2slice/Gen.cpp | 22 +- .../{Slice => slice2cpp}/CPlusPlusUtil.cpp | 69 +- cpp/src/{Slice => slice2cpp}/CPlusPlusUtil.h | 0 cpp/src/slice2cpp/Gen.cpp | 97 +- cpp/src/slice2cpp/msbuild/slice2cpp.vcxproj | 2 + .../msbuild/slice2cpp.vcxproj.filters | 6 + cpp/src/slice2cs/CsUtil.cpp | 124 +- cpp/src/slice2cs/Gen.cpp | 48 +- cpp/src/slice2java/Gen.cpp | 61 +- cpp/src/slice2java/Gen.h | 2 +- cpp/src/{Slice => slice2java}/JavaUtil.cpp | 126 +- cpp/src/{Slice => slice2java}/JavaUtil.h | 0 cpp/src/slice2java/msbuild/slice2java.vcxproj | 2 + .../msbuild/slice2java.vcxproj.filters | 6 + cpp/src/slice2js/Gen.cpp | 94 +- cpp/src/slice2js/JsUtil.cpp | 78 +- cpp/src/slice2matlab/Main.cpp | 128 +- cpp/src/slice2objc/Gen.cpp | 48 +- cpp/src/slice2objc/ObjCUtil.cpp | 102 +- cpp/src/slice2php/Main.cpp | 26 +- cpp/src/slice2swift/Gen.cpp | 38 +- cpp/src/slice2swift/SwiftUtil.cpp | 152 +- 38 files changed, 2724 insertions(+), 2781 deletions(-) rename cpp/src/{Slice => slice2cpp}/CPlusPlusUtil.cpp (95%) rename cpp/src/{Slice => slice2cpp}/CPlusPlusUtil.h (100%) rename cpp/src/{Slice => slice2java}/JavaUtil.cpp (94%) rename cpp/src/{Slice => slice2java}/JavaUtil.h (100%) diff --git a/cpp/src/Slice/FileTracker.cpp b/cpp/src/Slice/FileTracker.cpp index 5d8104dabf9..18cc15b9e23 100644 --- a/cpp/src/Slice/FileTracker.cpp +++ b/cpp/src/Slice/FileTracker.cpp @@ -65,7 +65,7 @@ Slice::FileTracker::instance() { if(!Instance) { - Instance = new FileTracker(); + Instance = make_shared(); } return Instance; } diff --git a/cpp/src/Slice/FileTracker.h b/cpp/src/Slice/FileTracker.h index 761d40a5b92..e9591ad54aa 100644 --- a/cpp/src/Slice/FileTracker.h +++ b/cpp/src/Slice/FileTracker.h @@ -6,6 +6,7 @@ #define FILE_TRACKER_H #include +#include #include namespace Slice @@ -32,9 +33,8 @@ class FileException : public ::IceUtil::Exception }; class FileTracker; -typedef IceUtil::Handle FileTrackerPtr; - -class FileTracker : public ::IceUtil::SimpleShared +using FileTrackerPtr = std::shared_ptr; +class FileTracker { public: diff --git a/cpp/src/Slice/Grammar.cpp b/cpp/src/Slice/Grammar.cpp index 36761b58c3a..bc702acb28f 100644 --- a/cpp/src/Slice/Grammar.cpp +++ b/cpp/src/Slice/Grammar.cpp @@ -160,11 +160,11 @@ slice_error(const char* s) if (strcmp(s, "parse error") == 0) { - unit->error("syntax error"); + currentUnit->error("syntax error"); } else { - unit->error(s); + currentUnit->error(s); } } @@ -741,20 +741,20 @@ static const yytype_int16 yyrline[] = 335, 334, 340, 339, 344, 348, 358, 357, 390, 394, 405, 416, 415, 441, 449, 458, 471, 489, 568, 574, 585, 603, 681, 687, 698, 707, 716, 729, 733, 744, - 755, 754, 795, 799, 810, 835, 925, 937, 950, 949, - 983, 1017, 1026, 1029, 1037, 1046, 1049, 1053, 1061, 1091, - 1126, 1148, 1174, 1180, 1186, 1192, 1202, 1226, 1251, 1275, - 1306, 1305, 1328, 1327, 1350, 1354, 1365, 1379, 1378, 1412, - 1447, 1482, 1487, 1497, 1501, 1510, 1519, 1522, 1526, 1534, - 1541, 1553, 1565, 1576, 1584, 1598, 1608, 1624, 1628, 1640, - 1639, 1671, 1670, 1688, 1694, 1702, 1714, 1734, 1741, 1751, - 1755, 1793, 1799, 1810, 1813, 1829, 1845, 1857, 1869, 1880, - 1896, 1900, 1909, 1912, 1920, 1921, 1922, 1923, 1924, 1925, - 1926, 1927, 1928, 1929, 1934, 1938, 1943, 1974, 2010, 2016, - 2024, 2031, 2043, 2052, 2061, 2096, 2103, 2110, 2122, 2131, - 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, - 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, - 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172 + 755, 754, 793, 797, 808, 833, 923, 935, 948, 947, + 981, 1015, 1024, 1027, 1035, 1044, 1047, 1051, 1059, 1089, + 1123, 1145, 1171, 1177, 1183, 1189, 1199, 1223, 1253, 1277, + 1312, 1311, 1334, 1333, 1356, 1360, 1371, 1385, 1384, 1418, + 1453, 1488, 1493, 1503, 1507, 1516, 1525, 1528, 1532, 1540, + 1547, 1559, 1571, 1582, 1590, 1604, 1614, 1630, 1634, 1646, + 1645, 1677, 1676, 1694, 1700, 1708, 1720, 1740, 1747, 1757, + 1761, 1799, 1805, 1816, 1819, 1835, 1851, 1863, 1875, 1886, + 1902, 1906, 1915, 1918, 1926, 1927, 1928, 1929, 1930, 1931, + 1932, 1933, 1934, 1935, 1940, 1944, 1949, 1980, 2016, 2022, + 2030, 2037, 2049, 2058, 2067, 2102, 2109, 2116, 2128, 2137, + 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, + 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, + 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178 }; #endif @@ -1764,7 +1764,7 @@ YYLTYPE yylloc = yyloc_default; case 6: /* global_meta_data: ICE_GLOBAL_METADATA_IGNORE string_list ICE_GLOBAL_METADATA_CLOSE */ #line 208 "src/Slice/Grammar.y" { - unit->error("global metadata must appear before any definitions"); + currentUnit->error("global metadata must appear before any definitions"); yyval = yyvsp[-1]; // Dummy } #line 1771 "src/Slice/Grammar.cpp" @@ -1781,7 +1781,7 @@ YYLTYPE yylloc = yyloc_default; case 8: /* meta_data: %empty */ #line 222 "src/Slice/Grammar.y" { - yyval = new StringListTok; + yyval = make_shared(); } #line 1787 "src/Slice/Grammar.cpp" break; @@ -1789,10 +1789,10 @@ YYLTYPE yylloc = yyloc_default; case 9: /* definitions: definitions global_meta_data */ #line 231 "src/Slice/Grammar.y" { - StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[0]); + auto metaData = dynamic_pointer_cast(yyvsp[0]); if(!metaData->v.empty()) { - unit->addGlobalMetaData(metaData->v); + currentUnit->addGlobalMetaData(metaData->v); } } #line 1799 "src/Slice/Grammar.cpp" @@ -1801,8 +1801,8 @@ YYLTYPE yylloc = yyloc_default; case 10: /* definitions: definitions meta_data definition */ #line 239 "src/Slice/Grammar.y" { - StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-1]); - ContainedPtr contained = ContainedPtr::dynamicCast(yyvsp[0]); + auto metaData = dynamic_pointer_cast(yyvsp[-1]); + auto contained = dynamic_pointer_cast(yyvsp[0]); if(contained && !metaData->v.empty()) { contained->setMetaData(metaData->v); @@ -1821,7 +1821,7 @@ YYLTYPE yylloc = yyloc_default; case 12: /* $@1: %empty */ #line 256 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || ModulePtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1827 "src/Slice/Grammar.cpp" break; @@ -1829,7 +1829,7 @@ YYLTYPE yylloc = yyloc_default; case 14: /* $@2: %empty */ #line 261 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || ClassDeclPtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1835 "src/Slice/Grammar.cpp" break; @@ -1837,7 +1837,7 @@ YYLTYPE yylloc = yyloc_default; case 16: /* definition: class_decl */ #line 266 "src/Slice/Grammar.y" { - unit->error("`;' missing after class forward declaration"); + currentUnit->error("`;' missing after class forward declaration"); } #line 1843 "src/Slice/Grammar.cpp" break; @@ -1845,7 +1845,7 @@ YYLTYPE yylloc = yyloc_default; case 17: /* $@3: %empty */ #line 270 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || ClassDefPtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1851 "src/Slice/Grammar.cpp" break; @@ -1853,7 +1853,7 @@ YYLTYPE yylloc = yyloc_default; case 19: /* $@4: %empty */ #line 275 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || InterfaceDeclPtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1859 "src/Slice/Grammar.cpp" break; @@ -1861,7 +1861,7 @@ YYLTYPE yylloc = yyloc_default; case 21: /* definition: interface_decl */ #line 280 "src/Slice/Grammar.y" { - unit->error("`;' missing after interface forward declaration"); + currentUnit->error("`;' missing after interface forward declaration"); } #line 1867 "src/Slice/Grammar.cpp" break; @@ -1869,7 +1869,7 @@ YYLTYPE yylloc = yyloc_default; case 22: /* $@5: %empty */ #line 284 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || InterfaceDefPtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1875 "src/Slice/Grammar.cpp" break; @@ -1877,7 +1877,7 @@ YYLTYPE yylloc = yyloc_default; case 24: /* $@6: %empty */ #line 289 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0); + assert(yyvsp[0] == nullptr); } #line 1883 "src/Slice/Grammar.cpp" break; @@ -1885,7 +1885,7 @@ YYLTYPE yylloc = yyloc_default; case 26: /* definition: exception_decl */ #line 294 "src/Slice/Grammar.y" { - unit->error("`;' missing after exception forward declaration"); + currentUnit->error("`;' missing after exception forward declaration"); } #line 1891 "src/Slice/Grammar.cpp" break; @@ -1893,7 +1893,7 @@ YYLTYPE yylloc = yyloc_default; case 27: /* $@7: %empty */ #line 298 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || ExceptionPtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1899 "src/Slice/Grammar.cpp" break; @@ -1901,7 +1901,7 @@ YYLTYPE yylloc = yyloc_default; case 29: /* $@8: %empty */ #line 303 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0); + assert(yyvsp[0] == nullptr); } #line 1907 "src/Slice/Grammar.cpp" break; @@ -1909,7 +1909,7 @@ YYLTYPE yylloc = yyloc_default; case 31: /* definition: struct_decl */ #line 308 "src/Slice/Grammar.y" { - unit->error("`;' missing after struct forward declaration"); + currentUnit->error("`;' missing after struct forward declaration"); } #line 1915 "src/Slice/Grammar.cpp" break; @@ -1917,7 +1917,7 @@ YYLTYPE yylloc = yyloc_default; case 32: /* $@9: %empty */ #line 312 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || StructPtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1923 "src/Slice/Grammar.cpp" break; @@ -1925,7 +1925,7 @@ YYLTYPE yylloc = yyloc_default; case 34: /* $@10: %empty */ #line 317 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || SequencePtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1931 "src/Slice/Grammar.cpp" break; @@ -1933,7 +1933,7 @@ YYLTYPE yylloc = yyloc_default; case 36: /* definition: sequence_def */ #line 322 "src/Slice/Grammar.y" { - unit->error("`;' missing after sequence definition"); + currentUnit->error("`;' missing after sequence definition"); } #line 1939 "src/Slice/Grammar.cpp" break; @@ -1941,7 +1941,7 @@ YYLTYPE yylloc = yyloc_default; case 37: /* $@11: %empty */ #line 326 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || DictionaryPtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1947 "src/Slice/Grammar.cpp" break; @@ -1949,7 +1949,7 @@ YYLTYPE yylloc = yyloc_default; case 39: /* definition: dictionary_def */ #line 331 "src/Slice/Grammar.y" { - unit->error("`;' missing after dictionary definition"); + currentUnit->error("`;' missing after dictionary definition"); } #line 1955 "src/Slice/Grammar.cpp" break; @@ -1957,7 +1957,7 @@ YYLTYPE yylloc = yyloc_default; case 40: /* $@12: %empty */ #line 335 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || EnumPtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1963 "src/Slice/Grammar.cpp" break; @@ -1965,7 +1965,7 @@ YYLTYPE yylloc = yyloc_default; case 42: /* $@13: %empty */ #line 340 "src/Slice/Grammar.y" { - assert(yyvsp[0] == 0 || ConstPtr::dynamicCast(yyvsp[0])); + assert(yyvsp[0] == nullptr || dynamic_pointer_cast(yyvsp[0])); } #line 1971 "src/Slice/Grammar.cpp" break; @@ -1973,7 +1973,7 @@ YYLTYPE yylloc = yyloc_default; case 44: /* definition: const_def */ #line 345 "src/Slice/Grammar.y" { - unit->error("`;' missing after const definition"); + currentUnit->error("`;' missing after const definition"); } #line 1979 "src/Slice/Grammar.cpp" break; @@ -1989,18 +1989,18 @@ YYLTYPE yylloc = yyloc_default; case 46: /* @14: %empty */ #line 358 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast(yyvsp[0]); + ContainerPtr cont = currentUnit->currentContainer(); ModulePtr module = cont->createModule(ident->v); if(module) { cont->checkIntroduced(ident->v, module); - unit->pushContainer(module); + currentUnit->pushContainer(module); yyval = module; } else { - yyval = 0; + yyval = nullptr; } } #line 2007 "src/Slice/Grammar.cpp" @@ -2011,12 +2011,12 @@ YYLTYPE yylloc = yyloc_default; { if(yyvsp[-3]) { - unit->popContainer(); + currentUnit->popContainer(); yyval = yyvsp[-3]; } else { - yyval = 0; + yyval = nullptr; } } #line 2023 "src/Slice/Grammar.cpp" @@ -2033,8 +2033,8 @@ YYLTYPE yylloc = yyloc_default; case 49: /* exception_id: ICE_EXCEPTION keyword */ #line 395 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - unit->error("keyword `" + ident->v + "' cannot be used as exception name"); + auto ident = dynamic_pointer_cast(yyvsp[0]); + currentUnit->error("keyword `" + ident->v + "' cannot be used as exception name"); yyval = yyvsp[0]; // Dummy } #line 2041 "src/Slice/Grammar.cpp" @@ -2043,8 +2043,8 @@ YYLTYPE yylloc = yyloc_default; case 50: /* exception_decl: exception_id */ #line 406 "src/Slice/Grammar.y" { - unit->error("exceptions cannot be forward declared"); - yyval = 0; + currentUnit->error("exceptions cannot be forward declared"); + yyval = nullptr; } #line 2050 "src/Slice/Grammar.cpp" break; @@ -2052,14 +2052,14 @@ YYLTYPE yylloc = yyloc_default; case 51: /* @15: %empty */ #line 416 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[-1]); - ExceptionPtr base = ExceptionPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast(yyvsp[-1]); + auto base = dynamic_pointer_cast(yyvsp[0]); + ContainerPtr cont = currentUnit->currentContainer(); ExceptionPtr ex = cont->createException(ident->v, base); if(ex) { cont->checkIntroduced(ident->v, ex); - unit->pushContainer(ex); + currentUnit->pushContainer(ex); } yyval = ex; } @@ -2071,7 +2071,7 @@ YYLTYPE yylloc = yyloc_default; { if(yyvsp[-3]) { - unit->popContainer(); + currentUnit->popContainer(); } yyval = yyvsp[-3]; } @@ -2081,8 +2081,8 @@ YYLTYPE yylloc = yyloc_default; case 53: /* exception_extends: extends scoped_name */ #line 442 "src/Slice/Grammar.y" { - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast(yyvsp[0]); + ContainerPtr cont = currentUnit->currentContainer(); ContainedPtr contained = cont->lookupException(scoped->v); cont->checkIntroduced(scoped->v); yyval = contained; @@ -2093,7 +2093,7 @@ YYLTYPE yylloc = yyloc_default; case 54: /* exception_extends: %empty */ #line 450 "src/Slice/Grammar.y" { - yyval = 0; + yyval = nullptr; } #line 2099 "src/Slice/Grammar.cpp" break; @@ -2101,9 +2101,9 @@ YYLTYPE yylloc = yyloc_default; case 55: /* type_id: type ICE_IDENTIFIER */ #line 459 "src/Slice/Grammar.y" { - TypePtr type = TypePtr::dynamicCast(yyvsp[-1]); - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - TypeStringTokPtr typestring = new TypeStringTok; + auto type = dynamic_pointer_cast(yyvsp[-1]); + auto ident = dynamic_pointer_cast(yyvsp[0]); + auto typestring = make_shared(); typestring->v = make_pair(type, ident->v); yyval = typestring; } @@ -2113,12 +2113,12 @@ YYLTYPE yylloc = yyloc_default; case 56: /* tag: ICE_TAG_OPEN ICE_INTEGER_LITERAL ')' */ #line 472 "src/Slice/Grammar.y" { - IntegerTokPtr i = IntegerTokPtr::dynamicCast(yyvsp[-1]); + auto i = dynamic_pointer_cast(yyvsp[-1]); int tag; if(i->v < 0 || i->v > Int32Max) { - unit->error("tag is out of range"); + currentUnit->error("tag is out of range"); tag = -1; } else @@ -2126,7 +2126,7 @@ YYLTYPE yylloc = yyloc_default; tag = static_cast(i->v); } - TaggedDefTokPtr m = new TaggedDefTok(tag); + auto m = make_shared(tag); yyval = m; } #line 2133 "src/Slice/Grammar.cpp" @@ -2135,9 +2135,9 @@ YYLTYPE yylloc = yyloc_default; case 57: /* tag: ICE_TAG_OPEN scoped_name ')' */ #line 490 "src/Slice/Grammar.y" { - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[-1]); + auto scoped = dynamic_pointer_cast(yyvsp[-1]); - ContainerPtr cont = unit->currentContainer(); + ContainerPtr cont = currentUnit->currentContainer(); assert(cont); ContainedList cl = cont->lookupContained(scoped->v, false); if(cl.empty()) @@ -2148,7 +2148,7 @@ YYLTYPE yylloc = yyloc_default; // Found cl.push_back(enumerators.front()); scoped->v = enumerators.front()->scoped(); - unit->warning(Deprecated, string("referencing enumerator `") + scoped->v + currentUnit->warning(Deprecated, string("referencing enumerator `") + scoped->v + "' without its enumeration's scope is deprecated"); } else if(enumerators.size() > 1) @@ -2169,11 +2169,11 @@ YYLTYPE yylloc = yyloc_default; os << " `" << (*p)->scoped() << "'"; } - unit->error(os.str()); + currentUnit->error(os.str()); } else { - unit->error(string("`") + scoped->v + "' is not defined"); + currentUnit->error(string("`") + scoped->v + "' is not defined"); } } @@ -2184,17 +2184,17 @@ YYLTYPE yylloc = yyloc_default; cont->checkIntroduced(scoped->v); int tag = -1; - EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(cl.front()); - ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + auto enumerator = dynamic_pointer_cast(cl.front()); + auto constant = dynamic_pointer_cast(cl.front()); if(constant) { - BuiltinPtr b = BuiltinPtr::dynamicCast(constant->type()); + auto b = dynamic_pointer_cast(constant->type()); if(b && b->isIntegralType()) { IceUtil::Int64 l = IceUtilInternal::strToInt64(constant->value().c_str(), 0, 0); if(l < 0 || l > Int32Max) { - unit->error("tag is out of range"); + currentUnit->error("tag is out of range"); } tag = static_cast(l); } @@ -2206,10 +2206,10 @@ YYLTYPE yylloc = yyloc_default; if(tag < 0) { - unit->error("invalid tag `" + scoped->v + "'"); + currentUnit->error("invalid tag `" + scoped->v + "'"); } - TaggedDefTokPtr m = new TaggedDefTok(tag); + auto m = make_shared(tag); yyval = m; } #line 2216 "src/Slice/Grammar.cpp" @@ -2218,8 +2218,8 @@ YYLTYPE yylloc = yyloc_default; case 58: /* tag: ICE_TAG_OPEN ')' */ #line 569 "src/Slice/Grammar.y" { - unit->error("missing tag"); - TaggedDefTokPtr m = new TaggedDefTok(-1); // Dummy + currentUnit->error("missing tag"); + auto m = make_shared(-1); // Dummy yyval = m; } #line 2226 "src/Slice/Grammar.cpp" @@ -2228,8 +2228,8 @@ YYLTYPE yylloc = yyloc_default; case 59: /* tag: ICE_TAG */ #line 575 "src/Slice/Grammar.y" { - unit->error("missing tag"); - TaggedDefTokPtr m = new TaggedDefTok(-1); // Dummy + currentUnit->error("missing tag"); + auto m = make_shared(-1); // Dummy yyval = m; } #line 2236 "src/Slice/Grammar.cpp" @@ -2238,12 +2238,12 @@ YYLTYPE yylloc = yyloc_default; case 60: /* optional: ICE_OPTIONAL_OPEN ICE_INTEGER_LITERAL ')' */ #line 586 "src/Slice/Grammar.y" { - IntegerTokPtr i = IntegerTokPtr::dynamicCast(yyvsp[-1]); + auto i = dynamic_pointer_cast(yyvsp[-1]); int tag; if(i->v < 0 || i->v > Int32Max) { - unit->error("tag is out of range"); + currentUnit->error("tag is out of range"); tag = -1; } else @@ -2251,7 +2251,7 @@ YYLTYPE yylloc = yyloc_default; tag = static_cast(i->v); } - TaggedDefTokPtr m = new TaggedDefTok(tag); + auto m = make_shared(tag); yyval = m; } #line 2258 "src/Slice/Grammar.cpp" @@ -2260,8 +2260,8 @@ YYLTYPE yylloc = yyloc_default; case 61: /* optional: ICE_OPTIONAL_OPEN scoped_name ')' */ #line 604 "src/Slice/Grammar.y" { - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[-1]); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast(yyvsp[-1]); + ContainerPtr cont = currentUnit->currentContainer(); assert(cont); ContainedList cl = cont->lookupContained(scoped->v, false); if(cl.empty()) @@ -2272,7 +2272,7 @@ YYLTYPE yylloc = yyloc_default; // Found cl.push_back(enumerators.front()); scoped->v = enumerators.front()->scoped(); - unit->warning(Deprecated, string("referencing enumerator `") + scoped->v + currentUnit->warning(Deprecated, string("referencing enumerator `") + scoped->v + "' without its enumeration's scope is deprecated"); } else if(enumerators.size() > 1) @@ -2293,11 +2293,11 @@ YYLTYPE yylloc = yyloc_default; os << " `" << (*p)->scoped() << "'"; } - unit->error(os.str()); + currentUnit->error(os.str()); } else { - unit->error(string("`") + scoped->v + "' is not defined"); + currentUnit->error(string("`") + scoped->v + "' is not defined"); } } @@ -2308,17 +2308,17 @@ YYLTYPE yylloc = yyloc_default; cont->checkIntroduced(scoped->v); int tag = -1; - EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(cl.front()); - ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + auto enumerator = dynamic_pointer_cast(cl.front()); + auto constant = dynamic_pointer_cast(cl.front()); if(constant) { - BuiltinPtr b = BuiltinPtr::dynamicCast(constant->type()); + auto b = dynamic_pointer_cast(constant->type()); if(b && b->isIntegralType()) { IceUtil::Int64 l = IceUtilInternal::strToInt64(constant->value().c_str(), 0, 0); if(l < 0 || l > Int32Max) { - unit->error("tag is out of range"); + currentUnit->error("tag is out of range"); } tag = static_cast(l); } @@ -2330,10 +2330,10 @@ YYLTYPE yylloc = yyloc_default; if(tag < 0) { - unit->error("invalid tag `" + scoped->v + "'"); + currentUnit->error("invalid tag `" + scoped->v + "'"); } - TaggedDefTokPtr m = new TaggedDefTok(tag); + auto m = make_shared(tag); yyval = m; } #line 2340 "src/Slice/Grammar.cpp" @@ -2342,8 +2342,8 @@ YYLTYPE yylloc = yyloc_default; case 62: /* optional: ICE_OPTIONAL_OPEN ')' */ #line 682 "src/Slice/Grammar.y" { - unit->error("missing tag"); - TaggedDefTokPtr m = new TaggedDefTok(-1); // Dummy + currentUnit->error("missing tag"); + auto m = make_shared(-1); // Dummy yyval = m; } #line 2350 "src/Slice/Grammar.cpp" @@ -2352,8 +2352,8 @@ YYLTYPE yylloc = yyloc_default; case 63: /* optional: ICE_OPTIONAL */ #line 688 "src/Slice/Grammar.y" { - unit->error("missing tag"); - TaggedDefTokPtr m = new TaggedDefTok(-1); // Dummy + currentUnit->error("missing tag"); + auto m = make_shared(-1); // Dummy yyval = m; } #line 2360 "src/Slice/Grammar.cpp" @@ -2362,8 +2362,8 @@ YYLTYPE yylloc = yyloc_default; case 64: /* tagged_type_id: tag type_id */ #line 699 "src/Slice/Grammar.y" { - TaggedDefTokPtr m = TaggedDefTokPtr::dynamicCast(yyvsp[-1]); - TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast(yyvsp[0]); + auto m = dynamic_pointer_cast(yyvsp[-1]); + auto ts = dynamic_pointer_cast(yyvsp[0]); m->type = ts->v.first; m->name = ts->v.second; @@ -2375,8 +2375,8 @@ YYLTYPE yylloc = yyloc_default; case 65: /* tagged_type_id: optional type_id */ #line 708 "src/Slice/Grammar.y" { - TaggedDefTokPtr m = TaggedDefTokPtr::dynamicCast(yyvsp[-1]); - TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast(yyvsp[0]); + auto m = dynamic_pointer_cast(yyvsp[-1]); + auto ts = dynamic_pointer_cast(yyvsp[0]); m->type = ts->v.first; m->name = ts->v.second; @@ -2388,8 +2388,8 @@ YYLTYPE yylloc = yyloc_default; case 66: /* tagged_type_id: type_id */ #line 717 "src/Slice/Grammar.y" { - TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast(yyvsp[0]); - TaggedDefTokPtr m = new TaggedDefTok(-1); + auto ts = dynamic_pointer_cast(yyvsp[0]); + auto m = make_shared(-1); m->type = ts->v.first; m->name = ts->v.second; yyval = m; @@ -2408,8 +2408,8 @@ YYLTYPE yylloc = yyloc_default; case 68: /* struct_id: ICE_STRUCT keyword */ #line 734 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - unit->error("keyword `" + ident->v + "' cannot be used as struct name"); + auto ident = dynamic_pointer_cast(yyvsp[0]); + currentUnit->error("keyword `" + ident->v + "' cannot be used as struct name"); yyval = yyvsp[0]; // Dummy } #line 2416 "src/Slice/Grammar.cpp" @@ -2418,8 +2418,8 @@ YYLTYPE yylloc = yyloc_default; case 69: /* struct_decl: struct_id */ #line 745 "src/Slice/Grammar.y" { - unit->error("structs cannot be forward declared"); - yyval = 0; // Dummy + currentUnit->error("structs cannot be forward declared"); + yyval = nullptr; // Dummy } #line 2425 "src/Slice/Grammar.cpp" break; @@ -2427,19 +2427,19 @@ YYLTYPE yylloc = yyloc_default; case 70: /* @16: %empty */ #line 755 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast(yyvsp[0]); + ContainerPtr cont = currentUnit->currentContainer(); StructPtr st = cont->createStruct(ident->v); if(st) { cont->checkIntroduced(ident->v, st); - unit->pushContainer(st); + currentUnit->pushContainer(st); } else { st = cont->createStruct(IceUtil::generateUUID()); // Dummy assert(st); - unit->pushContainer(st); + currentUnit->pushContainer(st); } yyval = st; } @@ -2451,76 +2451,74 @@ YYLTYPE yylloc = yyloc_default; { if(yyvsp[-3]) { - unit->popContainer(); + currentUnit->popContainer(); } yyval = yyvsp[-3]; - // // Empty structures are not allowed - // - StructPtr st = StructPtr::dynamicCast(yyval); + auto st = dynamic_pointer_cast(yyval); assert(st); if(st->dataMembers().empty()) { - unit->error("struct `" + st->name() + "' must have at least one member"); // $$ is a dummy + currentUnit->error("struct `" + st->name() + "' must have at least one member"); // $$ is a dummy } } -#line 2469 "src/Slice/Grammar.cpp" +#line 2467 "src/Slice/Grammar.cpp" break; case 72: /* class_name: ICE_CLASS ICE_IDENTIFIER */ -#line 796 "src/Slice/Grammar.y" +#line 794 "src/Slice/Grammar.y" { yyval = yyvsp[0]; } -#line 2477 "src/Slice/Grammar.cpp" +#line 2475 "src/Slice/Grammar.cpp" break; case 73: /* class_name: ICE_CLASS keyword */ -#line 800 "src/Slice/Grammar.y" +#line 798 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - unit->error("keyword `" + ident->v + "' cannot be used as class name"); + auto ident = dynamic_pointer_cast(yyvsp[0]); + currentUnit->error("keyword `" + ident->v + "' cannot be used as class name"); yyval = yyvsp[0]; // Dummy } -#line 2487 "src/Slice/Grammar.cpp" +#line 2485 "src/Slice/Grammar.cpp" break; case 74: /* class_id: ICE_CLASS ICE_IDENT_OPEN ICE_INTEGER_LITERAL ')' */ -#line 811 "src/Slice/Grammar.y" +#line 809 "src/Slice/Grammar.y" { - IceUtil::Int64 id = IntegerTokPtr::dynamicCast(yyvsp[-1])->v; + IceUtil::Int64 id = dynamic_pointer_cast(yyvsp[-1])->v; if(id < 0) { - unit->error("invalid compact id for class: id must be a positive integer"); + currentUnit->error("invalid compact id for class: id must be a positive integer"); } else if(id > Int32Max) { - unit->error("invalid compact id for class: value is out of range"); + currentUnit->error("invalid compact id for class: value is out of range"); } else { - string typeId = unit->getTypeId(static_cast(id)); - if(!typeId.empty() && !unit->ignRedefs()) + string typeId = currentUnit->getTypeId(static_cast(id)); + if(!typeId.empty() && !currentUnit->ignRedefs()) { - unit->error("invalid compact id for class: already assigned to class `" + typeId + "'"); + currentUnit->error("invalid compact id for class: already assigned to class `" + typeId + "'"); } } - ClassIdTokPtr classId = new ClassIdTok(); - classId->v = StringTokPtr::dynamicCast(yyvsp[-2])->v; + auto classId = make_shared(); + classId->v = dynamic_pointer_cast(yyvsp[-2])->v; classId->t = static_cast(id); yyval = classId; } -#line 2516 "src/Slice/Grammar.cpp" +#line 2514 "src/Slice/Grammar.cpp" break; case 75: /* class_id: ICE_CLASS ICE_IDENT_OPEN scoped_name ')' */ -#line 836 "src/Slice/Grammar.y" +#line 834 "src/Slice/Grammar.y" { - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[-1]); + auto scoped = dynamic_pointer_cast(yyvsp[-1]); - ContainerPtr cont = unit->currentContainer(); + ContainerPtr cont = currentUnit->currentContainer(); assert(cont); ContainedList cl = cont->lookupContained(scoped->v, false); if(cl.empty()) @@ -2531,7 +2529,7 @@ YYLTYPE yylloc = yyloc_default; // Found cl.push_back(enumerators.front()); scoped->v = enumerators.front()->scoped(); - unit->warning(Deprecated, string("referencing enumerator `") + scoped->v + currentUnit->warning(Deprecated, string("referencing enumerator `") + scoped->v + "' without its enumeration's scope is deprecated"); } else if(enumerators.size() > 1) @@ -2552,11 +2550,11 @@ YYLTYPE yylloc = yyloc_default; os << " `" << (*p)->scoped() << "'"; } - unit->error(os.str()); + currentUnit->error(os.str()); } else { - unit->error(string("`") + scoped->v + "' is not defined"); + currentUnit->error(string("`") + scoped->v + "' is not defined"); } } @@ -2567,17 +2565,17 @@ YYLTYPE yylloc = yyloc_default; cont->checkIntroduced(scoped->v); int id = -1; - EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(cl.front()); - ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + auto enumerator = dynamic_pointer_cast(cl.front()); + auto constant = dynamic_pointer_cast(cl.front()); if(constant) { - BuiltinPtr b = BuiltinPtr::dynamicCast(constant->type()); + auto b = dynamic_pointer_cast(constant->type()); if(b && b->isIntegralType()) { IceUtil::Int64 l = IceUtilInternal::strToInt64(constant->value().c_str(), 0, 0); if(l < 0 || l > Int32Max) { - unit->error("compact id for class is out of range"); + currentUnit->error("compact id for class is out of range"); } id = static_cast(l); } @@ -2589,101 +2587,101 @@ YYLTYPE yylloc = yyloc_default; if(id < 0) { - unit->error("invalid compact id for class: id must be a positive integer"); + currentUnit->error("invalid compact id for class: id must be a positive integer"); } else { - string typeId = unit->getTypeId(id); - if(!typeId.empty() && !unit->ignRedefs()) + string typeId = currentUnit->getTypeId(id); + if(!typeId.empty() && !currentUnit->ignRedefs()) { - unit->error("invalid compact id for class: already assigned to class `" + typeId + "'"); + currentUnit->error("invalid compact id for class: already assigned to class `" + typeId + "'"); } } - ClassIdTokPtr classId = new ClassIdTok(); - classId->v = StringTokPtr::dynamicCast(yyvsp[-2])->v; + auto classId = make_shared(); + classId->v = dynamic_pointer_cast(yyvsp[-2])->v; classId->t = id; yyval = classId; } -#line 2610 "src/Slice/Grammar.cpp" +#line 2608 "src/Slice/Grammar.cpp" break; case 76: /* class_id: class_name */ -#line 926 "src/Slice/Grammar.y" +#line 924 "src/Slice/Grammar.y" { - ClassIdTokPtr classId = new ClassIdTok(); - classId->v = StringTokPtr::dynamicCast(yyvsp[0])->v; + auto classId = make_shared(); + classId->v = dynamic_pointer_cast(yyvsp[0])->v; classId->t = -1; yyval = classId; } -#line 2621 "src/Slice/Grammar.cpp" +#line 2619 "src/Slice/Grammar.cpp" break; case 77: /* class_decl: class_name */ -#line 938 "src/Slice/Grammar.y" +#line 936 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast(yyvsp[0]); + ContainerPtr cont = currentUnit->currentContainer(); ClassDeclPtr cl = cont->createClassDecl(ident->v); yyval = cl; } -#line 2632 "src/Slice/Grammar.cpp" +#line 2630 "src/Slice/Grammar.cpp" break; case 78: /* @17: %empty */ -#line 950 "src/Slice/Grammar.y" +#line 948 "src/Slice/Grammar.y" { - ClassIdTokPtr ident = ClassIdTokPtr::dynamicCast(yyvsp[-1]); - ContainerPtr cont = unit->currentContainer(); - ClassDefPtr base = ClassDefPtr::dynamicCast(yyvsp[0]); + auto ident = dynamic_pointer_cast(yyvsp[-1]); + ContainerPtr cont = currentUnit->currentContainer(); + auto base = dynamic_pointer_cast(yyvsp[0]); ClassDefPtr cl = cont->createClassDef(ident->v, ident->t, base); if(cl) { cont->checkIntroduced(ident->v, cl); - unit->pushContainer(cl); + currentUnit->pushContainer(cl); yyval = cl; } else { - yyval = 0; + yyval = nullptr; } } -#line 2653 "src/Slice/Grammar.cpp" +#line 2651 "src/Slice/Grammar.cpp" break; case 79: /* class_def: class_id class_extends @17 '{' data_members '}' */ -#line 967 "src/Slice/Grammar.y" +#line 965 "src/Slice/Grammar.y" { if(yyvsp[-3]) { - unit->popContainer(); + currentUnit->popContainer(); yyval = yyvsp[-3]; } else { - yyval = 0; + yyval = nullptr; } } -#line 2669 "src/Slice/Grammar.cpp" +#line 2667 "src/Slice/Grammar.cpp" break; case 80: /* class_extends: extends scoped_name */ -#line 984 "src/Slice/Grammar.y" +#line 982 "src/Slice/Grammar.y" { - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast(yyvsp[0]); + ContainerPtr cont = currentUnit->currentContainer(); TypeList types = cont->lookupType(scoped->v); - yyval = 0; + yyval = nullptr; if(!types.empty()) { - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(types.front()); + auto cl = dynamic_pointer_cast(types.front()); if(!cl) { string msg = "`"; msg += scoped->v; msg += "' is not a class"; - unit->error(msg); + currentUnit->error(msg); } else { @@ -2693,7 +2691,7 @@ YYLTYPE yylloc = yyloc_default; string msg = "`"; msg += scoped->v; msg += "' has been declared but not defined"; - unit->error(msg); + currentUnit->error(msg); } else { @@ -2703,82 +2701,82 @@ YYLTYPE yylloc = yyloc_default; } } } -#line 2707 "src/Slice/Grammar.cpp" +#line 2705 "src/Slice/Grammar.cpp" break; case 81: /* class_extends: %empty */ -#line 1018 "src/Slice/Grammar.y" +#line 1016 "src/Slice/Grammar.y" { - yyval = 0; + yyval = nullptr; } -#line 2715 "src/Slice/Grammar.cpp" +#line 2713 "src/Slice/Grammar.cpp" break; case 82: /* extends: ICE_EXTENDS */ -#line 1027 "src/Slice/Grammar.y" +#line 1025 "src/Slice/Grammar.y" { } -#line 2722 "src/Slice/Grammar.cpp" +#line 2720 "src/Slice/Grammar.cpp" break; case 83: /* extends: ':' */ -#line 1030 "src/Slice/Grammar.y" +#line 1028 "src/Slice/Grammar.y" { } -#line 2729 "src/Slice/Grammar.cpp" +#line 2727 "src/Slice/Grammar.cpp" break; case 84: /* data_members: meta_data data_member ';' data_members */ -#line 1038 "src/Slice/Grammar.y" +#line 1036 "src/Slice/Grammar.y" { - StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]); - ContainedPtr contained = ContainedPtr::dynamicCast(yyvsp[-2]); - if(contained && !metaData->v.empty()) + auto metaData = dynamic_pointer_cast(yyvsp[-3]); + auto contained = dynamic_pointer_cast(yyvsp[-2]); + if (contained && !metaData->v.empty()) { contained->setMetaData(metaData->v); } } -#line 2742 "src/Slice/Grammar.cpp" +#line 2740 "src/Slice/Grammar.cpp" break; case 85: /* data_members: error ';' data_members */ -#line 1047 "src/Slice/Grammar.y" +#line 1045 "src/Slice/Grammar.y" { } -#line 2749 "src/Slice/Grammar.cpp" +#line 2747 "src/Slice/Grammar.cpp" break; case 86: /* data_members: meta_data data_member */ -#line 1050 "src/Slice/Grammar.y" +#line 1048 "src/Slice/Grammar.y" { - unit->error("`;' missing after definition"); + currentUnit->error("`;' missing after definition"); } -#line 2757 "src/Slice/Grammar.cpp" +#line 2755 "src/Slice/Grammar.cpp" break; case 87: /* data_members: %empty */ -#line 1054 "src/Slice/Grammar.y" +#line 1052 "src/Slice/Grammar.y" { } -#line 2764 "src/Slice/Grammar.cpp" +#line 2762 "src/Slice/Grammar.cpp" break; case 88: /* data_member: tagged_type_id */ -#line 1062 "src/Slice/Grammar.y" +#line 1060 "src/Slice/Grammar.y" { - TaggedDefTokPtr def = TaggedDefTokPtr::dynamicCast(yyvsp[0]); - ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); + auto def = dynamic_pointer_cast(yyvsp[0]); + auto cl = dynamic_pointer_cast(currentUnit->currentContainer()); DataMemberPtr dm; if(cl) { dm = cl->createDataMember(def->name, def->type, def->isTagged, def->tag, 0, "", ""); } - StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + auto st = dynamic_pointer_cast(currentUnit->currentContainer()); if(st) { if (def->isTagged) { - unit->error("tagged data members are not supported in structs"); + currentUnit->error("tagged data members are not supported in structs"); dm = st->createDataMember(def->name, def->type, false, 0, 0, "", ""); // Dummy } else @@ -2786,36 +2784,35 @@ YYLTYPE yylloc = yyloc_default; dm = st->createDataMember(def->name, def->type, false, -1, 0, "", ""); } } - ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); + auto ex = dynamic_pointer_cast(currentUnit->currentContainer()); if(ex) { dm = ex->createDataMember(def->name, def->type, def->isTagged, def->tag, 0, "", ""); } - unit->currentContainer()->checkIntroduced(def->name, dm); + currentUnit->currentContainer()->checkIntroduced(def->name, dm); yyval = dm; } -#line 2798 "src/Slice/Grammar.cpp" +#line 2796 "src/Slice/Grammar.cpp" break; case 89: /* data_member: tagged_type_id '=' const_initializer */ -#line 1092 "src/Slice/Grammar.y" +#line 1090 "src/Slice/Grammar.y" { - TaggedDefTokPtr def = TaggedDefTokPtr::dynamicCast(yyvsp[-2]); - ConstDefTokPtr value = ConstDefTokPtr::dynamicCast(yyvsp[0]); - - ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); + auto def = dynamic_pointer_cast(yyvsp[-2]); + auto value = dynamic_pointer_cast(yyvsp[0]); + auto cl = dynamic_pointer_cast(currentUnit->currentContainer()); DataMemberPtr dm; if(cl) { dm = cl->createDataMember(def->name, def->type, def->isTagged, def->tag, value->v, value->valueAsString, value->valueAsLiteral); } - StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + auto st = dynamic_pointer_cast(currentUnit->currentContainer()); if(st) { if (def->isTagged) { - unit->error("tagged data members are not supported in structs"); + currentUnit->error("tagged data members are not supported in structs"); dm = st->createDataMember(def->name, def->type, false, 0, 0, "", ""); // Dummy } else @@ -2824,207 +2821,216 @@ YYLTYPE yylloc = yyloc_default; value->valueAsString, value->valueAsLiteral); } } - ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); + auto ex = dynamic_pointer_cast(currentUnit->currentContainer()); if(ex) { dm = ex->createDataMember(def->name, def->type, def->isTagged, def->tag, value->v, value->valueAsString, value->valueAsLiteral); } - unit->currentContainer()->checkIntroduced(def->name, dm); + currentUnit->currentContainer()->checkIntroduced(def->name, dm); yyval = dm; } -#line 2837 "src/Slice/Grammar.cpp" +#line 2834 "src/Slice/Grammar.cpp" break; case 90: /* data_member: type keyword */ -#line 1127 "src/Slice/Grammar.y" +#line 1124 "src/Slice/Grammar.y" { - TypePtr type = TypePtr::dynamicCast(yyvsp[-1]); - string name = StringTokPtr::dynamicCast(yyvsp[0])->v; - ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); + auto type = dynamic_pointer_cast(yyvsp[-1]); + string name = dynamic_pointer_cast(yyvsp[0])->v; + auto cl = dynamic_pointer_cast(currentUnit->currentContainer()); if(cl) { yyval = cl->createDataMember(name, type, false, 0, 0, "", ""); // Dummy } - StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + auto st = dynamic_pointer_cast(currentUnit->currentContainer()); if(st) { yyval = st->createDataMember(name, type, false, 0, 0, "", ""); // Dummy } - ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); + auto ex = dynamic_pointer_cast(currentUnit->currentContainer()); if(ex) { yyval = ex->createDataMember(name, type, false, 0, 0, "", ""); // Dummy } assert(yyval); - unit->error("keyword `" + name + "' cannot be used as data member name"); + currentUnit->error("keyword `" + name + "' cannot be used as data member name"); } -#line 2863 "src/Slice/Grammar.cpp" +#line 2860 "src/Slice/Grammar.cpp" break; case 91: /* data_member: type */ -#line 1149 "src/Slice/Grammar.y" +#line 1146 "src/Slice/Grammar.y" { - TypePtr type = TypePtr::dynamicCast(yyvsp[0]); - ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); + auto type = dynamic_pointer_cast(yyvsp[0]); + auto cl = dynamic_pointer_cast(currentUnit->currentContainer()); if(cl) { yyval = cl->createDataMember(IceUtil::generateUUID(), type, false, 0, 0, "", ""); // Dummy } - StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + auto st = dynamic_pointer_cast(currentUnit->currentContainer()); if(st) { yyval = st->createDataMember(IceUtil::generateUUID(), type, false, 0, 0, "", ""); // Dummy } - ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); + auto ex = dynamic_pointer_cast(currentUnit->currentContainer()); if(ex) { yyval = ex->createDataMember(IceUtil::generateUUID(), type, false, 0, 0, "", ""); // Dummy } assert(yyval); - unit->error("missing data member name"); + currentUnit->error("missing data member name"); } -#line 2888 "src/Slice/Grammar.cpp" +#line 2885 "src/Slice/Grammar.cpp" break; case 92: /* return_type: tag type */ -#line 1175 "src/Slice/Grammar.y" +#line 1172 "src/Slice/Grammar.y" { - TaggedDefTokPtr m = TaggedDefTokPtr::dynamicCast(yyvsp[-1]); - m->type = TypePtr::dynamicCast(yyvsp[0]); + auto m = dynamic_pointer_cast(yyvsp[-1]); + m->type = dynamic_pointer_cast(yyvsp[0]); yyval = m; } -#line 2898 "src/Slice/Grammar.cpp" +#line 2895 "src/Slice/Grammar.cpp" break; case 93: /* return_type: optional type */ -#line 1181 "src/Slice/Grammar.y" +#line 1178 "src/Slice/Grammar.y" { - TaggedDefTokPtr m = TaggedDefTokPtr::dynamicCast(yyvsp[-1]); - m->type = TypePtr::dynamicCast(yyvsp[0]); + auto m = dynamic_pointer_cast(yyvsp[-1]); + m->type = dynamic_pointer_cast(yyvsp[0]); yyval = m; } -#line 2908 "src/Slice/Grammar.cpp" +#line 2905 "src/Slice/Grammar.cpp" break; case 94: /* return_type: type */ -#line 1187 "src/Slice/Grammar.y" +#line 1184 "src/Slice/Grammar.y" { - TaggedDefTokPtr m = new TaggedDefTok(-1); - m->type = TypePtr::dynamicCast(yyvsp[0]); + auto m = make_shared(-1); + m->type = dynamic_pointer_cast(yyvsp[0]); yyval = m; } -#line 2918 "src/Slice/Grammar.cpp" +#line 2915 "src/Slice/Grammar.cpp" break; case 95: /* return_type: ICE_VOID */ -#line 1193 "src/Slice/Grammar.y" +#line 1190 "src/Slice/Grammar.y" { - TaggedDefTokPtr m = new TaggedDefTok(-1); + auto m = make_shared(-1); yyval = m; } -#line 2927 "src/Slice/Grammar.cpp" +#line 2924 "src/Slice/Grammar.cpp" break; case 96: /* operation_preamble: return_type ICE_IDENT_OPEN */ -#line 1203 "src/Slice/Grammar.y" +#line 1200 "src/Slice/Grammar.y" { - TaggedDefTokPtr returnType = TaggedDefTokPtr::dynamicCast(yyvsp[-1]); - string name = StringTokPtr::dynamicCast(yyvsp[0])->v; - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(unit->currentContainer()); + auto returnType = dynamic_pointer_cast(yyvsp[-1]); + string name = dynamic_pointer_cast(yyvsp[0])->v; + auto interface = dynamic_pointer_cast(currentUnit->currentContainer()); if(interface) { OperationPtr op = interface->createOperation(name, returnType->type, returnType->isTagged, returnType->tag); if(op) { interface->checkIntroduced(name, op); - unit->pushContainer(op); + currentUnit->pushContainer(op); yyval = op; } else { - yyval = 0; + yyval = nullptr; } } else { - yyval = 0; + yyval = nullptr; } } -#line 2955 "src/Slice/Grammar.cpp" +#line 2952 "src/Slice/Grammar.cpp" break; case 97: /* operation_preamble: ICE_IDEMPOTENT return_type ICE_IDENT_OPEN */ -#line 1227 "src/Slice/Grammar.y" +#line 1224 "src/Slice/Grammar.y" { - TaggedDefTokPtr returnType = TaggedDefTokPtr::dynamicCast(yyvsp[-1]); - string name = StringTokPtr::dynamicCast(yyvsp[0])->v; - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(unit->currentContainer()); - if(interface) + auto returnType = dynamic_pointer_cast(yyvsp[-1]); + string name = dynamic_pointer_cast(yyvsp[0])->v; + auto interface = dynamic_pointer_cast(currentUnit->currentContainer()); + if (interface) { - OperationPtr op = interface->createOperation(name, returnType->type, returnType->isTagged, returnType->tag, - Operation::Idempotent); + OperationPtr op = interface->createOperation( + name, + returnType->type, + returnType->isTagged, + returnType->tag, + Operation::Idempotent); + if(op) { interface->checkIntroduced(name, op); - unit->pushContainer(op); + currentUnit->pushContainer(op); yyval = op; } else { - yyval = 0; + yyval = nullptr; } } else { - yyval = 0; + yyval = nullptr; } } -#line 2984 "src/Slice/Grammar.cpp" +#line 2986 "src/Slice/Grammar.cpp" break; case 98: /* operation_preamble: return_type ICE_KEYWORD_OPEN */ -#line 1252 "src/Slice/Grammar.y" +#line 1254 "src/Slice/Grammar.y" { - TaggedDefTokPtr returnType = TaggedDefTokPtr::dynamicCast(yyvsp[-1]); - string name = StringTokPtr::dynamicCast(yyvsp[0])->v; - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(unit->currentContainer()); + auto returnType = dynamic_pointer_cast(yyvsp[-1]); + string name = dynamic_pointer_cast(yyvsp[0])->v; + auto interface = dynamic_pointer_cast(currentUnit->currentContainer()); if(interface) { OperationPtr op = interface->createOperation(name, returnType->type, returnType->isTagged, returnType->tag); if(op) { - unit->pushContainer(op); - unit->error("keyword `" + name + "' cannot be used as operation name"); + currentUnit->pushContainer(op); + currentUnit->error("keyword `" + name + "' cannot be used as operation name"); yyval = op; // Dummy } else { - yyval = 0; + yyval = nullptr; } } else { - yyval = 0; + yyval = nullptr; } } -#line 3012 "src/Slice/Grammar.cpp" +#line 3014 "src/Slice/Grammar.cpp" break; case 99: /* operation_preamble: ICE_IDEMPOTENT return_type ICE_KEYWORD_OPEN */ -#line 1276 "src/Slice/Grammar.y" +#line 1278 "src/Slice/Grammar.y" { - TaggedDefTokPtr returnType = TaggedDefTokPtr::dynamicCast(yyvsp[-1]); - string name = StringTokPtr::dynamicCast(yyvsp[0])->v; - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(unit->currentContainer()); + auto returnType = dynamic_pointer_cast(yyvsp[-1]); + string name = dynamic_pointer_cast(yyvsp[0])->v; + auto interface = dynamic_pointer_cast(currentUnit->currentContainer()); if(interface) { - OperationPtr op = interface->createOperation(name, returnType->type, returnType->isTagged, returnType->tag, - Operation::Idempotent); - if(op) + OperationPtr op = interface->createOperation( + name, + returnType->type, + returnType->isTagged, + returnType->tag, + Operation::Idempotent); + if (op) { - unit->pushContainer(op); - unit->error("keyword `" + name + "' cannot be used as operation name"); + currentUnit->pushContainer(op); + currentUnit->error("keyword `" + name + "' cannot be used as operation name"); yyval = op; // Dummy } else @@ -3034,151 +3040,151 @@ YYLTYPE yylloc = yyloc_default; } else { - yyval = 0; + yyval = nullptr; } } -#line 3041 "src/Slice/Grammar.cpp" +#line 3047 "src/Slice/Grammar.cpp" break; case 100: /* @18: %empty */ -#line 1306 "src/Slice/Grammar.y" +#line 1312 "src/Slice/Grammar.y" { if(yyvsp[-2]) { - unit->popContainer(); + currentUnit->popContainer(); yyval = yyvsp[-2]; } else { - yyval = 0; + yyval = nullptr; } } -#line 3057 "src/Slice/Grammar.cpp" +#line 3063 "src/Slice/Grammar.cpp" break; case 101: /* operation: operation_preamble parameters ')' @18 throws */ -#line 1318 "src/Slice/Grammar.y" +#line 1324 "src/Slice/Grammar.y" { - OperationPtr op = OperationPtr::dynamicCast(yyvsp[-1]); - ExceptionListTokPtr el = ExceptionListTokPtr::dynamicCast(yyvsp[0]); + auto op = dynamic_pointer_cast(yyvsp[-1]); + auto el = dynamic_pointer_cast(yyvsp[0]); assert(el); if(op) { op->setExceptionList(el->v); } } -#line 3071 "src/Slice/Grammar.cpp" +#line 3077 "src/Slice/Grammar.cpp" break; case 102: /* @19: %empty */ -#line 1328 "src/Slice/Grammar.y" +#line 1334 "src/Slice/Grammar.y" { if(yyvsp[-2]) { - unit->popContainer(); + currentUnit->popContainer(); } yyerrok; } -#line 3083 "src/Slice/Grammar.cpp" +#line 3089 "src/Slice/Grammar.cpp" break; case 103: /* operation: operation_preamble error ')' @19 throws */ -#line 1336 "src/Slice/Grammar.y" +#line 1342 "src/Slice/Grammar.y" { - OperationPtr op = OperationPtr::dynamicCast(yyvsp[-1]); - ExceptionListTokPtr el = ExceptionListTokPtr::dynamicCast(yyvsp[0]); + auto op = dynamic_pointer_cast(yyvsp[-1]); + auto el = dynamic_pointer_cast(yyvsp[0]); assert(el); if(op) { op->setExceptionList(el->v); // Dummy } } -#line 3097 "src/Slice/Grammar.cpp" +#line 3103 "src/Slice/Grammar.cpp" break; case 104: /* interface_id: ICE_INTERFACE ICE_IDENTIFIER */ -#line 1351 "src/Slice/Grammar.y" +#line 1357 "src/Slice/Grammar.y" { yyval = yyvsp[0]; } -#line 3105 "src/Slice/Grammar.cpp" +#line 3111 "src/Slice/Grammar.cpp" break; case 105: /* interface_id: ICE_INTERFACE keyword */ -#line 1355 "src/Slice/Grammar.y" +#line 1361 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - unit->error("keyword `" + ident->v + "' cannot be used as interface name"); + auto ident = dynamic_pointer_cast(yyvsp[0]); + currentUnit->error("keyword `" + ident->v + "' cannot be used as interface name"); yyval = yyvsp[0]; // Dummy } -#line 3115 "src/Slice/Grammar.cpp" +#line 3121 "src/Slice/Grammar.cpp" break; case 106: /* interface_decl: interface_id */ -#line 1366 "src/Slice/Grammar.y" +#line 1372 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast(yyvsp[0]); + auto cont = currentUnit->currentContainer(); InterfaceDeclPtr cl = cont->createInterfaceDecl(ident->v); cont->checkIntroduced(ident->v, cl); yyval = cl; } -#line 3127 "src/Slice/Grammar.cpp" +#line 3133 "src/Slice/Grammar.cpp" break; case 107: /* @20: %empty */ -#line 1379 "src/Slice/Grammar.y" +#line 1385 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[-1]); - ContainerPtr cont = unit->currentContainer(); - InterfaceListTokPtr bases = InterfaceListTokPtr::dynamicCast(yyvsp[0]); + auto ident = dynamic_pointer_cast(yyvsp[-1]); + ContainerPtr cont = currentUnit->currentContainer(); + auto bases = dynamic_pointer_cast(yyvsp[0]); InterfaceDefPtr interface = cont->createInterfaceDef(ident->v, bases->v); if(interface) { cont->checkIntroduced(ident->v, interface); - unit->pushContainer(interface); + currentUnit->pushContainer(interface); yyval = interface; } else { - yyval = 0; + yyval = nullptr; } } -#line 3148 "src/Slice/Grammar.cpp" +#line 3154 "src/Slice/Grammar.cpp" break; case 108: /* interface_def: interface_id interface_extends @20 '{' operations '}' */ -#line 1396 "src/Slice/Grammar.y" +#line 1402 "src/Slice/Grammar.y" { if(yyvsp[-3]) { - unit->popContainer(); + currentUnit->popContainer(); yyval = yyvsp[-3]; } else { - yyval = 0; + yyval = nullptr; } } -#line 3164 "src/Slice/Grammar.cpp" +#line 3170 "src/Slice/Grammar.cpp" break; case 109: /* interface_list: scoped_name ',' interface_list */ -#line 1413 "src/Slice/Grammar.y" +#line 1419 "src/Slice/Grammar.y" { - InterfaceListTokPtr intfs = InterfaceListTokPtr::dynamicCast(yyvsp[0]); - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[-2]); - ContainerPtr cont = unit->currentContainer(); + auto intfs = dynamic_pointer_cast(yyvsp[0]); + auto scoped = dynamic_pointer_cast(yyvsp[-2]); + ContainerPtr cont = currentUnit->currentContainer(); TypeList types = cont->lookupType(scoped->v); if(!types.empty()) { - InterfaceDeclPtr interface = InterfaceDeclPtr::dynamicCast(types.front()); + auto interface = dynamic_pointer_cast(types.front()); if(!interface) { string msg = "`"; msg += scoped->v; msg += "' is not an interface"; - unit->error(msg); + currentUnit->error(msg); } else { @@ -3188,7 +3194,7 @@ YYLTYPE yylloc = yyloc_default; string msg = "`"; msg += scoped->v; msg += "' has been declared but not defined"; - unit->error(msg); + currentUnit->error(msg); } else { @@ -3199,25 +3205,25 @@ YYLTYPE yylloc = yyloc_default; } yyval = intfs; } -#line 3203 "src/Slice/Grammar.cpp" +#line 3209 "src/Slice/Grammar.cpp" break; case 110: /* interface_list: scoped_name */ -#line 1448 "src/Slice/Grammar.y" +#line 1454 "src/Slice/Grammar.y" { - InterfaceListTokPtr intfs = new InterfaceListTok; - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto intfs = make_shared(); + auto scoped = dynamic_pointer_cast(yyvsp[0]); + ContainerPtr cont = currentUnit->currentContainer(); TypeList types = cont->lookupType(scoped->v); if(!types.empty()) { - InterfaceDeclPtr interface = InterfaceDeclPtr::dynamicCast(types.front()); + auto interface = dynamic_pointer_cast(types.front()); if(!interface) { string msg = "`"; msg += scoped->v; msg += "' is not an interface"; - unit->error(msg); // $$ is a dummy + currentUnit->error(msg); // $$ is a dummy } else { @@ -3227,7 +3233,7 @@ YYLTYPE yylloc = yyloc_default; string msg = "`"; msg += scoped->v; msg += "' has been declared but not defined"; - unit->error(msg); // $$ is a dummy + currentUnit->error(msg); // $$ is a dummy } else { @@ -3238,105 +3244,105 @@ YYLTYPE yylloc = yyloc_default; } yyval = intfs; } -#line 3242 "src/Slice/Grammar.cpp" +#line 3248 "src/Slice/Grammar.cpp" break; case 111: /* interface_list: ICE_OBJECT */ -#line 1483 "src/Slice/Grammar.y" +#line 1489 "src/Slice/Grammar.y" { - unit->error("illegal inheritance from type Object"); - yyval = new InterfaceListTok; // Dummy + currentUnit->error("illegal inheritance from type Object"); + yyval = make_shared(); // Dummy } -#line 3251 "src/Slice/Grammar.cpp" +#line 3257 "src/Slice/Grammar.cpp" break; case 112: /* interface_list: ICE_VALUE */ -#line 1488 "src/Slice/Grammar.y" +#line 1494 "src/Slice/Grammar.y" { - unit->error("illegal inheritance from type Value"); - yyval = new ClassListTok; // Dummy + currentUnit->error("illegal inheritance from type Value"); + yyval = make_shared(); // Dummy } -#line 3260 "src/Slice/Grammar.cpp" +#line 3266 "src/Slice/Grammar.cpp" break; case 113: /* interface_extends: extends interface_list */ -#line 1498 "src/Slice/Grammar.y" +#line 1504 "src/Slice/Grammar.y" { yyval = yyvsp[0]; } -#line 3268 "src/Slice/Grammar.cpp" +#line 3274 "src/Slice/Grammar.cpp" break; case 114: /* interface_extends: %empty */ -#line 1502 "src/Slice/Grammar.y" +#line 1508 "src/Slice/Grammar.y" { - yyval = new InterfaceListTok; + yyval = make_shared(); } -#line 3276 "src/Slice/Grammar.cpp" +#line 3282 "src/Slice/Grammar.cpp" break; case 115: /* operations: meta_data operation ';' operations */ -#line 1511 "src/Slice/Grammar.y" +#line 1517 "src/Slice/Grammar.y" { - StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]); - ContainedPtr contained = ContainedPtr::dynamicCast(yyvsp[-2]); + auto metaData = dynamic_pointer_cast(yyvsp[-3]); + auto contained = dynamic_pointer_cast(yyvsp[-2]); if(contained && !metaData->v.empty()) { contained->setMetaData(metaData->v); } } -#line 3289 "src/Slice/Grammar.cpp" +#line 3295 "src/Slice/Grammar.cpp" break; case 116: /* operations: error ';' operations */ -#line 1520 "src/Slice/Grammar.y" +#line 1526 "src/Slice/Grammar.y" { } -#line 3296 "src/Slice/Grammar.cpp" +#line 3302 "src/Slice/Grammar.cpp" break; case 117: /* operations: meta_data operation */ -#line 1523 "src/Slice/Grammar.y" +#line 1529 "src/Slice/Grammar.y" { - unit->error("`;' missing after definition"); + currentUnit->error("`;' missing after definition"); } -#line 3304 "src/Slice/Grammar.cpp" +#line 3310 "src/Slice/Grammar.cpp" break; case 118: /* operations: %empty */ -#line 1527 "src/Slice/Grammar.y" +#line 1533 "src/Slice/Grammar.y" { } -#line 3311 "src/Slice/Grammar.cpp" +#line 3317 "src/Slice/Grammar.cpp" break; case 119: /* exception_list: exception ',' exception_list */ -#line 1535 "src/Slice/Grammar.y" +#line 1541 "src/Slice/Grammar.y" { - ExceptionPtr exception = ExceptionPtr::dynamicCast(yyvsp[-2]); - ExceptionListTokPtr exceptionList = ExceptionListTokPtr::dynamicCast(yyvsp[0]); + auto exception = dynamic_pointer_cast(yyvsp[-2]); + auto exceptionList = dynamic_pointer_cast(yyvsp[0]); exceptionList->v.push_front(exception); yyval = exceptionList; } -#line 3322 "src/Slice/Grammar.cpp" +#line 3328 "src/Slice/Grammar.cpp" break; case 120: /* exception_list: exception */ -#line 1542 "src/Slice/Grammar.y" +#line 1548 "src/Slice/Grammar.y" { - ExceptionPtr exception = ExceptionPtr::dynamicCast(yyvsp[0]); - ExceptionListTokPtr exceptionList = new ExceptionListTok; + auto exception = dynamic_pointer_cast(yyvsp[0]); + auto exceptionList = make_shared(); exceptionList->v.push_front(exception); yyval = exceptionList; } -#line 3333 "src/Slice/Grammar.cpp" +#line 3339 "src/Slice/Grammar.cpp" break; case 121: /* exception: scoped_name */ -#line 1554 "src/Slice/Grammar.y" +#line 1560 "src/Slice/Grammar.y" { - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast(yyvsp[0]); + ContainerPtr cont = currentUnit->currentContainer(); ExceptionPtr exception = cont->lookupException(scoped->v); if(!exception) { @@ -3345,96 +3351,96 @@ YYLTYPE yylloc = yyloc_default; cont->checkIntroduced(scoped->v, exception); yyval = exception; } -#line 3349 "src/Slice/Grammar.cpp" +#line 3355 "src/Slice/Grammar.cpp" break; case 122: /* exception: keyword */ -#line 1566 "src/Slice/Grammar.y" +#line 1572 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - unit->error("keyword `" + ident->v + "' cannot be used as exception name"); - yyval = unit->currentContainer()->createException(IceUtil::generateUUID(), 0, Dummy); // Dummy + auto ident = dynamic_pointer_cast(yyvsp[0]); + currentUnit->error("keyword `" + ident->v + "' cannot be used as exception name"); + yyval = currentUnit->currentContainer()->createException(IceUtil::generateUUID(), 0, Dummy); // Dummy } -#line 3359 "src/Slice/Grammar.cpp" +#line 3365 "src/Slice/Grammar.cpp" break; case 123: /* sequence_def: ICE_SEQUENCE '<' meta_data type '>' ICE_IDENTIFIER */ -#line 1577 "src/Slice/Grammar.y" +#line 1583 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]); - TypePtr type = TypePtr::dynamicCast(yyvsp[-2]); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast(yyvsp[0]); + auto metaData = dynamic_pointer_cast(yyvsp[-3]); + auto type = dynamic_pointer_cast(yyvsp[-2]); + ContainerPtr cont = currentUnit->currentContainer(); yyval = cont->createSequence(ident->v, type, metaData->v); } -#line 3371 "src/Slice/Grammar.cpp" +#line 3377 "src/Slice/Grammar.cpp" break; case 124: /* sequence_def: ICE_SEQUENCE '<' meta_data type '>' keyword */ -#line 1585 "src/Slice/Grammar.y" +#line 1591 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]); - TypePtr type = TypePtr::dynamicCast(yyvsp[-2]); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast(yyvsp[0]); + auto metaData = dynamic_pointer_cast(yyvsp[-3]); + auto type = dynamic_pointer_cast(yyvsp[-2]); + ContainerPtr cont = currentUnit->currentContainer(); yyval = cont->createSequence(ident->v, type, metaData->v); // Dummy - unit->error("keyword `" + ident->v + "' cannot be used as sequence name"); + currentUnit->error("keyword `" + ident->v + "' cannot be used as sequence name"); } -#line 3384 "src/Slice/Grammar.cpp" +#line 3390 "src/Slice/Grammar.cpp" break; case 125: /* dictionary_def: ICE_DICTIONARY '<' meta_data type ',' meta_data type '>' ICE_IDENTIFIER */ -#line 1599 "src/Slice/Grammar.y" -{ - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - StringListTokPtr keyMetaData = StringListTokPtr::dynamicCast(yyvsp[-6]); - TypePtr keyType = TypePtr::dynamicCast(yyvsp[-5]); - StringListTokPtr valueMetaData = StringListTokPtr::dynamicCast(yyvsp[-3]); - TypePtr valueType = TypePtr::dynamicCast(yyvsp[-2]); - ContainerPtr cont = unit->currentContainer(); +#line 1605 "src/Slice/Grammar.y" +{ + auto ident = dynamic_pointer_cast(yyvsp[0]); + auto keyMetaData = dynamic_pointer_cast(yyvsp[-6]); + auto keyType = dynamic_pointer_cast(yyvsp[-5]); + auto valueMetaData = dynamic_pointer_cast(yyvsp[-3]); + auto valueType = dynamic_pointer_cast(yyvsp[-2]); + ContainerPtr cont = currentUnit->currentContainer(); yyval = cont->createDictionary(ident->v, keyType, keyMetaData->v, valueType, valueMetaData->v); } -#line 3398 "src/Slice/Grammar.cpp" +#line 3404 "src/Slice/Grammar.cpp" break; case 126: /* dictionary_def: ICE_DICTIONARY '<' meta_data type ',' meta_data type '>' keyword */ -#line 1609 "src/Slice/Grammar.y" -{ - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - StringListTokPtr keyMetaData = StringListTokPtr::dynamicCast(yyvsp[-6]); - TypePtr keyType = TypePtr::dynamicCast(yyvsp[-5]); - StringListTokPtr valueMetaData = StringListTokPtr::dynamicCast(yyvsp[-3]); - TypePtr valueType = TypePtr::dynamicCast(yyvsp[-2]); - ContainerPtr cont = unit->currentContainer(); +#line 1615 "src/Slice/Grammar.y" +{ + auto ident = dynamic_pointer_cast(yyvsp[0]); + auto keyMetaData = dynamic_pointer_cast(yyvsp[-6]); + auto keyType = dynamic_pointer_cast(yyvsp[-5]); + auto valueMetaData = dynamic_pointer_cast(yyvsp[-3]); + auto valueType = dynamic_pointer_cast(yyvsp[-2]); + ContainerPtr cont = currentUnit->currentContainer(); yyval = cont->createDictionary(ident->v, keyType, keyMetaData->v, valueType, valueMetaData->v); // Dummy - unit->error("keyword `" + ident->v + "' cannot be used as dictionary name"); + currentUnit->error("keyword `" + ident->v + "' cannot be used as dictionary name"); } -#line 3413 "src/Slice/Grammar.cpp" +#line 3419 "src/Slice/Grammar.cpp" break; case 127: /* enum_id: ICE_ENUM ICE_IDENTIFIER */ -#line 1625 "src/Slice/Grammar.y" +#line 1631 "src/Slice/Grammar.y" { yyval = yyvsp[0]; } -#line 3421 "src/Slice/Grammar.cpp" +#line 3427 "src/Slice/Grammar.cpp" break; case 128: /* enum_id: ICE_ENUM keyword */ -#line 1629 "src/Slice/Grammar.y" +#line 1635 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - unit->error("keyword `" + ident->v + "' cannot be used as enumeration name"); + auto ident = dynamic_pointer_cast(yyvsp[0]); + currentUnit->error("keyword `" + ident->v + "' cannot be used as enumeration name"); yyval = yyvsp[0]; // Dummy } -#line 3431 "src/Slice/Grammar.cpp" +#line 3437 "src/Slice/Grammar.cpp" break; case 129: /* @21: %empty */ -#line 1640 "src/Slice/Grammar.y" +#line 1646 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast(yyvsp[0]); + ContainerPtr cont = currentUnit->currentContainer(); EnumPtr en = cont->createEnum(ident->v); if(en) { @@ -3444,74 +3450,74 @@ YYLTYPE yylloc = yyloc_default; { en = cont->createEnum(IceUtil::generateUUID(), Dummy); } - unit->pushContainer(en); + currentUnit->pushContainer(en); yyval = en; } -#line 3451 "src/Slice/Grammar.cpp" +#line 3457 "src/Slice/Grammar.cpp" break; case 130: /* enum_def: enum_id @21 '{' enumerator_list '}' */ -#line 1656 "src/Slice/Grammar.y" +#line 1662 "src/Slice/Grammar.y" { - EnumPtr en = EnumPtr::dynamicCast(yyvsp[-3]); + auto en = dynamic_pointer_cast(yyvsp[-3]); if(en) { - EnumeratorListTokPtr enumerators = EnumeratorListTokPtr::dynamicCast(yyvsp[-1]); + auto enumerators = dynamic_pointer_cast(yyvsp[-1]); if(enumerators->v.empty()) { - unit->error("enum `" + en->name() + "' must have at least one enumerator"); + currentUnit->error("enum `" + en->name() + "' must have at least one enumerator"); } - unit->popContainer(); + currentUnit->popContainer(); } yyval = yyvsp[-3]; } -#line 3469 "src/Slice/Grammar.cpp" +#line 3475 "src/Slice/Grammar.cpp" break; case 131: /* @22: %empty */ -#line 1671 "src/Slice/Grammar.y" +#line 1677 "src/Slice/Grammar.y" { - unit->error("missing enumeration name"); - ContainerPtr cont = unit->currentContainer(); + currentUnit->error("missing enumeration name"); + ContainerPtr cont = currentUnit->currentContainer(); EnumPtr en = cont->createEnum(IceUtil::generateUUID(), Dummy); - unit->pushContainer(en); + currentUnit->pushContainer(en); yyval = en; } -#line 3481 "src/Slice/Grammar.cpp" +#line 3487 "src/Slice/Grammar.cpp" break; case 132: /* enum_def: ICE_ENUM @22 '{' enumerator_list '}' */ -#line 1679 "src/Slice/Grammar.y" +#line 1685 "src/Slice/Grammar.y" { - unit->popContainer(); + currentUnit->popContainer(); yyval = yyvsp[-4]; } -#line 3490 "src/Slice/Grammar.cpp" +#line 3496 "src/Slice/Grammar.cpp" break; case 133: /* enumerator_list: enumerator ',' enumerator_list */ -#line 1689 "src/Slice/Grammar.y" +#line 1695 "src/Slice/Grammar.y" { - EnumeratorListTokPtr ens = EnumeratorListTokPtr::dynamicCast(yyvsp[-2]); - ens->v.splice(ens->v.end(), EnumeratorListTokPtr::dynamicCast(yyvsp[0])->v); + auto ens = dynamic_pointer_cast(yyvsp[-2]); + ens->v.splice(ens->v.end(), dynamic_pointer_cast(yyvsp[0])->v); yyval = ens; } -#line 3500 "src/Slice/Grammar.cpp" +#line 3506 "src/Slice/Grammar.cpp" break; case 134: /* enumerator_list: enumerator */ -#line 1695 "src/Slice/Grammar.y" +#line 1701 "src/Slice/Grammar.y" { } -#line 3507 "src/Slice/Grammar.cpp" +#line 3513 "src/Slice/Grammar.cpp" break; case 135: /* enumerator: ICE_IDENTIFIER */ -#line 1703 "src/Slice/Grammar.y" +#line 1709 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - EnumeratorListTokPtr ens = new EnumeratorListTok; - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast(yyvsp[0]); + auto ens = make_shared(); + ContainerPtr cont = currentUnit->currentContainer(); EnumeratorPtr en = cont->createEnumerator(ident->v); if(en) { @@ -3519,21 +3525,21 @@ YYLTYPE yylloc = yyloc_default; } yyval = ens; } -#line 3523 "src/Slice/Grammar.cpp" +#line 3529 "src/Slice/Grammar.cpp" break; case 136: /* enumerator: ICE_IDENTIFIER '=' enumerator_initializer */ -#line 1715 "src/Slice/Grammar.y" +#line 1721 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[-2]); - EnumeratorListTokPtr ens = new EnumeratorListTok; - ContainerPtr cont = unit->currentContainer(); - IntegerTokPtr intVal = IntegerTokPtr::dynamicCast(yyvsp[0]); + auto ident = dynamic_pointer_cast(yyvsp[-2]); + auto ens = make_shared(); + ContainerPtr cont = currentUnit->currentContainer(); + auto intVal = dynamic_pointer_cast(yyvsp[0]); if(intVal) { if(intVal->v < 0 || intVal->v > Int32Max) { - unit->error("value for enumerator `" + ident->v + "' is out of range"); + currentUnit->error("value for enumerator `" + ident->v + "' is out of range"); } else { @@ -3543,56 +3549,56 @@ YYLTYPE yylloc = yyloc_default; } yyval = ens; } -#line 3547 "src/Slice/Grammar.cpp" +#line 3553 "src/Slice/Grammar.cpp" break; case 137: /* enumerator: keyword */ -#line 1735 "src/Slice/Grammar.y" +#line 1741 "src/Slice/Grammar.y" { - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - unit->error("keyword `" + ident->v + "' cannot be used as enumerator"); - EnumeratorListTokPtr ens = new EnumeratorListTok; // Dummy + auto ident = dynamic_pointer_cast(yyvsp[0]); + currentUnit->error("keyword `" + ident->v + "' cannot be used as enumerator"); + auto ens = make_shared(); // Dummy yyval = ens; } -#line 3558 "src/Slice/Grammar.cpp" +#line 3564 "src/Slice/Grammar.cpp" break; case 138: /* enumerator: %empty */ -#line 1742 "src/Slice/Grammar.y" +#line 1748 "src/Slice/Grammar.y" { - EnumeratorListTokPtr ens = new EnumeratorListTok; + auto ens = make_shared(); yyval = ens; // Dummy } -#line 3567 "src/Slice/Grammar.cpp" +#line 3573 "src/Slice/Grammar.cpp" break; case 139: /* enumerator_initializer: ICE_INTEGER_LITERAL */ -#line 1752 "src/Slice/Grammar.y" +#line 1758 "src/Slice/Grammar.y" { yyval = yyvsp[0]; } -#line 3575 "src/Slice/Grammar.cpp" +#line 3581 "src/Slice/Grammar.cpp" break; case 140: /* enumerator_initializer: scoped_name */ -#line 1756 "src/Slice/Grammar.y" +#line 1762 "src/Slice/Grammar.y" { - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]); - ContainedList cl = unit->currentContainer()->lookupContained(scoped->v); + auto scoped = dynamic_pointer_cast(yyvsp[0]); + ContainedList cl = currentUnit->currentContainer()->lookupContained(scoped->v); IntegerTokPtr tok; if(!cl.empty()) { - ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + auto constant = dynamic_pointer_cast(cl.front()); if(constant) { - unit->currentContainer()->checkIntroduced(scoped->v, constant); - BuiltinPtr b = BuiltinPtr::dynamicCast(constant->type()); + currentUnit->currentContainer()->checkIntroduced(scoped->v, constant); + auto b = dynamic_pointer_cast(constant->type()); if(b && b->isIntegralType()) { IceUtil::Int64 v; if(IceUtilInternal::stringToInt64(constant->value(), v)) { - tok = new IntegerTok; + tok = make_shared(); tok->v = v; tok->literal = constant->value(); } @@ -3603,255 +3609,255 @@ YYLTYPE yylloc = yyloc_default; if(!tok) { string msg = "illegal initializer: `" + scoped->v + "' is not an integer constant"; - unit->error(msg); // $$ is dummy + currentUnit->error(msg); // $$ is dummy } yyval = tok; } -#line 3612 "src/Slice/Grammar.cpp" +#line 3618 "src/Slice/Grammar.cpp" break; case 141: /* out_qualifier: ICE_OUT */ -#line 1794 "src/Slice/Grammar.y" +#line 1800 "src/Slice/Grammar.y" { - BoolTokPtr out = new BoolTok; + auto out = make_shared(); out->v = true; yyval = out; } -#line 3622 "src/Slice/Grammar.cpp" +#line 3628 "src/Slice/Grammar.cpp" break; case 142: /* out_qualifier: %empty */ -#line 1800 "src/Slice/Grammar.y" +#line 1806 "src/Slice/Grammar.y" { - BoolTokPtr out = new BoolTok; + auto out = make_shared(); out->v = false; yyval = out; } -#line 3632 "src/Slice/Grammar.cpp" +#line 3638 "src/Slice/Grammar.cpp" break; case 143: /* parameters: %empty */ -#line 1811 "src/Slice/Grammar.y" +#line 1817 "src/Slice/Grammar.y" { } -#line 3639 "src/Slice/Grammar.cpp" +#line 3645 "src/Slice/Grammar.cpp" break; case 144: /* parameters: out_qualifier meta_data tagged_type_id */ -#line 1814 "src/Slice/Grammar.y" +#line 1820 "src/Slice/Grammar.y" { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-2]); - TaggedDefTokPtr tsp = TaggedDefTokPtr::dynamicCast(yyvsp[0]); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); - if(op) + auto isOutParam = dynamic_pointer_cast(yyvsp[-2]); + auto tsp = dynamic_pointer_cast(yyvsp[0]); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); + if (op) { ParamDeclPtr pd = op->createParamDecl(tsp->name, tsp->type, isOutParam->v, tsp->isTagged, tsp->tag); - unit->currentContainer()->checkIntroduced(tsp->name, pd); - StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-1]); + currentUnit->currentContainer()->checkIntroduced(tsp->name, pd); + auto metaData = dynamic_pointer_cast(yyvsp[-1]); if(!metaData->v.empty()) { pd->setMetaData(metaData->v); } } } -#line 3659 "src/Slice/Grammar.cpp" +#line 3665 "src/Slice/Grammar.cpp" break; case 145: /* parameters: parameters ',' out_qualifier meta_data tagged_type_id */ -#line 1830 "src/Slice/Grammar.y" +#line 1836 "src/Slice/Grammar.y" { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-2]); - TaggedDefTokPtr tsp = TaggedDefTokPtr::dynamicCast(yyvsp[0]); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); + auto isOutParam = dynamic_pointer_cast(yyvsp[-2]); + auto tsp = dynamic_pointer_cast(yyvsp[0]); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); if(op) { ParamDeclPtr pd = op->createParamDecl(tsp->name, tsp->type, isOutParam->v, tsp->isTagged, tsp->tag); - unit->currentContainer()->checkIntroduced(tsp->name, pd); - StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-1]); + currentUnit->currentContainer()->checkIntroduced(tsp->name, pd); + auto metaData = dynamic_pointer_cast(yyvsp[-1]); if(!metaData->v.empty()) { pd->setMetaData(metaData->v); } } } -#line 3679 "src/Slice/Grammar.cpp" +#line 3685 "src/Slice/Grammar.cpp" break; case 146: /* parameters: out_qualifier meta_data type keyword */ -#line 1846 "src/Slice/Grammar.y" +#line 1852 "src/Slice/Grammar.y" { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-3]); - TypePtr type = TypePtr::dynamicCast(yyvsp[-1]); - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); - if(op) + auto isOutParam = dynamic_pointer_cast(yyvsp[-3]); + auto type = dynamic_pointer_cast(yyvsp[-1]); + auto ident = dynamic_pointer_cast(yyvsp[0]); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); + if (op) { op->createParamDecl(ident->v, type, isOutParam->v, false, 0); // Dummy - unit->error("keyword `" + ident->v + "' cannot be used as parameter name"); + currentUnit->error("keyword `" + ident->v + "' cannot be used as parameter name"); } } -#line 3695 "src/Slice/Grammar.cpp" +#line 3701 "src/Slice/Grammar.cpp" break; case 147: /* parameters: parameters ',' out_qualifier meta_data type keyword */ -#line 1858 "src/Slice/Grammar.y" +#line 1864 "src/Slice/Grammar.y" { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-3]); - TypePtr type = TypePtr::dynamicCast(yyvsp[-1]); - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); - if(op) + auto isOutParam = dynamic_pointer_cast(yyvsp[-3]); + auto type = dynamic_pointer_cast(yyvsp[-1]); + auto ident = dynamic_pointer_cast(yyvsp[0]); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); + if (op) { op->createParamDecl(ident->v, type, isOutParam->v, false, 0); // Dummy - unit->error("keyword `" + ident->v + "' cannot be used as parameter name"); + currentUnit->error("keyword `" + ident->v + "' cannot be used as parameter name"); } } -#line 3711 "src/Slice/Grammar.cpp" +#line 3717 "src/Slice/Grammar.cpp" break; case 148: /* parameters: out_qualifier meta_data type */ -#line 1870 "src/Slice/Grammar.y" +#line 1876 "src/Slice/Grammar.y" { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-2]); - TypePtr type = TypePtr::dynamicCast(yyvsp[0]); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); - if(op) + auto isOutParam = dynamic_pointer_cast(yyvsp[-2]); + auto type = dynamic_pointer_cast(yyvsp[0]); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); + if (op) { op->createParamDecl(IceUtil::generateUUID(), type, isOutParam->v, false, 0); // Dummy - unit->error("missing parameter name"); + currentUnit->error("missing parameter name"); } } -#line 3726 "src/Slice/Grammar.cpp" +#line 3732 "src/Slice/Grammar.cpp" break; case 149: /* parameters: parameters ',' out_qualifier meta_data type */ -#line 1881 "src/Slice/Grammar.y" +#line 1887 "src/Slice/Grammar.y" { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-2]); - TypePtr type = TypePtr::dynamicCast(yyvsp[0]); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); - if(op) + auto isOutParam = dynamic_pointer_cast(yyvsp[-2]); + auto type = dynamic_pointer_cast(yyvsp[0]); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); + if (op) { op->createParamDecl(IceUtil::generateUUID(), type, isOutParam->v, false, 0); // Dummy - unit->error("missing parameter name"); + currentUnit->error("missing parameter name"); } } -#line 3741 "src/Slice/Grammar.cpp" +#line 3747 "src/Slice/Grammar.cpp" break; case 150: /* throws: ICE_THROWS exception_list */ -#line 1897 "src/Slice/Grammar.y" +#line 1903 "src/Slice/Grammar.y" { yyval = yyvsp[0]; } -#line 3749 "src/Slice/Grammar.cpp" +#line 3755 "src/Slice/Grammar.cpp" break; case 151: /* throws: %empty */ -#line 1901 "src/Slice/Grammar.y" +#line 1907 "src/Slice/Grammar.y" { - yyval = new ExceptionListTok; + yyval = make_shared(); } -#line 3757 "src/Slice/Grammar.cpp" +#line 3763 "src/Slice/Grammar.cpp" break; case 152: /* scoped_name: ICE_IDENTIFIER */ -#line 1910 "src/Slice/Grammar.y" +#line 1916 "src/Slice/Grammar.y" { } -#line 3764 "src/Slice/Grammar.cpp" +#line 3770 "src/Slice/Grammar.cpp" break; case 153: /* scoped_name: ICE_SCOPED_IDENTIFIER */ -#line 1913 "src/Slice/Grammar.y" +#line 1919 "src/Slice/Grammar.y" { } -#line 3771 "src/Slice/Grammar.cpp" +#line 3777 "src/Slice/Grammar.cpp" break; case 154: /* builtin: ICE_BOOL */ -#line 1920 "src/Slice/Grammar.y" +#line 1926 "src/Slice/Grammar.y" {} -#line 3777 "src/Slice/Grammar.cpp" +#line 3783 "src/Slice/Grammar.cpp" break; case 155: /* builtin: ICE_BYTE */ -#line 1921 "src/Slice/Grammar.y" +#line 1927 "src/Slice/Grammar.y" {} -#line 3783 "src/Slice/Grammar.cpp" +#line 3789 "src/Slice/Grammar.cpp" break; case 156: /* builtin: ICE_SHORT */ -#line 1922 "src/Slice/Grammar.y" +#line 1928 "src/Slice/Grammar.y" {} -#line 3789 "src/Slice/Grammar.cpp" +#line 3795 "src/Slice/Grammar.cpp" break; case 157: /* builtin: ICE_INT */ -#line 1923 "src/Slice/Grammar.y" +#line 1929 "src/Slice/Grammar.y" {} -#line 3795 "src/Slice/Grammar.cpp" +#line 3801 "src/Slice/Grammar.cpp" break; case 158: /* builtin: ICE_LONG */ -#line 1924 "src/Slice/Grammar.y" +#line 1930 "src/Slice/Grammar.y" {} -#line 3801 "src/Slice/Grammar.cpp" +#line 3807 "src/Slice/Grammar.cpp" break; case 159: /* builtin: ICE_FLOAT */ -#line 1925 "src/Slice/Grammar.y" +#line 1931 "src/Slice/Grammar.y" {} -#line 3807 "src/Slice/Grammar.cpp" +#line 3813 "src/Slice/Grammar.cpp" break; case 160: /* builtin: ICE_DOUBLE */ -#line 1926 "src/Slice/Grammar.y" +#line 1932 "src/Slice/Grammar.y" {} -#line 3813 "src/Slice/Grammar.cpp" +#line 3819 "src/Slice/Grammar.cpp" break; case 161: /* builtin: ICE_STRING */ -#line 1927 "src/Slice/Grammar.y" +#line 1933 "src/Slice/Grammar.y" {} -#line 3819 "src/Slice/Grammar.cpp" +#line 3825 "src/Slice/Grammar.cpp" break; case 162: /* builtin: ICE_OBJECT */ -#line 1928 "src/Slice/Grammar.y" +#line 1934 "src/Slice/Grammar.y" {} -#line 3825 "src/Slice/Grammar.cpp" +#line 3831 "src/Slice/Grammar.cpp" break; case 163: /* builtin: ICE_VALUE */ -#line 1929 "src/Slice/Grammar.y" +#line 1935 "src/Slice/Grammar.y" {} -#line 3831 "src/Slice/Grammar.cpp" +#line 3837 "src/Slice/Grammar.cpp" break; case 164: /* type: ICE_OBJECT '*' */ -#line 1935 "src/Slice/Grammar.y" +#line 1941 "src/Slice/Grammar.y" { - yyval = unit->builtin(Builtin::KindObjectProxy); + yyval = currentUnit->builtin(Builtin::KindObjectProxy); } -#line 3839 "src/Slice/Grammar.cpp" +#line 3845 "src/Slice/Grammar.cpp" break; case 165: /* type: builtin */ -#line 1939 "src/Slice/Grammar.y" +#line 1945 "src/Slice/Grammar.y" { - StringTokPtr typeName = StringTokPtr::dynamicCast(yyvsp[0]); - yyval = unit->builtin(Builtin::kindFromString(typeName->v).value()); + auto typeName = dynamic_pointer_cast(yyvsp[0]); + yyval = currentUnit->builtin(Builtin::kindFromString(typeName->v).value()); } -#line 3848 "src/Slice/Grammar.cpp" +#line 3854 "src/Slice/Grammar.cpp" break; case 166: /* type: scoped_name */ -#line 1944 "src/Slice/Grammar.y" +#line 1950 "src/Slice/Grammar.y" { - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast(yyvsp[0]); + ContainerPtr cont = currentUnit->currentContainer(); if(cont) { TypeList types = cont->lookupType(scoped->v); @@ -3861,13 +3867,13 @@ YYLTYPE yylloc = yyloc_default; } TypePtr firstType = types.front(); - InterfaceDeclPtr interface = InterfaceDeclPtr::dynamicCast(firstType); + auto interface = dynamic_pointer_cast(firstType); if(interface) { string msg = "add a '*' after the interface name to specify its proxy type: '"; msg += scoped->v; msg += "*'"; - unit->error(msg); + currentUnit->error(msg); YYERROR; // Can't continue, jump to next yyerrok } cont->checkIntroduced(scoped->v); @@ -3876,17 +3882,17 @@ YYLTYPE yylloc = yyloc_default; } else { - yyval = 0; + yyval = nullptr; } } -#line 3883 "src/Slice/Grammar.cpp" +#line 3889 "src/Slice/Grammar.cpp" break; case 167: /* type: scoped_name '*' */ -#line 1975 "src/Slice/Grammar.y" +#line 1981 "src/Slice/Grammar.y" { - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[-1]); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast(yyvsp[-1]); + ContainerPtr cont = currentUnit->currentContainer(); if(cont) { TypeList types = cont->lookupType(scoped->v); @@ -3896,13 +3902,13 @@ YYLTYPE yylloc = yyloc_default; } TypePtr firstType = types.front(); - InterfaceDeclPtr interface = InterfaceDeclPtr::dynamicCast(firstType); + auto interface = dynamic_pointer_cast(firstType); if(!interface) { string msg = "`"; msg += scoped->v; msg += "' must be an interface"; - unit->error(msg); + currentUnit->error(msg); YYERROR; // Can't continue, jump to next yyerrok } cont->checkIntroduced(scoped->v); @@ -3911,345 +3917,345 @@ YYLTYPE yylloc = yyloc_default; } else { - yyval = 0; + yyval = nullptr; } } -#line 3918 "src/Slice/Grammar.cpp" +#line 3924 "src/Slice/Grammar.cpp" break; case 168: /* string_literal: ICE_STRING_LITERAL string_literal */ -#line 2011 "src/Slice/Grammar.y" +#line 2017 "src/Slice/Grammar.y" { - StringTokPtr str1 = StringTokPtr::dynamicCast(yyvsp[-1]); - StringTokPtr str2 = StringTokPtr::dynamicCast(yyvsp[0]); + auto str1 = dynamic_pointer_cast(yyvsp[-1]); + auto str2 = dynamic_pointer_cast(yyvsp[0]); str1->v += str2->v; } -#line 3928 "src/Slice/Grammar.cpp" +#line 3934 "src/Slice/Grammar.cpp" break; case 169: /* string_literal: ICE_STRING_LITERAL */ -#line 2017 "src/Slice/Grammar.y" +#line 2023 "src/Slice/Grammar.y" { } -#line 3935 "src/Slice/Grammar.cpp" +#line 3941 "src/Slice/Grammar.cpp" break; case 170: /* string_list: string_list ',' string_literal */ -#line 2025 "src/Slice/Grammar.y" +#line 2031 "src/Slice/Grammar.y" { - StringTokPtr str = StringTokPtr::dynamicCast(yyvsp[0]); - StringListTokPtr stringList = StringListTokPtr::dynamicCast(yyvsp[-2]); + auto str = dynamic_pointer_cast(yyvsp[0]); + auto stringList = dynamic_pointer_cast(yyvsp[-2]); stringList->v.push_back(str->v); yyval = stringList; } -#line 3946 "src/Slice/Grammar.cpp" +#line 3952 "src/Slice/Grammar.cpp" break; case 171: /* string_list: string_literal */ -#line 2032 "src/Slice/Grammar.y" +#line 2038 "src/Slice/Grammar.y" { - StringTokPtr str = StringTokPtr::dynamicCast(yyvsp[0]); - StringListTokPtr stringList = new StringListTok; + auto str = dynamic_pointer_cast(yyvsp[0]); + auto stringList = make_shared(); stringList->v.push_back(str->v); yyval = stringList; } -#line 3957 "src/Slice/Grammar.cpp" +#line 3963 "src/Slice/Grammar.cpp" break; case 172: /* const_initializer: ICE_INTEGER_LITERAL */ -#line 2044 "src/Slice/Grammar.y" +#line 2050 "src/Slice/Grammar.y" { - BuiltinPtr type = unit->builtin(Builtin::KindLong); - IntegerTokPtr intVal = IntegerTokPtr::dynamicCast(yyvsp[0]); + BuiltinPtr type = currentUnit->builtin(Builtin::KindLong); + auto intVal = dynamic_pointer_cast(yyvsp[0]); ostringstream sstr; sstr << intVal->v; - ConstDefTokPtr def = new ConstDefTok(type, sstr.str(), intVal->literal); + auto def = make_shared(type, sstr.str(), intVal->literal); yyval = def; } -#line 3970 "src/Slice/Grammar.cpp" +#line 3976 "src/Slice/Grammar.cpp" break; case 173: /* const_initializer: ICE_FLOATING_POINT_LITERAL */ -#line 2053 "src/Slice/Grammar.y" +#line 2059 "src/Slice/Grammar.y" { - BuiltinPtr type = unit->builtin(Builtin::KindDouble); - FloatingTokPtr floatVal = FloatingTokPtr::dynamicCast(yyvsp[0]); + BuiltinPtr type = currentUnit->builtin(Builtin::KindDouble); + auto floatVal = dynamic_pointer_cast(yyvsp[0]); ostringstream sstr; sstr << floatVal->v; - ConstDefTokPtr def = new ConstDefTok(type, sstr.str(), floatVal->literal); + auto def = make_shared(type, sstr.str(), floatVal->literal); yyval = def; } -#line 3983 "src/Slice/Grammar.cpp" +#line 3989 "src/Slice/Grammar.cpp" break; case 174: /* const_initializer: scoped_name */ -#line 2062 "src/Slice/Grammar.y" +#line 2068 "src/Slice/Grammar.y" { - StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]); + auto scoped = dynamic_pointer_cast(yyvsp[0]); ConstDefTokPtr def; - ContainedList cl = unit->currentContainer()->lookupContained(scoped->v, false); + ContainedList cl = currentUnit->currentContainer()->lookupContained(scoped->v, false); if(cl.empty()) { // Could be an enumerator - def = new ConstDefTok(SyntaxTreeBasePtr(0), scoped->v, scoped->v); + def = make_shared(nullptr, scoped->v, scoped->v); } else { - EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(cl.front()); - ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + auto enumerator = dynamic_pointer_cast(cl.front()); + auto constant = dynamic_pointer_cast(cl.front()); if(enumerator) { - unit->currentContainer()->checkIntroduced(scoped->v, enumerator); - def = new ConstDefTok(enumerator, scoped->v, scoped->v); + currentUnit->currentContainer()->checkIntroduced(scoped->v, enumerator); + def = make_shared(enumerator, scoped->v, scoped->v); } else if(constant) { - unit->currentContainer()->checkIntroduced(scoped->v, constant); - def = new ConstDefTok(constant, constant->value(), constant->value()); + currentUnit->currentContainer()->checkIntroduced(scoped->v, constant); + def = make_shared(constant, constant->value(), constant->value()); } else { - def = new ConstDefTok; + def = make_shared(); string msg = "illegal initializer: `" + scoped->v + "' is "; string kindOf = cl.front()->kindOf(); msg += prependA(kindOf); - unit->error(msg); // $$ is dummy + currentUnit->error(msg); // $$ is dummy } } yyval = def; } -#line 4022 "src/Slice/Grammar.cpp" +#line 4028 "src/Slice/Grammar.cpp" break; case 175: /* const_initializer: ICE_STRING_LITERAL */ -#line 2097 "src/Slice/Grammar.y" +#line 2103 "src/Slice/Grammar.y" { - BuiltinPtr type = unit->builtin(Builtin::KindString); - StringTokPtr literal = StringTokPtr::dynamicCast(yyvsp[0]); - ConstDefTokPtr def = new ConstDefTok(type, literal->v, literal->literal); + BuiltinPtr type = currentUnit->builtin(Builtin::KindString); + auto literal = dynamic_pointer_cast(yyvsp[0]); + auto def = make_shared(type, literal->v, literal->literal); yyval = def; } -#line 4033 "src/Slice/Grammar.cpp" +#line 4039 "src/Slice/Grammar.cpp" break; case 176: /* const_initializer: ICE_FALSE */ -#line 2104 "src/Slice/Grammar.y" +#line 2110 "src/Slice/Grammar.y" { - BuiltinPtr type = unit->builtin(Builtin::KindBool); - StringTokPtr literal = StringTokPtr::dynamicCast(yyvsp[0]); - ConstDefTokPtr def = new ConstDefTok(type, "false", "false"); + BuiltinPtr type = currentUnit->builtin(Builtin::KindBool); + auto literal = dynamic_pointer_cast(yyvsp[0]); + auto def = make_shared(type, "false", "false"); yyval = def; } -#line 4044 "src/Slice/Grammar.cpp" +#line 4050 "src/Slice/Grammar.cpp" break; case 177: /* const_initializer: ICE_TRUE */ -#line 2111 "src/Slice/Grammar.y" +#line 2117 "src/Slice/Grammar.y" { - BuiltinPtr type = unit->builtin(Builtin::KindBool); - StringTokPtr literal = StringTokPtr::dynamicCast(yyvsp[0]); - ConstDefTokPtr def = new ConstDefTok(type, "true", "true"); + BuiltinPtr type = currentUnit->builtin(Builtin::KindBool); + auto literal = dynamic_pointer_cast(yyvsp[0]); + auto def = make_shared(type, "true", "true"); yyval = def; } -#line 4055 "src/Slice/Grammar.cpp" +#line 4061 "src/Slice/Grammar.cpp" break; case 178: /* const_def: ICE_CONST meta_data type ICE_IDENTIFIER '=' const_initializer */ -#line 2123 "src/Slice/Grammar.y" +#line 2129 "src/Slice/Grammar.y" { - StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-4]); - TypePtr const_type = TypePtr::dynamicCast(yyvsp[-3]); - StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[-2]); - ConstDefTokPtr value = ConstDefTokPtr::dynamicCast(yyvsp[0]); - yyval = unit->currentContainer()->createConst(ident->v, const_type, metaData->v, value->v, + auto metaData = dynamic_pointer_cast(yyvsp[-4]); + auto const_type = dynamic_pointer_cast(yyvsp[-3]); + auto ident = dynamic_pointer_cast(yyvsp[-2]); + auto value = dynamic_pointer_cast(yyvsp[0]); + yyval = currentUnit->currentContainer()->createConst(ident->v, const_type, metaData->v, value->v, value->valueAsString, value->valueAsLiteral); } -#line 4068 "src/Slice/Grammar.cpp" +#line 4074 "src/Slice/Grammar.cpp" break; case 179: /* const_def: ICE_CONST meta_data type '=' const_initializer */ -#line 2132 "src/Slice/Grammar.y" +#line 2138 "src/Slice/Grammar.y" { - StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]); - TypePtr const_type = TypePtr::dynamicCast(yyvsp[-2]); - ConstDefTokPtr value = ConstDefTokPtr::dynamicCast(yyvsp[0]); - unit->error("missing constant name"); - yyval = unit->currentContainer()->createConst(IceUtil::generateUUID(), const_type, metaData->v, value->v, + auto metaData = dynamic_pointer_cast(yyvsp[-3]); + auto const_type = dynamic_pointer_cast(yyvsp[-2]); + auto value = dynamic_pointer_cast(yyvsp[0]); + currentUnit->error("missing constant name"); + yyval = currentUnit->currentContainer()->createConst(IceUtil::generateUUID(), const_type, metaData->v, value->v, value->valueAsString, value->valueAsLiteral, Dummy); // Dummy } -#line 4081 "src/Slice/Grammar.cpp" +#line 4087 "src/Slice/Grammar.cpp" break; case 180: /* keyword: ICE_MODULE */ -#line 2145 "src/Slice/Grammar.y" +#line 2151 "src/Slice/Grammar.y" {} -#line 4087 "src/Slice/Grammar.cpp" +#line 4093 "src/Slice/Grammar.cpp" break; case 181: /* keyword: ICE_CLASS */ -#line 2146 "src/Slice/Grammar.y" +#line 2152 "src/Slice/Grammar.y" {} -#line 4093 "src/Slice/Grammar.cpp" +#line 4099 "src/Slice/Grammar.cpp" break; case 182: /* keyword: ICE_INTERFACE */ -#line 2147 "src/Slice/Grammar.y" +#line 2153 "src/Slice/Grammar.y" {} -#line 4099 "src/Slice/Grammar.cpp" +#line 4105 "src/Slice/Grammar.cpp" break; case 183: /* keyword: ICE_EXCEPTION */ -#line 2148 "src/Slice/Grammar.y" +#line 2154 "src/Slice/Grammar.y" {} -#line 4105 "src/Slice/Grammar.cpp" +#line 4111 "src/Slice/Grammar.cpp" break; case 184: /* keyword: ICE_STRUCT */ -#line 2149 "src/Slice/Grammar.y" +#line 2155 "src/Slice/Grammar.y" {} -#line 4111 "src/Slice/Grammar.cpp" +#line 4117 "src/Slice/Grammar.cpp" break; case 185: /* keyword: ICE_SEQUENCE */ -#line 2150 "src/Slice/Grammar.y" +#line 2156 "src/Slice/Grammar.y" {} -#line 4117 "src/Slice/Grammar.cpp" +#line 4123 "src/Slice/Grammar.cpp" break; case 186: /* keyword: ICE_DICTIONARY */ -#line 2151 "src/Slice/Grammar.y" +#line 2157 "src/Slice/Grammar.y" {} -#line 4123 "src/Slice/Grammar.cpp" +#line 4129 "src/Slice/Grammar.cpp" break; case 187: /* keyword: ICE_ENUM */ -#line 2152 "src/Slice/Grammar.y" +#line 2158 "src/Slice/Grammar.y" {} -#line 4129 "src/Slice/Grammar.cpp" +#line 4135 "src/Slice/Grammar.cpp" break; case 188: /* keyword: ICE_OUT */ -#line 2153 "src/Slice/Grammar.y" +#line 2159 "src/Slice/Grammar.y" {} -#line 4135 "src/Slice/Grammar.cpp" +#line 4141 "src/Slice/Grammar.cpp" break; case 189: /* keyword: ICE_EXTENDS */ -#line 2154 "src/Slice/Grammar.y" +#line 2160 "src/Slice/Grammar.y" {} -#line 4141 "src/Slice/Grammar.cpp" +#line 4147 "src/Slice/Grammar.cpp" break; case 190: /* keyword: ICE_THROWS */ -#line 2155 "src/Slice/Grammar.y" +#line 2161 "src/Slice/Grammar.y" {} -#line 4147 "src/Slice/Grammar.cpp" +#line 4153 "src/Slice/Grammar.cpp" break; case 191: /* keyword: ICE_VOID */ -#line 2156 "src/Slice/Grammar.y" +#line 2162 "src/Slice/Grammar.y" {} -#line 4153 "src/Slice/Grammar.cpp" +#line 4159 "src/Slice/Grammar.cpp" break; case 192: /* keyword: ICE_BOOL */ -#line 2157 "src/Slice/Grammar.y" +#line 2163 "src/Slice/Grammar.y" {} -#line 4159 "src/Slice/Grammar.cpp" +#line 4165 "src/Slice/Grammar.cpp" break; case 193: /* keyword: ICE_BYTE */ -#line 2158 "src/Slice/Grammar.y" +#line 2164 "src/Slice/Grammar.y" {} -#line 4165 "src/Slice/Grammar.cpp" +#line 4171 "src/Slice/Grammar.cpp" break; case 194: /* keyword: ICE_SHORT */ -#line 2159 "src/Slice/Grammar.y" +#line 2165 "src/Slice/Grammar.y" {} -#line 4171 "src/Slice/Grammar.cpp" +#line 4177 "src/Slice/Grammar.cpp" break; case 195: /* keyword: ICE_INT */ -#line 2160 "src/Slice/Grammar.y" +#line 2166 "src/Slice/Grammar.y" {} -#line 4177 "src/Slice/Grammar.cpp" +#line 4183 "src/Slice/Grammar.cpp" break; case 196: /* keyword: ICE_LONG */ -#line 2161 "src/Slice/Grammar.y" +#line 2167 "src/Slice/Grammar.y" {} -#line 4183 "src/Slice/Grammar.cpp" +#line 4189 "src/Slice/Grammar.cpp" break; case 197: /* keyword: ICE_FLOAT */ -#line 2162 "src/Slice/Grammar.y" +#line 2168 "src/Slice/Grammar.y" {} -#line 4189 "src/Slice/Grammar.cpp" +#line 4195 "src/Slice/Grammar.cpp" break; case 198: /* keyword: ICE_DOUBLE */ -#line 2163 "src/Slice/Grammar.y" +#line 2169 "src/Slice/Grammar.y" {} -#line 4195 "src/Slice/Grammar.cpp" +#line 4201 "src/Slice/Grammar.cpp" break; case 199: /* keyword: ICE_STRING */ -#line 2164 "src/Slice/Grammar.y" +#line 2170 "src/Slice/Grammar.y" {} -#line 4201 "src/Slice/Grammar.cpp" +#line 4207 "src/Slice/Grammar.cpp" break; case 200: /* keyword: ICE_OBJECT */ -#line 2165 "src/Slice/Grammar.y" +#line 2171 "src/Slice/Grammar.y" {} -#line 4207 "src/Slice/Grammar.cpp" +#line 4213 "src/Slice/Grammar.cpp" break; case 201: /* keyword: ICE_CONST */ -#line 2166 "src/Slice/Grammar.y" +#line 2172 "src/Slice/Grammar.y" {} -#line 4213 "src/Slice/Grammar.cpp" +#line 4219 "src/Slice/Grammar.cpp" break; case 202: /* keyword: ICE_FALSE */ -#line 2167 "src/Slice/Grammar.y" +#line 2173 "src/Slice/Grammar.y" {} -#line 4219 "src/Slice/Grammar.cpp" +#line 4225 "src/Slice/Grammar.cpp" break; case 203: /* keyword: ICE_TRUE */ -#line 2168 "src/Slice/Grammar.y" +#line 2174 "src/Slice/Grammar.y" {} -#line 4225 "src/Slice/Grammar.cpp" +#line 4231 "src/Slice/Grammar.cpp" break; case 204: /* keyword: ICE_IDEMPOTENT */ -#line 2169 "src/Slice/Grammar.y" +#line 2175 "src/Slice/Grammar.y" {} -#line 4231 "src/Slice/Grammar.cpp" +#line 4237 "src/Slice/Grammar.cpp" break; case 205: /* keyword: ICE_TAG */ -#line 2170 "src/Slice/Grammar.y" +#line 2176 "src/Slice/Grammar.y" {} -#line 4237 "src/Slice/Grammar.cpp" +#line 4243 "src/Slice/Grammar.cpp" break; case 206: /* keyword: ICE_OPTIONAL */ -#line 2171 "src/Slice/Grammar.y" +#line 2177 "src/Slice/Grammar.y" {} -#line 4243 "src/Slice/Grammar.cpp" +#line 4249 "src/Slice/Grammar.cpp" break; case 207: /* keyword: ICE_VALUE */ -#line 2172 "src/Slice/Grammar.y" +#line 2178 "src/Slice/Grammar.y" {} -#line 4249 "src/Slice/Grammar.cpp" +#line 4255 "src/Slice/Grammar.cpp" break; -#line 4253 "src/Slice/Grammar.cpp" +#line 4259 "src/Slice/Grammar.cpp" default: break; } @@ -4447,5 +4453,5 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 2175 "src/Slice/Grammar.y" +#line 2181 "src/Slice/Grammar.y" diff --git a/cpp/src/Slice/Grammar.y b/cpp/src/Slice/Grammar.y index 48a8e68465a..465b12d87be 100644 --- a/cpp/src/Slice/Grammar.y +++ b/cpp/src/Slice/Grammar.y @@ -107,11 +107,11 @@ slice_error(const char* s) if (strcmp(s, "parse error") == 0) { - unit->error("syntax error"); + currentUnit->error("syntax error"); } else { - unit->error(s); + currentUnit->error(s); } } @@ -206,7 +206,7 @@ global_meta_data } | ICE_GLOBAL_METADATA_IGNORE string_list ICE_GLOBAL_METADATA_CLOSE { - unit->error("global metadata must appear before any definitions"); + currentUnit->error("global metadata must appear before any definitions"); $$ = $2; // Dummy } ; @@ -220,7 +220,7 @@ meta_data } | %empty { - $$ = new StringListTok; + $$ = make_shared(); } ; @@ -229,16 +229,16 @@ definitions // ---------------------------------------------------------------------- : definitions global_meta_data { - StringListTokPtr metaData = StringListTokPtr::dynamicCast($2); + auto metaData = dynamic_pointer_cast($2); if(!metaData->v.empty()) { - unit->addGlobalMetaData(metaData->v); + currentUnit->addGlobalMetaData(metaData->v); } } | definitions meta_data definition { - StringListTokPtr metaData = StringListTokPtr::dynamicCast($2); - ContainedPtr contained = ContainedPtr::dynamicCast($3); + auto metaData = dynamic_pointer_cast($2); + auto contained = dynamic_pointer_cast($3); if(contained && !metaData->v.empty()) { contained->setMetaData(metaData->v); @@ -254,96 +254,96 @@ definition // ---------------------------------------------------------------------- : module_def { - assert($1 == 0 || ModulePtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } opt_semicolon | class_decl { - assert($1 == 0 || ClassDeclPtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } ';' | class_decl { - unit->error("`;' missing after class forward declaration"); + currentUnit->error("`;' missing after class forward declaration"); } | class_def { - assert($1 == 0 || ClassDefPtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } opt_semicolon | interface_decl { - assert($1 == 0 || InterfaceDeclPtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } ';' | interface_decl { - unit->error("`;' missing after interface forward declaration"); + currentUnit->error("`;' missing after interface forward declaration"); } | interface_def { - assert($1 == 0 || InterfaceDefPtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } opt_semicolon | exception_decl { - assert($1 == 0); + assert($1 == nullptr); } ';' | exception_decl { - unit->error("`;' missing after exception forward declaration"); + currentUnit->error("`;' missing after exception forward declaration"); } | exception_def { - assert($1 == 0 || ExceptionPtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } opt_semicolon | struct_decl { - assert($1 == 0); + assert($1 == nullptr); } ';' | struct_decl { - unit->error("`;' missing after struct forward declaration"); + currentUnit->error("`;' missing after struct forward declaration"); } | struct_def { - assert($1 == 0 || StructPtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } opt_semicolon | sequence_def { - assert($1 == 0 || SequencePtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } ';' | sequence_def { - unit->error("`;' missing after sequence definition"); + currentUnit->error("`;' missing after sequence definition"); } | dictionary_def { - assert($1 == 0 || DictionaryPtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } ';' | dictionary_def { - unit->error("`;' missing after dictionary definition"); + currentUnit->error("`;' missing after dictionary definition"); } | enum_def { - assert($1 == 0 || EnumPtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } opt_semicolon | const_def { - assert($1 == 0 || ConstPtr::dynamicCast($1)); + assert($1 == nullptr || dynamic_pointer_cast($1)); } ';' | const_def { - unit->error("`;' missing after const definition"); + currentUnit->error("`;' missing after const definition"); } | error ';' { @@ -356,30 +356,30 @@ module_def // ---------------------------------------------------------------------- : ICE_MODULE ICE_IDENTIFIER { - StringTokPtr ident = StringTokPtr::dynamicCast($2); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($2); + ContainerPtr cont = currentUnit->currentContainer(); ModulePtr module = cont->createModule(ident->v); if(module) { cont->checkIntroduced(ident->v, module); - unit->pushContainer(module); + currentUnit->pushContainer(module); $$ = module; } else { - $$ = 0; + $$ = nullptr; } } '{' definitions '}' { if($3) { - unit->popContainer(); + currentUnit->popContainer(); $$ = $3; } else { - $$ = 0; + $$ = nullptr; } } ; @@ -393,8 +393,8 @@ exception_id } | ICE_EXCEPTION keyword { - StringTokPtr ident = StringTokPtr::dynamicCast($2); - unit->error("keyword `" + ident->v + "' cannot be used as exception name"); + auto ident = dynamic_pointer_cast($2); + currentUnit->error("keyword `" + ident->v + "' cannot be used as exception name"); $$ = $2; // Dummy } ; @@ -404,8 +404,8 @@ exception_decl // ---------------------------------------------------------------------- : exception_id { - unit->error("exceptions cannot be forward declared"); - $$ = 0; + currentUnit->error("exceptions cannot be forward declared"); + $$ = nullptr; } ; @@ -414,14 +414,14 @@ exception_def // ---------------------------------------------------------------------- : exception_id exception_extends { - StringTokPtr ident = StringTokPtr::dynamicCast($1); - ExceptionPtr base = ExceptionPtr::dynamicCast($2); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($1); + auto base = dynamic_pointer_cast($2); + ContainerPtr cont = currentUnit->currentContainer(); ExceptionPtr ex = cont->createException(ident->v, base); if(ex) { cont->checkIntroduced(ident->v, ex); - unit->pushContainer(ex); + currentUnit->pushContainer(ex); } $$ = ex; } @@ -429,7 +429,7 @@ exception_def { if($3) { - unit->popContainer(); + currentUnit->popContainer(); } $$ = $3; } @@ -440,15 +440,15 @@ exception_extends // ---------------------------------------------------------------------- : extends scoped_name { - StringTokPtr scoped = StringTokPtr::dynamicCast($2); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast($2); + ContainerPtr cont = currentUnit->currentContainer(); ContainedPtr contained = cont->lookupException(scoped->v); cont->checkIntroduced(scoped->v); $$ = contained; } | %empty { - $$ = 0; + $$ = nullptr; } ; @@ -457,9 +457,9 @@ type_id // ---------------------------------------------------------------------- : type ICE_IDENTIFIER { - TypePtr type = TypePtr::dynamicCast($1); - StringTokPtr ident = StringTokPtr::dynamicCast($2); - TypeStringTokPtr typestring = new TypeStringTok; + auto type = dynamic_pointer_cast($1); + auto ident = dynamic_pointer_cast($2); + auto typestring = make_shared(); typestring->v = make_pair(type, ident->v); $$ = typestring; } @@ -470,12 +470,12 @@ tag // ---------------------------------------------------------------------- : ICE_TAG_OPEN ICE_INTEGER_LITERAL ')' { - IntegerTokPtr i = IntegerTokPtr::dynamicCast($2); + auto i = dynamic_pointer_cast($2); int tag; if(i->v < 0 || i->v > Int32Max) { - unit->error("tag is out of range"); + currentUnit->error("tag is out of range"); tag = -1; } else @@ -483,14 +483,14 @@ tag tag = static_cast(i->v); } - TaggedDefTokPtr m = new TaggedDefTok(tag); + auto m = make_shared(tag); $$ = m; } | ICE_TAG_OPEN scoped_name ')' { - StringTokPtr scoped = StringTokPtr::dynamicCast($2); + auto scoped = dynamic_pointer_cast($2); - ContainerPtr cont = unit->currentContainer(); + ContainerPtr cont = currentUnit->currentContainer(); assert(cont); ContainedList cl = cont->lookupContained(scoped->v, false); if(cl.empty()) @@ -501,7 +501,7 @@ tag // Found cl.push_back(enumerators.front()); scoped->v = enumerators.front()->scoped(); - unit->warning(Deprecated, string("referencing enumerator `") + scoped->v + currentUnit->warning(Deprecated, string("referencing enumerator `") + scoped->v + "' without its enumeration's scope is deprecated"); } else if(enumerators.size() > 1) @@ -522,11 +522,11 @@ tag os << " `" << (*p)->scoped() << "'"; } - unit->error(os.str()); + currentUnit->error(os.str()); } else { - unit->error(string("`") + scoped->v + "' is not defined"); + currentUnit->error(string("`") + scoped->v + "' is not defined"); } } @@ -537,17 +537,17 @@ tag cont->checkIntroduced(scoped->v); int tag = -1; - EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(cl.front()); - ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + auto enumerator = dynamic_pointer_cast(cl.front()); + auto constant = dynamic_pointer_cast(cl.front()); if(constant) { - BuiltinPtr b = BuiltinPtr::dynamicCast(constant->type()); + auto b = dynamic_pointer_cast(constant->type()); if(b && b->isIntegralType()) { IceUtil::Int64 l = IceUtilInternal::strToInt64(constant->value().c_str(), 0, 0); if(l < 0 || l > Int32Max) { - unit->error("tag is out of range"); + currentUnit->error("tag is out of range"); } tag = static_cast(l); } @@ -559,22 +559,22 @@ tag if(tag < 0) { - unit->error("invalid tag `" + scoped->v + "'"); + currentUnit->error("invalid tag `" + scoped->v + "'"); } - TaggedDefTokPtr m = new TaggedDefTok(tag); + auto m = make_shared(tag); $$ = m; } | ICE_TAG_OPEN ')' { - unit->error("missing tag"); - TaggedDefTokPtr m = new TaggedDefTok(-1); // Dummy + currentUnit->error("missing tag"); + auto m = make_shared(-1); // Dummy $$ = m; } | ICE_TAG { - unit->error("missing tag"); - TaggedDefTokPtr m = new TaggedDefTok(-1); // Dummy + currentUnit->error("missing tag"); + auto m = make_shared(-1); // Dummy $$ = m; } ; @@ -584,12 +584,12 @@ optional // ---------------------------------------------------------------------- : ICE_OPTIONAL_OPEN ICE_INTEGER_LITERAL ')' { - IntegerTokPtr i = IntegerTokPtr::dynamicCast($2); + auto i = dynamic_pointer_cast($2); int tag; if(i->v < 0 || i->v > Int32Max) { - unit->error("tag is out of range"); + currentUnit->error("tag is out of range"); tag = -1; } else @@ -597,13 +597,13 @@ optional tag = static_cast(i->v); } - TaggedDefTokPtr m = new TaggedDefTok(tag); + auto m = make_shared(tag); $$ = m; } | ICE_OPTIONAL_OPEN scoped_name ')' { - StringTokPtr scoped = StringTokPtr::dynamicCast($2); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast($2); + ContainerPtr cont = currentUnit->currentContainer(); assert(cont); ContainedList cl = cont->lookupContained(scoped->v, false); if(cl.empty()) @@ -614,7 +614,7 @@ optional // Found cl.push_back(enumerators.front()); scoped->v = enumerators.front()->scoped(); - unit->warning(Deprecated, string("referencing enumerator `") + scoped->v + currentUnit->warning(Deprecated, string("referencing enumerator `") + scoped->v + "' without its enumeration's scope is deprecated"); } else if(enumerators.size() > 1) @@ -635,11 +635,11 @@ optional os << " `" << (*p)->scoped() << "'"; } - unit->error(os.str()); + currentUnit->error(os.str()); } else { - unit->error(string("`") + scoped->v + "' is not defined"); + currentUnit->error(string("`") + scoped->v + "' is not defined"); } } @@ -650,17 +650,17 @@ optional cont->checkIntroduced(scoped->v); int tag = -1; - EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(cl.front()); - ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + auto enumerator = dynamic_pointer_cast(cl.front()); + auto constant = dynamic_pointer_cast(cl.front()); if(constant) { - BuiltinPtr b = BuiltinPtr::dynamicCast(constant->type()); + auto b = dynamic_pointer_cast(constant->type()); if(b && b->isIntegralType()) { IceUtil::Int64 l = IceUtilInternal::strToInt64(constant->value().c_str(), 0, 0); if(l < 0 || l > Int32Max) { - unit->error("tag is out of range"); + currentUnit->error("tag is out of range"); } tag = static_cast(l); } @@ -672,22 +672,22 @@ optional if(tag < 0) { - unit->error("invalid tag `" + scoped->v + "'"); + currentUnit->error("invalid tag `" + scoped->v + "'"); } - TaggedDefTokPtr m = new TaggedDefTok(tag); + auto m = make_shared(tag); $$ = m; } | ICE_OPTIONAL_OPEN ')' { - unit->error("missing tag"); - TaggedDefTokPtr m = new TaggedDefTok(-1); // Dummy + currentUnit->error("missing tag"); + auto m = make_shared(-1); // Dummy $$ = m; } | ICE_OPTIONAL { - unit->error("missing tag"); - TaggedDefTokPtr m = new TaggedDefTok(-1); // Dummy + currentUnit->error("missing tag"); + auto m = make_shared(-1); // Dummy $$ = m; } ; @@ -697,8 +697,8 @@ tagged_type_id // ---------------------------------------------------------------------- : tag type_id { - TaggedDefTokPtr m = TaggedDefTokPtr::dynamicCast($1); - TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast($2); + auto m = dynamic_pointer_cast($1); + auto ts = dynamic_pointer_cast($2); m->type = ts->v.first; m->name = ts->v.second; @@ -706,8 +706,8 @@ tagged_type_id } | optional type_id { - TaggedDefTokPtr m = TaggedDefTokPtr::dynamicCast($1); - TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast($2); + auto m = dynamic_pointer_cast($1); + auto ts = dynamic_pointer_cast($2); m->type = ts->v.first; m->name = ts->v.second; @@ -715,8 +715,8 @@ tagged_type_id } | type_id { - TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast($1); - TaggedDefTokPtr m = new TaggedDefTok(-1); + auto ts = dynamic_pointer_cast($1); + auto m = make_shared(-1); m->type = ts->v.first; m->name = ts->v.second; $$ = m; @@ -732,8 +732,8 @@ struct_id } | ICE_STRUCT keyword { - StringTokPtr ident = StringTokPtr::dynamicCast($2); - unit->error("keyword `" + ident->v + "' cannot be used as struct name"); + auto ident = dynamic_pointer_cast($2); + currentUnit->error("keyword `" + ident->v + "' cannot be used as struct name"); $$ = $2; // Dummy } ; @@ -743,8 +743,8 @@ struct_decl // ---------------------------------------------------------------------- : struct_id { - unit->error("structs cannot be forward declared"); - $$ = 0; // Dummy + currentUnit->error("structs cannot be forward declared"); + $$ = nullptr; // Dummy } ; @@ -753,19 +753,19 @@ struct_def // ---------------------------------------------------------------------- : struct_id { - StringTokPtr ident = StringTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($1); + ContainerPtr cont = currentUnit->currentContainer(); StructPtr st = cont->createStruct(ident->v); if(st) { cont->checkIntroduced(ident->v, st); - unit->pushContainer(st); + currentUnit->pushContainer(st); } else { st = cont->createStruct(IceUtil::generateUUID()); // Dummy assert(st); - unit->pushContainer(st); + currentUnit->pushContainer(st); } $$ = st; } @@ -773,18 +773,16 @@ struct_def { if($2) { - unit->popContainer(); + currentUnit->popContainer(); } $$ = $2; - // // Empty structures are not allowed - // - StructPtr st = StructPtr::dynamicCast($$); + auto st = dynamic_pointer_cast($$); assert(st); if(st->dataMembers().empty()) { - unit->error("struct `" + st->name() + "' must have at least one member"); // $$ is a dummy + currentUnit->error("struct `" + st->name() + "' must have at least one member"); // $$ is a dummy } } ; @@ -798,8 +796,8 @@ class_name } | ICE_CLASS keyword { - StringTokPtr ident = StringTokPtr::dynamicCast($2); - unit->error("keyword `" + ident->v + "' cannot be used as class name"); + auto ident = dynamic_pointer_cast($2); + currentUnit->error("keyword `" + ident->v + "' cannot be used as class name"); $$ = $2; // Dummy } ; @@ -809,34 +807,34 @@ class_id // ---------------------------------------------------------------------- : ICE_CLASS ICE_IDENT_OPEN ICE_INTEGER_LITERAL ')' { - IceUtil::Int64 id = IntegerTokPtr::dynamicCast($3)->v; + IceUtil::Int64 id = dynamic_pointer_cast($3)->v; if(id < 0) { - unit->error("invalid compact id for class: id must be a positive integer"); + currentUnit->error("invalid compact id for class: id must be a positive integer"); } else if(id > Int32Max) { - unit->error("invalid compact id for class: value is out of range"); + currentUnit->error("invalid compact id for class: value is out of range"); } else { - string typeId = unit->getTypeId(static_cast(id)); - if(!typeId.empty() && !unit->ignRedefs()) + string typeId = currentUnit->getTypeId(static_cast(id)); + if(!typeId.empty() && !currentUnit->ignRedefs()) { - unit->error("invalid compact id for class: already assigned to class `" + typeId + "'"); + currentUnit->error("invalid compact id for class: already assigned to class `" + typeId + "'"); } } - ClassIdTokPtr classId = new ClassIdTok(); - classId->v = StringTokPtr::dynamicCast($2)->v; + auto classId = make_shared(); + classId->v = dynamic_pointer_cast($2)->v; classId->t = static_cast(id); $$ = classId; } | ICE_CLASS ICE_IDENT_OPEN scoped_name ')' { - StringTokPtr scoped = StringTokPtr::dynamicCast($3); + auto scoped = dynamic_pointer_cast($3); - ContainerPtr cont = unit->currentContainer(); + ContainerPtr cont = currentUnit->currentContainer(); assert(cont); ContainedList cl = cont->lookupContained(scoped->v, false); if(cl.empty()) @@ -847,7 +845,7 @@ class_id // Found cl.push_back(enumerators.front()); scoped->v = enumerators.front()->scoped(); - unit->warning(Deprecated, string("referencing enumerator `") + scoped->v + currentUnit->warning(Deprecated, string("referencing enumerator `") + scoped->v + "' without its enumeration's scope is deprecated"); } else if(enumerators.size() > 1) @@ -868,11 +866,11 @@ class_id os << " `" << (*p)->scoped() << "'"; } - unit->error(os.str()); + currentUnit->error(os.str()); } else { - unit->error(string("`") + scoped->v + "' is not defined"); + currentUnit->error(string("`") + scoped->v + "' is not defined"); } } @@ -883,17 +881,17 @@ class_id cont->checkIntroduced(scoped->v); int id = -1; - EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(cl.front()); - ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + auto enumerator = dynamic_pointer_cast(cl.front()); + auto constant = dynamic_pointer_cast(cl.front()); if(constant) { - BuiltinPtr b = BuiltinPtr::dynamicCast(constant->type()); + auto b = dynamic_pointer_cast(constant->type()); if(b && b->isIntegralType()) { IceUtil::Int64 l = IceUtilInternal::strToInt64(constant->value().c_str(), 0, 0); if(l < 0 || l > Int32Max) { - unit->error("compact id for class is out of range"); + currentUnit->error("compact id for class is out of range"); } id = static_cast(l); } @@ -905,27 +903,27 @@ class_id if(id < 0) { - unit->error("invalid compact id for class: id must be a positive integer"); + currentUnit->error("invalid compact id for class: id must be a positive integer"); } else { - string typeId = unit->getTypeId(id); - if(!typeId.empty() && !unit->ignRedefs()) + string typeId = currentUnit->getTypeId(id); + if(!typeId.empty() && !currentUnit->ignRedefs()) { - unit->error("invalid compact id for class: already assigned to class `" + typeId + "'"); + currentUnit->error("invalid compact id for class: already assigned to class `" + typeId + "'"); } } - ClassIdTokPtr classId = new ClassIdTok(); - classId->v = StringTokPtr::dynamicCast($2)->v; + auto classId = make_shared(); + classId->v = dynamic_pointer_cast($2)->v; classId->t = id; $$ = classId; } | class_name { - ClassIdTokPtr classId = new ClassIdTok(); - classId->v = StringTokPtr::dynamicCast($1)->v; + auto classId = make_shared(); + classId->v = dynamic_pointer_cast($1)->v; classId->t = -1; $$ = classId; } @@ -936,8 +934,8 @@ class_decl // ---------------------------------------------------------------------- : class_name { - StringTokPtr ident = StringTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($1); + ContainerPtr cont = currentUnit->currentContainer(); ClassDeclPtr cl = cont->createClassDecl(ident->v); $$ = cl; } @@ -948,31 +946,31 @@ class_def // ---------------------------------------------------------------------- : class_id class_extends { - ClassIdTokPtr ident = ClassIdTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); - ClassDefPtr base = ClassDefPtr::dynamicCast($2); + auto ident = dynamic_pointer_cast($1); + ContainerPtr cont = currentUnit->currentContainer(); + auto base = dynamic_pointer_cast($2); ClassDefPtr cl = cont->createClassDef(ident->v, ident->t, base); if(cl) { cont->checkIntroduced(ident->v, cl); - unit->pushContainer(cl); + currentUnit->pushContainer(cl); $$ = cl; } else { - $$ = 0; + $$ = nullptr; } } '{' data_members '}' { if($3) { - unit->popContainer(); + currentUnit->popContainer(); $$ = $3; } else { - $$ = 0; + $$ = nullptr; } } ; @@ -982,19 +980,19 @@ class_extends // ---------------------------------------------------------------------- : extends scoped_name { - StringTokPtr scoped = StringTokPtr::dynamicCast($2); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast($2); + ContainerPtr cont = currentUnit->currentContainer(); TypeList types = cont->lookupType(scoped->v); - $$ = 0; + $$ = nullptr; if(!types.empty()) { - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(types.front()); + auto cl = dynamic_pointer_cast(types.front()); if(!cl) { string msg = "`"; msg += scoped->v; msg += "' is not a class"; - unit->error(msg); + currentUnit->error(msg); } else { @@ -1004,7 +1002,7 @@ class_extends string msg = "`"; msg += scoped->v; msg += "' has been declared but not defined"; - unit->error(msg); + currentUnit->error(msg); } else { @@ -1016,7 +1014,7 @@ class_extends } | %empty { - $$ = 0; + $$ = nullptr; } ; @@ -1036,9 +1034,9 @@ data_members // ---------------------------------------------------------------------- : meta_data data_member ';' data_members { - StringListTokPtr metaData = StringListTokPtr::dynamicCast($1); - ContainedPtr contained = ContainedPtr::dynamicCast($2); - if(contained && !metaData->v.empty()) + auto metaData = dynamic_pointer_cast($1); + auto contained = dynamic_pointer_cast($2); + if (contained && !metaData->v.empty()) { contained->setMetaData(metaData->v); } @@ -1048,7 +1046,7 @@ data_members } | meta_data data_member { - unit->error("`;' missing after definition"); + currentUnit->error("`;' missing after definition"); } | %empty { @@ -1060,19 +1058,19 @@ data_member // ---------------------------------------------------------------------- : tagged_type_id { - TaggedDefTokPtr def = TaggedDefTokPtr::dynamicCast($1); - ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); + auto def = dynamic_pointer_cast($1); + auto cl = dynamic_pointer_cast(currentUnit->currentContainer()); DataMemberPtr dm; if(cl) { dm = cl->createDataMember(def->name, def->type, def->isTagged, def->tag, 0, "", ""); } - StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + auto st = dynamic_pointer_cast(currentUnit->currentContainer()); if(st) { if (def->isTagged) { - unit->error("tagged data members are not supported in structs"); + currentUnit->error("tagged data members are not supported in structs"); dm = st->createDataMember(def->name, def->type, false, 0, 0, "", ""); // Dummy } else @@ -1080,32 +1078,31 @@ data_member dm = st->createDataMember(def->name, def->type, false, -1, 0, "", ""); } } - ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); + auto ex = dynamic_pointer_cast(currentUnit->currentContainer()); if(ex) { dm = ex->createDataMember(def->name, def->type, def->isTagged, def->tag, 0, "", ""); } - unit->currentContainer()->checkIntroduced(def->name, dm); + currentUnit->currentContainer()->checkIntroduced(def->name, dm); $$ = dm; } | tagged_type_id '=' const_initializer { - TaggedDefTokPtr def = TaggedDefTokPtr::dynamicCast($1); - ConstDefTokPtr value = ConstDefTokPtr::dynamicCast($3); - - ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); + auto def = dynamic_pointer_cast($1); + auto value = dynamic_pointer_cast($3); + auto cl = dynamic_pointer_cast(currentUnit->currentContainer()); DataMemberPtr dm; if(cl) { dm = cl->createDataMember(def->name, def->type, def->isTagged, def->tag, value->v, value->valueAsString, value->valueAsLiteral); } - StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + auto st = dynamic_pointer_cast(currentUnit->currentContainer()); if(st) { if (def->isTagged) { - unit->error("tagged data members are not supported in structs"); + currentUnit->error("tagged data members are not supported in structs"); dm = st->createDataMember(def->name, def->type, false, 0, 0, "", ""); // Dummy } else @@ -1114,57 +1111,57 @@ data_member value->valueAsString, value->valueAsLiteral); } } - ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); + auto ex = dynamic_pointer_cast(currentUnit->currentContainer()); if(ex) { dm = ex->createDataMember(def->name, def->type, def->isTagged, def->tag, value->v, value->valueAsString, value->valueAsLiteral); } - unit->currentContainer()->checkIntroduced(def->name, dm); + currentUnit->currentContainer()->checkIntroduced(def->name, dm); $$ = dm; } | type keyword { - TypePtr type = TypePtr::dynamicCast($1); - string name = StringTokPtr::dynamicCast($2)->v; - ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); + auto type = dynamic_pointer_cast($1); + string name = dynamic_pointer_cast($2)->v; + auto cl = dynamic_pointer_cast(currentUnit->currentContainer()); if(cl) { $$ = cl->createDataMember(name, type, false, 0, 0, "", ""); // Dummy } - StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + auto st = dynamic_pointer_cast(currentUnit->currentContainer()); if(st) { $$ = st->createDataMember(name, type, false, 0, 0, "", ""); // Dummy } - ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); + auto ex = dynamic_pointer_cast(currentUnit->currentContainer()); if(ex) { $$ = ex->createDataMember(name, type, false, 0, 0, "", ""); // Dummy } assert($$); - unit->error("keyword `" + name + "' cannot be used as data member name"); + currentUnit->error("keyword `" + name + "' cannot be used as data member name"); } | type { - TypePtr type = TypePtr::dynamicCast($1); - ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); + auto type = dynamic_pointer_cast($1); + auto cl = dynamic_pointer_cast(currentUnit->currentContainer()); if(cl) { $$ = cl->createDataMember(IceUtil::generateUUID(), type, false, 0, 0, "", ""); // Dummy } - StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + auto st = dynamic_pointer_cast(currentUnit->currentContainer()); if(st) { $$ = st->createDataMember(IceUtil::generateUUID(), type, false, 0, 0, "", ""); // Dummy } - ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); + auto ex = dynamic_pointer_cast(currentUnit->currentContainer()); if(ex) { $$ = ex->createDataMember(IceUtil::generateUUID(), type, false, 0, 0, "", ""); // Dummy } assert($$); - unit->error("missing data member name"); + currentUnit->error("missing data member name"); } ; @@ -1173,25 +1170,25 @@ return_type // ---------------------------------------------------------------------- : tag type { - TaggedDefTokPtr m = TaggedDefTokPtr::dynamicCast($1); - m->type = TypePtr::dynamicCast($2); + auto m = dynamic_pointer_cast($1); + m->type = dynamic_pointer_cast($2); $$ = m; } | optional type { - TaggedDefTokPtr m = TaggedDefTokPtr::dynamicCast($1); - m->type = TypePtr::dynamicCast($2); + auto m = dynamic_pointer_cast($1); + m->type = dynamic_pointer_cast($2); $$ = m; } | type { - TaggedDefTokPtr m = new TaggedDefTok(-1); - m->type = TypePtr::dynamicCast($1); + auto m = make_shared(-1); + m->type = dynamic_pointer_cast($1); $$ = m; } | ICE_VOID { - TaggedDefTokPtr m = new TaggedDefTok(-1); + auto m = make_shared(-1); $$ = m; } ; @@ -1201,90 +1198,99 @@ operation_preamble // ---------------------------------------------------------------------- : return_type ICE_IDENT_OPEN { - TaggedDefTokPtr returnType = TaggedDefTokPtr::dynamicCast($1); - string name = StringTokPtr::dynamicCast($2)->v; - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(unit->currentContainer()); + auto returnType = dynamic_pointer_cast($1); + string name = dynamic_pointer_cast($2)->v; + auto interface = dynamic_pointer_cast(currentUnit->currentContainer()); if(interface) { OperationPtr op = interface->createOperation(name, returnType->type, returnType->isTagged, returnType->tag); if(op) { interface->checkIntroduced(name, op); - unit->pushContainer(op); + currentUnit->pushContainer(op); $$ = op; } else { - $$ = 0; + $$ = nullptr; } } else { - $$ = 0; + $$ = nullptr; } } | ICE_IDEMPOTENT return_type ICE_IDENT_OPEN { - TaggedDefTokPtr returnType = TaggedDefTokPtr::dynamicCast($2); - string name = StringTokPtr::dynamicCast($3)->v; - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(unit->currentContainer()); - if(interface) + auto returnType = dynamic_pointer_cast($2); + string name = dynamic_pointer_cast($3)->v; + auto interface = dynamic_pointer_cast(currentUnit->currentContainer()); + if (interface) { - OperationPtr op = interface->createOperation(name, returnType->type, returnType->isTagged, returnType->tag, - Operation::Idempotent); + OperationPtr op = interface->createOperation( + name, + returnType->type, + returnType->isTagged, + returnType->tag, + Operation::Idempotent); + if(op) { interface->checkIntroduced(name, op); - unit->pushContainer(op); + currentUnit->pushContainer(op); $$ = op; } else { - $$ = 0; + $$ = nullptr; } } else { - $$ = 0; + $$ = nullptr; } } | return_type ICE_KEYWORD_OPEN { - TaggedDefTokPtr returnType = TaggedDefTokPtr::dynamicCast($1); - string name = StringTokPtr::dynamicCast($2)->v; - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(unit->currentContainer()); + auto returnType = dynamic_pointer_cast($1); + string name = dynamic_pointer_cast($2)->v; + auto interface = dynamic_pointer_cast(currentUnit->currentContainer()); if(interface) { OperationPtr op = interface->createOperation(name, returnType->type, returnType->isTagged, returnType->tag); if(op) { - unit->pushContainer(op); - unit->error("keyword `" + name + "' cannot be used as operation name"); + currentUnit->pushContainer(op); + currentUnit->error("keyword `" + name + "' cannot be used as operation name"); $$ = op; // Dummy } else { - $$ = 0; + $$ = nullptr; } } else { - $$ = 0; + $$ = nullptr; } } | ICE_IDEMPOTENT return_type ICE_KEYWORD_OPEN { - TaggedDefTokPtr returnType = TaggedDefTokPtr::dynamicCast($2); - string name = StringTokPtr::dynamicCast($3)->v; - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(unit->currentContainer()); + auto returnType = dynamic_pointer_cast($2); + string name = dynamic_pointer_cast($3)->v; + auto interface = dynamic_pointer_cast(currentUnit->currentContainer()); if(interface) { - OperationPtr op = interface->createOperation(name, returnType->type, returnType->isTagged, returnType->tag, - Operation::Idempotent); - if(op) + OperationPtr op = interface->createOperation( + name, + returnType->type, + returnType->isTagged, + returnType->tag, + Operation::Idempotent); + if (op) { - unit->pushContainer(op); - unit->error("keyword `" + name + "' cannot be used as operation name"); + currentUnit->pushContainer(op); + currentUnit->error("keyword `" + name + "' cannot be used as operation name"); $$ = op; // Dummy } else @@ -1294,7 +1300,7 @@ operation_preamble } else { - $$ = 0; + $$ = nullptr; } } ; @@ -1306,18 +1312,18 @@ operation { if($1) { - unit->popContainer(); + currentUnit->popContainer(); $$ = $1; } else { - $$ = 0; + $$ = nullptr; } } throws { - OperationPtr op = OperationPtr::dynamicCast($4); - ExceptionListTokPtr el = ExceptionListTokPtr::dynamicCast($5); + auto op = dynamic_pointer_cast($4); + auto el = dynamic_pointer_cast($5); assert(el); if(op) { @@ -1328,14 +1334,14 @@ throws { if($1) { - unit->popContainer(); + currentUnit->popContainer(); } yyerrok; } throws { - OperationPtr op = OperationPtr::dynamicCast($4); - ExceptionListTokPtr el = ExceptionListTokPtr::dynamicCast($5); + auto op = dynamic_pointer_cast($4); + auto el = dynamic_pointer_cast($5); assert(el); if(op) { @@ -1353,8 +1359,8 @@ interface_id } | ICE_INTERFACE keyword { - StringTokPtr ident = StringTokPtr::dynamicCast($2); - unit->error("keyword `" + ident->v + "' cannot be used as interface name"); + auto ident = dynamic_pointer_cast($2); + currentUnit->error("keyword `" + ident->v + "' cannot be used as interface name"); $$ = $2; // Dummy } ; @@ -1364,8 +1370,8 @@ interface_decl // ---------------------------------------------------------------------- : interface_id { - StringTokPtr ident = StringTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($1); + auto cont = currentUnit->currentContainer(); InterfaceDeclPtr cl = cont->createInterfaceDecl(ident->v); cont->checkIntroduced(ident->v, cl); $$ = cl; @@ -1377,31 +1383,31 @@ interface_def // ---------------------------------------------------------------------- : interface_id interface_extends { - StringTokPtr ident = StringTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); - InterfaceListTokPtr bases = InterfaceListTokPtr::dynamicCast($2); + auto ident = dynamic_pointer_cast($1); + ContainerPtr cont = currentUnit->currentContainer(); + auto bases = dynamic_pointer_cast($2); InterfaceDefPtr interface = cont->createInterfaceDef(ident->v, bases->v); if(interface) { cont->checkIntroduced(ident->v, interface); - unit->pushContainer(interface); + currentUnit->pushContainer(interface); $$ = interface; } else { - $$ = 0; + $$ = nullptr; } } '{' operations '}' { if($3) { - unit->popContainer(); + currentUnit->popContainer(); $$ = $3; } else { - $$ = 0; + $$ = nullptr; } } ; @@ -1411,19 +1417,19 @@ interface_list // ---------------------------------------------------------------------- : scoped_name ',' interface_list { - InterfaceListTokPtr intfs = InterfaceListTokPtr::dynamicCast($3); - StringTokPtr scoped = StringTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); + auto intfs = dynamic_pointer_cast($3); + auto scoped = dynamic_pointer_cast($1); + ContainerPtr cont = currentUnit->currentContainer(); TypeList types = cont->lookupType(scoped->v); if(!types.empty()) { - InterfaceDeclPtr interface = InterfaceDeclPtr::dynamicCast(types.front()); + auto interface = dynamic_pointer_cast(types.front()); if(!interface) { string msg = "`"; msg += scoped->v; msg += "' is not an interface"; - unit->error(msg); + currentUnit->error(msg); } else { @@ -1433,7 +1439,7 @@ interface_list string msg = "`"; msg += scoped->v; msg += "' has been declared but not defined"; - unit->error(msg); + currentUnit->error(msg); } else { @@ -1446,19 +1452,19 @@ interface_list } | scoped_name { - InterfaceListTokPtr intfs = new InterfaceListTok; - StringTokPtr scoped = StringTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); + auto intfs = make_shared(); + auto scoped = dynamic_pointer_cast($1); + ContainerPtr cont = currentUnit->currentContainer(); TypeList types = cont->lookupType(scoped->v); if(!types.empty()) { - InterfaceDeclPtr interface = InterfaceDeclPtr::dynamicCast(types.front()); + auto interface = dynamic_pointer_cast(types.front()); if(!interface) { string msg = "`"; msg += scoped->v; msg += "' is not an interface"; - unit->error(msg); // $$ is a dummy + currentUnit->error(msg); // $$ is a dummy } else { @@ -1468,7 +1474,7 @@ interface_list string msg = "`"; msg += scoped->v; msg += "' has been declared but not defined"; - unit->error(msg); // $$ is a dummy + currentUnit->error(msg); // $$ is a dummy } else { @@ -1481,13 +1487,13 @@ interface_list } | ICE_OBJECT { - unit->error("illegal inheritance from type Object"); - $$ = new InterfaceListTok; // Dummy + currentUnit->error("illegal inheritance from type Object"); + $$ = make_shared(); // Dummy } | ICE_VALUE { - unit->error("illegal inheritance from type Value"); - $$ = new ClassListTok; // Dummy + currentUnit->error("illegal inheritance from type Value"); + $$ = make_shared(); // Dummy } ; @@ -1500,7 +1506,7 @@ interface_extends } | %empty { - $$ = new InterfaceListTok; + $$ = make_shared(); } ; @@ -1509,8 +1515,8 @@ operations // ---------------------------------------------------------------------- : meta_data operation ';' operations { - StringListTokPtr metaData = StringListTokPtr::dynamicCast($1); - ContainedPtr contained = ContainedPtr::dynamicCast($2); + auto metaData = dynamic_pointer_cast($1); + auto contained = dynamic_pointer_cast($2); if(contained && !metaData->v.empty()) { contained->setMetaData(metaData->v); @@ -1521,7 +1527,7 @@ operations } | meta_data operation { - unit->error("`;' missing after definition"); + currentUnit->error("`;' missing after definition"); } | %empty { @@ -1533,15 +1539,15 @@ exception_list // ---------------------------------------------------------------------- : exception ',' exception_list { - ExceptionPtr exception = ExceptionPtr::dynamicCast($1); - ExceptionListTokPtr exceptionList = ExceptionListTokPtr::dynamicCast($3); + auto exception = dynamic_pointer_cast($1); + auto exceptionList = dynamic_pointer_cast($3); exceptionList->v.push_front(exception); $$ = exceptionList; } | exception { - ExceptionPtr exception = ExceptionPtr::dynamicCast($1); - ExceptionListTokPtr exceptionList = new ExceptionListTok; + auto exception = dynamic_pointer_cast($1); + auto exceptionList = make_shared(); exceptionList->v.push_front(exception); $$ = exceptionList; } @@ -1552,8 +1558,8 @@ exception // ---------------------------------------------------------------------- : scoped_name { - StringTokPtr scoped = StringTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast($1); + ContainerPtr cont = currentUnit->currentContainer(); ExceptionPtr exception = cont->lookupException(scoped->v); if(!exception) { @@ -1564,9 +1570,9 @@ exception } | keyword { - StringTokPtr ident = StringTokPtr::dynamicCast($1); - unit->error("keyword `" + ident->v + "' cannot be used as exception name"); - $$ = unit->currentContainer()->createException(IceUtil::generateUUID(), 0, Dummy); // Dummy + auto ident = dynamic_pointer_cast($1); + currentUnit->error("keyword `" + ident->v + "' cannot be used as exception name"); + $$ = currentUnit->currentContainer()->createException(IceUtil::generateUUID(), 0, Dummy); // Dummy } ; @@ -1575,20 +1581,20 @@ sequence_def // ---------------------------------------------------------------------- : ICE_SEQUENCE '<' meta_data type '>' ICE_IDENTIFIER { - StringTokPtr ident = StringTokPtr::dynamicCast($6); - StringListTokPtr metaData = StringListTokPtr::dynamicCast($3); - TypePtr type = TypePtr::dynamicCast($4); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($6); + auto metaData = dynamic_pointer_cast($3); + auto type = dynamic_pointer_cast($4); + ContainerPtr cont = currentUnit->currentContainer(); $$ = cont->createSequence(ident->v, type, metaData->v); } | ICE_SEQUENCE '<' meta_data type '>' keyword { - StringTokPtr ident = StringTokPtr::dynamicCast($6); - StringListTokPtr metaData = StringListTokPtr::dynamicCast($3); - TypePtr type = TypePtr::dynamicCast($4); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($6); + auto metaData = dynamic_pointer_cast($3); + auto type = dynamic_pointer_cast($4); + ContainerPtr cont = currentUnit->currentContainer(); $$ = cont->createSequence(ident->v, type, metaData->v); // Dummy - unit->error("keyword `" + ident->v + "' cannot be used as sequence name"); + currentUnit->error("keyword `" + ident->v + "' cannot be used as sequence name"); } ; @@ -1597,24 +1603,24 @@ dictionary_def // ---------------------------------------------------------------------- : ICE_DICTIONARY '<' meta_data type ',' meta_data type '>' ICE_IDENTIFIER { - StringTokPtr ident = StringTokPtr::dynamicCast($9); - StringListTokPtr keyMetaData = StringListTokPtr::dynamicCast($3); - TypePtr keyType = TypePtr::dynamicCast($4); - StringListTokPtr valueMetaData = StringListTokPtr::dynamicCast($6); - TypePtr valueType = TypePtr::dynamicCast($7); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($9); + auto keyMetaData = dynamic_pointer_cast($3); + auto keyType = dynamic_pointer_cast($4); + auto valueMetaData = dynamic_pointer_cast($6); + auto valueType = dynamic_pointer_cast($7); + ContainerPtr cont = currentUnit->currentContainer(); $$ = cont->createDictionary(ident->v, keyType, keyMetaData->v, valueType, valueMetaData->v); } | ICE_DICTIONARY '<' meta_data type ',' meta_data type '>' keyword { - StringTokPtr ident = StringTokPtr::dynamicCast($9); - StringListTokPtr keyMetaData = StringListTokPtr::dynamicCast($3); - TypePtr keyType = TypePtr::dynamicCast($4); - StringListTokPtr valueMetaData = StringListTokPtr::dynamicCast($6); - TypePtr valueType = TypePtr::dynamicCast($7); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($9); + auto keyMetaData = dynamic_pointer_cast($3); + auto keyType = dynamic_pointer_cast($4); + auto valueMetaData = dynamic_pointer_cast($6); + auto valueType = dynamic_pointer_cast($7); + ContainerPtr cont = currentUnit->currentContainer(); $$ = cont->createDictionary(ident->v, keyType, keyMetaData->v, valueType, valueMetaData->v); // Dummy - unit->error("keyword `" + ident->v + "' cannot be used as dictionary name"); + currentUnit->error("keyword `" + ident->v + "' cannot be used as dictionary name"); } ; @@ -1627,8 +1633,8 @@ enum_id } | ICE_ENUM keyword { - StringTokPtr ident = StringTokPtr::dynamicCast($2); - unit->error("keyword `" + ident->v + "' cannot be used as enumeration name"); + auto ident = dynamic_pointer_cast($2); + currentUnit->error("keyword `" + ident->v + "' cannot be used as enumeration name"); $$ = $2; // Dummy } ; @@ -1638,8 +1644,8 @@ enum_def // ---------------------------------------------------------------------- : enum_id { - StringTokPtr ident = StringTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($1); + ContainerPtr cont = currentUnit->currentContainer(); EnumPtr en = cont->createEnum(ident->v); if(en) { @@ -1649,35 +1655,35 @@ enum_def { en = cont->createEnum(IceUtil::generateUUID(), Dummy); } - unit->pushContainer(en); + currentUnit->pushContainer(en); $$ = en; } '{' enumerator_list '}' { - EnumPtr en = EnumPtr::dynamicCast($2); + auto en = dynamic_pointer_cast($2); if(en) { - EnumeratorListTokPtr enumerators = EnumeratorListTokPtr::dynamicCast($4); + auto enumerators = dynamic_pointer_cast($4); if(enumerators->v.empty()) { - unit->error("enum `" + en->name() + "' must have at least one enumerator"); + currentUnit->error("enum `" + en->name() + "' must have at least one enumerator"); } - unit->popContainer(); + currentUnit->popContainer(); } $$ = $2; } | ICE_ENUM { - unit->error("missing enumeration name"); - ContainerPtr cont = unit->currentContainer(); + currentUnit->error("missing enumeration name"); + ContainerPtr cont = currentUnit->currentContainer(); EnumPtr en = cont->createEnum(IceUtil::generateUUID(), Dummy); - unit->pushContainer(en); + currentUnit->pushContainer(en); $$ = en; } '{' enumerator_list '}' { - unit->popContainer(); + currentUnit->popContainer(); $$ = $1; } ; @@ -1687,8 +1693,8 @@ enumerator_list // ---------------------------------------------------------------------- : enumerator ',' enumerator_list { - EnumeratorListTokPtr ens = EnumeratorListTokPtr::dynamicCast($1); - ens->v.splice(ens->v.end(), EnumeratorListTokPtr::dynamicCast($3)->v); + auto ens = dynamic_pointer_cast($1); + ens->v.splice(ens->v.end(), dynamic_pointer_cast($3)->v); $$ = ens; } | enumerator @@ -1701,9 +1707,9 @@ enumerator // ---------------------------------------------------------------------- : ICE_IDENTIFIER { - StringTokPtr ident = StringTokPtr::dynamicCast($1); - EnumeratorListTokPtr ens = new EnumeratorListTok; - ContainerPtr cont = unit->currentContainer(); + auto ident = dynamic_pointer_cast($1); + auto ens = make_shared(); + ContainerPtr cont = currentUnit->currentContainer(); EnumeratorPtr en = cont->createEnumerator(ident->v); if(en) { @@ -1713,15 +1719,15 @@ enumerator } | ICE_IDENTIFIER '=' enumerator_initializer { - StringTokPtr ident = StringTokPtr::dynamicCast($1); - EnumeratorListTokPtr ens = new EnumeratorListTok; - ContainerPtr cont = unit->currentContainer(); - IntegerTokPtr intVal = IntegerTokPtr::dynamicCast($3); + auto ident = dynamic_pointer_cast($1); + auto ens = make_shared(); + ContainerPtr cont = currentUnit->currentContainer(); + auto intVal = dynamic_pointer_cast($3); if(intVal) { if(intVal->v < 0 || intVal->v > Int32Max) { - unit->error("value for enumerator `" + ident->v + "' is out of range"); + currentUnit->error("value for enumerator `" + ident->v + "' is out of range"); } else { @@ -1733,14 +1739,14 @@ enumerator } | keyword { - StringTokPtr ident = StringTokPtr::dynamicCast($1); - unit->error("keyword `" + ident->v + "' cannot be used as enumerator"); - EnumeratorListTokPtr ens = new EnumeratorListTok; // Dummy + auto ident = dynamic_pointer_cast($1); + currentUnit->error("keyword `" + ident->v + "' cannot be used as enumerator"); + auto ens = make_shared(); // Dummy $$ = ens; } | %empty { - EnumeratorListTokPtr ens = new EnumeratorListTok; + auto ens = make_shared(); $$ = ens; // Dummy } ; @@ -1754,22 +1760,22 @@ enumerator_initializer } | scoped_name { - StringTokPtr scoped = StringTokPtr::dynamicCast($1); - ContainedList cl = unit->currentContainer()->lookupContained(scoped->v); + auto scoped = dynamic_pointer_cast($1); + ContainedList cl = currentUnit->currentContainer()->lookupContained(scoped->v); IntegerTokPtr tok; if(!cl.empty()) { - ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + auto constant = dynamic_pointer_cast(cl.front()); if(constant) { - unit->currentContainer()->checkIntroduced(scoped->v, constant); - BuiltinPtr b = BuiltinPtr::dynamicCast(constant->type()); + currentUnit->currentContainer()->checkIntroduced(scoped->v, constant); + auto b = dynamic_pointer_cast(constant->type()); if(b && b->isIntegralType()) { IceUtil::Int64 v; if(IceUtilInternal::stringToInt64(constant->value(), v)) { - tok = new IntegerTok; + tok = make_shared(); tok->v = v; tok->literal = constant->value(); } @@ -1780,7 +1786,7 @@ enumerator_initializer if(!tok) { string msg = "illegal initializer: `" + scoped->v + "' is not an integer constant"; - unit->error(msg); // $$ is dummy + currentUnit->error(msg); // $$ is dummy } $$ = tok; @@ -1792,13 +1798,13 @@ out_qualifier // ---------------------------------------------------------------------- : ICE_OUT { - BoolTokPtr out = new BoolTok; + auto out = make_shared(); out->v = true; $$ = out; } | %empty { - BoolTokPtr out = new BoolTok; + auto out = make_shared(); out->v = false; $$ = out; } @@ -1812,14 +1818,14 @@ parameters } | out_qualifier meta_data tagged_type_id { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast($1); - TaggedDefTokPtr tsp = TaggedDefTokPtr::dynamicCast($3); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); - if(op) + auto isOutParam = dynamic_pointer_cast($1); + auto tsp = dynamic_pointer_cast($3); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); + if (op) { ParamDeclPtr pd = op->createParamDecl(tsp->name, tsp->type, isOutParam->v, tsp->isTagged, tsp->tag); - unit->currentContainer()->checkIntroduced(tsp->name, pd); - StringListTokPtr metaData = StringListTokPtr::dynamicCast($2); + currentUnit->currentContainer()->checkIntroduced(tsp->name, pd); + auto metaData = dynamic_pointer_cast($2); if(!metaData->v.empty()) { pd->setMetaData(metaData->v); @@ -1828,14 +1834,14 @@ parameters } | parameters ',' out_qualifier meta_data tagged_type_id { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast($3); - TaggedDefTokPtr tsp = TaggedDefTokPtr::dynamicCast($5); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); + auto isOutParam = dynamic_pointer_cast($3); + auto tsp = dynamic_pointer_cast($5); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); if(op) { ParamDeclPtr pd = op->createParamDecl(tsp->name, tsp->type, isOutParam->v, tsp->isTagged, tsp->tag); - unit->currentContainer()->checkIntroduced(tsp->name, pd); - StringListTokPtr metaData = StringListTokPtr::dynamicCast($4); + currentUnit->currentContainer()->checkIntroduced(tsp->name, pd); + auto metaData = dynamic_pointer_cast($4); if(!metaData->v.empty()) { pd->setMetaData(metaData->v); @@ -1844,48 +1850,48 @@ parameters } | out_qualifier meta_data type keyword { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast($1); - TypePtr type = TypePtr::dynamicCast($3); - StringTokPtr ident = StringTokPtr::dynamicCast($4); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); - if(op) + auto isOutParam = dynamic_pointer_cast($1); + auto type = dynamic_pointer_cast($3); + auto ident = dynamic_pointer_cast($4); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); + if (op) { op->createParamDecl(ident->v, type, isOutParam->v, false, 0); // Dummy - unit->error("keyword `" + ident->v + "' cannot be used as parameter name"); + currentUnit->error("keyword `" + ident->v + "' cannot be used as parameter name"); } } | parameters ',' out_qualifier meta_data type keyword { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast($3); - TypePtr type = TypePtr::dynamicCast($5); - StringTokPtr ident = StringTokPtr::dynamicCast($6); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); - if(op) + auto isOutParam = dynamic_pointer_cast($3); + auto type = dynamic_pointer_cast($5); + auto ident = dynamic_pointer_cast($6); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); + if (op) { op->createParamDecl(ident->v, type, isOutParam->v, false, 0); // Dummy - unit->error("keyword `" + ident->v + "' cannot be used as parameter name"); + currentUnit->error("keyword `" + ident->v + "' cannot be used as parameter name"); } } | out_qualifier meta_data type { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast($1); - TypePtr type = TypePtr::dynamicCast($3); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); - if(op) + auto isOutParam = dynamic_pointer_cast($1); + auto type = dynamic_pointer_cast($3); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); + if (op) { op->createParamDecl(IceUtil::generateUUID(), type, isOutParam->v, false, 0); // Dummy - unit->error("missing parameter name"); + currentUnit->error("missing parameter name"); } } | parameters ',' out_qualifier meta_data type { - BoolTokPtr isOutParam = BoolTokPtr::dynamicCast($3); - TypePtr type = TypePtr::dynamicCast($5); - OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); - if(op) + auto isOutParam = dynamic_pointer_cast($3); + auto type = dynamic_pointer_cast($5); + auto op = dynamic_pointer_cast(currentUnit->currentContainer()); + if (op) { op->createParamDecl(IceUtil::generateUUID(), type, isOutParam->v, false, 0); // Dummy - unit->error("missing parameter name"); + currentUnit->error("missing parameter name"); } } ; @@ -1899,7 +1905,7 @@ throws } | %empty { - $$ = new ExceptionListTok; + $$ = make_shared(); } ; @@ -1933,17 +1939,17 @@ type // ---------------------------------------------------------------------- : ICE_OBJECT '*' { - $$ = unit->builtin(Builtin::KindObjectProxy); + $$ = currentUnit->builtin(Builtin::KindObjectProxy); } | builtin { - StringTokPtr typeName = StringTokPtr::dynamicCast($1); - $$ = unit->builtin(Builtin::kindFromString(typeName->v).value()); + auto typeName = dynamic_pointer_cast($1); + $$ = currentUnit->builtin(Builtin::kindFromString(typeName->v).value()); } | scoped_name { - StringTokPtr scoped = StringTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast($1); + ContainerPtr cont = currentUnit->currentContainer(); if(cont) { TypeList types = cont->lookupType(scoped->v); @@ -1953,13 +1959,13 @@ type } TypePtr firstType = types.front(); - InterfaceDeclPtr interface = InterfaceDeclPtr::dynamicCast(firstType); + auto interface = dynamic_pointer_cast(firstType); if(interface) { string msg = "add a '*' after the interface name to specify its proxy type: '"; msg += scoped->v; msg += "*'"; - unit->error(msg); + currentUnit->error(msg); YYERROR; // Can't continue, jump to next yyerrok } cont->checkIntroduced(scoped->v); @@ -1968,13 +1974,13 @@ type } else { - $$ = 0; + $$ = nullptr; } } | scoped_name '*' { - StringTokPtr scoped = StringTokPtr::dynamicCast($1); - ContainerPtr cont = unit->currentContainer(); + auto scoped = dynamic_pointer_cast($1); + ContainerPtr cont = currentUnit->currentContainer(); if(cont) { TypeList types = cont->lookupType(scoped->v); @@ -1984,13 +1990,13 @@ type } TypePtr firstType = types.front(); - InterfaceDeclPtr interface = InterfaceDeclPtr::dynamicCast(firstType); + auto interface = dynamic_pointer_cast(firstType); if(!interface) { string msg = "`"; msg += scoped->v; msg += "' must be an interface"; - unit->error(msg); + currentUnit->error(msg); YYERROR; // Can't continue, jump to next yyerrok } cont->checkIntroduced(scoped->v); @@ -1999,7 +2005,7 @@ type } else { - $$ = 0; + $$ = nullptr; } } ; @@ -2009,8 +2015,8 @@ string_literal // ---------------------------------------------------------------------- : ICE_STRING_LITERAL string_literal // Adjacent string literals are concatenated { - StringTokPtr str1 = StringTokPtr::dynamicCast($1); - StringTokPtr str2 = StringTokPtr::dynamicCast($2); + auto str1 = dynamic_pointer_cast($1); + auto str2 = dynamic_pointer_cast($2); str1->v += str2->v; } | ICE_STRING_LITERAL @@ -2023,15 +2029,15 @@ string_list // ---------------------------------------------------------------------- : string_list ',' string_literal { - StringTokPtr str = StringTokPtr::dynamicCast($3); - StringListTokPtr stringList = StringListTokPtr::dynamicCast($1); + auto str = dynamic_pointer_cast($3); + auto stringList = dynamic_pointer_cast($1); stringList->v.push_back(str->v); $$ = stringList; } | string_literal { - StringTokPtr str = StringTokPtr::dynamicCast($1); - StringListTokPtr stringList = new StringListTok; + auto str = dynamic_pointer_cast($1); + auto stringList = make_shared(); stringList->v.push_back(str->v); $$ = stringList; } @@ -2042,76 +2048,76 @@ const_initializer // ---------------------------------------------------------------------- : ICE_INTEGER_LITERAL { - BuiltinPtr type = unit->builtin(Builtin::KindLong); - IntegerTokPtr intVal = IntegerTokPtr::dynamicCast($1); + BuiltinPtr type = currentUnit->builtin(Builtin::KindLong); + auto intVal = dynamic_pointer_cast($1); ostringstream sstr; sstr << intVal->v; - ConstDefTokPtr def = new ConstDefTok(type, sstr.str(), intVal->literal); + auto def = make_shared(type, sstr.str(), intVal->literal); $$ = def; } | ICE_FLOATING_POINT_LITERAL { - BuiltinPtr type = unit->builtin(Builtin::KindDouble); - FloatingTokPtr floatVal = FloatingTokPtr::dynamicCast($1); + BuiltinPtr type = currentUnit->builtin(Builtin::KindDouble); + auto floatVal = dynamic_pointer_cast($1); ostringstream sstr; sstr << floatVal->v; - ConstDefTokPtr def = new ConstDefTok(type, sstr.str(), floatVal->literal); + auto def = make_shared(type, sstr.str(), floatVal->literal); $$ = def; } | scoped_name { - StringTokPtr scoped = StringTokPtr::dynamicCast($1); + auto scoped = dynamic_pointer_cast($1); ConstDefTokPtr def; - ContainedList cl = unit->currentContainer()->lookupContained(scoped->v, false); + ContainedList cl = currentUnit->currentContainer()->lookupContained(scoped->v, false); if(cl.empty()) { // Could be an enumerator - def = new ConstDefTok(SyntaxTreeBasePtr(0), scoped->v, scoped->v); + def = make_shared(nullptr, scoped->v, scoped->v); } else { - EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(cl.front()); - ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + auto enumerator = dynamic_pointer_cast(cl.front()); + auto constant = dynamic_pointer_cast(cl.front()); if(enumerator) { - unit->currentContainer()->checkIntroduced(scoped->v, enumerator); - def = new ConstDefTok(enumerator, scoped->v, scoped->v); + currentUnit->currentContainer()->checkIntroduced(scoped->v, enumerator); + def = make_shared(enumerator, scoped->v, scoped->v); } else if(constant) { - unit->currentContainer()->checkIntroduced(scoped->v, constant); - def = new ConstDefTok(constant, constant->value(), constant->value()); + currentUnit->currentContainer()->checkIntroduced(scoped->v, constant); + def = make_shared(constant, constant->value(), constant->value()); } else { - def = new ConstDefTok; + def = make_shared(); string msg = "illegal initializer: `" + scoped->v + "' is "; string kindOf = cl.front()->kindOf(); msg += prependA(kindOf); - unit->error(msg); // $$ is dummy + currentUnit->error(msg); // $$ is dummy } } $$ = def; } | ICE_STRING_LITERAL { - BuiltinPtr type = unit->builtin(Builtin::KindString); - StringTokPtr literal = StringTokPtr::dynamicCast($1); - ConstDefTokPtr def = new ConstDefTok(type, literal->v, literal->literal); + BuiltinPtr type = currentUnit->builtin(Builtin::KindString); + auto literal = dynamic_pointer_cast($1); + auto def = make_shared(type, literal->v, literal->literal); $$ = def; } | ICE_FALSE { - BuiltinPtr type = unit->builtin(Builtin::KindBool); - StringTokPtr literal = StringTokPtr::dynamicCast($1); - ConstDefTokPtr def = new ConstDefTok(type, "false", "false"); + BuiltinPtr type = currentUnit->builtin(Builtin::KindBool); + auto literal = dynamic_pointer_cast($1); + auto def = make_shared(type, "false", "false"); $$ = def; } | ICE_TRUE { - BuiltinPtr type = unit->builtin(Builtin::KindBool); - StringTokPtr literal = StringTokPtr::dynamicCast($1); - ConstDefTokPtr def = new ConstDefTok(type, "true", "true"); + BuiltinPtr type = currentUnit->builtin(Builtin::KindBool); + auto literal = dynamic_pointer_cast($1); + auto def = make_shared(type, "true", "true"); $$ = def; } ; @@ -2121,20 +2127,20 @@ const_def // ---------------------------------------------------------------------- : ICE_CONST meta_data type ICE_IDENTIFIER '=' const_initializer { - StringListTokPtr metaData = StringListTokPtr::dynamicCast($2); - TypePtr const_type = TypePtr::dynamicCast($3); - StringTokPtr ident = StringTokPtr::dynamicCast($4); - ConstDefTokPtr value = ConstDefTokPtr::dynamicCast($6); - $$ = unit->currentContainer()->createConst(ident->v, const_type, metaData->v, value->v, + auto metaData = dynamic_pointer_cast($2); + auto const_type = dynamic_pointer_cast($3); + auto ident = dynamic_pointer_cast($4); + auto value = dynamic_pointer_cast($6); + $$ = currentUnit->currentContainer()->createConst(ident->v, const_type, metaData->v, value->v, value->valueAsString, value->valueAsLiteral); } | ICE_CONST meta_data type '=' const_initializer { - StringListTokPtr metaData = StringListTokPtr::dynamicCast($2); - TypePtr const_type = TypePtr::dynamicCast($3); - ConstDefTokPtr value = ConstDefTokPtr::dynamicCast($5); - unit->error("missing constant name"); - $$ = unit->currentContainer()->createConst(IceUtil::generateUUID(), const_type, metaData->v, value->v, + auto metaData = dynamic_pointer_cast($2); + auto const_type = dynamic_pointer_cast($3); + auto value = dynamic_pointer_cast($5); + currentUnit->error("missing constant name"); + $$ = currentUnit->currentContainer()->createConst(IceUtil::generateUUID(), const_type, metaData->v, value->v, value->valueAsString, value->valueAsLiteral, Dummy); // Dummy } ; diff --git a/cpp/src/Slice/GrammarUtil.h b/cpp/src/Slice/GrammarUtil.h index ab4814f3159..7d20eeb0f68 100644 --- a/cpp/src/Slice/GrammarUtil.h +++ b/cpp/src/Slice/GrammarUtil.h @@ -7,6 +7,7 @@ #include "Parser.h" #include "Util.h" +#include namespace Slice { @@ -26,20 +27,20 @@ class ConstDefTok; class TaggedDefTok; class ClassIdTok; -typedef ::IceUtil::Handle StringTokPtr; -typedef ::IceUtil::Handle StringListTokPtr; -typedef ::IceUtil::Handle TypeStringTokPtr; -typedef ::IceUtil::Handle TypeStringListTokPtr; -typedef ::IceUtil::Handle BoolTokPtr; -typedef ::IceUtil::Handle IntegerTokPtr; -typedef ::IceUtil::Handle FloatingTokPtr; -typedef ::IceUtil::Handle ExceptionListTokPtr; -typedef ::IceUtil::Handle ClassListTokPtr; -typedef ::IceUtil::Handle InterfaceListTokPtr; -typedef ::IceUtil::Handle EnumeratorListTokPtr; -typedef ::IceUtil::Handle ConstDefTokPtr; -typedef ::IceUtil::Handle TaggedDefTokPtr; -typedef ::IceUtil::Handle ClassIdTokPtr; +using StringTokPtr = std::shared_ptr; +using StringListTokPtr = std::shared_ptr; +using TypeStringTokPtr = std::shared_ptr; +using TypeStringListTokPtr = std::shared_ptr; +using BoolTokPtr = std::shared_ptr; +using IntegerTokPtr = std::shared_ptr; +using FloatingTokPtr = std::shared_ptr; +using ExceptionListTokPtr = std::shared_ptr; +using ClassListTokPtr = std::shared_ptr; +using InterfaceListTokPtr = std::shared_ptr; +using EnumeratorListTokPtr = std::shared_ptr; +using ConstDefTokPtr = std::shared_ptr; +using TaggedDefTokPtr = std::shared_ptr; +using ClassIdTokPtr = std::shared_ptr; // ---------------------------------------------------------------------- // StringTok @@ -98,7 +99,7 @@ class IntegerTok : public GrammarBase { public: - IntegerTok() { } + IntegerTok() : v(0) { } IceUtil::Int64 v; std::string literal; }; @@ -111,7 +112,7 @@ class FloatingTok : public GrammarBase { public: - FloatingTok() { } + FloatingTok() : v(0) { } double v; std::string literal; }; @@ -124,7 +125,7 @@ class BoolTok : public GrammarBase { public: - BoolTok() { } + BoolTok() : v(false) { } bool v; }; @@ -204,11 +205,17 @@ class TaggedDefTok : public GrammarBase { public: - TaggedDefTok() { } + TaggedDefTok() : + isTagged(false), + tag(0) + { + } + TaggedDefTok(int t) : isTagged(t >= 0), tag(t) - { } + { + } TypePtr type; std::string name; @@ -224,7 +231,7 @@ class ClassIdTok : public GrammarBase { public: - ClassIdTok() { } + ClassIdTok() : t(0) { } std::string v; int t; }; diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp index 0a0f351f034..b617b6d67d1 100644 --- a/cpp/src/Slice/Parser.cpp +++ b/cpp/src/Slice/Parser.cpp @@ -7,8 +7,11 @@ #include #include #include + +#include #include #include +#include // TODO: fix this warning once we no longer support VS2013 and earlier #if defined(_MSC_VER) @@ -18,6 +21,24 @@ using namespace std; using namespace Slice; +bool +Slice::containedCompare(const ContainedPtr& lhs, const ContainedPtr& rhs) +{ + return lhs->scoped() < rhs->scoped(); +} + +bool +Slice::containedEqual(const ContainedPtr& lhs, const ContainedPtr& rhs) +{ + return lhs->scoped() == rhs->scoped(); +} + +template +bool compareTag(const T& lhs, const T& rhs) +{ + return lhs->tag() < rhs->tag(); +} + Slice::CompilerException::CompilerException(const char* file, int line, const string& r) : IceUtil::Exception(file, line), _reason(r) @@ -80,70 +101,35 @@ enum { Supports, Mandatory, Required, Never }; DataMemberList filterOrderedOptionalDataMembers(const DataMemberList& members) { - class SortFn - { - public: - static bool compare(const DataMemberPtr& lhs, const DataMemberPtr& rhs) - { - return lhs->tag() < rhs->tag(); - } - }; - DataMemberList result; - for(DataMemberList::const_iterator p = members.begin(); p != members.end(); ++p) - { - if((*p)->optional()) - { - result.push_back(*p); - } - } - result.sort(SortFn::compare); + copy_if(members.begin(), members.end(), back_inserter(result), [](const auto& p) { return p->optional(); }); + result.sort(compareTag); return result; } -void -sortOptionalParameters(ParamDeclList& params) -{ - // - // Sort optional parameters by tag. - // - class SortFn - { - public: - static bool compare(const ParamDeclPtr& lhs, const ParamDeclPtr& rhs) - { - return lhs->tag() < rhs->tag(); - } - }; - params.sort(SortFn::compare); -} - bool isMutableAfterReturnType(const TypePtr& type) { - // - // Returns true if the type contains data types which can be referenced by user code - // and mutated after a dispatch returns. - // + // Returns true if the type contains data types which can be referenced by user code and mutated after a dispatch + // returns. - if(ClassDeclPtr::dynamicCast(type)) + if (dynamic_pointer_cast(type)) { return true; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); - if(builtin && builtin->usesClasses()) + BuiltinPtr builtin = dynamic_pointer_cast(type); + if (builtin && builtin->usesClasses()) { return true; } - if(SequencePtr::dynamicCast(type) || DictionaryPtr::dynamicCast(type)) + if (dynamic_pointer_cast(type) || dynamic_pointer_cast(type)) { return true; } - StructPtr s = StructPtr::dynamicCast(type); - if(s) + if (dynamic_pointer_cast(type)) { return true; } @@ -156,7 +142,7 @@ isMutableAfterReturnType(const TypePtr& type) namespace Slice { -Unit* unit; +Unit* currentUnit; } @@ -165,7 +151,9 @@ Unit* unit; // ---------------------------------------------------------------------- Slice::DefinitionContext::DefinitionContext(int includeLevel, const StringList& metaData) : - _includeLevel(includeLevel), _metaData(metaData), _seenDefinition(false) + _includeLevel(includeLevel), + _metaData(metaData), + _seenDefinition(false) { initSuppressedWarnings(); } @@ -222,14 +210,13 @@ Slice::DefinitionContext::setMetaData(const StringList& metaData) string Slice::DefinitionContext::findMetaData(const string& prefix) const { - for(StringList::const_iterator p = _metaData.begin(); p != _metaData.end(); ++p) + for (const auto& p : _metaData) { - if((*p).find(prefix) == 0) + if (p.find(prefix) == 0) { - return *p; + return p; } } - return string(); } @@ -242,7 +229,7 @@ Slice::DefinitionContext::getMetaData() const void Slice::DefinitionContext::warning(WarningCategory category, const string& file, int line, const string& msg) const { - if(!suppressWarning(category)) + if (!suppressWarning(category)) { emitWarning(file, line, msg); } @@ -251,7 +238,7 @@ Slice::DefinitionContext::warning(WarningCategory category, const string& file, void Slice::DefinitionContext::warning(WarningCategory category, const string& file, const string& line, const string& msg) const { - if(!suppressWarning(category)) + if (!suppressWarning(category)) { emitWarning(file, line, msg); } @@ -296,9 +283,9 @@ Slice::DefinitionContext::initSuppressedWarnings() value = value.substr(prefix.length() + 1); vector result; IceUtilInternal::splitString(value, ",", result); - for(vector::iterator p = result.begin(); p != result.end(); ++p) + for (const auto& p : result) { - string s = IceUtilInternal::trim(*p); + string s = IceUtilInternal::trim(p); if(s == "all") { _suppressedWarnings.insert(All); @@ -373,10 +360,6 @@ Slice::Comment::exceptions() const return _exceptions; } -Slice::Comment::Comment() -{ -} - // ---------------------------------------------------------------------- // SyntaxTreeBase // ---------------------------------------------------------------------- @@ -384,7 +367,7 @@ Slice::Comment::Comment() void Slice::SyntaxTreeBase::destroy() { - _unit = 0; + _unit = nullptr; } UnitPtr @@ -404,13 +387,12 @@ Slice::SyntaxTreeBase::visit(ParserVisitor*, bool) { } -Slice::SyntaxTreeBase::SyntaxTreeBase(const UnitPtr& unt, const DefinitionContextPtr& definitionContext) : - _unit(unt), - _definitionContext(definitionContext) +Slice::SyntaxTreeBase::SyntaxTreeBase(const UnitPtr& unit) : + _unit(unit) { - if(!_definitionContext && _unit) + if (_unit) { - _definitionContext = unt->currentDefinitionContext(); + _definitionContext = _unit->currentDefinitionContext(); } } @@ -418,8 +400,8 @@ Slice::SyntaxTreeBase::SyntaxTreeBase(const UnitPtr& unt, const DefinitionContex // Type // ---------------------------------------------------------------------- -Slice::Type::Type(const UnitPtr& unt) : - SyntaxTreeBase(unt) +Slice::Type::Type(const UnitPtr& unit) : + SyntaxTreeBase(unit) { } @@ -557,7 +539,7 @@ Slice::Builtin::kindAsString() const optional Slice::Builtin::kindFromString(string_view str) { - for(size_t i = 0; i < builtinTable.size(); i++) + for (size_t i = 0; i < builtinTable.size(); i++) { if(str == builtinTable[i]) { @@ -567,15 +549,13 @@ Slice::Builtin::kindFromString(string_view str) return nullopt; } -Slice::Builtin::Builtin(const UnitPtr& ut, Kind kind) : - SyntaxTreeBase(ut), - Type(ut), +Slice::Builtin::Builtin(const UnitPtr& unit, Kind kind) : + SyntaxTreeBase(unit), + Type(unit), _kind(kind) { - // // Builtin types do not have a definition context. - // - _definitionContext = 0; + _definitionContext = nullptr; } // ---------------------------------------------------------------------- @@ -661,9 +641,7 @@ splitComment(const string& c, bool stripMarkup) if(stripMarkup) { - // // Strip HTML markup and javadoc links. - // string::size_type pos = 0; do { @@ -794,7 +772,7 @@ parseCommentLine(const string& l, const string& tag, bool namedTag, string& name CommentPtr Slice::Contained::parseComment(bool stripMarkup) const { - CommentPtr comment = new Comment; + CommentPtr comment = make_shared(); comment->_isDeprecated = false; @@ -984,11 +962,11 @@ Slice::Contained::hasMetaData(const string& meta) const bool Slice::Contained::findMetaData(const string& prefix, string& meta) const { - for(list::const_iterator p = _metaData.begin(); p != _metaData.end(); ++p) + for (const auto& p : _metaData) { - if(p->find(prefix) == 0) + if (p.find(prefix) == 0) { - meta = *p; + meta = p; return true; } } @@ -1008,9 +986,7 @@ Slice::Contained::setMetaData(const list& metaData) _metaData = metaData; } -// // TODO: remove this method once "cs:" and "vb:" prefix are hard errors. -// void Slice::Contained::addMetaData(const string& s) { @@ -1024,27 +1000,27 @@ Slice::Contained::parseFormatMetaData(const list& metaData) string tag; string prefix = "format:"; - for(list::const_iterator p = metaData.begin(); p != metaData.end(); ++p) + for (const auto& p : metaData) { - if(p->find(prefix) == 0) + if(p.find(prefix) == 0) { - tag = *p; + tag = p; break; } } - if(!tag.empty()) + if (!tag.empty()) { tag = tag.substr(prefix.size()); - if(tag == "compact") + if (tag == "compact") { result = CompactFormat; } - else if(tag == "sliced") + else if (tag == "sliced") { result = SlicedFormat; } - else if(tag != "default") // TODO: Allow "default" to be specified as a format value? + else if (tag != "default") // TODO: Allow "default" to be specified as a format value? { // TODO: How to handle invalid format? } @@ -1053,31 +1029,24 @@ Slice::Contained::parseFormatMetaData(const list& metaData) return result; } -bool -Slice::Contained::operator<(const Contained& rhs) const -{ - return _scoped < rhs._scoped; -} - -bool -Slice::Contained::operator==(const Contained& rhs) const -{ - return _scoped == rhs._scoped; -} - Slice::Contained::Contained(const ContainerPtr& container, const string& name) : SyntaxTreeBase(container->unit()), _container(container), _name(name) { - ContainedPtr cont = ContainedPtr::dynamicCast(_container); - if(cont) +} + +void +Slice::Contained::init() +{ + ContainedPtr cont = dynamic_pointer_cast(_container); + if (cont) { _scoped = cont->scoped(); } _scoped += "::" + _name; assert(_unit); - _unit->addContent(this); + _unit->addContent(dynamic_pointer_cast(shared_from_this())); _file = _unit->currentFile(); ostringstream s; s << _unit->currentLine(); @@ -1093,7 +1062,10 @@ Slice::Contained::Contained(const ContainerPtr& container, const string& name) : void Slice::Container::destroy() { - for_each(_contents.begin(), _contents.end(), [](const SyntaxTreeBasePtr& it) { it->destroy(); }); + for (const auto& i : _contents) + { + i->destroy(); + } _contents.clear(); _introducedMap.clear(); SyntaxTreeBase::destroy(); @@ -1103,21 +1075,21 @@ ModulePtr Slice::Container::createModule(const string& name) { ContainedList matches = _unit->findContents(thisScope() + name); - matches.sort(); // Modules can occur many times... - matches.unique(); // ... but we only want one instance of each. + matches.sort(containedCompare); // Modules can occur many times... + matches.unique(containedEqual); // ... but we only want one instance of each. if(thisScope() == "::") { _unit->addTopLevelModule(_unit->currentFile(), name); } - for(ContainedList::const_iterator p = matches.begin(); p != matches.end(); ++p) + for (const auto& p : matches) { bool differsOnlyInCase = matches.front()->name() != name; - ModulePtr module = ModulePtr::dynamicCast(*p); - if(module) + ModulePtr module = dynamic_pointer_cast(p); + if (module) { - if(differsOnlyInCase) // Modules can be reopened only if they are capitalized correctly. + if (differsOnlyInCase) // Modules can be reopened only if they are capitalized correctly. { string msg = "module `" + name + "' is capitalized inconsistently with its previous name: `"; msg += module->name() + "'"; @@ -1125,7 +1097,7 @@ Slice::Container::createModule(const string& name) return 0; } } - else if(!differsOnlyInCase) + else if (!differsOnlyInCase) { string msg = "redefinition of " + matches.front()->kindOf() + " `" + matches.front()->name(); msg += "' as module"; @@ -1146,7 +1118,8 @@ Slice::Container::createModule(const string& name) return 0; } - ModulePtr q = new Module(this, name); + ModulePtr q = make_shared(dynamic_pointer_cast(shared_from_this()), name); + q->init(); _contents.push_back(q); return q; } @@ -1157,14 +1130,14 @@ Slice::Container::createClassDef(const string& name, int id, const ClassDefPtr& ContainedList matches = _unit->findContents(thisScope() + name); for (const auto& p : matches) { - ClassDeclPtr decl = ClassDeclPtr::dynamicCast(p); + ClassDeclPtr decl = dynamic_pointer_cast(p); if(decl) { continue; // all good } bool differsOnlyInCase = matches.front()->name() != name; - ClassDefPtr def = ClassDefPtr::dynamicCast(p); + ClassDefPtr def = dynamic_pointer_cast(p); if(def) { if(differsOnlyInCase) @@ -1193,7 +1166,7 @@ Slice::Container::createClassDef(const string& name, int id, const ClassDefPtr& } else { - bool declared = InterfaceDeclPtr::dynamicCast(matches.front()); + bool declared = dynamic_pointer_cast(matches.front()) != nullptr; string msg = "class `" + name + "' was previously " + (declared ? "declared" : "defined") + " as " + prependA(matches.front()->kindOf()); _unit->error(msg); @@ -1206,12 +1179,13 @@ Slice::Container::createClassDef(const string& name, int id, const ClassDefPtr& return 0; } - ClassDefPtr def = new ClassDef(this, name, id, base); + ClassDefPtr def = make_shared(dynamic_pointer_cast(shared_from_this()), name, id, base); + def->init(); _contents.push_back(def); for (const auto& q : matches) { - ClassDeclPtr decl = ClassDeclPtr::dynamicCast(q); + ClassDeclPtr decl = dynamic_pointer_cast(q); decl->_definition = def; } @@ -1234,13 +1208,13 @@ Slice::Container::createClassDecl(const string& name) ContainedList matches = _unit->findContents(thisScope() + name); for (const auto& p : matches) { - ClassDefPtr clDef = ClassDefPtr::dynamicCast(p); + ClassDefPtr clDef = dynamic_pointer_cast(p); if(clDef) { continue; } - ClassDeclPtr clDecl = ClassDeclPtr::dynamicCast(p); + ClassDeclPtr clDecl = dynamic_pointer_cast(p); if(clDecl) { continue; @@ -1255,7 +1229,7 @@ Slice::Container::createClassDecl(const string& name) } else { - bool declared = InterfaceDeclPtr::dynamicCast(matches.front()); + bool declared = dynamic_pointer_cast(matches.front()) != nullptr; string msg = "class `" + name + "' was previously " + (declared ? "declared" : "defined") + " as " + prependA(matches.front()->kindOf()); _unit->error(msg); @@ -1277,19 +1251,20 @@ Slice::Container::createClassDecl(const string& name) { if(q->name() == name) { - ClassDeclPtr decl = ClassDeclPtr::dynamicCast(q); + ClassDeclPtr decl = dynamic_pointer_cast(q); if(decl) { return decl; } - def = ClassDefPtr::dynamicCast(q); + def = dynamic_pointer_cast(q); assert(def); } } _unit->currentContainer(); - ClassDeclPtr decl = new ClassDecl(this, name); + ClassDeclPtr decl = make_shared(dynamic_pointer_cast(shared_from_this()), name); + decl->init(); _contents.push_back(decl); if(def) @@ -1306,14 +1281,14 @@ Slice::Container::createInterfaceDef(const string& name, const InterfaceList& ba ContainedList matches = _unit->findContents(thisScope() + name); for (const auto& p : matches) { - InterfaceDeclPtr decl = InterfaceDeclPtr::dynamicCast(p); + InterfaceDeclPtr decl = dynamic_pointer_cast(p); if(decl) { continue; // all good } bool differsOnlyInCase = matches.front()->name() != name; - InterfaceDefPtr def = InterfaceDefPtr::dynamicCast(p); + InterfaceDefPtr def = dynamic_pointer_cast(p); if (def) { if(differsOnlyInCase) @@ -1343,7 +1318,7 @@ Slice::Container::createInterfaceDef(const string& name, const InterfaceList& ba } else { - bool declared = ClassDeclPtr::dynamicCast(matches.front()); + bool declared = dynamic_pointer_cast(matches.front()) != nullptr; string msg = "interface `" + name + "' was previously " + (declared ? "declared" : "defined") + " as " + prependA(matches.front()->kindOf()); _unit->error(msg); @@ -1358,12 +1333,13 @@ Slice::Container::createInterfaceDef(const string& name, const InterfaceList& ba InterfaceDecl::checkBasesAreLegal(name, bases, _unit); - InterfaceDefPtr def = new InterfaceDef(this, name, bases); + InterfaceDefPtr def = make_shared(dynamic_pointer_cast(shared_from_this()), name, bases); + def->init(); _contents.push_back(def); for (const auto& q : matches) { - InterfaceDeclPtr decl = InterfaceDeclPtr::dynamicCast(q); + InterfaceDeclPtr decl = dynamic_pointer_cast(q); decl->_definition = def; } @@ -1386,13 +1362,13 @@ Slice::Container::createInterfaceDecl(const string& name) ContainedList matches = _unit->findContents(thisScope() + name); for (const auto& p : matches) { - InterfaceDefPtr interfaceDef = InterfaceDefPtr::dynamicCast(p); + InterfaceDefPtr interfaceDef = dynamic_pointer_cast(p); if (interfaceDef) { continue; } - InterfaceDeclPtr interfaceDecl = InterfaceDeclPtr::dynamicCast(p); + InterfaceDeclPtr interfaceDecl = dynamic_pointer_cast(p); if (interfaceDecl) { continue; @@ -1407,7 +1383,7 @@ Slice::Container::createInterfaceDecl(const string& name) } else { - bool declared = ClassDeclPtr::dynamicCast(matches.front()); + bool declared = dynamic_pointer_cast(matches.front()) != nullptr; string msg = "interface `" + name + "' was previously " + (declared ? "declared" : "defined") + " as " + prependA(matches.front()->kindOf()); _unit->error(msg); @@ -1426,19 +1402,20 @@ Slice::Container::createInterfaceDecl(const string& name) { if (q->name() == name) { - InterfaceDeclPtr decl = InterfaceDeclPtr::dynamicCast(q); + InterfaceDeclPtr decl = dynamic_pointer_cast(q); if (decl) { return decl; } - def = InterfaceDefPtr::dynamicCast(q); + def = dynamic_pointer_cast(q); assert(def); } } _unit->currentContainer(); - InterfaceDeclPtr decl = new InterfaceDecl(this, name); + InterfaceDeclPtr decl = make_shared(dynamic_pointer_cast(shared_from_this()), name); + decl->init(); _contents.push_back(decl); if (def) @@ -1455,7 +1432,7 @@ Slice::Container::createException(const string& name, const ExceptionPtr& base, ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - ExceptionPtr p = ExceptionPtr::dynamicCast(matches.front()); + ExceptionPtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -1486,7 +1463,8 @@ Slice::Container::createException(const string& name, const ExceptionPtr& base, checkForGlobalDef(name, "exception"); // Don't return here -- we create the exception anyway } - ExceptionPtr p = new Exception(this, name, base); + ExceptionPtr p = make_shared(dynamic_pointer_cast(shared_from_this()), name, base); + p->init(); _contents.push_back(p); return p; } @@ -1497,7 +1475,7 @@ Slice::Container::createStruct(const string& name, NodeType nt) ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - StructPtr p = StructPtr::dynamicCast(matches.front()); + StructPtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -1528,7 +1506,8 @@ Slice::Container::createStruct(const string& name, NodeType nt) checkForGlobalDef(name, "structure"); // Don't return here -- we create the struct anyway. } - StructPtr p = new Struct(this, name); + StructPtr p = make_shared(dynamic_pointer_cast(shared_from_this()), name); + p->init(); _contents.push_back(p); return p; } @@ -1539,7 +1518,7 @@ Slice::Container::createSequence(const string& name, const TypePtr& type, const ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - SequencePtr p = SequencePtr::dynamicCast(matches.front()); + SequencePtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -1570,7 +1549,8 @@ Slice::Container::createSequence(const string& name, const TypePtr& type, const checkForGlobalDef(name, "sequence"); // Don't return here -- we create the sequence anyway. } - SequencePtr p = new Sequence(this, name, type, metaData); + SequencePtr p = make_shared(dynamic_pointer_cast(shared_from_this()), name, type, metaData); + p->init(); _contents.push_back(p); return p; } @@ -1582,7 +1562,7 @@ Slice::Container::createDictionary(const string& name, const TypePtr& keyType, c ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - DictionaryPtr p = DictionaryPtr::dynamicCast(matches.front()); + DictionaryPtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -1627,7 +1607,14 @@ Slice::Container::createDictionary(const string& name, const TypePtr& keyType, c } } - DictionaryPtr p = new Dictionary(this, name, keyType, keyMetaData, valueType, valueMetaData); + DictionaryPtr p = make_shared( + dynamic_pointer_cast(shared_from_this()), + name, + keyType, + keyMetaData, + valueType, + valueMetaData); + p->init(); _contents.push_back(p); return p; } @@ -1638,7 +1625,7 @@ Slice::Container::createEnum(const string& name, NodeType nt) ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - EnumPtr p = EnumPtr::dynamicCast(matches.front()); + EnumPtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -1669,7 +1656,8 @@ Slice::Container::createEnum(const string& name, NodeType nt) checkForGlobalDef(name, "enumeration"); // Don't return here -- we create the enumeration anyway. } - EnumPtr p = new Enum(this, name); + EnumPtr p = make_shared(dynamic_pointer_cast(shared_from_this()), name); + p->init(); _contents.push_back(p); return p; } @@ -1680,7 +1668,8 @@ Slice::Container::createEnumerator(const string& name) EnumeratorPtr p = validateEnumerator(name); if(!p) { - p = new Enumerator(this, name); + p = make_shared(dynamic_pointer_cast(shared_from_this()), name); + p->init(); _contents.push_back(p); } return p; @@ -1692,7 +1681,8 @@ Slice::Container::createEnumerator(const string& name, int value) EnumeratorPtr p = validateEnumerator(name); if(!p) { - p = new Enumerator(this, name, value); + p = make_shared(dynamic_pointer_cast(shared_from_this()), name, value); + p->init(); _contents.push_back(p); } return p; @@ -1706,7 +1696,7 @@ Slice::Container::createConst(const string name, const TypePtr& constType, const ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - ConstPtr p = ConstPtr::dynamicCast(matches.front()); + ConstPtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -1727,7 +1717,7 @@ Slice::Container::createConst(const string name, const TypePtr& constType, const msg += matches.front()->kindOf() + " `" + matches.front()->name() + "'"; _unit->error(msg); } - return 0; + return nullptr; } checkIdentifier(name); // Don't return here -- we create the constant anyway. @@ -1739,15 +1729,21 @@ Slice::Container::createConst(const string name, const TypePtr& constType, const SyntaxTreeBasePtr resolvedValueType = valueType; - // // Validate the constant and its value; for enums, find enumerator - // if(nt == Real && !validateConstant(name, constType, resolvedValueType, value, true)) { - return 0; + return nullptr; } - ConstPtr p = new Const(this, name, constType, metaData, resolvedValueType, value, literal); + ConstPtr p = make_shared( + dynamic_pointer_cast(shared_from_this()), + name, + constType, + metaData, + resolvedValueType, + value, + literal); + p->init(); _contents.push_back(p); return p; } @@ -1806,22 +1802,22 @@ Slice::Container::lookupTypeNoBuiltin(const string& scoped, bool printError, boo vector errors; ContainedList matches = _unit->findContents(thisScope() + sc); - for (ContainedList::const_iterator p = matches.begin(); p != matches.end(); ++p) + for (const auto& p : matches) { - if (InterfaceDefPtr::dynamicCast(*p) || ClassDefPtr::dynamicCast(*p)) + if (dynamic_pointer_cast(p) || dynamic_pointer_cast(p)) { continue; // Ignore interface and class definitions. } if (printError && matches.front()->scoped() != (thisScope() + sc)) { - string msg = (*p)->kindOf() + " name `" + scoped; + string msg = p->kindOf() + " name `" + scoped; msg += "' is capitalized inconsistently with its previous name: `"; msg += matches.front()->scoped() + "'"; errors.push_back(msg); } - ExceptionPtr ex = ExceptionPtr::dynamicCast(*p); + ExceptionPtr ex = dynamic_pointer_cast(p); if (ex) { if (printError) @@ -1834,7 +1830,7 @@ Slice::Container::lookupTypeNoBuiltin(const string& scoped, bool printError, boo return TypeList(); } - TypePtr type = TypePtr::dynamicCast(*p); + TypePtr type = dynamic_pointer_cast(p); if (!type) { typeError = true; @@ -1852,7 +1848,7 @@ Slice::Container::lookupTypeNoBuiltin(const string& scoped, bool printError, boo if(results.empty()) { - ContainedPtr contained = ContainedPtr::dynamicCast(this); + ContainedPtr contained = dynamic_pointer_cast(shared_from_this()); if(contained) { results = contained->container()->lookupTypeNoBuiltin(sc, printError, typeError || ignoreUndefined); @@ -1870,9 +1866,7 @@ Slice::Container::lookupTypeNoBuiltin(const string& scoped, bool printError, boo } } - // // Do not emit errors if there was a type error but a match was found in a higher scope. - // if(printError && !(typeError && !results.empty())) { for (vector::const_iterator p = errors.begin(); p != errors.end(); ++p) @@ -1886,9 +1880,7 @@ Slice::Container::lookupTypeNoBuiltin(const string& scoped, bool printError, boo ContainedList Slice::Container::lookupContained(const string& scoped, bool printError) { - // // Remove whitespace. - // string sc = scoped; string::size_type pos; while((pos = sc.find_first_of(" \t\r\n")) != string::npos) @@ -1896,9 +1888,7 @@ Slice::Container::lookupContained(const string& scoped, bool printError) sc.erase(pos, 1); } - // // Absolute scoped name? - // if(sc.size() >= 2 && sc[0] == ':') { return _unit->lookupContained(sc.substr(2), printError); @@ -1906,26 +1896,26 @@ Slice::Container::lookupContained(const string& scoped, bool printError) ContainedList matches = _unit->findContents(thisScope() + sc); ContainedList results; - for (ContainedList::const_iterator p = matches.begin(); p != matches.end(); ++p) + for (const auto& p : matches) { - if(InterfaceDefPtr::dynamicCast(*p) || ClassDefPtr::dynamicCast(*p)) + if(dynamic_pointer_cast(p) || dynamic_pointer_cast(p)) { continue; // ignore definitions } - results.push_back(*p); + results.push_back(p); - if (printError && (*p)->scoped() != (thisScope() + sc)) + if (printError && p->scoped() != (thisScope() + sc)) { - string msg = (*p)->kindOf() + " name `" + scoped; - msg += "' is capitalized inconsistently with its previous name: `" + (*p)->scoped() + "'"; + string msg = p->kindOf() + " name `" + scoped; + msg += "' is capitalized inconsistently with its previous name: `" + p->scoped() + "'"; _unit->error(msg); } } if(results.empty()) { - ContainedPtr contained = ContainedPtr::dynamicCast(this); + ContainedPtr contained = dynamic_pointer_cast(shared_from_this()); if(!contained) { if(printError) @@ -1955,9 +1945,9 @@ Slice::Container::lookupException(const string& scoped, bool printError) } ExceptionList exceptions; - for(ContainedList::iterator p = contained.begin(); p != contained.end(); ++p) + for(const auto& p : contained) { - ExceptionPtr ex = ExceptionPtr::dynamicCast(*p); + ExceptionPtr ex = dynamic_pointer_cast(p); if(!ex) { if(printError) @@ -1985,9 +1975,9 @@ ModuleList Slice::Container::modules() const { ModuleList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for(const auto& p : _contents) { - ModulePtr q = ModulePtr::dynamicCast(*p); + ModulePtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -2000,9 +1990,9 @@ ClassList Slice::Container::classes() const { ClassList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - ClassDefPtr q = ClassDefPtr::dynamicCast(*p); + ClassDefPtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -2015,9 +2005,9 @@ InterfaceList Slice::Container::interfaces() const { InterfaceList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - InterfaceDefPtr q = InterfaceDefPtr::dynamicCast(*p); + InterfaceDefPtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -2030,9 +2020,9 @@ ExceptionList Slice::Container::exceptions() const { ExceptionList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - ExceptionPtr q = ExceptionPtr::dynamicCast(*p); + ExceptionPtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -2045,9 +2035,9 @@ StructList Slice::Container::structs() const { StructList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - StructPtr q = StructPtr::dynamicCast(*p); + StructPtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -2060,9 +2050,9 @@ SequenceList Slice::Container::sequences() const { SequenceList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - SequencePtr q = SequencePtr::dynamicCast(*p); + SequencePtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -2075,9 +2065,9 @@ DictionaryList Slice::Container::dictionaries() const { DictionaryList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - DictionaryPtr q = DictionaryPtr::dynamicCast(*p); + DictionaryPtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -2090,9 +2080,9 @@ EnumList Slice::Container::enums() const { EnumList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - EnumPtr q = EnumPtr::dynamicCast(*p); + EnumPtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -2105,9 +2095,9 @@ EnumeratorList Slice::Container::enumerators() const { EnumeratorList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - EnumeratorPtr q = EnumeratorPtr::dynamicCast(*p); + EnumeratorPtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -2116,9 +2106,7 @@ Slice::Container::enumerators() const return result; } -// // Find enumerators using the old unscoped enumerators lookup -// EnumeratorList Slice::Container::enumerators(const string& scoped) const { @@ -2128,40 +2116,35 @@ Slice::Container::enumerators(const string& scoped) const if(lastColon == string::npos) { // check all enclosing scopes - ContainerPtr container = const_cast(this); + ContainerPtr container = dynamic_pointer_cast( + const_pointer_cast(shared_from_this())); do { EnumList enums = container->enums(); - for(EnumList::iterator p = enums.begin(); p != enums.end(); ++p) + for (const auto& p : enums) { - ContainedList cl = (*p)->lookupContained(scoped, false); + ContainedList cl = p->lookupContained(scoped, false); if(!cl.empty()) { - result.push_back(EnumeratorPtr::dynamicCast(cl.front())); + result.push_back(dynamic_pointer_cast(cl.front())); } } - ContainedPtr contained = ContainedPtr::dynamicCast(container); - if(contained) - { - container = contained->container(); - } - else - { - container = 0; - } + ContainedPtr contained = dynamic_pointer_cast(container); + container = contained ? contained->container() : nullptr; } while(result.empty() && container); } else { // Find the referenced scope - ContainerPtr container = const_cast(this); + ContainerPtr container = dynamic_pointer_cast( + const_pointer_cast(shared_from_this())); string scope = scoped.substr(0, scoped.rfind("::")); ContainedList cl = container->lookupContained(scope, false); if(!cl.empty()) { - container = ContainerPtr::dynamicCast(cl.front()); + container = dynamic_pointer_cast(cl.front()); if(container) { EnumList enums = container->enums(); @@ -2171,7 +2154,7 @@ Slice::Container::enumerators(const string& scoped) const ContainedList cl2 = (*p)->lookupContained(name, false); if(!cl2.empty()) { - result.push_back(EnumeratorPtr::dynamicCast(cl2.front())); + result.push_back(dynamic_pointer_cast(cl2.front())); } } } @@ -2185,9 +2168,9 @@ ConstList Slice::Container::consts() const { ConstList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for(const auto& p : _contents) { - ConstPtr q = ConstPtr::dynamicCast(*p); + ConstPtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -2205,15 +2188,14 @@ Slice::Container::contents() const bool Slice::Container::hasSequences() const { - for (ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - SequencePtr s = SequencePtr::dynamicCast(*p); - if(s) + if(dynamic_pointer_cast(p)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasSequences()) { return true; @@ -2226,15 +2208,14 @@ Slice::Container::hasSequences() const bool Slice::Container::hasStructs() const { - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - StructPtr q = StructPtr::dynamicCast(*p); - if(q) + if(dynamic_pointer_cast(p)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasStructs()) { return true; @@ -2247,15 +2228,14 @@ Slice::Container::hasStructs() const bool Slice::Container::hasExceptions() const { - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - ExceptionPtr q = ExceptionPtr::dynamicCast(*p); - if(q) + if(dynamic_pointer_cast(p)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasExceptions()) { return true; @@ -2268,14 +2248,14 @@ Slice::Container::hasExceptions() const bool Slice::Container::hasClassDecls() const { - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - if(ClassDeclPtr::dynamicCast(*p)) + if (dynamic_pointer_cast(p)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasClassDecls()) { return true; @@ -2290,12 +2270,12 @@ Slice::Container::hasInterfaceDecls() const { for (const auto& p : _contents) { - if (InterfaceDeclPtr::dynamicCast(p)) + if (dynamic_pointer_cast(p)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(p); + ContainerPtr container = dynamic_pointer_cast(p); if (container && container->hasInterfaceDecls()) { return true; @@ -2308,15 +2288,14 @@ Slice::Container::hasInterfaceDecls() const bool Slice::Container::hasDictionaries() const { - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - DictionaryPtr d = DictionaryPtr::dynamicCast(*p); - if(d) + if(dynamic_pointer_cast(p)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasDictionaries()) { return true; @@ -2331,12 +2310,12 @@ Slice::Container::hasClassDefs() const { for (const auto& p : _contents) { - if(ClassDefPtr::dynamicCast(p)) + if(dynamic_pointer_cast(p)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasClassDefs()) { return true; @@ -2351,12 +2330,12 @@ Slice::Container::hasInterfaceDefs() const { for (const auto& p : _contents) { - if (InterfaceDefPtr::dynamicCast(p)) + if (dynamic_pointer_cast(p)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(p); + ContainerPtr container = dynamic_pointer_cast(p); if (container && container->hasInterfaceDefs()) { return true; @@ -2370,12 +2349,12 @@ Slice::Container::hasValueDefs() const { for (const auto& p : _contents) { - if(ClassDefPtr::dynamicCast(p)) + if(dynamic_pointer_cast(p)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasValueDefs()) { return true; @@ -2389,7 +2368,7 @@ Slice::Container::hasOnlyClassDecls() const { for (const auto& p : _contents) { - ModulePtr m = ModulePtr::dynamicCast(p); + ModulePtr m = dynamic_pointer_cast(p); if(m) { if(!m->hasOnlyClassDecls()) @@ -2397,7 +2376,7 @@ Slice::Container::hasOnlyClassDecls() const return false; } } - else if(!ClassDeclPtr::dynamicCast(p)) + else if(!dynamic_pointer_cast(p)) { return false; } @@ -2411,7 +2390,7 @@ Slice::Container::hasOnlyInterfaces() const { for (const auto& p : _contents) { - ModulePtr m = ModulePtr::dynamicCast(p); + ModulePtr m = dynamic_pointer_cast(p); if (m) { if (!m->hasOnlyInterfaces()) @@ -2421,10 +2400,10 @@ Slice::Container::hasOnlyInterfaces() const } else { - InterfaceDeclPtr decl = InterfaceDeclPtr::dynamicCast(p); + InterfaceDeclPtr decl = dynamic_pointer_cast(p); if (!decl) { - InterfaceDefPtr def = InterfaceDefPtr::dynamicCast(p); + InterfaceDefPtr def = dynamic_pointer_cast(p); if (!def) { return false; @@ -2438,15 +2417,15 @@ Slice::Container::hasOnlyInterfaces() const bool Slice::Container::hasOperations() const { - for (ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - InterfaceDefPtr def = InterfaceDefPtr::dynamicCast(*p); + InterfaceDefPtr def = dynamic_pointer_cast(p); if(def && def->hasOperations()) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasOperations()) { return true; @@ -2459,24 +2438,26 @@ Slice::Container::hasOperations() const bool Slice::Container::hasOtherConstructedOrExceptions() const { - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - if(ConstructedPtr::dynamicCast(*p) && !ClassDeclPtr::dynamicCast(*p) && !ClassDefPtr::dynamicCast(*p)) + if(dynamic_pointer_cast(p) && + !dynamic_pointer_cast(p) && + !dynamic_pointer_cast(p)) { return true; } - if(ExceptionPtr::dynamicCast(*p)) + if(dynamic_pointer_cast(p)) { return true; } - if(ConstPtr::dynamicCast(*p)) + if(dynamic_pointer_cast(p)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasOtherConstructedOrExceptions()) { return true; @@ -2489,14 +2470,14 @@ Slice::Container::hasOtherConstructedOrExceptions() const bool Slice::Container::hasContentsWithMetaData(const string& meta) const { - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - if((*p)->hasMetaData(meta)) + if(p->hasMetaData(meta)) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasContentsWithMetaData(meta)) { return true; @@ -2509,19 +2490,19 @@ Slice::Container::hasContentsWithMetaData(const string& meta) const bool Slice::Container::hasAsyncOps() const { - for (ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(*p); - if(interface) + InterfaceDefPtr interface = dynamic_pointer_cast(p); + if (interface) { OperationList ops = interface->operations(); - if(!ops.empty() && interface->hasMetaData("amd")) + if (!ops.empty() && interface->hasMetaData("amd")) { return true; } - for (OperationList::const_iterator i = ops.begin(); i != ops.end(); ++i) + + for (const auto& op : ops) { - OperationPtr op = *i; if(op->hasMetaData("amd")) { return true; @@ -2529,7 +2510,7 @@ Slice::Container::hasAsyncOps() const } } - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasAsyncOps()) { return true; @@ -2542,14 +2523,14 @@ Slice::Container::hasAsyncOps() const bool Slice::Container::hasContained(Contained::ContainedType type) const { - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - if((*p)->containedType() == type) + if(p->containedType() == type) { return true; } - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container && container->hasContained(type)) { return true; @@ -2563,8 +2544,8 @@ string Slice::Container::thisScope() const { string s; - ContainedPtr contained = ContainedPtr::dynamicCast(const_cast(this)); - if(contained) + ContainedPtr contained = dynamic_pointer_cast(const_pointer_cast(shared_from_this())); + if (contained) { s = contained->scoped(); } @@ -2575,9 +2556,9 @@ Slice::Container::thisScope() const void Slice::Container::mergeModules() { - for(ContainedList::iterator p = _contents.begin(); p != _contents.end(); ++p) + for (ContainedList::iterator p = _contents.begin(); p != _contents.end(); ++p) { - ModulePtr mod1 = ModulePtr::dynamicCast(*p); + ModulePtr mod1 = dynamic_pointer_cast(*p); if(!mod1) { continue; @@ -2593,7 +2574,7 @@ Slice::Container::mergeModules() ++q; while(q != _contents.end()) { - ModulePtr mod2 = ModulePtr::dynamicCast(*q); + ModulePtr mod2 = dynamic_pointer_cast(*q); if(!mod2) { ++q; @@ -2640,32 +2621,30 @@ Slice::Container::mergeModules() void Slice::Container::sort() { - _contents.sort(); + _contents.sort(containedCompare); } void Slice::Container::sortContents(bool sortFields) { - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - ContainerPtr container = ContainerPtr::dynamicCast(*p); + ContainerPtr container = dynamic_pointer_cast(p); if(container) { if(!sortFields) { - if(StructPtr::dynamicCast(container) || - ClassDefPtr::dynamicCast(container) || - InterfaceDefPtr::dynamicCast(container) || - ExceptionPtr::dynamicCast(container)) + if(dynamic_pointer_cast(container) || + dynamic_pointer_cast(container) || + dynamic_pointer_cast(container) || + dynamic_pointer_cast(container)) { continue; } } - // - // Don't sort operation definitions, otherwise parameters are shown in the - // wrong order in the synopsis. - // - if(!OperationPtr::dynamicCast(container)) + + // Don't sort operation definitions, otherwise parameters are shown in the wrong order in the synopsis. + if(!dynamic_pointer_cast(container)) { container->sort(); } @@ -2677,21 +2656,21 @@ Slice::Container::sortContents(bool sortFields) void Slice::Container::visit(ParserVisitor* visitor, bool all) { - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - if(all || (*p)->includeLevel() == 0) + if(all || p->includeLevel() == 0) { - (*p)->visit(visitor, all); + p->visit(visitor, all); } } } void -Slice::Container::containerRecDependencies(set& dependencies) +Slice::Container::containerRecDependencies(ConstructedSet& dependencies) { - for(ContainedList::iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - ConstructedPtr constructed = ConstructedPtr::dynamicCast(*p); + ConstructedPtr constructed = dynamic_pointer_cast(p); if(constructed && dependencies.find(constructed) != dependencies.end()) { dependencies.insert(constructed); @@ -2743,7 +2722,7 @@ Slice::Container::checkIntroduced(const string& scoped, ContainedPtr namedThing) } else { - ContainedPtr contained = ContainedPtr::dynamicCast(c); + ContainedPtr contained = dynamic_pointer_cast(c); if(contained) { c = contained->container(); @@ -2755,50 +2734,41 @@ Slice::Container::checkIntroduced(const string& scoped, ContainedPtr namedThing) pos = scoped.find("::", pos + 2); } } - if(ContainedPtr::dynamicCast(c)) + + if(dynamic_pointer_cast(c)) { - namedThing = ContainedPtr::dynamicCast(c); + namedThing = dynamic_pointer_cast(c); } } - // // Check if the first component is in the introduced map of this scope. - // map::const_iterator it = _introducedMap.find(firstComponent); if(it == _introducedMap.end()) { - // // We've just introduced the first component to the current scope. - // _introducedMap[firstComponent] = namedThing; // No, insert it } else { - // - // We've previously introduced the first component to the current scope, - // check that it has not changed meaning. - // - if(it->second != namedThing) + // We've previously introduced the first component to the current scope, check that it has not changed meaning. + if(it->second->scoped() != namedThing->scoped()) { - // // Parameter are in its own scope. - // - if((ParamDeclPtr::dynamicCast(it->second) && !ParamDeclPtr::dynamicCast(namedThing)) || - (!ParamDeclPtr::dynamicCast(it->second) && ParamDeclPtr::dynamicCast(namedThing))) + if((dynamic_pointer_cast(it->second) && !dynamic_pointer_cast(namedThing)) || + (!dynamic_pointer_cast(it->second) && dynamic_pointer_cast(namedThing))) { return true; } - // // Data members are in its own scope. - // - if((DataMemberPtr::dynamicCast(it->second) && !DataMemberPtr::dynamicCast(namedThing)) || - (!DataMemberPtr::dynamicCast(it->second) && DataMemberPtr::dynamicCast(namedThing))) + if((dynamic_pointer_cast(it->second) && !dynamic_pointer_cast(namedThing)) || + (!dynamic_pointer_cast(it->second) && dynamic_pointer_cast(namedThing))) { return true; } _unit->error("`" + firstComponent + "' has changed meaning"); + return false; } } @@ -2835,9 +2805,7 @@ Slice::Container::checkGlobalMetaData(const StringList& m1, const StringList& m2 0 }; - // // Collect the metadata that is unique to each list. - // StringList diffs; set_symmetric_difference(m1.begin(), m1.end(), m2.begin(), m2.end(), back_inserter(diffs)); @@ -2859,10 +2827,7 @@ bool Slice::Container::validateConstant(const string& name, const TypePtr& type, SyntaxTreeBasePtr& valueType, const string& value, bool isConstant) { - // - // isConstant indicates whether a constant or a data member (with a default value) is - // being defined. - // + // isConstant indicates whether a constant or a data member (with a default value) is being defined. if(!type) { @@ -2871,18 +2836,12 @@ Slice::Container::validateConstant(const string& name, const TypePtr& type, Synt const string desc = isConstant ? "constant" : "data member"; - // - // If valueType is a ConstPtr, it means the constant or data member being defined - // refers to another constant. - // - const ConstPtr constant = ConstPtr::dynamicCast(valueType); + // If valueType is a ConstPtr, it means the constant or data member being defined refers to another constant. + const ConstPtr constant = dynamic_pointer_cast(valueType); - // // First verify that it is legal to specify a constant or default value for the given type. - // - - BuiltinPtr b = BuiltinPtr::dynamicCast(type); - EnumPtr e = EnumPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); + EnumPtr e = dynamic_pointer_cast(type); if(b) { @@ -2913,21 +2872,18 @@ Slice::Container::validateConstant(const string& name, const TypePtr& type, Synt return false; } - // // Next, verify that the type of the constant or data member is compatible with the given value. - // - if(b) { BuiltinPtr lt; if(constant) { - lt = BuiltinPtr::dynamicCast(constant->type()); + lt = dynamic_pointer_cast(constant->type()); } else { - lt = BuiltinPtr::dynamicCast(valueType); + lt = dynamic_pointer_cast(valueType); } if(lt) @@ -3012,7 +2968,7 @@ Slice::Container::validateConstant(const string& name, const TypePtr& type, Synt { if(constant) { - EnumPtr ec = EnumPtr::dynamicCast(constant->type()); + EnumPtr ec = dynamic_pointer_cast(constant->type()); if(e != ec) { string msg = "type of initializer is incompatible with the type of " + desc + " `" + name + "'"; @@ -3024,7 +2980,7 @@ Slice::Container::validateConstant(const string& name, const TypePtr& type, Synt { if(valueType) { - EnumeratorPtr lte = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr lte = dynamic_pointer_cast(valueType); if(!lte) { @@ -3057,7 +3013,7 @@ Slice::Container::validateConstant(const string& name, const TypePtr& type, Synt _unit->error(msg); return false; } - EnumeratorPtr lte = EnumeratorPtr::dynamicCast(clist.front()); + EnumeratorPtr lte = dynamic_pointer_cast(clist.front()); if(lte) { valueType = lte; @@ -3086,7 +3042,7 @@ Slice::Container::validateEnumerator(const string& name) ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - EnumeratorPtr p = EnumeratorPtr::dynamicCast(matches.front()); + EnumeratorPtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -3136,10 +3092,11 @@ Slice::Module::kindOf() const void Slice::Module::visit(ParserVisitor* visitor, bool all) { - if(visitor->visitModuleStart(this)) + auto self = dynamic_pointer_cast(Container::shared_from_this()); + if(visitor->visitModuleStart(self)) { Container::visit(visitor, all); - visitor->visitModuleEnd(this); + visitor->visitModuleEnd(self); } } @@ -3163,7 +3120,7 @@ Slice::Constructed::typeId() const ConstructedList Slice::Constructed::dependencies() { - set resultSet; + ConstructedSet resultSet(containedCompare); recDependencies(resultSet); return ConstructedList(resultSet.begin(), resultSet.end()); @@ -3183,7 +3140,7 @@ Slice::Constructed::Constructed(const ContainerPtr& container, const string& nam void Slice::ClassDecl::destroy() { - _definition = 0; + _definition = nullptr; SyntaxTreeBase::destroy(); } @@ -3238,11 +3195,11 @@ Slice::ClassDecl::kindOf() const void Slice::ClassDecl::visit(ParserVisitor* visitor, bool) { - visitor->visitClassDecl(this); + visitor->visitClassDecl(dynamic_pointer_cast(shared_from_this())); } void -Slice::ClassDecl::recDependencies(set& dependencies) +Slice::ClassDecl::recDependencies(ConstructedSet& dependencies) { if(_definition) { @@ -3271,8 +3228,8 @@ Slice::ClassDecl::ClassDecl(const ContainerPtr& container, const string& name) : void Slice::ClassDef::destroy() { - _declaration = 0; - _base = 0; + _declaration = nullptr; + _base = nullptr; Container::destroy(); } @@ -3284,7 +3241,7 @@ Slice::ClassDef::createDataMember(const string& name, const TypePtr& type, bool ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - DataMemberPtr p = DataMemberPtr::dynamicCast(matches.front()); + DataMemberPtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -3341,17 +3298,13 @@ Slice::ClassDef::createDataMember(const string& name, const TypePtr& type, bool string dv = defaultValue; string dl = defaultLiteral; - if(dlt || (EnumPtr::dynamicCast(type) && !dv.empty())) + if(dlt || (dynamic_pointer_cast(type) && !dv.empty())) { - // // Validate the default value. - // if(!validateConstant(name, type, dlt, dv, false)) { - // // Create the data member anyway, just without the default value. - // - dlt = 0; + dlt = nullptr; dv.clear(); dl.clear(); } @@ -3359,13 +3312,10 @@ Slice::ClassDef::createDataMember(const string& name, const TypePtr& type, bool if(optional) { - // // Validate the tag. - // - DataMemberList dml = dataMembers(); - for(DataMemberList::iterator q = dml.begin(); q != dml.end(); ++q) + for (const auto& q : dataMembers()) { - if((*q)->optional() && tag == (*q)->tag()) + if (q->optional() && tag == q->tag()) { string msg = "tag for optional data member `" + name + "' is already in use"; _unit->error(msg); @@ -3375,7 +3325,16 @@ Slice::ClassDef::createDataMember(const string& name, const TypePtr& type, bool } _hasDataMembers = true; - DataMemberPtr member = new DataMember(this, name, type, optional, tag, dlt, dv, dl); + DataMemberPtr member = make_shared( + dynamic_pointer_cast(shared_from_this()), + name, + type, + optional, + tag, + dlt, + dv, + dl); + member->init(); _contents.push_back(member); return member; } @@ -3408,9 +3367,9 @@ DataMemberList Slice::ClassDef::dataMembers() const { DataMemberList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - DataMemberPtr q = DataMemberPtr::dynamicCast(*p); + DataMemberPtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -3425,25 +3384,19 @@ Slice::ClassDef::orderedOptionalDataMembers() const return filterOrderedOptionalDataMembers(dataMembers()); } -// // Return the data members of this class and its parent classes, in base-to-derived order. -// DataMemberList Slice::ClassDef::allDataMembers() const { DataMemberList result; - // // Check if we have a base class. If so, recursively get the data members of the base(s). - // if (_base) { result = _base->allDataMembers(); } - // // Append this class's data members. - // DataMemberList myMembers = dataMembers(); result.splice(result.end(), myMembers); @@ -3454,13 +3407,13 @@ DataMemberList Slice::ClassDef::classDataMembers() const { DataMemberList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - DataMemberPtr q = DataMemberPtr::dynamicCast(*p); + DataMemberPtr q = dynamic_pointer_cast(p); if(q) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(q->type()); - if((builtin && builtin->usesClasses()) || ClassDeclPtr::dynamicCast(q->type())) + BuiltinPtr builtin = dynamic_pointer_cast(q->type()); + if((builtin && builtin->usesClasses()) || dynamic_pointer_cast(q->type())) { result.push_back(q); } @@ -3469,25 +3422,19 @@ Slice::ClassDef::classDataMembers() const return result; } -// // Return the class data members of this class and its parent classes, in base-to-derived order. -// DataMemberList Slice::ClassDef::allClassDataMembers() const { DataMemberList result; - if (_base) { result = _base->allClassDataMembers(); } - // // Append this class's class members. - // DataMemberList myMembers = classDataMembers(); result.splice(result.end(), myMembers); - return result; } @@ -3498,10 +3445,10 @@ Slice::ClassDef::canBeCyclic() const { return true; } - DataMemberList dml = dataMembers(); - for (DataMemberList::const_iterator i = dml.begin(); i != dml.end(); ++i) + + for (const auto& i : dataMembers()) { - if((*i)->type()->usesClasses()) + if(i->type()->usesClasses()) { return true; } @@ -3518,10 +3465,9 @@ Slice::ClassDef::hasDataMembers() const bool Slice::ClassDef::hasDefaultValues() const { - DataMemberList dml = dataMembers(); - for(DataMemberList::const_iterator i = dml.begin(); i != dml.end(); ++i) + for (const auto& i : dataMembers()) { - if((*i)->defaultValueType()) + if (i->defaultValueType()) { return true; } @@ -3551,8 +3497,7 @@ Slice::ClassDef::containedType() const bool Slice::ClassDef::uses(const ContainedPtr&) const { - // No uses() implementation here. DataMember and Operation have - // their own uses(). + // No uses() implementation here. DataMember and Operation have their own uses(). return false; } string @@ -3564,10 +3509,11 @@ Slice::ClassDef::kindOf() const void Slice::ClassDef::visit(ParserVisitor* visitor, bool all) { - if(visitor->visitClassDefStart(this)) + auto self = dynamic_pointer_cast(Container::shared_from_this()); + if (visitor->visitClassDefStart(self)) { Container::visit(visitor, all); - visitor->visitClassDefEnd(this); + visitor->visitClassDefEnd(self); } } @@ -3598,7 +3544,7 @@ Slice::ClassDef::ClassDef(const ContainerPtr& container, const string& name, int void Slice::InterfaceDecl::destroy() { - _definition = 0; + _definition = nullptr; SyntaxTreeBase::destroy(); } @@ -3653,31 +3599,30 @@ Slice::InterfaceDecl::kindOf() const void Slice::InterfaceDecl::visit(ParserVisitor* visitor, bool) { - visitor->visitInterfaceDecl(this); + visitor->visitInterfaceDecl(dynamic_pointer_cast(shared_from_this())); } void -Slice::InterfaceDecl::recDependencies(set& dependencies) +Slice::InterfaceDecl::recDependencies(ConstructedSet& dependencies) { - if(_definition) + if (_definition) { _definition->containerRecDependencies(dependencies); - InterfaceList bases = _definition->bases(); - for (InterfaceList::iterator p = bases.begin(); p != bases.end(); ++p) + for (const auto& p : _definition->bases()) { - (*p)->declaration()->recDependencies(dependencies); + p->declaration()->recDependencies(dependencies); } } } void -Slice::InterfaceDecl::checkBasesAreLegal(const string& name, const InterfaceList& bases, - const UnitPtr& ut) +Slice::InterfaceDecl::checkBasesAreLegal( + const string& name, + const InterfaceList& bases, + const UnitPtr& ut) { - // - // Check whether, for multiple inheritance, any of the bases define - // the same operations. - // + + // Check whether, for multiple inheritance, any of the bases define the same operations. if(bases.size() > 1) { // @@ -3726,9 +3671,15 @@ Slice::InterfaceDecl::InterfaceDecl(const ContainerPtr& container, const string& bool Slice::InterfaceDecl::isInList(const GraphPartitionList& gpl, const InterfaceDefPtr& cdp) { - for (GraphPartitionList::const_iterator i = gpl.begin(); i != gpl.end(); ++i) + for (const auto& i : gpl) { - if(find(i->begin(), i->end(), cdp) != i->end()) + if (find_if( + i.begin(), + i.end(), + [scope = cdp->scoped()](const auto& other) + { + return other->scoped() == scope; + }) != i.end()) { return true; } @@ -3737,39 +3688,34 @@ Slice::InterfaceDecl::isInList(const GraphPartitionList& gpl, const InterfaceDef } void -Slice::InterfaceDecl::addPartition(GraphPartitionList& gpl, - GraphPartitionList::reverse_iterator tail, - const InterfaceDefPtr& base) +Slice::InterfaceDecl::addPartition( + GraphPartitionList& gpl, + GraphPartitionList::reverse_iterator tail, + const InterfaceDefPtr& base) { - // // If this base is on one of the partition lists already, do nothing. - // - if(isInList(gpl, base)) + if (isInList(gpl, base)) { return; } - // + // Put the current base at the end of the current partition. - // tail->push_back(base); - // - // If the base has bases in turn, recurse, adding the first base - // of base (the left-most "grandbase") to the current partition. - // + + // If the base has bases in turn, recurse, adding the first base of base (the left-most "grandbase") to the current + // partition. if(base->bases().size()) { addPartition(gpl, tail, *(base->bases().begin())); } - // - // If the base has multiple bases, each of the "grandbases" - // except for the left-most (which we just dealt with) + + // If the base has multiple bases, each of the "grandbases" except for the left-most (which we just dealt with) // adds a new partition. - // if(base->bases().size() > 1) { InterfaceList grandBases = base->bases(); InterfaceList::const_iterator i = grandBases.begin(); - while(++i != grandBases.end()) + while (++i != grandBases.end()) { InterfaceList cl; gpl.push_back(cl); @@ -3787,18 +3733,17 @@ Slice::InterfaceDecl::StringPartitionList Slice::InterfaceDecl::toStringPartitionList(const GraphPartitionList& gpl) { StringPartitionList spl; - for (GraphPartitionList::const_iterator i = gpl.begin(); i != gpl.end(); ++i) + for (const auto& interfaces : gpl) { StringList sl; - spl.push_back(sl); - for (InterfaceList::const_iterator j = i->begin(); j != i->end(); ++j) + for (const auto& interfaceDefinition : interfaces) { - OperationList operations = (*j)->operations(); - for (OperationList::const_iterator l = operations.begin(); l != operations.end(); ++l) + for (const auto& operation : interfaceDefinition->operations()) { - spl.rbegin()->push_back((*l)->name()); + sl.push_back(operation->name()); } } + spl.push_back(std::move(sl)); } return spl; } @@ -3851,22 +3796,23 @@ Slice::InterfaceDecl::checkPairIntersections(const StringPartitionList& l, const void Slice::InterfaceDef::destroy() { - _declaration = 0; + _declaration = nullptr; _bases.clear(); Container::destroy(); } OperationPtr -Slice::InterfaceDef::createOperation(const string& name, - const TypePtr& returnType, - bool tagged, - int tag, - Operation::Mode mode) +Slice::InterfaceDef::createOperation( + const string& name, + const TypePtr& returnType, + bool tagged, + int tag, + Operation::Mode mode) { ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - OperationPtr p = OperationPtr::dynamicCast(matches.front()); + OperationPtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -3887,9 +3833,7 @@ Slice::InterfaceDef::createOperation(const string& name, return 0; } - // // Check whether enclosing interface has the same name. - // if(name == this->name()) { string msg = "interface name `" + name + "' cannot be used as operation name"; @@ -3907,9 +3851,7 @@ Slice::InterfaceDef::createOperation(const string& name, return 0; } - // // Check whether any base has an operation with the same name already - // for (const auto& baseInterface : _bases) { for (const auto& op : baseInterface->allOperations()) @@ -3934,7 +3876,14 @@ Slice::InterfaceDef::createOperation(const string& name, } _hasOperations = true; - OperationPtr op = new Operation(this, name, returnType, tagged, tag, mode); + OperationPtr op = make_shared( + dynamic_pointer_cast(shared_from_this()), + name, + returnType, + tagged, + tag, + mode); + op->init(); _contents.push_back(op); return op; } @@ -3955,13 +3904,12 @@ InterfaceList Slice::InterfaceDef::allBases() const { InterfaceList result = _bases; - result.sort(); - result.unique(); - for (InterfaceList::const_iterator p = _bases.begin(); p != _bases.end(); ++p) + result.sort(containedCompare); + result.unique(containedEqual); + for (const auto& p : _bases) { - InterfaceList li = (*p)->allBases(); - result.merge(li); - result.unique(); + result.merge(p->allBases(), containedCompare); + result.unique(containedEqual); } return result; } @@ -3970,10 +3918,10 @@ OperationList Slice::InterfaceDef::operations() const { OperationList result; - for (ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - OperationPtr q = OperationPtr::dynamicCast(*p); - if(q) + OperationPtr q = dynamic_pointer_cast(p); + if (q) { result.push_back(q); } @@ -3985,24 +3933,28 @@ OperationList Slice::InterfaceDef::allOperations() const { OperationList result; - for (InterfaceList::const_iterator p = _bases.begin(); p != _bases.end(); ++p) + for (const auto& p : _bases) { - OperationList li = (*p)->allOperations(); - for (OperationList::const_iterator q = li.begin(); q != li.end(); ++q) + for (const auto& q : p->allOperations()) { - if(find(result.begin(), result.end(), *q) == result.end()) + if (find_if( + result.begin(), + result.end(), + [scoped = q->scoped()](const auto& other) { return other->scoped() == scoped; }) == result.end()) { - result.push_back(*q); + result.push_back(q); } } } - OperationList li = operations(); - for (OperationList::const_iterator q = li.begin(); q != li.end(); ++q) + for (const auto& q : operations()) { - if(find(result.begin(), result.end(), *q) == result.end()) + if (find_if( + result.begin(), + result.end(), + [scoped = q->scoped()](const auto& other) { return other->scoped() == scoped; }) == result.end()) { - result.push_back(*q); + result.push_back(q); } } return result; @@ -4015,9 +3967,10 @@ Slice::InterfaceDef::isA(const string& id) const { return true; } - for (InterfaceList::const_iterator p = _bases.begin(); p != _bases.end(); ++p) + + for (const auto& p : _bases) { - if((*p)->isA(id)) + if(p->isA(id)) { return true; } @@ -4034,14 +3987,13 @@ Slice::InterfaceDef::hasOperations() const bool Slice::InterfaceDef::inheritsMetaData(const string& meta) const { - for (InterfaceList::const_iterator p = _bases.begin(); p != _bases.end(); ++p) + for (const auto& p : _bases) { - if((*p)->hasMetaData(meta) || (*p)->inheritsMetaData(meta)) + if (p->hasMetaData(meta) || p->inheritsMetaData(meta)) { return true; } } - return false; } @@ -4067,10 +4019,11 @@ Slice::InterfaceDef::kindOf() const void Slice::InterfaceDef::visit(ParserVisitor* visitor, bool all) { - if(visitor->visitInterfaceDefStart(this)) + auto self = dynamic_pointer_cast(Container::shared_from_this()); + if (visitor->visitInterfaceDefStart(self)) { Container::visit(visitor, all); - visitor->visitInterfaceDefEnd(this); + visitor->visitInterfaceDefEnd(self); } } @@ -4079,7 +4032,7 @@ Slice::InterfaceDef::ids() const { StringList ids; InterfaceList bases = allBases(); - transform(bases.begin(), bases.end(), back_inserter(ids), [](const auto& c) { return c->scoped(); }); + std::transform(bases.begin(), bases.end(), back_inserter(ids), [](const auto& c) { return c->scoped(); }); StringList other; other.push_back(scoped()); other.push_back("::Ice::Object"); @@ -4105,7 +4058,7 @@ Slice::InterfaceDef::InterfaceDef(const ContainerPtr& container, const string& n void Slice::Exception::destroy() { - _base = 0; + _base = nullptr; Container::destroy(); } @@ -4117,7 +4070,7 @@ Slice::Exception::createDataMember(const string& name, const TypePtr& type, bool ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - DataMemberPtr p = DataMemberPtr::dynamicCast(matches.front()); + DataMemberPtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -4143,30 +4096,30 @@ Slice::Exception::createDataMember(const string& name, const TypePtr& type, bool checkIdentifier(name); // Don't return here -- we create the data member anyway. string newName = IceUtilInternal::toLower(name); - // + // Check whether any bases have defined a member with the same name already. - // ExceptionList bl = allBases(); - for(ExceptionList::const_iterator q = bl.begin(); q != bl.end(); ++q) + for (const auto& q : allBases()) { - ContainedList cl; - DataMemberList dml = (*q)->dataMembers(); - copy(dml.begin(), dml.end(), back_inserter(cl)); - for(ContainedList::const_iterator r = cl.begin(); r != cl.end(); ++r) + ContainedList contents; + DataMemberList dml = q->dataMembers(); + copy(dml.begin(), dml.end(), back_inserter(contents)); + + for (const auto& r : contents) { - if((*r)->name() == name) + if (r->name() == name) { string msg = "exception member `" + name + "' is already defined in a base exception"; _unit->error(msg); return 0; } - string baseName = IceUtilInternal::toLower((*r)->name()); + string baseName = IceUtilInternal::toLower(r->name()); string newName2 = IceUtilInternal::toLower(name); if(baseName == newName2) { string msg = "exception member `" + name + "' differs only in capitalization from exception member `"; - msg += (*r)->name() + "', which is defined in a base exception"; + msg += r->name() + "', which is defined in a base exception"; _unit->error(msg); } } @@ -4176,31 +4129,24 @@ Slice::Exception::createDataMember(const string& name, const TypePtr& type, bool string dv = defaultValue; string dl = defaultLiteral; - if(dlt || (EnumPtr::dynamicCast(type) && !dv.empty())) + if (dlt || (dynamic_pointer_cast(type) && !dv.empty())) { - // // Validate the default value. - // - if(!validateConstant(name, type, dlt, dv, false)) + if (!validateConstant(name, type, dlt, dv, false)) { - // // Create the data member anyway, just without the default value. - // - dlt = 0; + dlt = nullptr; dv.clear(); dl.clear(); } } - if(optional) + if (optional) { - // // Validate the tag. - // - DataMemberList dml = dataMembers(); - for(DataMemberList::iterator q = dml.begin(); q != dml.end(); ++q) + for (const auto& q : dataMembers()) { - if((*q)->optional() && tag == (*q)->tag()) + if(q->optional() && tag == q->tag()) { string msg = "tag for optional data member `" + name + "' is already in use"; _unit->error(msg); @@ -4209,7 +4155,16 @@ Slice::Exception::createDataMember(const string& name, const TypePtr& type, bool } } - DataMemberPtr p = new DataMember(this, name, type, optional, tag, dlt, dv, dl); + DataMemberPtr p = make_shared( + dynamic_pointer_cast(shared_from_this()), + name, + type, + optional, + tag, + dlt, + dv, + dl); + p->init(); _contents.push_back(p); return p; } @@ -4218,9 +4173,9 @@ DataMemberList Slice::Exception::dataMembers() const { DataMemberList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - DataMemberPtr q = DataMemberPtr::dynamicCast(*p); + DataMemberPtr q = dynamic_pointer_cast(p); if(q) { result.push_back(q); @@ -4235,29 +4190,21 @@ Slice::Exception::orderedOptionalDataMembers() const return filterOrderedOptionalDataMembers(dataMembers()); } -// // Return the data members of this exception and its parent exceptions, in base-to-derived order. -// DataMemberList Slice::Exception::allDataMembers() const { DataMemberList result; - // - // Check if we have a base exception. If so, recursively - // get the data members of the base exception(s). - // + // Check if we have a base exception. If so, recursively get the data members of the base exception(s). if(base()) { result = base()->allDataMembers(); } - // // Append this exceptions's data members. - // DataMemberList myMembers = dataMembers(); result.splice(result.end(), myMembers); - return result; } @@ -4265,13 +4212,13 @@ DataMemberList Slice::Exception::classDataMembers() const { DataMemberList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - DataMemberPtr q = DataMemberPtr::dynamicCast(*p); + DataMemberPtr q = dynamic_pointer_cast(p); if(q) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(q->type()); - if((builtin && builtin->usesClasses()) || ClassDeclPtr::dynamicCast(q->type())) + BuiltinPtr builtin = dynamic_pointer_cast(q->type()); + if((builtin && builtin->usesClasses()) || dynamic_pointer_cast(q->type())) { result.push_back(q); } @@ -4280,29 +4227,21 @@ Slice::Exception::classDataMembers() const return result; } -// // Return the class data members of this exception and its parent exceptions, in base-to-derived order. -// DataMemberList Slice::Exception::allClassDataMembers() const { DataMemberList result; - // - // Check if we have a base exception. If so, recursively - // get the class data members of the base exception(s). - // + // Check if we have a base exception. If so, recursively get the class data members of the base exception(s). if(base()) { result = base()->allClassDataMembers(); } - // // Append this exceptions's class data members. - // DataMemberList myMembers = classDataMembers(); result.splice(result.end(), myMembers); - return result; } @@ -4331,10 +4270,10 @@ Slice::Exception::isBaseOf(const ExceptionPtr& other) const { return false; } - ExceptionList bases = other->allBases(); - for(ExceptionList::const_iterator i = bases.begin(); i != bases.end(); ++i) + + for (const auto& i : other->allBases()) { - if((*i)->scoped() == scoped()) + if (i->scoped() == scoped()) { return true; } @@ -4358,14 +4297,14 @@ Slice::Exception::uses(const ContainedPtr&) const bool Slice::Exception::usesClasses(bool includeOptional) const { - DataMemberList dml = dataMembers(); - for(DataMemberList::const_iterator i = dml.begin(); i != dml.end(); ++i) + for (const auto& i : dataMembers()) { - if((*i)->type()->usesClasses() && (includeOptional || !(*i)->optional())) + if(i->type()->usesClasses() && (includeOptional || !i->optional())) { return true; } } + if(_base) { return _base->usesClasses(includeOptional); @@ -4376,10 +4315,9 @@ Slice::Exception::usesClasses(bool includeOptional) const bool Slice::Exception::hasDefaultValues() const { - DataMemberList dml = dataMembers(); - for(DataMemberList::const_iterator i = dml.begin(); i != dml.end(); ++i) + for (const auto& i : dataMembers()) { - if((*i)->defaultValueType()) + if (i->defaultValueType()) { return true; } @@ -4414,10 +4352,11 @@ Slice::Exception::kindOf() const void Slice::Exception::visit(ParserVisitor* visitor, bool all) { - if(visitor->visitExceptionStart(this)) + auto self = dynamic_pointer_cast(Container::shared_from_this()); + if (visitor->visitExceptionStart(self)) { Container::visit(visitor, all); - visitor->visitExceptionEnd(this); + visitor->visitExceptionEnd(self); } } @@ -4441,7 +4380,7 @@ Slice::Struct::createDataMember(const string& name, const TypePtr& type, bool op ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - DataMemberPtr p = DataMemberPtr::dynamicCast(matches.front()); + DataMemberPtr p = dynamic_pointer_cast(matches.front()); if(p) { if(_unit->ignRedefs()) @@ -4466,9 +4405,7 @@ Slice::Struct::createDataMember(const string& name, const TypePtr& type, bool op checkIdentifier(name); // Don't return here -- we create the data member anyway. - // // Structures cannot contain themselves. - // if(type.get() == this) { string msg = "struct `"; @@ -4482,40 +4419,28 @@ Slice::Struct::createDataMember(const string& name, const TypePtr& type, bool op string dv = defaultValue; string dl = defaultLiteral; - if(dlt || (EnumPtr::dynamicCast(type) && !dv.empty())) + if(dlt || (dynamic_pointer_cast(type) && !dv.empty())) { - // // Validate the default value. - // if(!validateConstant(name, type, dlt, dv, false)) { - // // Create the data member anyway, just without the default value. - // - dlt = 0; + dlt = nullptr; dv.clear(); dl.clear(); } } - if(optional) - { - // - // Validate the tag. - // - DataMemberList dml = dataMembers(); - for(DataMemberList::iterator q = dml.begin(); q != dml.end(); ++q) - { - if((*q)->optional() && tag == (*q)->tag()) - { - string msg = "tag for optional data member `" + name + "' is already in use"; - _unit->error(msg); - break; - } - } - } - - DataMemberPtr p = new DataMember(this, name, type, optional, tag, dlt, dv, dl); + DataMemberPtr p = make_shared( + dynamic_pointer_cast(shared_from_this()), + name, + type, + optional, + tag, + dlt, + dv, + dl); + p->init(); _contents.push_back(p); return p; } @@ -4524,10 +4449,10 @@ DataMemberList Slice::Struct::dataMembers() const { DataMemberList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - DataMemberPtr q = DataMemberPtr::dynamicCast(*p); - if(q) + DataMemberPtr q = dynamic_pointer_cast(p); + if (q) { result.push_back(q); } @@ -4539,13 +4464,13 @@ DataMemberList Slice::Struct::classDataMembers() const { DataMemberList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - DataMemberPtr q = DataMemberPtr::dynamicCast(*p); + DataMemberPtr q = dynamic_pointer_cast(p); if(q) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(q->type()); - if((builtin && builtin->usesClasses()) || ClassDeclPtr::dynamicCast(q->type())) + BuiltinPtr builtin = dynamic_pointer_cast(q->type()); + if((builtin && builtin->usesClasses()) || dynamic_pointer_cast(q->type())) { result.push_back(q); } @@ -4575,13 +4500,13 @@ Slice::Struct::uses(const ContainedPtr&) const bool Slice::Struct::usesClasses() const { - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - DataMemberPtr q = DataMemberPtr::dynamicCast(*p); - if(q) + DataMemberPtr q = dynamic_pointer_cast(p); + if (q) { TypePtr t = q->type(); - if(t->usesClasses()) + if (t->usesClasses()) { return true; } @@ -4593,14 +4518,11 @@ Slice::Struct::usesClasses() const size_t Slice::Struct::minWireSize() const { - // // At least the sum of the minimum member sizes. - // size_t sz = 0; - DataMemberList dml = dataMembers(); - for(DataMemberList::const_iterator i = dml.begin(); i != dml.end(); ++i) + for (const auto& i : dataMembers()) { - sz += (*i)->type()->minWireSize(); + sz += i->type()->minWireSize(); } return sz; } @@ -4608,10 +4530,9 @@ Slice::Struct::minWireSize() const bool Slice::Struct::isVariableLength() const { - DataMemberList dml = dataMembers(); - for(DataMemberList::const_iterator i = dml.begin(); i != dml.end(); ++i) + for (const auto& i : dataMembers()) { - if((*i)->type()->isVariableLength()) + if(i->type()->isVariableLength()) { return true; } @@ -4622,10 +4543,9 @@ Slice::Struct::isVariableLength() const bool Slice::Struct::hasDefaultValues() const { - DataMemberList dml = dataMembers(); - for(DataMemberList::const_iterator i = dml.begin(); i != dml.end(); ++i) + for (const auto& i : dataMembers()) { - if((*i)->defaultValueType()) + if(i->defaultValueType()) { return true; } @@ -4642,15 +4562,16 @@ Slice::Struct::kindOf() const void Slice::Struct::visit(ParserVisitor* visitor, bool all) { - if(visitor->visitStructStart(this)) + auto self = dynamic_pointer_cast(Container::shared_from_this()); + if (visitor->visitStructStart(self)) { Container::visit(visitor, all); - visitor->visitStructEnd(this); + visitor->visitStructEnd(self); } } void -Slice::Struct::recDependencies(set& dependencies) +Slice::Struct::recDependencies(ConstructedSet& dependencies) { containerRecDependencies(dependencies); } @@ -4689,8 +4610,8 @@ Slice::Sequence::containedType() const bool Slice::Sequence::uses(const ContainedPtr& contained) const { - ContainedPtr contained2 = ContainedPtr::dynamicCast(_type); - if(contained2 && contained2 == contained) + ContainedPtr contained2 = dynamic_pointer_cast(_type); + if (contained2 && contained2->scoped() == contained->scoped()) { return true; } @@ -4731,13 +4652,13 @@ Slice::Sequence::kindOf() const void Slice::Sequence::visit(ParserVisitor* visitor, bool) { - visitor->visitSequence(this); + visitor->visitSequence(dynamic_pointer_cast(shared_from_this())); } void -Slice::Sequence::recDependencies(set& dependencies) +Slice::Sequence::recDependencies(ConstructedSet& dependencies) { - ConstructedPtr constructed = ConstructedPtr::dynamicCast(_type); + ConstructedPtr constructed = dynamic_pointer_cast(_type); if(constructed && dependencies.find(constructed) != dependencies.end()) { dependencies.insert(constructed); @@ -4794,16 +4715,16 @@ bool Slice::Dictionary::uses(const ContainedPtr& contained) const { { - ContainedPtr contained2 = ContainedPtr::dynamicCast(_keyType); - if(contained2 && contained2 == contained) + ContainedPtr contained2 = dynamic_pointer_cast(_keyType); + if(contained2 && contained2->scoped() == contained->scoped()) { return true; } } { - ContainedPtr contained2 = ContainedPtr::dynamicCast(_valueType); - if(contained2 && contained2 == contained) + ContainedPtr contained2 = dynamic_pointer_cast(_valueType); + if(contained2 && contained2->scoped() == contained->scoped()) { return true; } @@ -4845,14 +4766,14 @@ Slice::Dictionary::kindOf() const void Slice::Dictionary::visit(ParserVisitor* visitor, bool) { - visitor->visitDictionary(this); + visitor->visitDictionary(dynamic_pointer_cast(shared_from_this())); } void -Slice::Dictionary::recDependencies(set& dependencies) +Slice::Dictionary::recDependencies(ConstructedSet& dependencies) { { - ConstructedPtr constructed = ConstructedPtr::dynamicCast(_keyType); + ConstructedPtr constructed = dynamic_pointer_cast(_keyType); if(constructed && dependencies.find(constructed) != dependencies.end()) { dependencies.insert(constructed); @@ -4861,7 +4782,7 @@ Slice::Dictionary::recDependencies(set& dependencies) } { - ConstructedPtr constructed = ConstructedPtr::dynamicCast(_valueType); + ConstructedPtr constructed = dynamic_pointer_cast(_valueType); if(constructed && dependencies.find(constructed) != dependencies.end()) { dependencies.insert(constructed); @@ -4870,18 +4791,14 @@ Slice::Dictionary::recDependencies(set& dependencies) } } +// Check that the key type of a dictionary is legal. Legal types are integral types, string, and sequences and structs +// containing only other legal key types. // -// Check that the key type of a dictionary is legal. Legal types are -// integral types, string, and sequences and structs containing only -// other legal key types. -// -// Note: Allowing sequences in dictionary keys has been deprecated as -// of Ice 3.3.0. -// +// Note: Allowing sequences in dictionary keys has been deprecated as of Ice 3.3.0. bool Slice::Dictionary::legalKeyType(const TypePtr& type, bool& containsSequence) { - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); if(bp) { switch(bp->kind()) @@ -4909,13 +4826,12 @@ Slice::Dictionary::legalKeyType(const TypePtr& type, bool& containsSequence) } } - EnumPtr ep = EnumPtr::dynamicCast(type); - if(ep) + if(dynamic_pointer_cast(type)) { return true; } - SequencePtr seqp = SequencePtr::dynamicCast(type); + SequencePtr seqp = dynamic_pointer_cast(type); if(seqp) { containsSequence = true; @@ -4925,7 +4841,7 @@ Slice::Dictionary::legalKeyType(const TypePtr& type, bool& containsSequence) } } - StructPtr strp = StructPtr::dynamicCast(type); + StructPtr strp = dynamic_pointer_cast(type); if(strp) { DataMemberList dml = strp->dataMembers(); @@ -5029,11 +4945,11 @@ Slice::Enum::kindOf() const void Slice::Enum::visit(ParserVisitor* visitor, bool) { - visitor->visitEnum(this); + visitor->visitEnum(dynamic_pointer_cast(Container::shared_from_this())); } void -Slice::Enum::recDependencies(set&) +Slice::Enum::recDependencies(ConstructedSet&) { // An Enum does not have any dependencies. } @@ -5096,14 +5012,13 @@ Slice::Enum::newEnumerator(const EnumeratorPtr& p) if(checkForDuplicates) { - EnumeratorList enl = enumerators(); - for(EnumeratorList::iterator q = enl.begin(); q != enl.end(); ++q) + for (const auto& r : enumerators()) { - EnumeratorPtr& r = *q; if(r != p && r->value() == _lastValue) { - _unit->error(string("enumerator `") + p->name() + "' has the same value as enumerator `" + - r->name() + "'"); + ostringstream os; + os << "enumerator `" << p->name() << "' has the same value as enumerator `" << r->name() << "'"; + _unit->error(os.str()); } } } @@ -5118,7 +5033,7 @@ Slice::Enum::newEnumerator(const EnumeratorPtr& p) EnumPtr Slice::Enumerator::type() const { - return EnumPtr::dynamicCast(container()); + return dynamic_pointer_cast(container()); } Contained::ContainedType @@ -5157,7 +5072,6 @@ Slice::Enumerator::Enumerator(const ContainerPtr& container, const string& name) _explicitValue(false), _value(-1) { - _value = EnumPtr::dynamicCast(container)->newEnumerator(this); } Slice::Enumerator::Enumerator(const ContainerPtr& container, const string& name, int value) : @@ -5166,7 +5080,17 @@ Slice::Enumerator::Enumerator(const ContainerPtr& container, const string& name, _explicitValue(true), _value(value) { - EnumPtr::dynamicCast(container)->newEnumerator(this); +} + +void +Slice::Enumerator::init() +{ + int value = dynamic_pointer_cast(_container)->newEnumerator(dynamic_pointer_cast(shared_from_this())); + if (_value == -1) + { + _value = value; + } + Contained::init(); } // ---------------------------------------------------------------------- @@ -5212,7 +5136,7 @@ Slice::Const::containedType() const bool Slice::Const::uses(const ContainedPtr& contained) const { - ContainedPtr contained2 = ContainedPtr::dynamicCast(_type); + ContainedPtr contained2 = dynamic_pointer_cast(_type); return (contained2 && contained2 == contained); } @@ -5225,7 +5149,7 @@ Slice::Const::kindOf() const void Slice::Const::visit(ParserVisitor* visitor, bool) { - visitor->visitConst(this); + visitor->visitConst(dynamic_pointer_cast(shared_from_this())); } Slice::Const::Const(const ContainerPtr& container, const string& name, const TypePtr& type, @@ -5253,7 +5177,7 @@ Slice::Const::Const(const ContainerPtr& container, const string& name, const Typ InterfaceDefPtr Slice::Operation::interface() const { - return InterfaceDefPtr::dynamicCast(_container); + return dynamic_pointer_cast(_container); } TypePtr @@ -5298,16 +5222,17 @@ Slice::Operation::hasMarshaledResult() const { InterfaceDefPtr intf = interface(); assert(intf); - if(intf->hasMetaData("marshaled-result") || hasMetaData("marshaled-result")) + if (intf->hasMetaData("marshaled-result") || hasMetaData("marshaled-result")) { - if(returnType() && isMutableAfterReturnType(returnType())) + if (returnType() && isMutableAfterReturnType(returnType())) { return true; } - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + + for (const auto& p : _contents) { - ParamDeclPtr q = ParamDeclPtr::dynamicCast(*p); - if(q->isOutParam() && isMutableAfterReturnType(q->type())) + ParamDeclPtr q = dynamic_pointer_cast(p); + if (q->isOutParam() && isMutableAfterReturnType(q->type())) { return true; } @@ -5322,8 +5247,8 @@ Slice::Operation::createParamDecl(const string& name, const TypePtr& type, bool ContainedList matches = _unit->findContents(thisScope() + name); if(!matches.empty()) { - ParamDeclPtr p = ParamDeclPtr::dynamicCast(matches.front()); - if(p) + ParamDeclPtr p = dynamic_pointer_cast(matches.front()); + if (p) { if(_unit->ignRedefs()) { @@ -5352,7 +5277,7 @@ Slice::Operation::createParamDecl(const string& name, const TypePtr& type, bool // if(!_contents.empty()) { - ParamDeclPtr p = ParamDeclPtr::dynamicCast(_contents.back()); + ParamDeclPtr p = dynamic_pointer_cast(_contents.back()); assert(p); if(p->isOutParam() && !isOutParam) { @@ -5384,7 +5309,14 @@ Slice::Operation::createParamDecl(const string& name, const TypePtr& type, bool } } - ParamDeclPtr p = new ParamDecl(this, name, type, isOutParam, optional, tag); + ParamDeclPtr p = make_shared( + dynamic_pointer_cast(shared_from_this()), + name, + type, + isOutParam, + optional, + tag); + p->init(); _contents.push_back(p); return p; } @@ -5393,10 +5325,10 @@ ParamDeclList Slice::Operation::parameters() const { ParamDeclList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - ParamDeclPtr q = ParamDeclPtr::dynamicCast(*p); - if(q) + ParamDeclPtr q = dynamic_pointer_cast(p); + if (q) { result.push_back(q); } @@ -5408,9 +5340,9 @@ ParamDeclList Slice::Operation::inParameters() const { ParamDeclList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + for (const auto& p : _contents) { - ParamDeclPtr q = ParamDeclPtr::dynamicCast(*p); + ParamDeclPtr q = dynamic_pointer_cast(p); if(q && !q->isOutParam()) { result.push_back(q); @@ -5422,29 +5354,28 @@ Slice::Operation::inParameters() const void Slice::Operation::inParameters(ParamDeclList& required, ParamDeclList& optional) const { - const ParamDeclList params = inParameters(); - for(ParamDeclList::const_iterator pli = params.begin(); pli != params.end(); ++pli) + for (const auto& pli : inParameters()) { - if((*pli)->optional()) + if (pli->optional()) { - optional.push_back(*pli); + optional.push_back(pli); } else { - required.push_back(*pli); + required.push_back(pli); } } - - sortOptionalParameters(optional); + optional.sort(compareTag); } ParamDeclList Slice::Operation::outParameters() const { ParamDeclList result; - for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p) + + for(const auto& p : _contents) { - ParamDeclPtr q = ParamDeclPtr::dynamicCast(*p); + ParamDeclPtr q = dynamic_pointer_cast(p); if(q && q->isOutParam()) { result.push_back(q); @@ -5456,20 +5387,18 @@ Slice::Operation::outParameters() const void Slice::Operation::outParameters(ParamDeclList& required, ParamDeclList& optional) const { - const ParamDeclList params = outParameters(); - for(ParamDeclList::const_iterator pli = params.begin(); pli != params.end(); ++pli) + for (const auto& pli : outParameters()) { - if((*pli)->optional()) + if(pli->optional()) { - optional.push_back(*pli); + optional.push_back(pli); } else { - required.push_back(*pli); + required.push_back(pli); } } - - sortOptionalParameters(optional); + optional.sort(compareTag); } ExceptionList @@ -5487,19 +5416,23 @@ Slice::Operation::setExceptionList(const ExceptionList& el) // Check that no exception occurs more than once in the throws clause. // ExceptionList uniqueExceptions = el; - uniqueExceptions.sort(); - uniqueExceptions.unique(); + uniqueExceptions.sort(containedCompare); + uniqueExceptions.unique(containedEqual); if(uniqueExceptions.size() != el.size()) { // // At least one exception appears twice. // ExceptionList tmp = el; - tmp.sort(); + tmp.sort(containedCompare); ExceptionList duplicates; - set_difference(tmp.begin(), tmp.end(), - uniqueExceptions.begin(), uniqueExceptions.end(), - back_inserter(duplicates)); + set_difference( + tmp.begin(), + tmp.end(), + uniqueExceptions.begin(), + uniqueExceptions.end(), + back_inserter(duplicates), + containedCompare); string msg = "operation `" + name() + "' has a throws clause with "; if(duplicates.size() == 1) { @@ -5529,18 +5462,14 @@ Slice::Operation::containedType() const bool Slice::Operation::uses(const ContainedPtr& contained) const { + if (dynamic_pointer_cast(_returnType) == contained) { - ContainedPtr contained2 = ContainedPtr::dynamicCast(_returnType); - if(contained2 && contained2 == contained) - { - return true; - } + return true; } - for(ExceptionList::const_iterator q = _throws.begin(); q != _throws.end(); ++q) + for (const auto& q : _throws) { - ContainedPtr contained2 = ContainedPtr::dynamicCast(*q); - if(contained2 && contained2 == contained) + if (dynamic_pointer_cast(q) == contained) { return true; } @@ -5552,10 +5481,9 @@ Slice::Operation::uses(const ContainedPtr& contained) const bool Slice::Operation::sendsClasses(bool includeOptional) const { - ParamDeclList pdl = parameters(); - for(ParamDeclList::const_iterator i = pdl.begin(); i != pdl.end(); ++i) + for (const auto& i : parameters()) { - if(!(*i)->isOutParam() && (*i)->type()->usesClasses() && (includeOptional || !(*i)->optional())) + if(!i->isOutParam() && i->type()->usesClasses() && (includeOptional || !i->optional())) { return true; } @@ -5571,10 +5499,10 @@ Slice::Operation::returnsClasses(bool includeOptional) const { return true; } - ParamDeclList pdl = parameters(); - for(ParamDeclList::const_iterator i = pdl.begin(); i != pdl.end(); ++i) + + for (const auto& i : parameters()) { - if((*i)->isOutParam() && (*i)->type()->usesClasses() && (includeOptional || !(*i)->optional())) + if (i->isOutParam() && i->type()->usesClasses() && (includeOptional || !i->optional())) { return true; } @@ -5590,15 +5518,16 @@ Slice::Operation::returnsData() const { return true; } - ParamDeclList pdl = parameters(); - for(ParamDeclList::const_iterator i = pdl.begin(); i != pdl.end(); ++i) + + for (const auto& i : parameters()) { - if((*i)->isOutParam()) + if (i->isOutParam()) { return true; } } - if(!throws().empty()) + + if (!throws().empty()) { return true; } @@ -5621,10 +5550,9 @@ Slice::Operation::returnsMultipleValues() const bool Slice::Operation::sendsOptionals() const { - ParamDeclList pdl = inParameters(); - for(ParamDeclList::const_iterator i = pdl.begin(); i != pdl.end(); ++i) + for (const auto& i : inParameters()) { - if((*i)->optional()) + if (i->optional()) { return true; } @@ -5638,7 +5566,7 @@ Slice::Operation::format() const FormatType format = parseFormatMetaData(getMetaData()); if(format == DefaultFormat) { - ContainedPtr cont = ContainedPtr::dynamicCast(container()); + ContainedPtr cont = dynamic_pointer_cast(container()); assert(cont); format = parseFormatMetaData(cont->getMetaData()); } @@ -5654,7 +5582,7 @@ Slice::Operation::kindOf() const void Slice::Operation::visit(ParserVisitor* visitor, bool) { - visitor->visitOperation(this); + visitor->visitOperation(dynamic_pointer_cast(Container::shared_from_this())); } Slice::Operation::Operation(const ContainerPtr& container, @@ -5710,13 +5638,7 @@ Slice::ParamDecl::containedType() const bool Slice::ParamDecl::uses(const ContainedPtr& contained) const { - ContainedPtr contained2 = ContainedPtr::dynamicCast(_type); - if(contained2 && contained2 == contained) - { - return true; - } - - return false; + return dynamic_pointer_cast(_type) == contained; } string @@ -5728,7 +5650,7 @@ Slice::ParamDecl::kindOf() const void Slice::ParamDecl::visit(ParserVisitor* visitor, bool) { - visitor->visitParamDecl(this); + visitor->visitParamDecl(dynamic_pointer_cast(shared_from_this())); } Slice::ParamDecl::ParamDecl(const ContainerPtr& container, const string& name, const TypePtr& type, bool isOutParam, @@ -5791,7 +5713,7 @@ Slice::DataMember::containedType() const bool Slice::DataMember::uses(const ContainedPtr& contained) const { - ContainedPtr contained2 = ContainedPtr::dynamicCast(_type); + ContainedPtr contained2 = dynamic_pointer_cast(_type); if(contained2 && contained2 == contained) { return true; @@ -5809,7 +5731,7 @@ Slice::DataMember::kindOf() const void Slice::DataMember::visit(ParserVisitor* visitor, bool) { - visitor->visitDataMember(this); + visitor->visitDataMember(dynamic_pointer_cast(shared_from_this())); } Slice::DataMember::DataMember(const ContainerPtr& container, const string& name, const TypePtr& type, @@ -5833,7 +5755,15 @@ Slice::DataMember::DataMember(const ContainerPtr& container, const string& name, UnitPtr Slice::Unit::createUnit(bool ignRedefs, bool all, const StringList& defaultGlobalMetadata) { - return new Unit(ignRedefs, all, defaultGlobalMetadata); + auto unit = make_shared(ignRedefs, all, defaultGlobalMetadata); + unit->init(); + return unit; +} + +void +Slice::Unit::init() +{ + _unit = dynamic_pointer_cast(shared_from_this()); } bool @@ -5853,16 +5783,12 @@ Slice::Unit::setComment(const string& comment) string::size_type begin; if(end == 0) { - // // Skip past the initial whitespace. - // begin = comment.find_first_not_of(" \t\r\n*", end); } else { - // // Skip more whitespace but retain blank lines. - // begin = comment.find_first_not_of(" \t*", end); } @@ -5874,7 +5800,7 @@ Slice::Unit::setComment(const string& comment) end = comment.find('\n', begin); if(end != string::npos) { - if(end + 1 > begin) + if (end + 1 > begin) { _currentComment += comment.substr(begin, end + 1 - begin); } @@ -5908,7 +5834,7 @@ Slice::Unit::addToComment(const string& comment) string Slice::Unit::currentComment() { - string comment = ""; + string comment; comment.swap(_currentComment); return comment; } @@ -5988,6 +5914,7 @@ Slice::Unit::setCurrentFile(const std::string& currentFile, int lineNumber) break; // Do nothing } } + if(!currentFile.empty()) { DefinitionContextPtr dc = currentDefinitionContext(); @@ -6023,9 +5950,7 @@ Slice::Unit::addGlobalMetaData(const StringList& metaData) } else { - // // Append the file metadata to any existing metadata (e.g., default file metadata). - // StringList l = dc->getMetaData(); copy(metaData.begin(), metaData.end(), back_inserter(l)); dc->setMetaData(l); @@ -6094,7 +6019,7 @@ Slice::Unit::currentDefinitionContext() const void Slice::Unit::pushDefinitionContext() { - _definitionContextStack.push(new DefinitionContext(_currentIncludeLevel, _defaultGlobalMetaData)); + _definitionContextStack.push(make_shared(_currentIncludeLevel, _defaultGlobalMetaData)); } void @@ -6163,17 +6088,17 @@ Slice::Unit::findDerivedClasses(const ClassDefPtr& cl) const ClassList derived; for (map::const_iterator p = _contentMap.begin(); p != _contentMap.end(); ++p) { - for (ContainedList::const_iterator q = p->second.begin(); q != p->second.end(); ++q) + for (const auto& q : p->second) { - ClassDefPtr r = ClassDefPtr::dynamicCast(*q); + ClassDefPtr r = dynamic_pointer_cast(q); if(r && r->base() == cl) { derived.push_back(r); } } } - derived.sort(); - derived.unique(); + derived.sort(containedCompare); + derived.unique(containedEqual); return derived; } @@ -6181,11 +6106,11 @@ ExceptionList Slice::Unit::findDerivedExceptions(const ExceptionPtr& ex) const { ExceptionList derived; - for(map::const_iterator p = _contentMap.begin(); p != _contentMap.end(); ++p) + for(const auto& [key, contents] : _contentMap) { - for(ContainedList::const_iterator q = p->second.begin(); q != p->second.end(); ++q) + for(const auto& q : contents) { - ExceptionPtr r = ExceptionPtr::dynamicCast(*q); + ExceptionPtr r = dynamic_pointer_cast(q); if(r) { ExceptionPtr base = r->base(); @@ -6196,8 +6121,8 @@ Slice::Unit::findDerivedExceptions(const ExceptionPtr& ex) const } } } - derived.sort(); - derived.unique(); + derived.sort(containedCompare); + derived.unique(containedEqual); return derived; } @@ -6205,18 +6130,18 @@ ContainedList Slice::Unit::findUsedBy(const ContainedPtr& contained) const { ContainedList usedBy; - for(map::const_iterator p = _contentMap.begin(); p != _contentMap.end(); ++p) + for (const auto& [key, contents] : _contentMap) { - for(ContainedList::const_iterator q = p->second.begin(); q != p->second.end(); ++q) + for (const auto& q : contents) { - if((*q)->uses(contained)) + if (q->uses(contained)) { - usedBy.push_back(*q); + usedBy.push_back(q); } } } - usedBy.sort(); - usedBy.unique(); + usedBy.sort(containedCompare); + usedBy.unique(containedEqual); return usedBy; } @@ -6248,16 +6173,14 @@ Slice::Unit::usesNonLocals() const { for(map::const_iterator p = _contentMap.begin(); p != _contentMap.end(); ++p) { - for(ContainedList::const_iterator q = p->second.begin(); q != p->second.end(); ++q) + for (const auto& q : p->second) { - ConstructedPtr constr = ConstructedPtr::dynamicCast(*q); - if(constr) + if(dynamic_pointer_cast(q)) { return true; } - ExceptionPtr exc = ExceptionPtr::dynamicCast(*q); - if(exc) + if(dynamic_pointer_cast(q)) { return true; } @@ -6285,12 +6208,11 @@ Slice::Unit::usesNonLocals() const bool Slice::Unit::usesConsts() const { - for(map::const_iterator p = _contentMap.begin(); p != _contentMap.end(); ++p) + for(const auto& [key, contents] : _contentMap) { - for(ContainedList::const_iterator q = p->second.begin(); q != p->second.end(); ++q) + for (const auto& q : contents) { - ConstPtr cd = ConstPtr::dynamicCast(*q); - if(cd) + if (dynamic_pointer_cast(q)) { return true; } @@ -6310,10 +6232,9 @@ StringList Slice::Unit::allFiles() const { StringList result; - for(map::const_iterator p = _definitionContextMap.begin(); - p != _definitionContextMap.end(); ++p) + for(const auto& [key, value] : _definitionContextMap) { - result.push_back(p->first); + result.push_back(key); } return result; } @@ -6324,13 +6245,13 @@ Slice::Unit::parse(const string& filename, FILE* file, bool debug) slice_debug = debug ? 1 : 0; slice__flex_debug = debug ? 1 : 0; - assert(!Slice::unit); - Slice::unit = this; + assert(!Slice::currentUnit); + Slice::currentUnit = this; _currentComment = ""; _currentIncludeLevel = 0; _topLevelFile = fullPath(filename); - pushContainer(this); + pushContainer(dynamic_pointer_cast(shared_from_this())); pushDefinitionContext(); setCurrentFile(_topLevelFile, 0); @@ -6360,7 +6281,7 @@ Slice::Unit::parse(const string& filename, FILE* file, bool debug) popDefinitionContext(); } - Slice::unit = 0; + Slice::currentUnit = 0; return status; } @@ -6375,10 +6296,11 @@ Slice::Unit::destroy() void Slice::Unit::visit(ParserVisitor* visitor, bool all) { - if(visitor->visitUnitStart(this)) + auto self = dynamic_pointer_cast(shared_from_this()); + if(visitor->visitUnitStart(self)) { Container::visit(visitor, all); - visitor->visitUnitEnd(this); + visitor->visitUnitEnd(self); } } @@ -6390,7 +6312,7 @@ Slice::Unit::builtin(Builtin::Kind kind) { return p->second; } - BuiltinPtr builtin = new Builtin(this, kind); + auto builtin = make_shared(dynamic_pointer_cast(shared_from_this()), kind); _builtins.insert(make_pair(kind, builtin)); return builtin; } @@ -6410,6 +6332,7 @@ Slice::Unit::addTopLevelModule(const string& file, const string& module) i->second.insert(module); } } + set Slice::Unit::getTopLevelModules(const string& file) const { @@ -6425,8 +6348,8 @@ Slice::Unit::getTopLevelModules(const string& file) const } Slice::Unit::Unit(bool ignRedefs, bool all, const StringList& defaultGlobalMetadata) : - SyntaxTreeBase(0), - Container(0), + SyntaxTreeBase(nullptr), + Container(nullptr), _ignRedefs(ignRedefs), _all(all), _defaultGlobalMetaData(defaultGlobalMetadata), @@ -6434,7 +6357,6 @@ Slice::Unit::Unit(bool ignRedefs, bool all, const StringList& defaultGlobalMetad _currentIncludeLevel(0) { - _unit = this; } void diff --git a/cpp/src/Slice/Parser.h b/cpp/src/Slice/Parser.h index 751cb0a57ed..bb60a082720 100644 --- a/cpp/src/Slice/Parser.h +++ b/cpp/src/Slice/Parser.h @@ -5,8 +5,6 @@ #ifndef SLICE_PARSER_H #define SLICE_PARSER_H -#include -#include #include #include #include @@ -14,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -118,51 +117,55 @@ class CICompare; class DerivedToBaseCompare; class ModulePartialCompare; -typedef ::IceUtil::Handle GrammarBasePtr; -typedef ::IceUtil::Handle SyntaxTreeBasePtr; -typedef ::IceUtil::Handle TypePtr; -typedef ::IceUtil::Handle BuiltinPtr; -typedef ::IceUtil::Handle ContainedPtr; -typedef ::IceUtil::Handle ContainerPtr; -typedef ::IceUtil::Handle ModulePtr; -typedef ::IceUtil::Handle ConstructedPtr; -typedef ::IceUtil::Handle ClassDeclPtr; -typedef ::IceUtil::Handle ClassDefPtr; -typedef ::IceUtil::Handle InterfaceDeclPtr; -typedef ::IceUtil::Handle InterfaceDefPtr; -typedef ::IceUtil::Handle ExceptionPtr; -typedef ::IceUtil::Handle StructPtr; -typedef ::IceUtil::Handle OperationPtr; -typedef ::IceUtil::Handle ParamDeclPtr; -typedef ::IceUtil::Handle DataMemberPtr; -typedef ::IceUtil::Handle SequencePtr; -typedef ::IceUtil::Handle DictionaryPtr; -typedef ::IceUtil::Handle EnumPtr; -typedef ::IceUtil::Handle EnumeratorPtr; -typedef ::IceUtil::Handle ConstPtr; -typedef ::IceUtil::Handle UnitPtr; - -typedef std::list TypeList; -typedef std::list ExceptionList; -typedef std::set StringSet; -typedef std::list StringList; -typedef std::pair TypeString; -typedef std::list TypeStringList; -typedef std::list ContainedList; -typedef std::list ModuleList; -typedef std::list ConstructedList; -typedef std::list ClassList; -typedef std::list InterfaceList; -typedef std::list ExceptionList; -typedef std::list StructList; -typedef std::list SequenceList; -typedef std::list DictionaryList; -typedef std::list EnumList; -typedef std::list ConstList; -typedef std::list OperationList; -typedef std::list DataMemberList; -typedef std::list ParamDeclList; -typedef std::list EnumeratorList; +using GrammarBasePtr = std::shared_ptr; +using SyntaxTreeBasePtr = std::shared_ptr; +using TypePtr = std::shared_ptr; +using BuiltinPtr = std::shared_ptr; +using ContainedPtr = std::shared_ptr; +using ContainerPtr = std::shared_ptr; +using ModulePtr = std::shared_ptr; +using ConstructedPtr = std::shared_ptr; +using ClassDeclPtr = std::shared_ptr; +using ClassDefPtr = std::shared_ptr; +using InterfaceDeclPtr = std::shared_ptr; +using InterfaceDefPtr = std::shared_ptr; +using ExceptionPtr = std::shared_ptr; +using StructPtr = std::shared_ptr; +using OperationPtr = std::shared_ptr; +using ParamDeclPtr = std::shared_ptr; +using DataMemberPtr = std::shared_ptr; +using SequencePtr = std::shared_ptr; +using DictionaryPtr = std::shared_ptr; +using EnumPtr = std::shared_ptr; +using EnumeratorPtr = std::shared_ptr; +using ConstPtr = std::shared_ptr; +using UnitPtr = std::shared_ptr; + +bool containedCompare(const ContainedPtr& lhs, const ContainedPtr& rhs); +bool containedEqual(const ContainedPtr& lhs, const ContainedPtr& rhs); + +using TypeList = std::list; +using ExceptionList = std::list; +using StringSet = std::set; +using StringList = std::list; +using TypeString = std::pair; +using TypeStringList = std::list; +using ContainedList = std::list; +using ModuleList = std::list; +using ConstructedList = std::list; +using ClassList = std::list; +using InterfaceList = std::list; +using ExceptionList = std::list; +using StructList = std::list; +using SequenceList = std::list; +using DictionaryList = std::list; +using EnumList = std::list; +using ConstList = std::list; +using OperationList = std::list; +using DataMemberList = std::list; +using ParamDeclList = std::list; +using EnumeratorList = std::list; +using ConstructedSet = std::set; struct ConstDef { @@ -239,7 +242,7 @@ class ParserVisitor // DefinitionContext // ---------------------------------------------------------------------- -class DefinitionContext : public ::IceUtil::SimpleShared +class DefinitionContext { public: @@ -278,13 +281,13 @@ class DefinitionContext : public ::IceUtil::SimpleShared bool _seenDefinition; std::set _suppressedWarnings; }; -typedef ::IceUtil::Handle DefinitionContextPtr; +using DefinitionContextPtr = std::shared_ptr; // ---------------------------------------------------------------------- // Comment // ---------------------------------------------------------------------- -class Comment : public ::IceUtil::SimpleShared +class Comment { public: @@ -301,8 +304,6 @@ class Comment : public ::IceUtil::SimpleShared private: - Comment(); - bool _isDeprecated; StringList _deprecated; StringList _overview; @@ -315,14 +316,17 @@ class Comment : public ::IceUtil::SimpleShared friend class Contained; }; -typedef ::IceUtil::Handle CommentPtr; +using CommentPtr = std::shared_ptr; // ---------------------------------------------------------------------- // GrammarBase // ---------------------------------------------------------------------- -class GrammarBase : public ::IceUtil::SimpleShared +class GrammarBase : public virtual std::enable_shared_from_this { +public: + + virtual ~GrammarBase() = default; }; // ---------------------------------------------------------------------- @@ -333,6 +337,7 @@ class SyntaxTreeBase : public GrammarBase { public: + SyntaxTreeBase(const UnitPtr&); virtual void destroy(); UnitPtr unit() const; DefinitionContextPtr definitionContext() const; // May be nil @@ -340,8 +345,6 @@ class SyntaxTreeBase : public GrammarBase protected: - SyntaxTreeBase(const UnitPtr&, const DefinitionContextPtr& = 0); - UnitPtr _unit; DefinitionContextPtr _definitionContext; }; @@ -354,15 +357,12 @@ class Type : public virtual SyntaxTreeBase { public: + Type(const UnitPtr&); virtual std::string typeId() const = 0; virtual bool usesClasses() const = 0; virtual size_t minWireSize() const = 0; virtual std::string getTagFormat() const = 0; virtual bool isVariableLength() const = 0; - -protected: - - Type(const UnitPtr&); }; // ---------------------------------------------------------------------- @@ -388,6 +388,8 @@ class Builtin : public virtual Type KindValue }; + Builtin(const UnitPtr&, Kind); + virtual std::string typeId() const; virtual bool usesClasses() const; virtual size_t minWireSize() const; @@ -418,7 +420,6 @@ class Builtin : public virtual Type protected: - Builtin(const UnitPtr&, Kind); friend class Unit; const Kind _kind; @@ -432,6 +433,8 @@ class Contained : public virtual SyntaxTreeBase { public: + Contained(const ContainerPtr&, const std::string&); + virtual void init(); ContainerPtr container() const; std::string name() const; std::string scoped() const; @@ -474,12 +477,8 @@ class Contained : public virtual SyntaxTreeBase virtual bool uses(const ContainedPtr&) const = 0; virtual std::string kindOf() const = 0; - bool operator<(const Contained&) const; - bool operator==(const Contained&) const; - protected: - Contained(const ContainerPtr&, const std::string&); friend class Container; ContainerPtr _container; @@ -500,6 +499,7 @@ class Container : public virtual SyntaxTreeBase { public: + Container(const UnitPtr&); virtual void destroy(); ModulePtr createModule(const std::string&); ClassDefPtr createClassDef(const std::string&, int, const ClassDefPtr&); @@ -554,15 +554,13 @@ class Container : public virtual SyntaxTreeBase void sort(); void sortContents(bool); virtual void visit(ParserVisitor*, bool); - void containerRecDependencies(std::set&); // Internal operation, don't use directly. + void containerRecDependencies(ConstructedSet&); // Internal operation, don't use directly. bool checkIntroduced(const std::string&, ContainedPtr = 0); bool checkForGlobalDef(const std::string&, const char *); protected: - Container(const UnitPtr&); - bool checkGlobalMetaData(const StringList&, const StringList&); bool validateConstant(const std::string&, const TypePtr&, SyntaxTreeBasePtr&, const std::string&, bool); EnumeratorPtr validateEnumerator(const std::string&); @@ -579,14 +577,12 @@ class Module : public virtual Container, public virtual Contained { public: + Module(const ContainerPtr&, const std::string&); virtual ContainedType containedType() const; virtual bool uses(const ContainedPtr&) const; virtual std::string kindOf() const; virtual void visit(ParserVisitor*, bool); -protected: - - Module(const ContainerPtr&, const std::string&); friend class Container; }; @@ -598,14 +594,11 @@ class Constructed : public virtual Type, public virtual Contained { public: + Constructed(const ContainerPtr&, const std::string&); virtual std::string typeId() const; virtual bool isVariableLength() const = 0; ConstructedList dependencies(); - virtual void recDependencies(std::set&) = 0; // Internal operation, don't use directly. - -protected: - - Constructed(const ContainerPtr&, const std::string&); + virtual void recDependencies(ConstructedSet&) = 0; // Internal operation, don't use directly. }; // ---------------------------------------------------------------------- @@ -616,6 +609,7 @@ class ClassDecl : public virtual Constructed { public: + ClassDecl(const ContainerPtr&, const std::string&); virtual void destroy(); ClassDefPtr definition() const; virtual ContainedType containedType() const; @@ -626,11 +620,10 @@ class ClassDecl : public virtual Constructed virtual bool isVariableLength() const; virtual void visit(ParserVisitor*, bool); virtual std::string kindOf() const; - virtual void recDependencies(std::set&); // Internal operation, don't use directly. + virtual void recDependencies(ConstructedSet&); // Internal operation, don't use directly. protected: - ClassDecl(const ContainerPtr&, const std::string&); friend class Container; friend class ClassDef; @@ -652,6 +645,7 @@ class ClassDef : public virtual Container, public virtual Contained { public: + ClassDef(const ContainerPtr&, const std::string&, int, const ClassDefPtr&); virtual void destroy(); DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&, const std::string&, const std::string&); @@ -678,7 +672,6 @@ class ClassDef : public virtual Container, public virtual Contained protected: - ClassDef(const ContainerPtr&, const std::string&, int, const ClassDefPtr&); friend class Container; ClassDeclPtr _declaration; @@ -695,6 +688,7 @@ class InterfaceDecl : public virtual Constructed { public: + InterfaceDecl(const ContainerPtr&, const std::string&); virtual void destroy(); InterfaceDefPtr definition() const; virtual ContainedType containedType() const; @@ -705,13 +699,12 @@ class InterfaceDecl : public virtual Constructed virtual bool isVariableLength() const; virtual void visit(ParserVisitor*, bool); virtual std::string kindOf() const; - virtual void recDependencies(std::set&); // Internal operation, don't use directly. + virtual void recDependencies(ConstructedSet&); // Internal operation, don't use directly. static void checkBasesAreLegal(const std::string&, const InterfaceList&, const UnitPtr&); protected: - InterfaceDecl(const ContainerPtr&, const std::string&); friend class Container; friend class InterfaceDef; @@ -747,6 +740,7 @@ class Operation : public virtual Contained, public virtual Container Idempotent }; + Operation(const ContainerPtr&, const std::string&, const TypePtr&, bool, int, Mode); InterfaceDefPtr interface() const; TypePtr returnType() const; bool returnIsOptional() const; @@ -775,7 +769,6 @@ class Operation : public virtual Contained, public virtual Container protected: - Operation(const ContainerPtr&, const std::string&, const TypePtr&, bool, int, Mode); friend class InterfaceDef; TypePtr _returnType; @@ -800,6 +793,7 @@ class InterfaceDef : public virtual Container, public virtual Contained { public: + InterfaceDef(const ContainerPtr&, const std::string&, const InterfaceList&); virtual void destroy(); OperationPtr createOperation(const std::string&, const TypePtr&, bool, int, Operation::Mode = Operation::Normal); @@ -819,7 +813,6 @@ class InterfaceDef : public virtual Container, public virtual Contained protected: - InterfaceDef(const ContainerPtr&, const std::string&, const InterfaceList&); friend class Container; InterfaceDeclPtr _declaration; @@ -836,6 +829,7 @@ class Exception : public virtual Container, public virtual Contained { public: + Exception(const ContainerPtr&, const std::string&, const ExceptionPtr&); virtual void destroy(); DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&, const std::string&, const std::string&); @@ -858,7 +852,6 @@ class Exception : public virtual Container, public virtual Contained protected: - Exception(const ContainerPtr&, const std::string&, const ExceptionPtr&); friend class Container; ExceptionPtr _base; @@ -872,6 +865,7 @@ class Struct : public virtual Container, public virtual Constructed { public: + Struct(const ContainerPtr&, const std::string&); DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&, const std::string&, const std::string&); DataMemberList dataMembers() const; @@ -885,11 +879,8 @@ class Struct : public virtual Container, public virtual Constructed bool hasDefaultValues() const; virtual std::string kindOf() const; virtual void visit(ParserVisitor*, bool); - virtual void recDependencies(std::set&); // Internal operation, don't use directly. - -protected: + virtual void recDependencies(ConstructedSet&); // Internal operation, don't use directly. - Struct(const ContainerPtr&, const std::string&); friend class Container; }; @@ -901,6 +892,7 @@ class Sequence : public virtual Constructed { public: + Sequence(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&); TypePtr type() const; StringList typeMetaData() const; virtual ContainedType containedType() const; @@ -911,11 +903,10 @@ class Sequence : public virtual Constructed virtual bool isVariableLength() const; virtual std::string kindOf() const; virtual void visit(ParserVisitor*, bool); - virtual void recDependencies(std::set&); // Internal operation, don't use directly. + virtual void recDependencies(ConstructedSet&); // Internal operation, don't use directly. protected: - Sequence(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&); friend class Container; TypePtr _type; @@ -930,6 +921,8 @@ class Dictionary : public virtual Constructed { public: + Dictionary(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, const TypePtr&, + const StringList&); TypePtr keyType() const; TypePtr valueType() const; StringList keyMetaData() const; @@ -942,14 +935,12 @@ class Dictionary : public virtual Constructed virtual bool isVariableLength() const; virtual std::string kindOf() const; virtual void visit(ParserVisitor*, bool); - virtual void recDependencies(std::set&); // Internal operation, don't use directly. + virtual void recDependencies(ConstructedSet&); // Internal operation, don't use directly. static bool legalKeyType(const TypePtr&, bool&); protected: - Dictionary(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, const TypePtr&, - const StringList&); friend class Container; TypePtr _keyType; @@ -966,6 +957,7 @@ class Enum : public virtual Container, public virtual Constructed { public: + Enum(const ContainerPtr&, const std::string&); virtual void destroy(); bool explicitValue() const; int minValue() const; @@ -978,11 +970,10 @@ class Enum : public virtual Container, public virtual Constructed virtual bool isVariableLength() const; virtual std::string kindOf() const; virtual void visit(ParserVisitor*, bool); - virtual void recDependencies(std::set&); // Internal operation, don't use directly. + virtual void recDependencies(ConstructedSet&); // Internal operation, don't use directly. protected: - Enum(const ContainerPtr&, const std::string&); int newEnumerator(const EnumeratorPtr&); friend class Container; @@ -1002,6 +993,9 @@ class Enumerator : public virtual Contained { public: + Enumerator(const ContainerPtr&, const std::string&); + Enumerator(const ContainerPtr&, const std::string&, int); + virtual void init(); EnumPtr type() const; virtual bool uses(const ContainedPtr&) const; virtual ContainedType containedType() const; @@ -1012,8 +1006,6 @@ class Enumerator : public virtual Contained protected: - Enumerator(const ContainerPtr&, const std::string&); - Enumerator(const ContainerPtr&, const std::string&, int); friend class Container; bool _explicitValue; @@ -1028,6 +1020,8 @@ class Const : public virtual Contained { public: + Const(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, const SyntaxTreeBasePtr&, + const std::string&, const std::string&); TypePtr type() const; StringList typeMetaData() const; SyntaxTreeBasePtr valueType() const; @@ -1040,8 +1034,6 @@ class Const : public virtual Contained protected: - Const(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, const SyntaxTreeBasePtr&, - const std::string&, const std::string&); friend class Container; TypePtr _type; @@ -1059,6 +1051,7 @@ class ParamDecl : public virtual Contained { public: + ParamDecl(const ContainerPtr&, const std::string&, const TypePtr&, bool, bool, int); TypePtr type() const; bool isOutParam() const; bool optional() const; @@ -1070,7 +1063,6 @@ class ParamDecl : public virtual Contained protected: - ParamDecl(const ContainerPtr&, const std::string&, const TypePtr&, bool, bool, int); friend class Operation; TypePtr _type; @@ -1087,6 +1079,8 @@ class DataMember : public virtual Contained { public: + DataMember(const ContainerPtr&, const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&, + const std::string&, const std::string&); TypePtr type() const; bool optional() const; int tag() const; @@ -1100,8 +1094,6 @@ class DataMember : public virtual Contained protected: - DataMember(const ContainerPtr&, const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&, - const std::string&, const std::string&); friend class ClassDef; friend class Struct; friend class Exception; @@ -1122,6 +1114,7 @@ class Unit : public virtual Container { public: + Unit(bool, bool, const StringList&); static UnitPtr createUnit(bool, bool, const StringList& = StringList()); bool ignRedefs() const; @@ -1188,7 +1181,7 @@ class Unit : public virtual Container private: - Unit(bool, bool, const StringList&); + void init(); static void eraseWhiteSpace(::std::string&); bool _ignRedefs; @@ -1208,7 +1201,7 @@ class Unit : public virtual Container std::map< std::string, std::set > _fileTopLevelModules; }; -extern Unit* unit; // The current parser for bison/flex +extern Unit* currentUnit; // The current parser for bison/flex } diff --git a/cpp/src/Slice/Preprocessor.cpp b/cpp/src/Slice/Preprocessor.cpp index 13210390423..d1c605df327 100644 --- a/cpp/src/Slice/Preprocessor.cpp +++ b/cpp/src/Slice/Preprocessor.cpp @@ -45,7 +45,7 @@ extern "C" char* mcpp_get_mem_buffer(Outdest od); Slice::PreprocessorPtr Slice::Preprocessor::create(const string& path, const string& fileName, const vector& args) { - return new Preprocessor(path, fileName, args); + return make_shared(path, fileName, args); } Slice::Preprocessor::Preprocessor(const string& path, const string& fileName, const vector& args) : diff --git a/cpp/src/Slice/Preprocessor.h b/cpp/src/Slice/Preprocessor.h index 745f0e5c8fd..6c0e89db05d 100644 --- a/cpp/src/Slice/Preprocessor.h +++ b/cpp/src/Slice/Preprocessor.h @@ -5,22 +5,23 @@ #ifndef PREPROCESSOR_H #define PREPROCESSOR_H -#include -#include +#include +#include #include namespace Slice { class Preprocessor; -typedef IceUtil::Handle PreprocessorPtr; +using PreprocessorPtr = std::shared_ptr; -class Preprocessor : public IceUtil::SimpleShared +class Preprocessor { public: static PreprocessorPtr create(const std::string&, const std::string&, const std::vector&); + Preprocessor(const std::string&, const std::string&, const std::vector&); ~Preprocessor(); FILE* preprocess(bool, const std::string& = ""); @@ -43,7 +44,7 @@ class Preprocessor : public IceUtil::SimpleShared private: - Preprocessor(const std::string&, const std::string&, const std::vector&); + bool checkInputFile(); diff --git a/cpp/src/Slice/PythonUtil.cpp b/cpp/src/Slice/PythonUtil.cpp index 07260f98df4..256b2e66d10 100644 --- a/cpp/src/Slice/PythonUtil.cpp +++ b/cpp/src/Slice/PythonUtil.cpp @@ -307,7 +307,7 @@ Slice::Python::ModuleVisitor::visitModuleStart(const ModulePtr& p) // If so, we need to emit statements to open each of the modules in the // package before we can open this module. // - if(UnitPtr::dynamicCast(p->container())) + if (dynamic_pointer_cast(p->container())) { string pkg = getPackageMetadata(p); if(!pkg.empty()) @@ -336,9 +336,7 @@ Slice::Python::ModuleVisitor::visitModuleStart(const ModulePtr& p) return true; } -// // CodeVisitor implementation. -// Slice::Python::CodeVisitor::CodeVisitor(Output& out, set& moduleHistory) : _out(out), _moduleHistory(moduleHistory) @@ -371,7 +369,7 @@ Slice::Python::CodeVisitor::visitModuleStart(const ModulePtr& p) // If so, we need to emit statements to open each of the modules in the // package before we can open this module. // - if(UnitPtr::dynamicCast(p->container())) + if(dynamic_pointer_cast(p->container())) { string pkg = getPackageMetadata(p); if(!pkg.empty()) @@ -1545,24 +1543,22 @@ Slice::Python::CodeVisitor::visitSequence(const SequencePtr& p) StringList metaData = p->getMetaData(); bool isCustom = false; string customType; - for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); ++q) + for(const auto& q : metaData) { - if(q->find(protobuf) == 0) + if(q.find(protobuf) == 0) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); + BuiltinPtr builtin = dynamic_pointer_cast(p->type()); if(!builtin || builtin->kind() != Builtin::KindByte) { continue; } isCustom = true; - customType = q->substr(protobuf.size()); + customType = q.substr(protobuf.size()); break; } } - // // Emit the type information. - // string scoped = p->scoped(); _out << sp << nl << "if " << getDictLookup(p, "_t_") << ':'; _out.inc(); @@ -1587,9 +1583,7 @@ Slice::Python::CodeVisitor::visitSequence(const SequencePtr& p) void Slice::Python::CodeVisitor::visitDictionary(const DictionaryPtr& p) { - // // Emit the type information. - // string scoped = p->scoped(); _out << sp << nl << "if " << getDictLookup(p, "_t_") << ':'; _out.inc(); @@ -1699,7 +1693,7 @@ Slice::Python::CodeVisitor::registerName(const string& name) void Slice::Python::CodeVisitor::writeType(const TypePtr& p) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p); + BuiltinPtr builtin = dynamic_pointer_cast(p); if(builtin) { switch(builtin->kind()) @@ -1759,14 +1753,14 @@ Slice::Python::CodeVisitor::writeType(const TypePtr& p) return; } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(p); + InterfaceDeclPtr prx = dynamic_pointer_cast(p); if(prx) { _out << "_M_" << getAbsolute(prx, "_t_", "Prx"); return; } - ContainedPtr cont = ContainedPtr::dynamicCast(p); + ContainedPtr cont = dynamic_pointer_cast(p); assert(cont); _out << "_M_" << getAbsolute(cont, "_t_"); } @@ -1775,7 +1769,7 @@ void Slice::Python::CodeVisitor::writeInitializer(const DataMemberPtr& m) { TypePtr p = m->type(); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p); + BuiltinPtr builtin = dynamic_pointer_cast(p); if(builtin) { switch(builtin->kind()) @@ -1815,7 +1809,7 @@ Slice::Python::CodeVisitor::writeInitializer(const DataMemberPtr& m) return; } - EnumPtr en = EnumPtr::dynamicCast(p); + EnumPtr en = dynamic_pointer_cast(p); if(en) { EnumeratorList enums = en->enumerators(); @@ -1823,7 +1817,7 @@ Slice::Python::CodeVisitor::writeInitializer(const DataMemberPtr& m) return; } - StructPtr st = StructPtr::dynamicCast(p); + StructPtr st = dynamic_pointer_cast(p); if(st) { // @@ -1842,7 +1836,7 @@ Slice::Python::CodeVisitor::writeInitializer(const DataMemberPtr& m) void Slice::Python::CodeVisitor::writeHash(const string& name, const TypePtr& p, int& iter) { - SequencePtr seq = SequencePtr::dynamicCast(p); + SequencePtr seq = dynamic_pointer_cast(p); if(seq) { _out << nl << "if " << name << ':'; @@ -1858,7 +1852,7 @@ Slice::Python::CodeVisitor::writeHash(const string& name, const TypePtr& p, int& return; } - DictionaryPtr dict = DictionaryPtr::dynamicCast(p); + DictionaryPtr dict = dynamic_pointer_cast(p); if(dict) { _out << nl << "if " << name << ':'; @@ -1913,7 +1907,7 @@ Slice::Python::CodeVisitor::writeAssign(const MemberInfo& info) // // Structures are treated differently (see bug 3676). // - StructPtr st = StructPtr::dynamicCast(info.dataMember->type()); + StructPtr st = dynamic_pointer_cast(info.dataMember->type()); if(st && !info.dataMember->optional()) { _out << nl << "if " << paramName << " is Ice._struct_marker:"; @@ -1935,15 +1929,15 @@ void Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const SyntaxTreeBasePtr& valueType, const string& value) { - ConstPtr constant = ConstPtr::dynamicCast(valueType); + ConstPtr constant = dynamic_pointer_cast(valueType); if(constant) { _out << "_M_" << getAbsolute(constant); } else { - Slice::BuiltinPtr b = Slice::BuiltinPtr::dynamicCast(type); - Slice::EnumPtr en = Slice::EnumPtr::dynamicCast(type); + Slice::BuiltinPtr b = dynamic_pointer_cast(type); + Slice::EnumPtr en = dynamic_pointer_cast(type); if(b) { switch(b->kind()) @@ -1983,7 +1977,7 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax } else if(en) { - EnumeratorPtr lte = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr lte = dynamic_pointer_cast(valueType); assert(lte); _out << getSymbol(lte); } @@ -2923,13 +2917,13 @@ Slice::Python::getPackageMetadata(const ContainedPtr& cont) ContainedPtr p = cont; while(true) { - if(ModulePtr::dynamicCast(p)) + if (dynamic_pointer_cast(p)) { - m = ModulePtr::dynamicCast(p); + m = dynamic_pointer_cast(p); } ContainerPtr c = p->container(); - p = ContainedPtr::dynamicCast(c); // This cast fails for Unit. + p = dynamic_pointer_cast(c); // This cast fails for Unit. if(!p) { break; @@ -2938,10 +2932,8 @@ Slice::Python::getPackageMetadata(const ContainedPtr& cont) assert(m); - // // The python:package metadata can be defined as file metadata or applied to a top-level module. // We check for the metadata at the top-level module first and then fall back to the global scope. - // static const string prefix = "python:package:"; string q; @@ -3054,7 +3046,7 @@ Slice::Python::MetaDataVisitor::visitModuleStart(const ModulePtr& p) // // Must be a top-level module. // - if(UnitPtr::dynamicCast(p->container())) + if (dynamic_pointer_cast(p->container())) { continue; } @@ -3154,7 +3146,7 @@ Slice::Python::MetaDataVisitor::visitSequence(const SequencePtr& p) // Remove from list so validateSequence does not try to handle as well. // metaData.remove(s); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); + BuiltinPtr builtin = dynamic_pointer_cast(p->type()); if(!builtin || builtin->kind() != Builtin::KindByte) { dc->warning(InvalidMetaData, file, line, "ignoring invalid metadata `" + s + ": " + @@ -3205,7 +3197,7 @@ Slice::Python::MetaDataVisitor::validateSequence(const string& file, const strin string s = *p++; if(s.find(prefix) == 0) { - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { static const string seqPrefix = "python:seq:"; @@ -3230,7 +3222,7 @@ Slice::Python::MetaDataVisitor::validateSequence(const string& file, const strin // The memoryview sequence metadata is only valid for integral builtin // types excluding strings. // - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin) { switch(builtin->kind()) diff --git a/cpp/src/Slice/RubyUtil.cpp b/cpp/src/Slice/RubyUtil.cpp index 3611ef63510..762837d4736 100644 --- a/cpp/src/Slice/RubyUtil.cpp +++ b/cpp/src/Slice/RubyUtil.cpp @@ -6,6 +6,7 @@ #include #include #include +#include using namespace std; using namespace Slice; @@ -95,7 +96,7 @@ class CodeVisitor : public ParserVisitor { string lowerName; // Mapped name beginning with a lower-case letter for use as the name of a local variable. string fixedName; - bool inherited; + bool inherited = false; DataMemberPtr dataMember; }; typedef list MemberInfoList; @@ -156,11 +157,8 @@ bool Slice::Ruby::CodeVisitor::visitModuleStart(const ModulePtr& p) { _out << sp << nl << "module "; - // - // Ensure that Slice top-level modules are defined as top - // level modules in Ruby - // - if(UnitPtr::dynamicCast(p->container())) + // Ensure that Slice top-level modules are defined as top level modules in Ruby + if(dynamic_pointer_cast(p->container())) { _out << "::"; } @@ -1110,7 +1108,7 @@ Slice::Ruby::CodeVisitor::visitConst(const ConstPtr& p) void Slice::Ruby::CodeVisitor::writeType(const TypePtr& p) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p); + BuiltinPtr builtin = dynamic_pointer_cast(p); if(builtin) { switch(builtin->kind()) @@ -1170,14 +1168,14 @@ Slice::Ruby::CodeVisitor::writeType(const TypePtr& p) return; } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(p); + InterfaceDeclPtr prx = dynamic_pointer_cast(p); if(prx) { _out << getAbsolute(prx, IdentToUpper, "T_") << "Prx"; return; } - ContainedPtr cont = ContainedPtr::dynamicCast(p); + ContainedPtr cont = dynamic_pointer_cast(p); assert(cont); _out << getAbsolute(cont, IdentToUpper, "T_"); } @@ -1186,7 +1184,7 @@ string Slice::Ruby::CodeVisitor::getInitializer(const DataMemberPtr& m) { TypePtr p = m->type(); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p); + BuiltinPtr builtin = dynamic_pointer_cast(p); if(builtin) { switch(builtin->kind()) @@ -1220,14 +1218,14 @@ Slice::Ruby::CodeVisitor::getInitializer(const DataMemberPtr& m) } } - EnumPtr en = EnumPtr::dynamicCast(p); + EnumPtr en = dynamic_pointer_cast(p); if(en) { EnumeratorList enums = en->enumerators(); return getAbsolute(en, IdentToUpper) + "::" + fixIdent(enums.front()->name(), IdentToUpper); } - StructPtr st = StructPtr::dynamicCast(p); + StructPtr st = dynamic_pointer_cast(p); if(st) { return getAbsolute(st, IdentToUpper) + ".new"; @@ -1246,15 +1244,15 @@ void Slice::Ruby::CodeVisitor::writeConstantValue(const TypePtr& type, const SyntaxTreeBasePtr& valueType, const string& value) { - ConstPtr constant = ConstPtr::dynamicCast(valueType); + ConstPtr constant = dynamic_pointer_cast(valueType); if(constant) { _out << fixIdent(constant->scoped(), IdentToUpper); } else { - Slice::BuiltinPtr b = Slice::BuiltinPtr::dynamicCast(type); - Slice::EnumPtr en = Slice::EnumPtr::dynamicCast(type); + Slice::BuiltinPtr b = dynamic_pointer_cast(type); + Slice::EnumPtr en = dynamic_pointer_cast(type); if(b) { switch(b->kind()) @@ -1291,7 +1289,7 @@ Slice::Ruby::CodeVisitor::writeConstantValue(const TypePtr& type, const SyntaxTr } else if(en) { - EnumeratorPtr lte = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr lte = dynamic_pointer_cast(valueType); assert(lte); _out << getAbsolute(lte, IdentToUpper); } diff --git a/cpp/src/Slice/Scanner.cpp b/cpp/src/Slice/Scanner.cpp index da03f8fd76b..8ec88f44cee 100644 --- a/cpp/src/Slice/Scanner.cpp +++ b/cpp/src/Slice/Scanner.cpp @@ -1,11 +1,11 @@ -#line 1 "src/Slice/Scanner.cpp" +#line 2 "src/Slice/Scanner.cpp" // // Copyright (c) ZeroC, Inc. All rights reserved. // #include -#line 8 "src/Slice/Scanner.cpp" +#line 9 "src/Slice/Scanner.cpp" #define YY_INT_ALIGNED long int @@ -1111,11 +1111,11 @@ int yy_flex_debug = 1; static const flex_int32_t yy_rule_linenum[49] = { 0, - 142, 156, 157, 164, 165, 166, 173, 192, 205, 215, - 222, 223, 235, 236, 244, 255, 265, 273, 291, 305, - 333, 338, 341, 347, 348, 353, 359, 378, 383, 389, - 390, 405, 410, 418, 423, 438, 448, 453, 457, 462, - 468, 474, 511, 521, 524, 531, 535, 549 + 135, 149, 150, 157, 158, 159, 166, 185, 198, 208, + 215, 216, 228, 229, 237, 248, 258, 266, 284, 298, + 326, 331, 334, 340, 341, 346, 352, 371, 376, 382, + 383, 398, 403, 411, 416, 431, 441, 446, 450, 455, + 461, 467, 504, 514, 517, 524, 528, 542 } ; /* The intent behind this definition is that it'll catch @@ -1190,8 +1190,8 @@ void preAction(); #define YY_USER_INIT initScanner(); #define YY_USER_ACTION preAction(); -#line 1200 "src/Slice/Scanner.cpp" -#line 80 "src/Slice/Scanner.l" +#line 1194 "src/Slice/Scanner.cpp" +#line 73 "src/Slice/Scanner.l" /* Changes the default prefix of 'yy' to 'slice_' for functions and variables in the generated code. */ /* Instructs flex to not suppress any warnings when generating the scanner. */ /* Instructs flex to generate a scanner that supports verbose outputting (debug mode). */ @@ -1217,7 +1217,7 @@ void preAction(); /* The scanner also has a built in 'INITIAL' start-condition state, which is the state the scanner is initialized in. * We use it solely to check for and consume any BOMs at the start of files. See Bug 3140. */ -#line 1227 "src/Slice/Scanner.cpp" +#line 1221 "src/Slice/Scanner.cpp" #define INITIAL 0 #define C_COMMENT 1 @@ -1503,12 +1503,12 @@ YY_DECL { /* %% [7.0] user's declarations go here */ -#line 138 "src/Slice/Scanner.l" +#line 131 "src/Slice/Scanner.l" /* ========== Literals ========== */ /* Matches the start of a double-quoted string literal. */ -#line 1518 "src/Slice/Scanner.cpp" +#line 1512 "src/Slice/Scanner.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1593,12 +1593,12 @@ YY_DECL case 1: YY_RULE_SETUP -#line 142 "src/Slice/Scanner.l" +#line 135 "src/Slice/Scanner.l" { yy_push_state(STRING_LITERAL); startLocation(yylloc); - StringTokPtr str = new StringTok; + StringTokPtr str = make_shared(); str->literal = "\""; *yylval = str; } @@ -1608,26 +1608,26 @@ YY_RULE_SETUP /* Matches Escaped backslashes and any other valid string characters. Invalid characters are * new-lines, non-printable ASCII characters, and double-quotes. */ case 2: -#line 157 "src/Slice/Scanner.l" +#line 150 "src/Slice/Scanner.l" case 3: YY_RULE_SETUP -#line 157 "src/Slice/Scanner.l" +#line 150 "src/Slice/Scanner.l" { - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += yytext; } YY_BREAK /* Matches an escaped double-quote, single-quote, or question mark. */ case 4: -#line 165 "src/Slice/Scanner.l" +#line 158 "src/Slice/Scanner.l" case 5: -#line 166 "src/Slice/Scanner.l" +#line 159 "src/Slice/Scanner.l" case 6: YY_RULE_SETUP -#line 166 "src/Slice/Scanner.l" +#line 159 "src/Slice/Scanner.l" { - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += yytext[1]; } @@ -1635,9 +1635,9 @@ YY_RULE_SETUP /* Matches an ANSI-C escape code pattern. */ case 7: YY_RULE_SETUP -#line 173 "src/Slice/Scanner.l" +#line 166 "src/Slice/Scanner.l" { - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); char ansiCode; switch(yytext[1]) { @@ -1657,15 +1657,15 @@ YY_RULE_SETUP /* Matches an escaped octal value. Octal literals are limited to a max of 3 digits. */ case 8: YY_RULE_SETUP -#line 192 "src/Slice/Scanner.l" +#line 185 "src/Slice/Scanner.l" { IceUtil::Int64 value = strtoull((yytext + 1), 0, 8); if(value > 255) { - unit->error("octal escape sequence out of range: `\\" + string(yytext + 1) + "'"); + currentUnit->error("octal escape sequence out of range: `\\" + string(yytext + 1) + "'"); } - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += static_cast(value); } @@ -1673,12 +1673,12 @@ YY_RULE_SETUP /* Matches an escaped hexadecimal value. Hexadecimal literals are limited to a max of 2 digits. */ case 9: YY_RULE_SETUP -#line 205 "src/Slice/Scanner.l" +#line 198 "src/Slice/Scanner.l" { IceUtil::Int64 value = strtoull((yytext + 2), 0, 16); assert(value <= 255); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += static_cast(value); } @@ -1686,39 +1686,39 @@ YY_RULE_SETUP /* Matches an empty hexadecimal escape value. */ case 10: YY_RULE_SETUP -#line 215 "src/Slice/Scanner.l" +#line 208 "src/Slice/Scanner.l" { - unit->error("no hex digit in hex escape sequence"); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + currentUnit->error("no hex digit in hex escape sequence"); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; } YY_BREAK /* Matches a 4-char or 8-char size universal character code. */ case 11: -#line 223 "src/Slice/Scanner.l" +#line 216 "src/Slice/Scanner.l" case 12: YY_RULE_SETUP -#line 223 "src/Slice/Scanner.l" +#line 216 "src/Slice/Scanner.l" { IceUtil::Int64 codePoint = strtoull((yytext + 2), 0, 16); if(codePoint <= 0xdfff && codePoint >= 0xd800) { - unit->error("a universal character name cannot designate a surrogate: `" + string(yytext) + "'"); + currentUnit->error("a universal character name cannot designate a surrogate: `" + string(yytext) + "'"); } - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += yytext; } YY_BREAK /* Matches a universal character code that isn't the correct size, or uses incorrect characters. */ case 13: -#line 236 "src/Slice/Scanner.l" +#line 229 "src/Slice/Scanner.l" case 14: YY_RULE_SETUP -#line 236 "src/Slice/Scanner.l" +#line 229 "src/Slice/Scanner.l" { - unit->error("unknown escape sequence in string literal: `" + string(yytext) + "'"); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + currentUnit->error("unknown escape sequence in string literal: `" + string(yytext) + "'"); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += yytext; } @@ -1727,13 +1727,13 @@ YY_RULE_SETUP case 15: /* rule 15 can match eol */ YY_RULE_SETUP -#line 244 "src/Slice/Scanner.l" +#line 237 "src/Slice/Scanner.l" { yy_pop_state(); endLocation(yylloc); nextLine(); - unit->error("encountered un-escaped EOL while scanning a string literal."); + currentUnit->error("encountered un-escaped EOL while scanning a string literal."); return ICE_STRING_LITERAL; } YY_BREAK @@ -1741,11 +1741,11 @@ YY_RULE_SETUP * it only matches 2 characters (the lowest any match), and it's beneath the others. */ case 16: YY_RULE_SETUP -#line 255 "src/Slice/Scanner.l" +#line 248 "src/Slice/Scanner.l" { - unit->warning(All, "unknown escape sequence in string literal: `" + string(yytext) + "'"); + currentUnit->warning(All, "unknown escape sequence in string literal: `" + string(yytext) + "'"); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); // Escape the entire sequence. str->literal += yytext; str->v += "\\" + string(yytext); @@ -1754,10 +1754,10 @@ YY_RULE_SETUP /* Matches a dangling backslash, with nothing to escape. This rule is mostly included for grammar completeness. */ case 17: YY_RULE_SETUP -#line 265 "src/Slice/Scanner.l" +#line 258 "src/Slice/Scanner.l" { - unit->warning(All, "dangling backslash in string literal"); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + currentUnit->warning(All, "dangling backslash in string literal"); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; } YY_BREAK @@ -1765,52 +1765,52 @@ YY_RULE_SETUP * to match the longest string it can, so quotes preceeded with a literal '\' will match the rules above this one. */ case 18: YY_RULE_SETUP -#line 273 "src/Slice/Scanner.l" +#line 266 "src/Slice/Scanner.l" { yy_pop_state(); endLocation(yylloc); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; return ICE_STRING_LITERAL; } YY_BREAK /* Matches EOF, but only while scanning a string literal. */ case YY_STATE_EOF(STRING_LITERAL): -#line 283 "src/Slice/Scanner.l" +#line 276 "src/Slice/Scanner.l" { yy_pop_state(); endLocation(yylloc); - unit->error("encountered EOF while scanning a string literal"); + currentUnit->error("encountered EOF while scanning a string literal"); return ICE_STRING_LITERAL; } YY_BREAK case 19: YY_RULE_SETUP -#line 291 "src/Slice/Scanner.l" +#line 284 "src/Slice/Scanner.l" { setLocation(yylloc); - IntegerTokPtr itp = new IntegerTok; + IntegerTokPtr itp = make_shared(); itp->literal = string(yytext); *yylval = itp; if(!IceUtilInternal::stringToInt64(string(yytext), itp->v)) { assert(itp->v != 0); - unit->error("integer constant `" + string(yytext) + "' out of range"); + currentUnit->error("integer constant `" + string(yytext) + "' out of range"); } return ICE_INTEGER_LITERAL; } YY_BREAK case 20: YY_RULE_SETUP -#line 305 "src/Slice/Scanner.l" +#line 298 "src/Slice/Scanner.l" { setLocation(yylloc); errno = 0; - FloatingTokPtr ftp = new FloatingTok; + FloatingTokPtr ftp = make_shared(); *yylval = ftp; string literal(yytext); ftp->literal = literal; @@ -1822,11 +1822,11 @@ YY_RULE_SETUP ftp->v = strtod(literal.c_str(), 0); if((ftp->v == HUGE_VAL || ftp->v == -HUGE_VAL) && errno == ERANGE) { - unit->error("floating-point constant `" + string(yytext) + "' too large (overflow)"); + currentUnit->error("floating-point constant `" + string(yytext) + "' too large (overflow)"); } else if(ftp->v == 0 && errno == ERANGE) { - unit->error("floating-point constant `" + string(yytext) + "' too small (underflow)"); + currentUnit->error("floating-point constant `" + string(yytext) + "' too small (underflow)"); } return ICE_FLOATING_POINT_LITERAL; } @@ -1835,21 +1835,21 @@ YY_RULE_SETUP /* Matches and records a triple-slash style doc comment. */ case 21: YY_RULE_SETUP -#line 333 "src/Slice/Scanner.l" +#line 326 "src/Slice/Scanner.l" { - unit->addToComment(yytext + 3); + currentUnit->addToComment(yytext + 3); } YY_BREAK /* Matches and consumes a C++ style comment. */ case 22: YY_RULE_SETUP -#line 338 "src/Slice/Scanner.l" +#line 331 "src/Slice/Scanner.l" {} YY_BREAK /* Matches the start of a C style comment, and switches the scanner to the C_COMMENT state. */ case 23: YY_RULE_SETUP -#line 341 "src/Slice/Scanner.l" +#line 334 "src/Slice/Scanner.l" { yy_push_state(C_COMMENT); } @@ -1857,10 +1857,10 @@ YY_RULE_SETUP /* Matches any character except for newlines and adds them to the comments. '*' are matched one at a time to ensure * Flex scans '* /' correctly. Flex prioritizes longer matches over shorter ones, so '* /' will match before '*'. */ case 24: -#line 348 "src/Slice/Scanner.l" +#line 341 "src/Slice/Scanner.l" case 25: YY_RULE_SETUP -#line 348 "src/Slice/Scanner.l" +#line 341 "src/Slice/Scanner.l" { yymore(); } @@ -1869,7 +1869,7 @@ YY_RULE_SETUP case 26: /* rule 26 can match eol */ YY_RULE_SETUP -#line 353 "src/Slice/Scanner.l" +#line 346 "src/Slice/Scanner.l" { nextLine(yyleng); yymore(); @@ -1878,30 +1878,30 @@ YY_RULE_SETUP /* Matches the end of a C style comment, and reverts the scanner state to what it previously was. */ case 27: YY_RULE_SETUP -#line 359 "src/Slice/Scanner.l" +#line 352 "src/Slice/Scanner.l" { yy_pop_state(); string comment(yytext); // The last 2 characters are the '*/' matched by this rule. - unit->setComment(comment.substr(0, yyleng - 2)); + currentUnit->setComment(comment.substr(0, yyleng - 2)); } YY_BREAK /* Handles reaching EOF while scanning a C style comment by issuing a warning but continuing normally. */ case YY_STATE_EOF(C_COMMENT): -#line 368 "src/Slice/Scanner.l" +#line 361 "src/Slice/Scanner.l" { yy_pop_state(); - unit->error("encountered EOF while scanning a comment"); - unit->setComment(yytext); + currentUnit->error("encountered EOF while scanning a comment"); + currentUnit->setComment(yytext); } YY_BREAK /* ========== Preprocessor Statements ========== */ /* Matches the empty preprocessor directive. */ case 28: YY_RULE_SETUP -#line 378 "src/Slice/Scanner.l" +#line 371 "src/Slice/Scanner.l" { yy_push_state(PREPROCESS); } @@ -1909,18 +1909,18 @@ YY_RULE_SETUP /* Matches a line preprocessor directive, but missing a line number. */ case 29: YY_RULE_SETUP -#line 383 "src/Slice/Scanner.l" +#line 376 "src/Slice/Scanner.l" { yy_push_state(PREPROCESS); - unit->error("missing line number in line preprocessor directive"); + currentUnit->error("missing line number in line preprocessor directive"); } YY_BREAK /* Matches a line preprocessor directive (optionally with a file specified afterwards). */ case 30: -#line 390 "src/Slice/Scanner.l" +#line 383 "src/Slice/Scanner.l" case 31: YY_RULE_SETUP -#line 390 "src/Slice/Scanner.l" +#line 383 "src/Slice/Scanner.l" { int includeAction = scanPosition(yytext); if(yylineno == 0 || includeAction == 1) // Push: Indicated the scanner has started scanning a new file. @@ -1938,18 +1938,18 @@ YY_RULE_SETUP * found while scanning a preprocessor directive. */ case 32: YY_RULE_SETUP -#line 405 "src/Slice/Scanner.l" +#line 398 "src/Slice/Scanner.l" { - unit->error("encountered unexpected token while scanning preprocessor directive: `" + string(yytext) + "'"); + currentUnit->error("encountered unexpected token while scanning preprocessor directive: `" + string(yytext) + "'"); } YY_BREAK /* Matches a new-line character or EOF. This signals the end of the preprocessor statement. */ case 33: /* rule 33 can match eol */ -#line 411 "src/Slice/Scanner.l" +#line 404 "src/Slice/Scanner.l" YY_RULE_SETUP case YY_STATE_EOF(PREPROCESS): -#line 411 "src/Slice/Scanner.l" +#line 404 "src/Slice/Scanner.l" { yy_pop_state(); nextLine(); @@ -1958,7 +1958,7 @@ case YY_STATE_EOF(PREPROCESS): /* ========== Metadata ========== */ case 34: YY_RULE_SETUP -#line 418 "src/Slice/Scanner.l" +#line 411 "src/Slice/Scanner.l" { yy_push_state(METADATA); return ICE_METADATA_OPEN; @@ -1966,7 +1966,7 @@ YY_RULE_SETUP YY_BREAK case 35: YY_RULE_SETUP -#line 423 "src/Slice/Scanner.l" +#line 416 "src/Slice/Scanner.l" { yy_push_state(METADATA); @@ -1984,12 +1984,12 @@ YY_RULE_SETUP /* Matches the start of a metadata string, then switches the scanner into STRING_LITERAL mode. */ case 36: YY_RULE_SETUP -#line 438 "src/Slice/Scanner.l" +#line 431 "src/Slice/Scanner.l" { yy_push_state(STRING_LITERAL); startLocation(yylloc); - StringTokPtr str = new StringTok; + StringTokPtr str = make_shared(); str->literal = "\""; *yylval = str; } @@ -1997,7 +1997,7 @@ YY_RULE_SETUP /* Matches commas between string literals in quoted metadata and forwards them to the parser. */ case 37: YY_RULE_SETUP -#line 448 "src/Slice/Scanner.l" +#line 441 "src/Slice/Scanner.l" { return yytext[0]; } @@ -2006,14 +2006,14 @@ YY_RULE_SETUP case 38: /* rule 38 can match eol */ YY_RULE_SETUP -#line 453 "src/Slice/Scanner.l" +#line 446 "src/Slice/Scanner.l" { nextLine(yyleng); } YY_BREAK case 39: YY_RULE_SETUP -#line 457 "src/Slice/Scanner.l" +#line 450 "src/Slice/Scanner.l" { yy_pop_state(); return ICE_METADATA_CLOSE; @@ -2021,7 +2021,7 @@ YY_RULE_SETUP YY_BREAK case 40: YY_RULE_SETUP -#line 462 "src/Slice/Scanner.l" +#line 455 "src/Slice/Scanner.l" { yy_pop_state(); return ICE_GLOBAL_METADATA_CLOSE; @@ -2030,18 +2030,18 @@ YY_RULE_SETUP /* Matches any characters not matched by another metadata rule (except whitespace), and reports an error. */ case 41: YY_RULE_SETUP -#line 468 "src/Slice/Scanner.l" +#line 461 "src/Slice/Scanner.l" { - unit->error("invalid character between metadata"); + currentUnit->error("invalid character between metadata"); } YY_BREAK /* ========== Identifiers and Keywords ========== */ case 42: /* rule 42 can match eol */ YY_RULE_SETUP -#line 474 "src/Slice/Scanner.l" +#line 467 "src/Slice/Scanner.l" { - StringTokPtr ident = new StringTok; + StringTokPtr ident = make_shared(); ident->v = *yytext == '\\' ? yytext + 1 : yytext; ident->v.erase(ident->v.find_first_of(" \t\v\n\r\f(")); *yylval = ident; @@ -2049,7 +2049,7 @@ YY_RULE_SETUP { if(checkIsScoped(ident->v) == ICE_SCOPED_IDENTIFIER) { - unit->error("Operation identifiers cannot be scoped: `" + (ident->v) + "'"); + currentUnit->error("Operation identifiers cannot be scoped: `" + (ident->v) + "'"); } return ICE_IDENT_OPEN; } @@ -2060,7 +2060,7 @@ YY_RULE_SETUP } else if(st == ICE_SCOPED_IDENTIFIER) { - unit->error("Operation identifiers cannot be scoped: `" + (ident->v) + "'"); + currentUnit->error("Operation identifiers cannot be scoped: `" + (ident->v) + "'"); return ICE_IDENT_OPEN; } else if(st == ICE_TAG) @@ -2079,9 +2079,9 @@ YY_RULE_SETUP YY_BREAK case 43: YY_RULE_SETUP -#line 511 "src/Slice/Scanner.l" +#line 504 "src/Slice/Scanner.l" { - StringTokPtr ident = new StringTok; + StringTokPtr ident = make_shared(); ident->v = *yytext == '\\' ? yytext + 1 : yytext; *yylval = ident; return *yytext == '\\' ? checkIsScoped(ident->v) : checkKeyword(ident->v); @@ -2091,14 +2091,14 @@ YY_RULE_SETUP /* Matches and consumes any whitespace, except for newlines. */ case 44: YY_RULE_SETUP -#line 521 "src/Slice/Scanner.l" +#line 514 "src/Slice/Scanner.l" {} YY_BREAK /* Matches and consumes newlines, but only when the scanner isn't in a sub-scanner. */ case 45: /* rule 45 can match eol */ YY_RULE_SETUP -#line 524 "src/Slice/Scanner.l" +#line 517 "src/Slice/Scanner.l" { nextLine(yyleng); } @@ -2107,7 +2107,7 @@ YY_RULE_SETUP /* Matches and consumes a BOM, but only when the scanner has just started scanning a new file. */ case 46: YY_RULE_SETUP -#line 531 "src/Slice/Scanner.l" +#line 524 "src/Slice/Scanner.l" {} YY_BREAK /* Matches invalid characters, one at a time to make this the 2nd lowest priority rule. All printable ASCII @@ -2115,7 +2115,7 @@ YY_RULE_SETUP case 47: /* rule 47 can match eol */ YY_RULE_SETUP -#line 535 "src/Slice/Scanner.l" +#line 528 "src/Slice/Scanner.l" { stringstream s; s << "illegal input character: '\\"; @@ -2124,7 +2124,7 @@ YY_RULE_SETUP s << oct << static_cast(static_cast(yytext[0])); s << "'"; - unit->error(s.str()); + currentUnit->error(s.str()); return BAD_CHAR; } YY_BREAK @@ -2132,7 +2132,7 @@ YY_RULE_SETUP * This is the lowest priority rule in the scanner, and is only active while not in a sub-scanner. */ case 48: YY_RULE_SETUP -#line 549 "src/Slice/Scanner.l" +#line 542 "src/Slice/Scanner.l" { setLocation(yylloc); return yytext[0]; @@ -2140,10 +2140,10 @@ YY_RULE_SETUP YY_BREAK case 49: YY_RULE_SETUP -#line 554 "src/Slice/Scanner.l" +#line 547 "src/Slice/Scanner.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2153 "src/Slice/Scanner.cpp" +#line 2147 "src/Slice/Scanner.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(PRE_SLICE): case YY_STATE_EOF(SLICE): @@ -3147,7 +3147,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 554 "src/Slice/Scanner.l" +#line 547 "src/Slice/Scanner.l" namespace Slice @@ -3164,7 +3164,7 @@ int checkKeyword(string& id) { if(pos->first != id) { - unit->error("illegal identifier: `" + id + "' differs from keyword `" + pos->first + + currentUnit->error("illegal identifier: `" + id + "' differs from keyword `" + pos->first + "' only in capitalization"); id = pos->first; } @@ -3220,11 +3220,11 @@ int scanPosition(const char* s) } else { - unit->error("mismatched quotations in line directive"); + currentUnit->error("mismatched quotations in line directive"); line = line.substr(1); } } - lineTypeCode = unit->setCurrentFile(line, yylineno); + lineTypeCode = currentUnit->setCurrentFile(line, yylineno); yyfilename = string(line); } return lineTypeCode; diff --git a/cpp/src/Slice/Scanner.l b/cpp/src/Slice/Scanner.l index 1d05a3d059a..67cccb312ca 100644 --- a/cpp/src/Slice/Scanner.l +++ b/cpp/src/Slice/Scanner.l @@ -135,7 +135,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo yy_push_state(STRING_LITERAL); startLocation(yylloc); - StringTokPtr str = new StringTok; + StringTokPtr str = make_shared(); str->literal = "\""; *yylval = str; } @@ -147,7 +147,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo * new-lines, non-printable ASCII characters, and double-quotes. */ "\\\\"+ | [^\\\n"\x0-\x1f\x7f]+ { - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += yytext; } @@ -156,14 +156,14 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo "\\\"" | "\\\'" | "\\?" { - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += yytext[1]; } /* Matches an ANSI-C escape code pattern. */ "\\"[abfnrtv] { - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); char ansiCode; switch(yytext[1]) { @@ -185,10 +185,10 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo IceUtil::Int64 value = strtoull((yytext + 1), 0, 8); if(value > 255) { - unit->error("octal escape sequence out of range: `\\" + string(yytext + 1) + "'"); + currentUnit->error("octal escape sequence out of range: `\\" + string(yytext + 1) + "'"); } - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += static_cast(value); } @@ -198,15 +198,15 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo IceUtil::Int64 value = strtoull((yytext + 2), 0, 16); assert(value <= 255); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += static_cast(value); } /* Matches an empty hexadecimal escape value. */ "\\x" { - unit->error("no hex digit in hex escape sequence"); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + currentUnit->error("no hex digit in hex escape sequence"); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; } @@ -216,9 +216,9 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo IceUtil::Int64 codePoint = strtoull((yytext + 2), 0, 16); if(codePoint <= 0xdfff && codePoint >= 0xd800) { - unit->error("a universal character name cannot designate a surrogate: `" + string(yytext) + "'"); + currentUnit->error("a universal character name cannot designate a surrogate: `" + string(yytext) + "'"); } - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += yytext; } @@ -226,8 +226,8 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo /* Matches a universal character code that isn't the correct size, or uses incorrect characters. */ "\\u"{hex}{0,3}[g-zG-Z]* | "\\U"{hex}{0,7}[g-zG-Z]* { - unit->error("unknown escape sequence in string literal: `" + string(yytext) + "'"); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + currentUnit->error("unknown escape sequence in string literal: `" + string(yytext) + "'"); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; str->v += yytext; } @@ -238,16 +238,16 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo endLocation(yylloc); nextLine(); - unit->error("encountered un-escaped EOL while scanning a string literal."); + currentUnit->error("encountered un-escaped EOL while scanning a string literal."); return ICE_STRING_LITERAL; } /* Matches an unknown escape value. This rule has a lower priority than all the other escape rules because * it only matches 2 characters (the lowest any match), and it's beneath the others. */ "\\". { - unit->warning(All, "unknown escape sequence in string literal: `" + string(yytext) + "'"); + currentUnit->warning(All, "unknown escape sequence in string literal: `" + string(yytext) + "'"); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); // Escape the entire sequence. str->literal += yytext; str->v += "\\" + string(yytext); @@ -255,8 +255,8 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo /* Matches a dangling backslash, with nothing to escape. This rule is mostly included for grammar completeness. */ \\ { - unit->warning(All, "dangling backslash in string literal"); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + currentUnit->warning(All, "dangling backslash in string literal"); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; } @@ -266,7 +266,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo yy_pop_state(); endLocation(yylloc); - StringTokPtr str = StringTokPtr::dynamicCast(*yylval); + StringTokPtr str = dynamic_pointer_cast(*yylval); str->literal += yytext; return ICE_STRING_LITERAL; } @@ -276,20 +276,20 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo yy_pop_state(); endLocation(yylloc); - unit->error("encountered EOF while scanning a string literal"); + currentUnit->error("encountered EOF while scanning a string literal"); return ICE_STRING_LITERAL; } {integer_constant} { setLocation(yylloc); - IntegerTokPtr itp = new IntegerTok; + IntegerTokPtr itp = make_shared(); itp->literal = string(yytext); *yylval = itp; if(!IceUtilInternal::stringToInt64(string(yytext), itp->v)) { assert(itp->v != 0); - unit->error("integer constant `" + string(yytext) + "' out of range"); + currentUnit->error("integer constant `" + string(yytext) + "' out of range"); } return ICE_INTEGER_LITERAL; } @@ -298,7 +298,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo setLocation(yylloc); errno = 0; - FloatingTokPtr ftp = new FloatingTok; + FloatingTokPtr ftp = make_shared(); *yylval = ftp; string literal(yytext); ftp->literal = literal; @@ -310,11 +310,11 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo ftp->v = strtod(literal.c_str(), 0); if((ftp->v == HUGE_VAL || ftp->v == -HUGE_VAL) && errno == ERANGE) { - unit->error("floating-point constant `" + string(yytext) + "' too large (overflow)"); + currentUnit->error("floating-point constant `" + string(yytext) + "' too large (overflow)"); } else if(ftp->v == 0 && errno == ERANGE) { - unit->error("floating-point constant `" + string(yytext) + "' too small (underflow)"); + currentUnit->error("floating-point constant `" + string(yytext) + "' too small (underflow)"); } return ICE_FLOATING_POINT_LITERAL; } @@ -323,7 +323,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo /* Matches and records a triple-slash style doc comment. */ <*>"///".* { - unit->addToComment(yytext + 3); + currentUnit->addToComment(yytext + 3); } /* Matches and consumes a C++ style comment. */ @@ -353,15 +353,15 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo string comment(yytext); // The last 2 characters are the '*/' matched by this rule. - unit->setComment(comment.substr(0, yyleng - 2)); + currentUnit->setComment(comment.substr(0, yyleng - 2)); } /* Handles reaching EOF while scanning a C style comment by issuing a warning but continuing normally. */ <> { yy_pop_state(); - unit->error("encountered EOF while scanning a comment"); - unit->setComment(yytext); + currentUnit->error("encountered EOF while scanning a comment"); + currentUnit->setComment(yytext); } /* ========== Preprocessor Statements ========== */ @@ -374,7 +374,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo /* Matches a line preprocessor directive, but missing a line number. */ <*>^{preprocessor_prefix}line { yy_push_state(PREPROCESS); - unit->error("missing line number in line preprocessor directive"); + currentUnit->error("missing line number in line preprocessor directive"); } /* Matches a line preprocessor directive (optionally with a file specified afterwards). */ @@ -395,7 +395,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo /* Matches any non white-space character. This is a catch-all to report any invalid characters * found while scanning a preprocessor directive. */ [^[:space:]]+ { - unit->error("encountered unexpected token while scanning preprocessor directive: `" + string(yytext) + "'"); + currentUnit->error("encountered unexpected token while scanning preprocessor directive: `" + string(yytext) + "'"); } /* Matches a new-line character or EOF. This signals the end of the preprocessor statement. */ @@ -431,7 +431,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo yy_push_state(STRING_LITERAL); startLocation(yylloc); - StringTokPtr str = new StringTok; + StringTokPtr str = make_shared(); str->literal = "\""; *yylval = str; } @@ -458,13 +458,13 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo /* Matches any characters not matched by another metadata rule (except whitespace), and reports an error. */ [^[:space:]] { - unit->error("invalid character between metadata"); + currentUnit->error("invalid character between metadata"); } /* ========== Identifiers and Keywords ========== */ {identifier}[[:space:]]*"(" { - StringTokPtr ident = new StringTok; + StringTokPtr ident = make_shared(); ident->v = *yytext == '\\' ? yytext + 1 : yytext; ident->v.erase(ident->v.find_first_of(" \t\v\n\r\f(")); *yylval = ident; @@ -472,7 +472,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo { if(checkIsScoped(ident->v) == ICE_SCOPED_IDENTIFIER) { - unit->error("Operation identifiers cannot be scoped: `" + (ident->v) + "'"); + currentUnit->error("Operation identifiers cannot be scoped: `" + (ident->v) + "'"); } return ICE_IDENT_OPEN; } @@ -483,7 +483,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo } else if(st == ICE_SCOPED_IDENTIFIER) { - unit->error("Operation identifiers cannot be scoped: `" + (ident->v) + "'"); + currentUnit->error("Operation identifiers cannot be scoped: `" + (ident->v) + "'"); return ICE_IDENT_OPEN; } else if(st == ICE_TAG) @@ -501,7 +501,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo } {identifier} { - StringTokPtr ident = new StringTok; + StringTokPtr ident = make_shared(); ident->v = *yytext == '\\' ? yytext + 1 : yytext; *yylval = ident; return *yytext == '\\' ? checkIsScoped(ident->v) : checkKeyword(ident->v); @@ -532,7 +532,7 @@ floating_literal (({fractional_constant}{exponent_part}?)|((\+|-)?{dec}+{expo s << oct << static_cast(static_cast(yytext[0])); s << "'"; - unit->error(s.str()); + currentUnit->error(s.str()); return BAD_CHAR; } @@ -559,7 +559,7 @@ int checkKeyword(string& id) { if(pos->first != id) { - unit->error("illegal identifier: `" + id + "' differs from keyword `" + pos->first + + currentUnit->error("illegal identifier: `" + id + "' differs from keyword `" + pos->first + "' only in capitalization"); id = pos->first; } @@ -615,11 +615,11 @@ int scanPosition(const char* s) } else { - unit->error("mismatched quotations in line directive"); + currentUnit->error("mismatched quotations in line directive"); line = line.substr(1); } } - lineTypeCode = unit->setCurrentFile(line, yylineno); + lineTypeCode = currentUnit->setCurrentFile(line, yylineno); yyfilename = string(line); } return lineTypeCode; diff --git a/cpp/src/Slice/SliceUtil.cpp b/cpp/src/Slice/SliceUtil.cpp index d13ff4db8b3..ad4bba7a407 100644 --- a/cpp/src/Slice/SliceUtil.cpp +++ b/cpp/src/Slice/SliceUtil.cpp @@ -493,7 +493,7 @@ Slice::checkIdentifier(const string& id) { if(name.find(suffixBlacklist[i], name.size() - suffixBlacklist[i].size()) != string::npos) { - unit->error("illegal identifier `" + name + "': `" + suffixBlacklist[i] + "' suffix is reserved"); + currentUnit->error("illegal identifier `" + name + "': `" + suffixBlacklist[i] + "' suffix is reserved"); isValid = false; break; } @@ -503,17 +503,17 @@ Slice::checkIdentifier(const string& id) size_t index = name.find('_'); if(index == 0) { - unit->error("illegal leading underscore in identifier `" + name + "'"); + currentUnit->error("illegal leading underscore in identifier `" + name + "'"); isValid = false; } else if(name.rfind('_') == (name.size() - 1)) { - unit->error("illegal trailing underscore in identifier `" + name + "'"); + currentUnit->error("illegal trailing underscore in identifier `" + name + "'"); isValid = false; } else if(name.find("__") != string::npos) { - unit->error("illegal double underscore in identifier `" + name + "'"); + currentUnit->error("illegal double underscore in identifier `" + name + "'"); isValid = false; } diff --git a/cpp/src/Slice/msbuild/slice.vcxproj b/cpp/src/Slice/msbuild/slice.vcxproj index 68d591fcec2..4e0b425df1d 100644 --- a/cpp/src/Slice/msbuild/slice.vcxproj +++ b/cpp/src/Slice/msbuild/slice.vcxproj @@ -92,10 +92,8 @@ - - @@ -108,11 +106,9 @@ - - @@ -122,4 +118,4 @@ - + \ No newline at end of file diff --git a/cpp/src/Slice/msbuild/slice.vcxproj.filters b/cpp/src/Slice/msbuild/slice.vcxproj.filters index b871fabe6c7..6406fb562b9 100644 --- a/cpp/src/Slice/msbuild/slice.vcxproj.filters +++ b/cpp/src/Slice/msbuild/slice.vcxproj.filters @@ -1,6 +1,5 @@  - + {86EEC4C6-451D-4E42-AC48-87773B310643} @@ -16,10 +15,8 @@ - - @@ -256,11 +253,9 @@ - - @@ -411,4 +406,4 @@ - + \ No newline at end of file diff --git a/cpp/src/ice2slice/Gen.cpp b/cpp/src/ice2slice/Gen.cpp index 3496083e4d3..b58c8d154ed 100644 --- a/cpp/src/ice2slice/Gen.cpp +++ b/cpp/src/ice2slice/Gen.cpp @@ -76,11 +76,11 @@ ParamInfoList getAllOutParams(const OperationPtr& op) bool isClassType(const TypePtr& type) { - if (ClassDeclPtr::dynamicCast(type)) + if (dynamic_pointer_cast(type)) { return true; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); return builtin && (builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindValue); } @@ -92,9 +92,9 @@ static string getCSharpNamespace(const ContainedPtr& cont, bool& hasCSharpNamesp string csharpNamespace; while (true) { - if (ModulePtr::dynamicCast(p)) + if (dynamic_pointer_cast(p)) { - m = ModulePtr::dynamicCast(p); + m = dynamic_pointer_cast(p); if (csharpNamespace.empty()) { csharpNamespace = m->name(); @@ -106,7 +106,7 @@ static string getCSharpNamespace(const ContainedPtr& cont, bool& hasCSharpNamesp } ContainerPtr c = p->container(); - p = ContainedPtr::dynamicCast(c); // This cast fails for Unit. + p = dynamic_pointer_cast(c); // This cast fails for Unit. if (!p) { break; @@ -197,13 +197,13 @@ string typeToString(const TypePtr& type, const string& scope, bool optional) "AnyClass?" // KindValue }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if (builtin) { os << builtinTable[builtin->kind()]; } - ContainedPtr contained = ContainedPtr::dynamicCast(type); + ContainedPtr contained = dynamic_pointer_cast(type); if (contained) { os << getUnqualified(contained, scope); @@ -237,20 +237,20 @@ string typeToCsString(const TypePtr& type, bool optional) "???" // KindValue }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if (builtin) { os << builtinTable[builtin->kind()]; } - ContainedPtr contained = ContainedPtr::dynamicCast(type); + ContainedPtr contained = dynamic_pointer_cast(type); if (contained) { bool hasCSharpNamespaceAttribute; string csharpNamespace = getCSharpNamespace(contained, hasCSharpNamespaceAttribute); os << csharpNamespace << "." << contained->name(); - InterfaceDeclPtr interface = InterfaceDeclPtr::dynamicCast(contained); + InterfaceDeclPtr interface = dynamic_pointer_cast(contained); if (interface) { os << "Proxy"; @@ -306,7 +306,7 @@ void writeComment(const ContainedPtr& contained, Output& out) out << nl << "/// " << (*it); } - OperationPtr operation = OperationPtr::dynamicCast(contained); + OperationPtr operation = dynamic_pointer_cast(contained); if (operation) { std::map parameterDocs = comment->parameters(); diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/slice2cpp/CPlusPlusUtil.cpp similarity index 95% rename from cpp/src/Slice/CPlusPlusUtil.cpp rename to cpp/src/slice2cpp/CPlusPlusUtil.cpp index 0a030eb5846..afb2ffab386 100644 --- a/cpp/src/Slice/CPlusPlusUtil.cpp +++ b/cpp/src/slice2cpp/CPlusPlusUtil.cpp @@ -2,10 +2,11 @@ // Copyright (c) ZeroC, Inc. All rights reserved. // -#include +#include "CPlusPlusUtil.h" #include #include #include +#include #ifndef _WIN32 # include @@ -82,7 +83,7 @@ sequenceTypeToString(const SequencePtr& seq, const string& scope, const StringLi { if(seqType == "%array") { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(typeCtx & TypeContextAMIPrivateEnd) { if(builtin && builtin->kind() == Builtin::KindByte) @@ -178,7 +179,7 @@ writeParamAllocateCode(Output& out, const TypePtr& type, bool optional, const st // If using a range or array we need to allocate the range container, or // array as well now to ensure they are always in the same scope. // - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { string seqType = findMetaData(metaData, typeCtx); @@ -221,7 +222,7 @@ writeParamEndCode(Output& out, const TypePtr& type, bool optional, const string& string paramName = objPrefix + fixedName; string escapedParamName = objPrefix + fixedName + "_tmp_"; - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { string seqType = findMetaData(metaData, TypeContextInParam); @@ -232,7 +233,7 @@ writeParamEndCode(Output& out, const TypePtr& type, bool optional, const string& if(seqType == "%array") { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin && builtin->kind() != Builtin::KindByte && builtin->kind() != Builtin::KindString && @@ -577,7 +578,7 @@ Slice::printDllExportStuff(Output& out, const string& dllExport) bool Slice::isMovable(const TypePtr& type) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -595,7 +596,7 @@ Slice::isMovable(const TypePtr& type) } } } - return !EnumPtr::dynamicCast(type); + return !dynamic_pointer_cast(type); } string @@ -661,7 +662,7 @@ Slice::typeToString(const TypePtr& type, const string& scope, const StringList& "::std::shared_ptr<::Ice::Value>" }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { if(builtin->kind() == Builtin::KindString) @@ -685,7 +686,7 @@ Slice::typeToString(const TypePtr& type, const string& scope, const StringList& } } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { if(cpp11) @@ -698,7 +699,7 @@ Slice::typeToString(const TypePtr& type, const string& scope, const StringList& } } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { // @@ -714,7 +715,7 @@ Slice::typeToString(const TypePtr& type, const string& scope, const StringList& } } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { if(cpp11) @@ -727,19 +728,19 @@ Slice::typeToString(const TypePtr& type, const string& scope, const StringList& } } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { return getUnqualified(fixKwd(en->scoped()), scope); } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return sequenceTypeToString(seq, scope, metaData, typeCtx); } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { return dictionaryTypeToString(dict, scope, metaData, typeCtx); @@ -821,7 +822,7 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const string& scope return "const " + toOptional(typeToString(type, scope, metaData, typeCtx), typeCtx) + '&'; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { if(builtin->kind() == Builtin::KindString) @@ -845,7 +846,7 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const string& scope } } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { if(cpp11) @@ -858,7 +859,7 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const string& scope } } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { if(cpp11) @@ -878,7 +879,7 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const string& scope } } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { if(cpp11) @@ -891,19 +892,19 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const string& scope } } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { return getUnqualified(fixKwd(en->scoped()), scope); } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return "const " + sequenceTypeToString(seq, scope, metaData, typeCtx) + "&"; } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { return "const " + dictionaryTypeToString(dict, scope, metaData, typeCtx) + "&"; @@ -953,7 +954,7 @@ Slice::outputTypeToString(const TypePtr& type, bool optional, const string& scop return toOptional(typeToString(type, scope, metaData, typeCtx), typeCtx) + '&'; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { if(builtin->kind() == Builtin::KindString) @@ -977,7 +978,7 @@ Slice::outputTypeToString(const TypePtr& type, bool optional, const string& scop } } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { if(cpp11) @@ -990,7 +991,7 @@ Slice::outputTypeToString(const TypePtr& type, bool optional, const string& scop } } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { if(!cpp11 && findMetaData(st->getMetaData()) == "%class") @@ -1003,7 +1004,7 @@ Slice::outputTypeToString(const TypePtr& type, bool optional, const string& scop } } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { if(cpp11) @@ -1016,19 +1017,19 @@ Slice::outputTypeToString(const TypePtr& type, bool optional, const string& scop } } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { return getUnqualified(fixKwd(en->scoped()), scope) + "&"; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return sequenceTypeToString(seq, scope, metaData, typeCtx) + "&"; } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { return dictionaryTypeToString(dict, scope, metaData, typeCtx) + "&"; @@ -1189,13 +1190,13 @@ Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, bool optional string func = os.str(); if(!marshal) { - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq && !(typeCtx & TypeContextAMIPrivateEnd)) { string seqType = findMetaData(metaData, typeCtx); if(seqType == "%array") { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin && builtin->kind() == Builtin::KindByte) { out << nl << func << objPrefix << param << ");"; @@ -1261,7 +1262,7 @@ string Slice::getEndArg(const TypePtr& type, const StringList& metaData, const string& arg) { string endArg = arg; - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { string seqType = findMetaData(metaData, TypeContextInParam); @@ -1272,7 +1273,7 @@ Slice::getEndArg(const TypePtr& type, const StringList& metaData, const string& if(seqType == "%array") { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin && builtin->kind() != Builtin::KindByte && builtin->kind() != Builtin::KindString && @@ -1646,7 +1647,7 @@ Slice::inWstringModule(const SequencePtr& seq) ContainerPtr cont = seq->container(); while(cont) { - ModulePtr mod = ModulePtr::dynamicCast(cont); + ModulePtr mod = dynamic_pointer_cast(cont); if(!mod) { break; @@ -1674,7 +1675,7 @@ Slice::getDataMemberRef(const DataMemberPtr& p) return name; } - if(BuiltinPtr::dynamicCast(p->type())) + if(dynamic_pointer_cast(p->type())) { return "*" + name; } diff --git a/cpp/src/Slice/CPlusPlusUtil.h b/cpp/src/slice2cpp/CPlusPlusUtil.h similarity index 100% rename from cpp/src/Slice/CPlusPlusUtil.h rename to cpp/src/slice2cpp/CPlusPlusUtil.h diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index cf4cc912170..00d35cdb157 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -3,8 +3,9 @@ // #include "Gen.h" +#include "CPlusPlusUtil.h" + #include -#include #include #include #include @@ -23,7 +24,7 @@ namespace bool isConstexprType(const TypePtr& type) { - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); if(bp) { switch(bp->kind()) @@ -47,13 +48,13 @@ isConstexprType(const TypePtr& type) } } } - else if(EnumPtr::dynamicCast(type) || InterfaceDeclPtr::dynamicCast(type) || ClassDeclPtr::dynamicCast(type)) + else if(dynamic_pointer_cast(type) || dynamic_pointer_cast(type) || dynamic_pointer_cast(type)) { return true; } else { - StructPtr s = StructPtr::dynamicCast(type); + StructPtr s = dynamic_pointer_cast(type); if(s) { DataMemberList members = s->dataMembers(); @@ -91,7 +92,7 @@ void writeConstantValue(IceUtilInternal::Output& out, const TypePtr& type, const SyntaxTreeBasePtr& valueType, const string& value, int typeContext, const StringList& metaData, const string& scope) { - ConstPtr constant = ConstPtr::dynamicCast(valueType); + ConstPtr constant = dynamic_pointer_cast(valueType); if(constant) { out << getUnqualified(fixKwd(constant->scoped()), scope); @@ -99,7 +100,7 @@ writeConstantValue(IceUtilInternal::Output& out, const TypePtr& type, const Synt else { bool cpp11 = (typeContext & TypeContextCpp11) == TypeContextCpp11; - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); if(bp && bp->kind() == Builtin::KindString) { if ((typeContext & TypeContextUseWstring) || findMetaData(metaData) == "wstring") // wide strings @@ -135,10 +136,10 @@ writeConstantValue(IceUtilInternal::Output& out, const TypePtr& type, const Synt } else { - EnumPtr ep = EnumPtr::dynamicCast(type); + EnumPtr ep = dynamic_pointer_cast(type); if(ep && valueType) { - EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr enumerator = dynamic_pointer_cast(valueType); assert(enumerator); bool unscoped = (cpp11 && findMetaData(ep->getMetaData(), TypeContextCpp11) == "%unscoped") || @@ -200,7 +201,7 @@ writeDataMemberInitializers(IceUtilInternal::Output& C, const DataMemberList& me bool first = true; for(DataMemberList::const_iterator p = members.begin(); p != members.end(); ++p) { - ContainedPtr contained = ContainedPtr::dynamicCast((*p)->container()); + ContainedPtr contained = dynamic_pointer_cast((*p)->container()); string scope = contained->scope(); if((*p)->defaultValueType()) { @@ -1726,7 +1727,7 @@ Slice::Gen::TypesVisitor::visitSequence(const SequencePtr& p) { string name = fixKwd(p->name()); TypePtr type = p->type(); - ContainedPtr cont = ContainedPtr::dynamicCast(p->container()); + ContainedPtr cont = dynamic_pointer_cast(p->container()); string scope = fixKwd(p->scope()); string s = typeToString(type, scope, p->typeMetaData(), _useWstring); StringList metaData = p->getMetaData(); @@ -1750,7 +1751,7 @@ void Slice::Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p) { string name = fixKwd(p->name()); - ContainedPtr cont = ContainedPtr::dynamicCast(p->container()); + ContainedPtr cont = dynamic_pointer_cast(p->container()); string scope = fixKwd(p->scope()); string dictType = findMetaData(p->getMetaData()); @@ -3368,7 +3369,7 @@ Slice::Gen::ValueVisitor::emitDataMember(const DataMemberPtr& p) string name = fixKwd(p->name()); int typeContext = _useWstring; ContainerPtr container = p->container(); - ClassDefPtr cl = ClassDefPtr::dynamicCast(container); + ClassDefPtr cl = dynamic_pointer_cast(container); // // Use empty scope to get full qualified names in types used with future declarations. // @@ -3380,7 +3381,7 @@ Slice::Gen::ValueVisitor::emitDataMember(const DataMemberPtr& p) string defaultValue = p->defaultValue(); if(!defaultValue.empty()) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); + BuiltinPtr builtin = dynamic_pointer_cast(p->type()); if(p->optional() && builtin && builtin->kind() == Builtin::KindString) { // @@ -3942,7 +3943,7 @@ Slice::Gen::ImplVisitor::ImplVisitor(Output& h, Output& c, const string& dllExpo string Slice::Gen::ImplVisitor::defaultValue(const TypePtr& type, const string& scope, const StringList& metaData) const { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -3977,33 +3978,33 @@ Slice::Gen::ImplVisitor::defaultValue(const TypePtr& type, const string& scope, } else { - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); - if(InterfaceDeclPtr::dynamicCast(type) || ClassDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type) || dynamic_pointer_cast(type)) { return "0"; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { return getUnqualified(fixKwd(st->scoped()), scope) + "()"; } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { EnumeratorList enumerators = en->enumerators(); return getUnqualified(fixKwd(en->scope() + enumerators.front()->name()), scope); } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return typeToString(seq, scope, metaData, _useWstring | TypeContextCpp11) + "()"; } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { return getUnqualified(fixKwd(dict->scoped()), scope) + "()"; @@ -4546,7 +4547,7 @@ Slice::Gen::StreamVisitor::visitModuleStart(const ModulePtr& m) return false; } - if(UnitPtr::dynamicCast(m->container())) + if(dynamic_pointer_cast(m->container())) { // // Only emit this for the top-level module. @@ -4565,7 +4566,7 @@ Slice::Gen::StreamVisitor::visitModuleStart(const ModulePtr& m) void Slice::Gen::StreamVisitor::visitModuleEnd(const ModulePtr& m) { - if(UnitPtr::dynamicCast(m->container())) + if(dynamic_pointer_cast(m->container())) { // // Only emit this for the top-level module. @@ -4942,55 +4943,55 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin string ss = s.substr(prefix.size()); if(ss == "type:wstring" || ss == "type:string") { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(cont); - ModulePtr module = ModulePtr::dynamicCast(cont); - ClassDefPtr clss = ClassDefPtr::dynamicCast(cont); - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(cont); - StructPtr strct = StructPtr::dynamicCast(cont); - ExceptionPtr exception = ExceptionPtr::dynamicCast(cont); + BuiltinPtr builtin = dynamic_pointer_cast(cont); + ModulePtr module = dynamic_pointer_cast(cont); + ClassDefPtr clss = dynamic_pointer_cast(cont); + InterfaceDefPtr interface = dynamic_pointer_cast(cont); + StructPtr strct = dynamic_pointer_cast(cont); + ExceptionPtr exception = dynamic_pointer_cast(cont); if((builtin && builtin->kind() == Builtin::KindString) || module || clss || strct || interface || exception) { continue; } } - if(BuiltinPtr::dynamicCast(cont) && (ss.find("type:") == 0 || ss.find("view-type:") == 0)) + if(dynamic_pointer_cast(cont) && (ss.find("type:") == 0 || ss.find("view-type:") == 0)) { - if(BuiltinPtr::dynamicCast(cont)->kind() == Builtin::KindString) + if(dynamic_pointer_cast(cont)->kind() == Builtin::KindString) { continue; } } - if(SequencePtr::dynamicCast(cont)) + if(dynamic_pointer_cast(cont)) { if(ss.find("type:") == 0 || ss.find("view-type:") == 0 || ss == "array" || ss.find("range") == 0) { continue; } } - if(DictionaryPtr::dynamicCast(cont) && (ss.find("type:") == 0 || ss.find("view-type:") == 0)) + if(dynamic_pointer_cast(cont) && (ss.find("type:") == 0 || ss.find("view-type:") == 0)) { continue; } - if(!cpp11 && StructPtr::dynamicCast(cont) && (ss == "class" || ss == "comparable")) + if(!cpp11 && dynamic_pointer_cast(cont) && (ss == "class" || ss == "comparable")) { continue; } - if(ExceptionPtr::dynamicCast(cont) && ss == "ice_print") + if(dynamic_pointer_cast(cont) && ss == "ice_print") { continue; } - if(!cpp11 && EnumPtr::dynamicCast(cont) && ss == "scoped") + if(!cpp11 && dynamic_pointer_cast(cont) && ss == "scoped") { continue; } - if(!cpp98 && EnumPtr::dynamicCast(cont) && ss == "unscoped") + if(!cpp98 && dynamic_pointer_cast(cont) && ss == "unscoped") { continue; } { - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(cont); + ClassDeclPtr cl = dynamic_pointer_cast(cont); if(cl && ss.find("type:") == 0) { continue; @@ -5794,7 +5795,7 @@ Slice::Gen::Cpp11TypesVisitor::visitDataMember(const DataMemberPtr& p) string defaultValue = p->defaultValue(); if(!defaultValue.empty()) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); + BuiltinPtr builtin = dynamic_pointer_cast(p->type()); if(p->optional() && builtin->kind() == Builtin::KindString) { // @@ -6524,7 +6525,7 @@ Slice::Gen::Cpp11ObjectVisitor::emitDataMember(const DataMemberPtr& p) string name = fixKwd(p->name()); int typeContext = _useWstring | TypeContextCpp11; ContainerPtr container = p->container(); - ClassDefPtr cl = ClassDefPtr::dynamicCast(container); + ClassDefPtr cl = dynamic_pointer_cast(container); // // Use empty scope to get full qualified names in types used with future declarations. // @@ -6536,7 +6537,7 @@ Slice::Gen::Cpp11ObjectVisitor::emitDataMember(const DataMemberPtr& p) string defaultValue = p->defaultValue(); if(!defaultValue.empty()) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); + BuiltinPtr builtin = dynamic_pointer_cast(p->type()); if(p->optional() && builtin && builtin->kind() == Builtin::KindString) { // @@ -7504,7 +7505,7 @@ Slice::Gen::Cpp11StreamVisitor::visitModuleStart(const ModulePtr& m) return false; } - if(UnitPtr::dynamicCast(m->container())) + if(dynamic_pointer_cast(m->container())) { // // Only emit this for the top-level module. @@ -7525,7 +7526,7 @@ Slice::Gen::Cpp11StreamVisitor::visitModuleStart(const ModulePtr& m) void Slice::Gen::Cpp11StreamVisitor::visitModuleEnd(const ModulePtr& m) { - if(UnitPtr::dynamicCast(m->container())) + if(dynamic_pointer_cast(m->container())) { // // Only emit this for the top-level module. @@ -7648,7 +7649,7 @@ Slice::Gen::Cpp11ImplVisitor::Cpp11ImplVisitor(Output& h, Output& c, const strin string Slice::Gen::Cpp11ImplVisitor::defaultValue(const TypePtr& type, const string& scope, const StringList& metaData) const { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -7683,31 +7684,31 @@ Slice::Gen::Cpp11ImplVisitor::defaultValue(const TypePtr& type, const string& sc } else { - if(InterfaceDeclPtr::dynamicCast(type) || ClassDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type) || dynamic_pointer_cast(type)) { return "nullptr"; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { return getUnqualified(fixKwd(st->scoped()), scope) + "()"; } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { EnumeratorList enumerators = en->enumerators(); return getUnqualified(fixKwd(en->scoped() + "::" + enumerators.front()->name()), scope); } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return typeToString(seq, scope, metaData, _useWstring | TypeContextCpp11) + "()"; } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { return getUnqualified(fixKwd(dict->scoped()), scope) + "()"; diff --git a/cpp/src/slice2cpp/msbuild/slice2cpp.vcxproj b/cpp/src/slice2cpp/msbuild/slice2cpp.vcxproj index e4f24c15fad..536601c3bd0 100644 --- a/cpp/src/slice2cpp/msbuild/slice2cpp.vcxproj +++ b/cpp/src/slice2cpp/msbuild/slice2cpp.vcxproj @@ -104,6 +104,7 @@ + @@ -111,6 +112,7 @@ + diff --git a/cpp/src/slice2cpp/msbuild/slice2cpp.vcxproj.filters b/cpp/src/slice2cpp/msbuild/slice2cpp.vcxproj.filters index 7da0829adee..d5276e1fc2a 100644 --- a/cpp/src/slice2cpp/msbuild/slice2cpp.vcxproj.filters +++ b/cpp/src/slice2cpp/msbuild/slice2cpp.vcxproj.filters @@ -21,6 +21,9 @@ Source Files + + Source Files + @@ -31,6 +34,9 @@ Header Files + + Header Files + diff --git a/cpp/src/slice2cs/CsUtil.cpp b/cpp/src/slice2cs/CsUtil.cpp index fd519a2c269..947511b521f 100644 --- a/cpp/src/slice2cs/CsUtil.cpp +++ b/cpp/src/slice2cs/CsUtil.cpp @@ -7,6 +7,8 @@ #include #include +#include + #include #include @@ -67,13 +69,13 @@ Slice::CsGenerator::getNamespacePrefix(const ContainedPtr& cont) ContainedPtr p = cont; while(true) { - if(ModulePtr::dynamicCast(p)) + if(dynamic_pointer_cast(p)) { - m = ModulePtr::dynamicCast(p); + m = dynamic_pointer_cast(p); } ContainerPtr c = p->container(); - p = ContainedPtr::dynamicCast(c); // This cast fails for Unit. + p = dynamic_pointer_cast(c); // This cast fails for Unit. if(!p) { break; @@ -205,7 +207,7 @@ string Slice::CsGenerator::fixId(const ContainedPtr& cont, unsigned int baseTypes, bool mangleCasts) { ContainerPtr container = cont->container(); - ContainedPtr contained = ContainedPtr::dynamicCast(container); + ContainedPtr contained = dynamic_pointer_cast(container); if(contained && contained->hasMetaData("cs:property") && (contained->containedType() == Contained::ContainedTypeClass || contained->containedType() == Contained::ContainedTypeStruct)) @@ -221,7 +223,7 @@ Slice::CsGenerator::fixId(const ContainedPtr& cont, unsigned int baseTypes, bool string Slice::CsGenerator::getOptionalFormat(const TypePtr& type, const string& scope) { - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); string prefix = getUnqualified("Ice.OptionalFormat", scope); if(bp) { @@ -265,12 +267,12 @@ Slice::CsGenerator::getOptionalFormat(const TypePtr& type, const string& scope) } } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return prefix + ".Size"; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { if(seq->type()->isVariableLength()) @@ -283,7 +285,7 @@ Slice::CsGenerator::getOptionalFormat(const TypePtr& type, const string& scope) } } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { if(d->keyType()->isVariableLength() || d->valueType()->isVariableLength()) @@ -296,7 +298,7 @@ Slice::CsGenerator::getOptionalFormat(const TypePtr& type, const string& scope) } } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { if(st->isVariableLength()) @@ -309,12 +311,12 @@ Slice::CsGenerator::getOptionalFormat(const TypePtr& type, const string& scope) } } - if(InterfaceDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return prefix + ".FSize"; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); assert(cl); return prefix + ".Class"; } @@ -322,8 +324,8 @@ Slice::CsGenerator::getOptionalFormat(const TypePtr& type, const string& scope) string Slice::CsGenerator::getStaticId(const TypePtr& type) { - BuiltinPtr b = BuiltinPtr::dynamicCast(type); - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); assert((b && b->usesClasses()) || cl); @@ -365,7 +367,7 @@ Slice::CsGenerator::typeToString(const TypePtr& type, const string& package, boo "Ice.Value" }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { if(builtin->kind() == Builtin::KindObject) @@ -378,19 +380,19 @@ Slice::CsGenerator::typeToString(const TypePtr& type, const string& package, boo } } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { return getUnqualified(cl, package); } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { return getUnqualified(proxy, package, "", "Prx"); } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { string prefix = "cs:generic:"; @@ -412,7 +414,7 @@ Slice::CsGenerator::typeToString(const TypePtr& type, const string& package, boo return typeToString(seq->type(), package, optional) + "[]"; } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { string prefix = "cs:generic:"; @@ -431,7 +433,7 @@ Slice::CsGenerator::typeToString(const TypePtr& type, const string& package, boo typeToString(d->valueType(), package, optional) + ">"; } - ContainedPtr contained = ContainedPtr::dynamicCast(type); + ContainedPtr contained = dynamic_pointer_cast(type); if(contained) { return getUnqualified(contained, package); @@ -499,18 +501,18 @@ Slice::CsGenerator::taskResultType(const OperationPtr& op, const string& scope, bool Slice::CsGenerator::isClassType(const TypePtr& type) { - if(ClassDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return true; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); return builtin && (builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindValue); } bool Slice::CsGenerator::isValueType(const TypePtr& type) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -530,7 +532,7 @@ Slice::CsGenerator::isValueType(const TypePtr& type) } } } - StructPtr s = StructPtr::dynamicCast(type); + StructPtr s = dynamic_pointer_cast(type); if(s) { if(s->hasMetaData("cs:class")) @@ -547,7 +549,7 @@ Slice::CsGenerator::isValueType(const TypePtr& type) } return true; } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return true; } @@ -568,7 +570,7 @@ Slice::CsGenerator::writeMarshalUnmarshalCode(Output &out, stream = marshal ? "ostr" : "istr"; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -699,7 +701,7 @@ Slice::CsGenerator::writeMarshalUnmarshalCode(Output &out, return; } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); if(prx) { string typeS = typeToString(type, package); @@ -714,7 +716,7 @@ Slice::CsGenerator::writeMarshalUnmarshalCode(Output &out, return; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { if(marshal) @@ -728,7 +730,7 @@ Slice::CsGenerator::writeMarshalUnmarshalCode(Output &out, return; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { if(marshal) @@ -756,7 +758,7 @@ Slice::CsGenerator::writeMarshalUnmarshalCode(Output &out, return; } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { if(marshal) @@ -771,16 +773,16 @@ Slice::CsGenerator::writeMarshalUnmarshalCode(Output &out, return; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { writeSequenceMarshalUnmarshalCode(out, seq, package, param, marshal, true, stream); return; } - assert(ConstructedPtr::dynamicCast(type)); + assert(dynamic_pointer_cast(type)); string helperName; - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { helperName = getUnqualified(d, package, "", "Helper"); @@ -815,7 +817,7 @@ Slice::CsGenerator::writeOptionalMarshalUnmarshalCode(Output &out, stream = marshal ? "ostr" : "istr"; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -975,7 +977,7 @@ Slice::CsGenerator::writeOptionalMarshalUnmarshalCode(Output &out, return; } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); if(prx) { if(marshal) @@ -1008,7 +1010,7 @@ Slice::CsGenerator::writeOptionalMarshalUnmarshalCode(Output &out, return; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { if(marshal) @@ -1022,7 +1024,7 @@ Slice::CsGenerator::writeOptionalMarshalUnmarshalCode(Output &out, return; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { if(marshal) @@ -1078,7 +1080,7 @@ Slice::CsGenerator::writeOptionalMarshalUnmarshalCode(Output &out, return; } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { size_t sz = en->enumerators().size(); @@ -1108,14 +1110,14 @@ Slice::CsGenerator::writeOptionalMarshalUnmarshalCode(Output &out, return; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { writeOptionalSequenceMarshalUnmarshalCode(out, seq, scope, param, tag, marshal, stream); return; } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); assert(d); TypePtr keyType = d->keyType(); TypePtr valueType = d->valueType(); @@ -1181,7 +1183,7 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out, stream = marshal ? "ostr" : "istr"; } - ContainedPtr cont = ContainedPtr::dynamicCast(seq->container()); + ContainedPtr cont = dynamic_pointer_cast(seq->container()); assert(cont); if(useHelper) { @@ -1238,7 +1240,7 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out, const bool isArray = !isGeneric; const string limitID = isArray ? "Length" : "Count"; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { @@ -1433,7 +1435,7 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out, return; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { if(marshal) @@ -1491,7 +1493,7 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out, } out << nl << "for(int ix = 0; ix < szx; ++ix)"; out << sb; - string scoped = ContainedPtr::dynamicCast(type)->scoped(); + string scoped = dynamic_pointer_cast(type)->scoped(); out << nl << stream << ".readValue(" << patcherName << '<' << typeS << ">(" << param << ", ix));"; out << eb; out << eb; @@ -1499,7 +1501,7 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out, return; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { if(marshal) @@ -1638,7 +1640,7 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out, return; } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { if(marshal) @@ -1733,13 +1735,13 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out, } string helperName; - if(InterfaceDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { - helperName = getUnqualified(InterfaceDeclPtr::dynamicCast(type), scope, "", "PrxHelper"); + helperName = getUnqualified(dynamic_pointer_cast(type), scope, "", "PrxHelper"); } else { - helperName = getUnqualified(ContainedPtr::dynamicCast(type), scope, "", "Helper"); + helperName = getUnqualified(dynamic_pointer_cast(type), scope, "", "Helper"); } string func; @@ -1854,7 +1856,7 @@ Slice::CsGenerator::writeOptionalSequenceMarshalUnmarshalCode(Output& out, const bool isArray = !seq->findMetaData("cs:generic:", meta); const string length = isArray ? param + ".Value.Length" : param + ".Value.Count"; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -1949,7 +1951,7 @@ Slice::CsGenerator::writeOptionalSequenceMarshalUnmarshalCode(Output& out, return; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { if(marshal) @@ -2211,7 +2213,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) const string csPrefix = "cs:"; if(s.find(csPrefix) == 0) { - SequencePtr seq = SequencePtr::dynamicCast(cont); + SequencePtr seq = dynamic_pointer_cast(cont); if(seq) { static const string csGenericPrefix = csPrefix + "generic:"; @@ -2233,7 +2235,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) } } } - else if(StructPtr::dynamicCast(cont)) + else if(dynamic_pointer_cast(cont)) { if(s.substr(csPrefix.size()) == "class") { @@ -2252,7 +2254,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) continue; } } - else if(ClassDefPtr::dynamicCast(cont)) + else if(dynamic_pointer_cast(cont)) { if(s.substr(csPrefix.size()) == "property") { @@ -2260,7 +2262,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) continue; } } - else if(InterfaceDefPtr::dynamicCast(cont)) + else if(dynamic_pointer_cast(cont)) { static const string csImplementsPrefix = csPrefix + "implements:"; if(s.find(csImplementsPrefix) == 0) @@ -2269,7 +2271,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) continue; } } - else if(DictionaryPtr::dynamicCast(cont)) + else if(dynamic_pointer_cast(cont)) { static const string csGenericPrefix = csPrefix + "generic:"; if(s.find(csGenericPrefix) == 0) @@ -2282,15 +2284,15 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) } } } - else if(DataMemberPtr::dynamicCast(cont)) + else if(dynamic_pointer_cast(cont)) { - DataMemberPtr dataMember = DataMemberPtr::dynamicCast(cont); - StructPtr st = StructPtr::dynamicCast(dataMember->container()); - ExceptionPtr ex = ExceptionPtr::dynamicCast(dataMember->container()); - ClassDefPtr cl = ClassDefPtr::dynamicCast(dataMember->container()); + DataMemberPtr dataMember = dynamic_pointer_cast(cont); + StructPtr st = dynamic_pointer_cast(dataMember->container()); + ExceptionPtr ex = dynamic_pointer_cast(dataMember->container()); + ClassDefPtr cl = dynamic_pointer_cast(dataMember->container()); static const string csTypePrefix = csPrefix + "type:"; } - else if(ModulePtr::dynamicCast(cont)) + else if(dynamic_pointer_cast(cont)) { static const string csNamespacePrefix = csPrefix + "namespace:"; if(s.find(csNamespacePrefix) == 0 && s.size() > csNamespacePrefix.size()) diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp index 33916c353e3..bdcd4c1833d 100644 --- a/cpp/src/slice2cs/Gen.cpp +++ b/cpp/src/slice2cs/Gen.cpp @@ -487,7 +487,7 @@ Slice::CsVisitor::writeDispatch(const InterfaceDefPtr& p) else { _out << nl << typeS << ' ' << param << ';'; - StructPtr st = StructPtr::dynamicCast((*pli)->type()); + StructPtr st = dynamic_pointer_cast((*pli)->type()); if(st && isValueType(st)) { _out << nl << param << " = new " << typeS << "();"; @@ -1035,7 +1035,7 @@ Slice::CsVisitor::writeValue(const TypePtr& type, const string& ns) { assert(type); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -1071,13 +1071,13 @@ Slice::CsVisitor::writeValue(const TypePtr& type, const string& ns) } } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { return typeToString(type, ns) + "." + fixId((*en->enumerators().begin())->name()); } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { if(st->hasMetaData("cs:class")) @@ -1096,14 +1096,14 @@ Slice::CsVisitor::writeValue(const TypePtr& type, const string& ns) void Slice::CsVisitor::writeConstantValue(const TypePtr& type, const SyntaxTreeBasePtr& valueType, const string& value) { - ConstPtr constant = ConstPtr::dynamicCast(valueType); + ConstPtr constant = dynamic_pointer_cast(valueType); if(constant) { _out << fixId(constant->scoped()) << ".value"; } else { - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); if(bp && bp->kind() == Builtin::KindString) { _out << "\"" << toStringLiteral(value, "\a\b\f\n\r\t\v\0", "", UCN, 0) << "\""; @@ -1116,9 +1116,9 @@ Slice::CsVisitor::writeConstantValue(const TypePtr& type, const SyntaxTreeBasePt { _out << value << "F"; } - else if(EnumPtr::dynamicCast(type)) + else if(dynamic_pointer_cast(type)) { - EnumeratorPtr lte = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr lte = dynamic_pointer_cast(valueType); assert(lte); _out << fixId(lte->scoped()); } @@ -1142,7 +1142,7 @@ Slice::CsVisitor::requiresDataMemberInitializers(const DataMemberList& members) { return true; } - else if(BuiltinPtr::dynamicCast((*p)->type()) || StructPtr::dynamicCast((*p)->type())) + else if(dynamic_pointer_cast((*p)->type()) || dynamic_pointer_cast((*p)->type())) { return true; } @@ -1178,13 +1178,13 @@ Slice::CsVisitor::writeDataMemberInitializers(const DataMemberList& members, con } else { - BuiltinPtr builtin = BuiltinPtr::dynamicCast((*p)->type()); + BuiltinPtr builtin = dynamic_pointer_cast((*p)->type()); if(builtin && builtin->kind() == Builtin::KindString) { _out << nl << "this." << fixId((*p)->name(), baseTypes) << " = \"\";"; } - StructPtr st = StructPtr::dynamicCast((*p)->type()); + StructPtr st = dynamic_pointer_cast((*p)->type()); if(st) { _out << nl << "this." << fixId((*p)->name(), baseTypes) << " = new " << typeToString(st, ns, false) @@ -1883,7 +1883,7 @@ Slice::CsVisitor::writeDocCommentParam(const OperationPtr& p, ParamDir paramType void Slice::CsVisitor::moduleStart(const ModulePtr& p) { - if(!ContainedPtr::dynamicCast(p->container())) + if(!dynamic_pointer_cast(p->container())) { string ns = getNamespacePrefix(p); string name = fixId(p->name()); @@ -1899,7 +1899,7 @@ Slice::CsVisitor::moduleStart(const ModulePtr& p) void Slice::CsVisitor::moduleEnd(const ModulePtr& p) { - if(!ContainedPtr::dynamicCast(p->container())) + if(!dynamic_pointer_cast(p->container())) { if(!getNamespacePrefix(p).empty()) { @@ -2154,7 +2154,7 @@ Slice::Gen::TypeIdVisitor::visitModuleStart(const ModulePtr& p) if(!ns.empty() && (p->hasValueDefs() || p->hasExceptions())) { string name = fixId(p->name()); - if(!ContainedPtr::dynamicCast(p->container())) + if(!dynamic_pointer_cast(p->container())) { // Top-level module // @@ -3082,12 +3082,12 @@ Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p) bool isProtected = false; bool isPrivate = false; const bool isOptional = p->optional(); - ContainedPtr cont = ContainedPtr::dynamicCast(p->container()); + ContainedPtr cont = dynamic_pointer_cast(p->container()); assert(cont); - StructPtr st = StructPtr::dynamicCast(cont); - ExceptionPtr ex = ExceptionPtr::dynamicCast(cont); - ClassDefPtr cl = ClassDefPtr::dynamicCast(cont); + StructPtr st = dynamic_pointer_cast(cont); + ExceptionPtr ex = dynamic_pointer_cast(cont); + ClassDefPtr cl = dynamic_pointer_cast(cont); string ns = getNamespace(cont); if(st) { @@ -3248,7 +3248,7 @@ Slice::Gen::TypesVisitor::writeMemberEquals(const DataMemberList& dataMembers, u _out << eb; _out << nl << "else"; _out << sb; - SequencePtr seq = SequencePtr::dynamicCast(memberType); + SequencePtr seq = dynamic_pointer_cast(memberType); if(seq) { string meta; @@ -3272,7 +3272,7 @@ Slice::Gen::TypesVisitor::writeMemberEquals(const DataMemberList& dataMembers, u } else { - DictionaryPtr dict = DictionaryPtr::dynamicCast(memberType); + DictionaryPtr dict = dynamic_pointer_cast(memberType); if(dict) { // @@ -4145,7 +4145,7 @@ Slice::Gen::HelperVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) _out << nl << returnTypeS << " ret"; if(!op->returnIsOptional()) { - StructPtr st = StructPtr::dynamicCast(ret); + StructPtr st = dynamic_pointer_cast(ret); if(st && isValueType(st)) { _out << " = " << "new " + returnTypeS + "()"; @@ -4172,7 +4172,7 @@ Slice::Gen::HelperVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) << outParams.front()->name(); if(!outParams.front()->optional()) { - StructPtr st = StructPtr::dynamicCast(t); + StructPtr st = dynamic_pointer_cast(t); if(st && isValueType(st)) { _out << " = " << "new " << typeToString(t, ns) << "()"; @@ -4676,7 +4676,7 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) _out << nl << "for(int i = 0; i < sz; ++i)"; _out << sb; _out << nl << keyS << " k;"; - StructPtr st = StructPtr::dynamicCast(key); + StructPtr st = dynamic_pointer_cast(key); if(st) { if(isValueType(st)) @@ -4699,7 +4699,7 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) else { _out << nl << valueS << " v;"; - StructPtr stv = StructPtr::dynamicCast(value); + StructPtr stv = dynamic_pointer_cast(value); if(stv) { if(isValueType(stv)) diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp index 6831a43bb91..c6771352870 100644 --- a/cpp/src/slice2java/Gen.cpp +++ b/cpp/src/slice2java/Gen.cpp @@ -8,6 +8,7 @@ #include #include +#include #include using namespace std; @@ -100,15 +101,15 @@ isDeprecated(const ContainedPtr& p1, const ContainedPtr& p2) bool isValue(const TypePtr& type) { - BuiltinPtr b = BuiltinPtr::dynamicCast(type); - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); return (b && b->usesClasses()) || cl; } // Returns java.util.OptionalXXX.ofYYY depending on the type string ofFactory(const TypePtr& type) { - const BuiltinPtr b = BuiltinPtr::dynamicCast(type); + const BuiltinPtr b = dynamic_pointer_cast(type); if(b) { @@ -158,7 +159,7 @@ Slice::JavaVisitor::getResultType(const OperationPtr& op, const string& package, } else if(op->returnsMultipleValues()) { - const ContainedPtr c = ContainedPtr::dynamicCast(op->container()); + const ContainedPtr c = dynamic_pointer_cast(op->container()); assert(c); const string abs = getUnqualified(c, package); string name = op->name(); @@ -690,8 +691,8 @@ void Slice::JavaVisitor::allocatePatcher(Output& out, const TypePtr& type, const string& package, const string& name, bool optionalMapping) { - BuiltinPtr b = BuiltinPtr::dynamicCast(type); - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); assert((b && b->usesClasses()) || cl); string clsName; @@ -714,8 +715,8 @@ Slice::JavaVisitor::allocatePatcher(Output& out, const TypePtr& type, const stri string Slice::JavaVisitor::getPatcher(const TypePtr& type, const string& package, const string& dest) { - BuiltinPtr b = BuiltinPtr::dynamicCast(type); - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); ostringstream ostr; if((b && b->usesClasses()) || cl) { @@ -1565,7 +1566,7 @@ void Slice::JavaVisitor::writeConstantValue(Output& out, const TypePtr& type, const SyntaxTreeBasePtr& valueType, const string& value, const string& package) { - ConstPtr constant = ConstPtr::dynamicCast(valueType); + ConstPtr constant = dynamic_pointer_cast(valueType); if(constant) { out << getUnqualified(constant, package) << ".value"; @@ -1573,7 +1574,7 @@ Slice::JavaVisitor::writeConstantValue(Output& out, const TypePtr& type, const S else { BuiltinPtr bp; - if((bp = BuiltinPtr::dynamicCast(type))) + if((bp = dynamic_pointer_cast(type))) { switch(bp->kind()) { @@ -1616,9 +1617,9 @@ Slice::JavaVisitor::writeConstantValue(Output& out, const TypePtr& type, const S } } - else if(EnumPtr::dynamicCast(type)) + else if(dynamic_pointer_cast(type)) { - EnumeratorPtr lte = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr lte = dynamic_pointer_cast(valueType); assert(lte); out << getUnqualified(lte, package); } @@ -1654,20 +1655,20 @@ Slice::JavaVisitor::writeDataMemberInitializers(Output& out, const DataMemberLis } else { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(t); + BuiltinPtr builtin = dynamic_pointer_cast(t); if(builtin && builtin->kind() == Builtin::KindString) { out << nl << "this." << fixKwd((*p)->name()) << " = \"\";"; } - EnumPtr en = EnumPtr::dynamicCast(t); + EnumPtr en = dynamic_pointer_cast(t); if(en) { string firstEnum = fixKwd(en->enumerators().front()->name()); out << nl << "this." << fixKwd((*p)->name()) << " = " << getUnqualified(en, package) << '.' << firstEnum << ';'; } - StructPtr st = StructPtr::dynamicCast(t); + StructPtr st = dynamic_pointer_cast(t); if(st) { string memberType = typeToString(st, TypeModeMember, package, (*p)->getMetaData()); @@ -2162,7 +2163,7 @@ Slice::JavaVisitor::writeSeeAlso(Output& out, const UnitPtr& unt, const string& } else { - ContainedPtr cont = ContainedPtr::dynamicCast(l.front()); + ContainedPtr cont = dynamic_pointer_cast(l.front()); assert(cont); out << getUnqualified(cont) << rest; } @@ -2607,7 +2608,7 @@ Slice::Gen::TypesVisitor::visitOperation(const OperationPtr& p) // Generate the operation signature for a servant. // - InterfaceDefPtr interface = InterfaceDefPtr::dynamicCast(p->container()); + InterfaceDefPtr interface = dynamic_pointer_cast(p->container()); assert(interface); const string package = getPackage(interface); @@ -3184,7 +3185,7 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p) for(DataMemberList::const_iterator d = members.begin(); d != members.end(); ++d) { string memberName = fixKwd((*d)->name()); - BuiltinPtr b = BuiltinPtr::dynamicCast((*d)->type()); + BuiltinPtr b = dynamic_pointer_cast((*d)->type()); if(b) { switch(b->kind()) @@ -3231,7 +3232,7 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p) // // For all other types, we can use the native equals() method. // - SequencePtr seq = SequencePtr::dynamicCast((*d)->type()); + SequencePtr seq = dynamic_pointer_cast((*d)->type()); if(seq) { if(hasTypeMetaData(seq, (*d)->getMetaData())) @@ -3448,17 +3449,17 @@ void Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p) { const ContainerPtr container = p->container(); - const ClassDefPtr cls = ClassDefPtr::dynamicCast(container); - const StructPtr st = StructPtr::dynamicCast(container); - const ExceptionPtr ex = ExceptionPtr::dynamicCast(container); - const ContainedPtr contained = ContainedPtr::dynamicCast(container); + const ClassDefPtr cls = dynamic_pointer_cast(container); + const StructPtr st = dynamic_pointer_cast(container); + const ExceptionPtr ex = dynamic_pointer_cast(container); + const ContainedPtr contained = dynamic_pointer_cast(container); const string name = fixKwd(p->name()); const StringList metaData = p->getMetaData(); const bool getSet = p->hasMetaData(_getSetMetaData) || contained->hasMetaData(_getSetMetaData); const bool optional = p->optional(); const TypePtr type = p->type(); - const BuiltinPtr b = BuiltinPtr::dynamicCast(type); + const BuiltinPtr b = dynamic_pointer_cast(type); const bool classType = isValue(type); const string s = typeToString(type, TypeModeMember, getPackage(contained), metaData, true, false); @@ -3686,7 +3687,7 @@ Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p) // // Check for unmodified sequence type and emit indexing methods. // - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { if(!hasTypeMetaData(seq, metaData)) @@ -3954,7 +3955,7 @@ void Slice::Gen::HelperVisitor::visitSequence(const SequencePtr& p) { string meta; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); + BuiltinPtr builtin = dynamic_pointer_cast(p->type()); if(!hasTypeMetaData(p) && builtin && builtin->kind() <= Builtin::KindString) { return; // No helpers for sequence of primitive types @@ -4001,7 +4002,7 @@ Slice::Gen::HelperVisitor::visitSequence(const SequencePtr& p) // Determine sequence depth. // TypePtr origContent = p->type(); - SequencePtr s = SequencePtr::dynamicCast(origContent); + SequencePtr s = dynamic_pointer_cast(origContent); while(s) { // @@ -4012,7 +4013,7 @@ Slice::Gen::HelperVisitor::visitSequence(const SequencePtr& p) break; } origContent = s->type(); - s = SequencePtr::dynamicCast(origContent); + s = dynamic_pointer_cast(origContent); } string origContentS = typeToString(origContent, TypeModeIn, package); @@ -5056,7 +5057,7 @@ Slice::Gen::ImplVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) string Slice::Gen::ImplVisitor::getDefaultValue(const string& package, const TypePtr& type, bool optional) { - const BuiltinPtr b = BuiltinPtr::dynamicCast(type); + const BuiltinPtr b = dynamic_pointer_cast(type); if(optional) { if(b && b->kind() == Builtin::KindDouble) @@ -5129,7 +5130,7 @@ Slice::Gen::ImplVisitor::getDefaultValue(const string& package, const TypePtr& t } else { - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { EnumeratorList enumerators = en->enumerators(); diff --git a/cpp/src/slice2java/Gen.h b/cpp/src/slice2java/Gen.h index 3300d226877..a0f9cf5cbad 100644 --- a/cpp/src/slice2java/Gen.h +++ b/cpp/src/slice2java/Gen.h @@ -5,8 +5,8 @@ #ifndef GEN_H #define GEN_H +#include "JavaUtil.h" #include -#include namespace Slice { diff --git a/cpp/src/Slice/JavaUtil.cpp b/cpp/src/slice2java/JavaUtil.cpp similarity index 94% rename from cpp/src/Slice/JavaUtil.cpp rename to cpp/src/slice2java/JavaUtil.cpp index e85d6a35a97..f8a27ea6739 100644 --- a/cpp/src/Slice/JavaUtil.cpp +++ b/cpp/src/slice2java/JavaUtil.cpp @@ -2,8 +2,8 @@ // Copyright (c) ZeroC, Inc. All rights reserved. // +#include "JavaUtil.h" #include -#include #include #include #include @@ -54,7 +54,7 @@ typeToBufferString(const TypePtr& type) "???" }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(!builtin) { return "???"; @@ -250,7 +250,7 @@ class MetaDataVisitor : public ParserVisitor // Remove from list so validateType does not try to handle as well. // metaData.remove(s); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); + BuiltinPtr builtin = dynamic_pointer_cast(p->type()); if(!builtin || builtin->kind() != Builtin::KindByte) { dc->warning(InvalidMetaData, file, line, "ignoring invalid metadata `" + s + "': " + @@ -263,7 +263,7 @@ class MetaDataVisitor : public ParserVisitor { metaData.remove(s); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); + BuiltinPtr builtin = dynamic_pointer_cast(p->type()); if(!builtin || (builtin->kind() != Builtin::KindByte && builtin->kind() != Builtin::KindShort && builtin->kind() != Builtin::KindInt && builtin->kind() != Builtin::KindLong && @@ -414,17 +414,17 @@ class MetaDataVisitor : public ParserVisitor // // Type metadata ("java:type:Foo") is only supported by sequences and dictionaries. // - if(i->find("java:type:", 0) == 0 && (!SequencePtr::dynamicCast(p) && !DictionaryPtr::dynamicCast(p))) + if(i->find("java:type:", 0) == 0 && (!dynamic_pointer_cast(p) && !dynamic_pointer_cast(p))) { string str; - ContainedPtr cont = ContainedPtr::dynamicCast(p); + ContainedPtr cont = dynamic_pointer_cast(p); if(cont) { str = cont->kindOf(); } else { - BuiltinPtr b = BuiltinPtr::dynamicCast(p); + BuiltinPtr b = dynamic_pointer_cast(p); assert(b); str = b->typeId(); } @@ -432,10 +432,10 @@ class MetaDataVisitor : public ParserVisitor } else if(i->find("java:buffer") == 0) { - SequencePtr seq = SequencePtr::dynamicCast(p); + SequencePtr seq = dynamic_pointer_cast(p); if(seq) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin && (builtin->kind() == Builtin::KindByte || builtin->kind() == Builtin::KindShort || builtin->kind() == Builtin::KindInt || builtin->kind() == Builtin::KindLong || @@ -462,7 +462,7 @@ class MetaDataVisitor : public ParserVisitor } else if(i->find("java:implements:") == 0) { - if(ClassDefPtr::dynamicCast(p) || StructPtr::dynamicCast(p)) + if(dynamic_pointer_cast(p) || dynamic_pointer_cast(p)) { newMetaData.push_back(*i); } @@ -473,8 +473,8 @@ class MetaDataVisitor : public ParserVisitor } else if(i->find("java:package:") == 0) { - ModulePtr m = ModulePtr::dynamicCast(p); - if(m && UnitPtr::dynamicCast(m->container())) + ModulePtr m = dynamic_pointer_cast(p); + if(m && dynamic_pointer_cast(m->container())) { newMetaData.push_back(*i); } @@ -504,18 +504,20 @@ class MetaDataVisitor : public ParserVisitor // The "getset" metadata can only be specified on a class, struct, exception or data member. // if((*i) == "java:getset" && - (!ClassDefPtr::dynamicCast(p) && !StructPtr::dynamicCast(p) && !ExceptionPtr::dynamicCast(p) && - !DataMemberPtr::dynamicCast(p))) + (!dynamic_pointer_cast(p) && + !dynamic_pointer_cast(p) && + !dynamic_pointer_cast(p) && + !dynamic_pointer_cast(p))) { string str; - ContainedPtr cont = ContainedPtr::dynamicCast(p); + ContainedPtr cont = dynamic_pointer_cast(p); if(cont) { str = cont->kindOf(); } else { - BuiltinPtr b = BuiltinPtr::dynamicCast(p); + BuiltinPtr b = dynamic_pointer_cast(p); assert(b); str = b->typeId(); } @@ -621,7 +623,7 @@ Slice::isValidMethodParameterList(const DataMemberList& members, int additionalU int length = 1 + additionalUnits; for(DataMemberList::const_iterator p = members.begin(); p != members.end(); ++p) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast((*p)->type()); + BuiltinPtr builtin = dynamic_pointer_cast((*p)->type()); if(builtin && (builtin->kind() == Builtin::KindLong || builtin->kind() == Builtin::KindDouble)) { length += 2; @@ -902,13 +904,13 @@ Slice::JavaGenerator::getPackagePrefix(const ContainedPtr& cont) const ContainedPtr p = cont; while(true) { - if(ModulePtr::dynamicCast(p)) + if(dynamic_pointer_cast(p)) { - m = ModulePtr::dynamicCast(p); + m = dynamic_pointer_cast(p); } ContainerPtr c = p->container(); - p = ContainedPtr::dynamicCast(c); // This cast fails for Unit. + p = dynamic_pointer_cast(c); // This cast fails for Unit. if(!p) { break; @@ -1002,8 +1004,8 @@ Slice::JavaGenerator::getUnqualified(const ContainedPtr& cont, string Slice::JavaGenerator::getStaticId(const TypePtr& type, const string& package) const { - BuiltinPtr b = BuiltinPtr::dynamicCast(type); - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); assert((b && b->usesClasses()) || cl); @@ -1032,7 +1034,7 @@ Slice::JavaGenerator::useOptionalMapping(const OperationPtr& p) // static const string tag = "java:optional"; - ClassDefPtr cl = ClassDefPtr::dynamicCast(p->container()); + ClassDefPtr cl = dynamic_pointer_cast(p->container()); assert(cl); return p->hasMetaData(tag) || cl->hasMetaData(tag); @@ -1043,7 +1045,7 @@ Slice::JavaGenerator::getOptionalFormat(const TypePtr& type) { const string prefix = "com.zeroc.Ice.OptionalFormat."; - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); if(bp) { switch(bp->kind()) @@ -1086,36 +1088,36 @@ Slice::JavaGenerator::getOptionalFormat(const TypePtr& type) } } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return prefix + "Size"; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return seq->type()->isVariableLength() ? prefix + "FSize" : prefix + "VSize"; } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { return (d->keyType()->isVariableLength() || d->valueType()->isVariableLength()) ? prefix + "FSize" : prefix + "VSize"; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { return st->isVariableLength() ? prefix + "FSize" : prefix + "VSize"; } - if(InterfaceDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return prefix + "FSize"; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); assert(cl); return prefix + "Class"; } @@ -1164,7 +1166,7 @@ Slice::JavaGenerator::typeToString(const TypePtr& type, return "void"; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { if(optional) @@ -1203,7 +1205,7 @@ Slice::JavaGenerator::typeToString(const TypePtr& type, } } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(optional) { @@ -1215,13 +1217,13 @@ Slice::JavaGenerator::typeToString(const TypePtr& type, return getUnqualified(cl, package); } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { return getUnqualified(proxy, package, "", "Prx"); } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { string instanceType, formalType; @@ -1229,7 +1231,7 @@ Slice::JavaGenerator::typeToString(const TypePtr& type, return formal ? formalType : instanceType; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { string instanceType, formalType; @@ -1237,7 +1239,7 @@ Slice::JavaGenerator::typeToString(const TypePtr& type, return formal ? formalType : instanceType; } - ContainedPtr contained = ContainedPtr::dynamicCast(type); + ContainedPtr contained = dynamic_pointer_cast(type); if(contained) { if(mode == TypeModeOut) @@ -1275,7 +1277,7 @@ Slice::JavaGenerator::typeToObjectString(const TypePtr& type, "com.zeroc.Ice.Value" }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin && mode != TypeModeOut) { return builtinTable[builtin->kind()]; @@ -1324,7 +1326,7 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out, "???" }; - const BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + const BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -1426,7 +1428,7 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out, return; } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); if(prx) { if(marshal) @@ -1459,7 +1461,7 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out, return; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { if(marshal) @@ -1488,7 +1490,7 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out, return; } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { if(optionalParam || mode == OptionalMember) @@ -1591,14 +1593,14 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out, return; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { if(optionalParam || mode == OptionalMember) { string ignored; TypePtr elemType = seq->type(); - BuiltinPtr eltBltin = BuiltinPtr::dynamicCast(elemType); + BuiltinPtr eltBltin = dynamic_pointer_cast(elemType); if(!hasTypeMetaData(seq, metaData) && eltBltin && eltBltin->kind() < Builtin::KindObject) { string bs = builtinTable[eltBltin->kind()]; @@ -1742,8 +1744,8 @@ Slice::JavaGenerator::writeMarshalUnmarshalCode(Output& out, return; } - ConstructedPtr constructed = ConstructedPtr::dynamicCast(type); - StructPtr st = StructPtr::dynamicCast(type); + ConstructedPtr constructed = dynamic_pointer_cast(type); + StructPtr st = dynamic_pointer_cast(type); assert(constructed); if(marshal) { @@ -1878,8 +1880,8 @@ Slice::JavaGenerator::writeDictionaryMarshalUnmarshalCode(Output& out, out << nl << "for(int i" << iterS << " = 0; i" << iterS << " < sz" << iterS << "; i" << iterS << "++)"; out << sb; - BuiltinPtr b = BuiltinPtr::dynamicCast(value); - if(ClassDeclPtr::dynamicCast(value) || (b && b->usesClasses())) + BuiltinPtr b = dynamic_pointer_cast(value); + if(dynamic_pointer_cast(value) || (b && b->usesClasses())) { out << nl << "final " << keyS << " key;"; writeMarshalUnmarshalCode(out, package, key, OptionalNone, false, 0, "key", false, iter, customStream); @@ -1898,8 +1900,8 @@ Slice::JavaGenerator::writeDictionaryMarshalUnmarshalCode(Output& out, out << nl << valueS << " value;"; writeMarshalUnmarshalCode(out, package, value, OptionalNone, false, 0, "value", false, iter, customStream); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(value); - if(!(builtin && builtin->usesClasses()) && !ClassDeclPtr::dynamicCast(value)) + BuiltinPtr builtin = dynamic_pointer_cast(value); + if(!(builtin && builtin->usesClasses()) && !dynamic_pointer_cast(value)) { out << nl << "" << v << ".put(key, value);"; } @@ -1932,7 +1934,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out, // If the sequence is a byte sequence, check if there's the serializable or protobuf metadata to // get rid of these two easy cases first. // - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin && builtin->kind() == Builtin::KindByte) { string meta; @@ -2061,7 +2063,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out, // int depth = 0; TypePtr origContent = seq->type(); - SequencePtr s = SequencePtr::dynamicCast(origContent); + SequencePtr s = dynamic_pointer_cast(origContent); while(s) { // @@ -2073,7 +2075,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out, } depth++; origContent = s->type(); - s = SequencePtr::dynamicCast(origContent); + s = dynamic_pointer_cast(origContent); } string origContentS = typeToString(origContent, TypeModeIn, package); @@ -2084,7 +2086,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out, // // Marshal/unmarshal a custom sequence type. // - BuiltinPtr b = BuiltinPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); typeS = getUnqualified(seq, package); ostringstream o; o << origContentS; @@ -2113,7 +2115,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out, else { bool isObject = false; - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if((b && b->usesClasses()) || cl) { isObject = true; @@ -2148,7 +2150,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out, } else { - BuiltinPtr b = BuiltinPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); if(b && b->kind() != Builtin::KindObject && b->kind() != Builtin::KindValue && b->kind() != Builtin::KindObjectProxy) @@ -2284,7 +2286,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out, else { bool isObject = false; - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(origContent); + ClassDeclPtr cl = dynamic_pointer_cast(origContent); if((b && b->usesClasses()) || cl) { isObject = true; @@ -2402,7 +2404,7 @@ Slice::JavaGenerator::getTypeMetaData(const StringList& metaData, string& instan bool Slice::JavaGenerator::hasTypeMetaData(const TypePtr& type, const StringList& localMetaData) { - ContainedPtr cont = ContainedPtr::dynamicCast(type); + ContainedPtr cont = dynamic_pointer_cast(type); if(cont) { static const string prefix = "java:type:"; @@ -2423,10 +2425,10 @@ Slice::JavaGenerator::hasTypeMetaData(const TypePtr& type, const StringList& loc if(findMetaData("java:protobuf:", metaData, directive) || findMetaData("java:serializable:", metaData, directive)) { - SequencePtr seq = SequencePtr::dynamicCast(cont); + SequencePtr seq = dynamic_pointer_cast(cont); if(seq) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin && builtin->kind() == Builtin::KindByte) { return true; @@ -2437,10 +2439,10 @@ Slice::JavaGenerator::hasTypeMetaData(const TypePtr& type, const StringList& loc if(findMetaData("java:buffer", metaData, directive) || findMetaData("java:buffer", localMetaData, directive)) { - SequencePtr seq = SequencePtr::dynamicCast(cont); + SequencePtr seq = dynamic_pointer_cast(cont); if(seq) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin && (builtin->kind() == Builtin::KindByte || builtin->kind() == Builtin::KindShort || builtin->kind() == Builtin::KindInt || builtin->kind() == Builtin::KindLong || @@ -2497,7 +2499,7 @@ Slice::JavaGenerator::getSequenceTypes(const SequencePtr& seq, string& instanceType, string& formalType) const { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin) { if(builtin->kind() == Builtin::KindByte) diff --git a/cpp/src/Slice/JavaUtil.h b/cpp/src/slice2java/JavaUtil.h similarity index 100% rename from cpp/src/Slice/JavaUtil.h rename to cpp/src/slice2java/JavaUtil.h diff --git a/cpp/src/slice2java/msbuild/slice2java.vcxproj b/cpp/src/slice2java/msbuild/slice2java.vcxproj index 4b4dd9b6fb6..50705c78d46 100644 --- a/cpp/src/slice2java/msbuild/slice2java.vcxproj +++ b/cpp/src/slice2java/msbuild/slice2java.vcxproj @@ -109,6 +109,7 @@ + @@ -116,6 +117,7 @@ + diff --git a/cpp/src/slice2java/msbuild/slice2java.vcxproj.filters b/cpp/src/slice2java/msbuild/slice2java.vcxproj.filters index 0651fe8a1f4..5906f526b03 100644 --- a/cpp/src/slice2java/msbuild/slice2java.vcxproj.filters +++ b/cpp/src/slice2java/msbuild/slice2java.vcxproj.filters @@ -21,6 +21,9 @@ Source Files + + Source Files + @@ -31,6 +34,9 @@ Header Files + + Header Files + diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp index aa09f4c56e3..9e11d7b4bad 100644 --- a/cpp/src/slice2js/Gen.cpp +++ b/cpp/src/slice2js/Gen.cpp @@ -422,7 +422,7 @@ Slice::JsVisitor::getValue(const string& /*scope*/, const TypePtr& type) { assert(type); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -462,13 +462,13 @@ Slice::JsVisitor::getValue(const string& /*scope*/, const TypePtr& type) } } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { return fixId(en->scoped()) + '.' + fixId((*en->enumerators().begin())->name()); } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { return "new " + typeToString(type) + "()"; @@ -482,14 +482,14 @@ Slice::JsVisitor::writeConstantValue(const string& /*scope*/, const TypePtr& typ const string& value) { ostringstream os; - ConstPtr constant = ConstPtr::dynamicCast(valueType); + ConstPtr constant = dynamic_pointer_cast(valueType); if(constant) { os << fixId(constant->scoped()); } else { - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); EnumPtr ep; if(bp && bp->kind() == Builtin::KindString) { @@ -516,9 +516,9 @@ Slice::JsVisitor::writeConstantValue(const string& /*scope*/, const TypePtr& typ os << "new Ice.Long(" << ((l >> 32) & 0xFFFFFFFF) << ", " << (l & 0xFFFFFFFF) << ")"; #endif } - else if((ep = EnumPtr::dynamicCast(type))) + else if((ep = dynamic_pointer_cast(type))) { - EnumeratorPtr lte = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr lte = dynamic_pointer_cast(valueType); assert(lte); os << fixId(ep->scoped()) << '.' << fixId(lte->name()); } @@ -904,7 +904,7 @@ Slice::Gen::RequireVisitor::visitExceptionStart(const ExceptionPtr&) void Slice::Gen::RequireVisitor::visitSequence(const SequencePtr& seq) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin) { switch(builtin->kind()) @@ -924,7 +924,7 @@ Slice::Gen::RequireVisitor::visitSequence(const SequencePtr& seq) void Slice::Gen::RequireVisitor::visitDictionary(const DictionaryPtr& dict) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(dict->valueType()); + BuiltinPtr builtin = dynamic_pointer_cast(dict->valueType()); if(builtin) { switch(builtin->kind()) @@ -1245,7 +1245,7 @@ Slice::Gen::TypesVisitor::visitModuleStart(const ModulePtr& p) } _seenModules.push_back(scoped); - const bool topLevel = UnitPtr::dynamicCast(p->container()); + const bool topLevel = dynamic_pointer_cast(p->container()) != nullptr; _out << sp; _out << nl; if(topLevel) @@ -2019,8 +2019,8 @@ Slice::Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p) // rather than the native comparison operators. // bool keyUseEquals = false; - BuiltinPtr b = BuiltinPtr::dynamicCast(keyType); - if((b && b->kind() == Builtin::KindLong) || StructPtr::dynamicCast(keyType)) + BuiltinPtr b = dynamic_pointer_cast(keyType); + if((b && b->kind() == Builtin::KindLong) || dynamic_pointer_cast(keyType)) { keyUseEquals = true; } @@ -2050,7 +2050,7 @@ Slice::Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p) _out << ", undefined"; } - if(SequencePtr::dynamicCast(valueType)) + if(dynamic_pointer_cast(valueType)) { _out << ", Ice.ArrayUtil.equals"; } @@ -2131,43 +2131,43 @@ Slice::Gen::TypesVisitor::encodeTypeForOperation(const TypePtr& type) "10", // Ice.Value }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { return builtinTable[builtin->kind()]; } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { return "\"" + fixId(proxy->scoped() + "Prx") + "\""; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return "\"" + fixId(seq->scoped() + "Helper") + "\""; } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { return "\"" + fixId(d->scoped() + "Helper") + "\""; } - EnumPtr e = EnumPtr::dynamicCast(type); + EnumPtr e = dynamic_pointer_cast(type); if(e) { return fixId(e->scoped()) + "._helper"; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { return fixId(st->scoped()); } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { return "\"" + fixId(cl->scoped()) + "\""; @@ -2186,7 +2186,7 @@ Slice::Gen::ExportVisitor::ExportVisitor(IceUtilInternal::Output& out, bool icej bool Slice::Gen::ExportVisitor::visitModuleStart(const ModulePtr& p) { - const bool topLevel = UnitPtr::dynamicCast(p->container()); + const bool topLevel = dynamic_pointer_cast(p->container()) != nullptr; if(topLevel) { const string localScope = getLocalScope(p->scope()); @@ -2237,7 +2237,7 @@ Slice::Gen::TypeScriptRequireVisitor::nextImportPrefix() void Slice::Gen::TypeScriptRequireVisitor::addImport(const TypePtr& definition, const ContainedPtr& toplevel) { - if(!BuiltinPtr::dynamicCast(definition)) + if(!dynamic_pointer_cast(definition)) { string m1 = getModuleMetadata(definition); const string m2 = getModuleMetadata(toplevel); @@ -2245,7 +2245,7 @@ Slice::Gen::TypeScriptRequireVisitor::addImport(const TypePtr& definition, const string p1 = definition->definitionContext()->filename(); const string p2 = toplevel->definitionContext()->filename(); - InterfaceDeclPtr p = InterfaceDeclPtr::dynamicCast(definition); + InterfaceDeclPtr p = dynamic_pointer_cast(definition); if(p) { @@ -2259,7 +2259,7 @@ Slice::Gen::TypeScriptRequireVisitor::addImport(const TypePtr& definition, const } else { - m1 = getModuleMetadata(ContainedPtr::dynamicCast(p->definition())); + m1 = getModuleMetadata(dynamic_pointer_cast(p->definition())); p1 = p->definition()->definitionContext()->filename(); } } @@ -2329,7 +2329,7 @@ Slice::Gen::TypeScriptRequireVisitor::visitModuleStart(const ModulePtr& p) // // Import ice module if not building Ice // - if(UnitPtr::dynamicCast(p->container()) && !_icejs && _imports.empty()) + if(dynamic_pointer_cast(p->container()) && !_icejs && _imports.empty()) { _imports.push_back(make_pair("ice", nextImportPrefix())); } @@ -2345,7 +2345,7 @@ Slice::Gen::TypeScriptRequireVisitor::visitClassDefStart(const ClassDefPtr& p) ClassDefPtr base = p->base(); if (base) { - addImport(ContainedPtr::dynamicCast(base), p); + addImport(dynamic_pointer_cast(base), p); } // @@ -2369,7 +2369,7 @@ Slice::Gen::TypeScriptRequireVisitor::visitInterfaceDefStart(const InterfaceDefP InterfaceList bases = p->bases(); for(InterfaceList::const_iterator i = bases.begin(); i != bases.end(); ++i) { - addImport(ContainedPtr::dynamicCast(*i), p); + addImport(dynamic_pointer_cast(*i), p); } // @@ -2416,7 +2416,7 @@ Slice::Gen::TypeScriptRequireVisitor::visitExceptionStart(const ExceptionPtr& p) ExceptionPtr base = p->base(); if(base) { - addImport(ContainedPtr::dynamicCast(base), p); + addImport(dynamic_pointer_cast(base), p); } // @@ -2457,7 +2457,7 @@ Slice::Gen::TypeScriptAliasVisitor::TypeScriptAliasVisitor(IceUtilInternal::Outp void Slice::Gen::TypeScriptAliasVisitor::addAlias(const ExceptionPtr& type, const ContainedPtr& toplevel) { - string m1 = getModuleMetadata(ContainedPtr::dynamicCast(type)); + string m1 = getModuleMetadata(dynamic_pointer_cast(type)); string m2 = getModuleMetadata(toplevel); // @@ -2468,7 +2468,7 @@ Slice::Gen::TypeScriptAliasVisitor::addAlias(const ExceptionPtr& type, const Con return; } - const string prefix = importPrefix(ContainedPtr::dynamicCast(type), toplevel, imports()); + const string prefix = importPrefix(dynamic_pointer_cast(type), toplevel, imports()); const string typeS = prefix + getUnqualified(fixId(type->scoped()), toplevel->scope(), prefix); addAlias(typeS, prefix, toplevel); @@ -2534,14 +2534,14 @@ Slice::Gen::TypeScriptAliasVisitor::visitModuleStart(const ModulePtr&) bool Slice::Gen::TypeScriptAliasVisitor::visitClassDefStart(const ClassDefPtr& p) { - ModulePtr module = ModulePtr::dynamicCast(p->container()); + ModulePtr module = dynamic_pointer_cast(p->container()); // // Add alias required for base class // ClassDefPtr base = p->base(); if (base) { - addAlias(TypePtr::dynamicCast(base->declaration()), module); + addAlias(dynamic_pointer_cast(base->declaration()), module); } // @@ -2559,14 +2559,14 @@ Slice::Gen::TypeScriptAliasVisitor::visitClassDefStart(const ClassDefPtr& p) bool Slice::Gen::TypeScriptAliasVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) { - ModulePtr module = ModulePtr::dynamicCast(p->container()); + ModulePtr module = dynamic_pointer_cast(p->container()); // // Add alias required for base interfces // InterfaceList bases = p->bases(); for(InterfaceList::const_iterator i = bases.begin(); i != bases.end(); ++i) { - addAlias(TypePtr::dynamicCast((*i)->declaration()), module); + addAlias(dynamic_pointer_cast((*i)->declaration()), module); } // @@ -2593,7 +2593,7 @@ Slice::Gen::TypeScriptAliasVisitor::visitInterfaceDefStart(const InterfaceDefPtr bool Slice::Gen::TypeScriptAliasVisitor::visitStructStart(const StructPtr& p) { - ModulePtr module = ModulePtr::dynamicCast(p->container()); + ModulePtr module = dynamic_pointer_cast(p->container()); // // Add alias required for data members // @@ -2608,7 +2608,7 @@ Slice::Gen::TypeScriptAliasVisitor::visitStructStart(const StructPtr& p) bool Slice::Gen::TypeScriptAliasVisitor::visitExceptionStart(const ExceptionPtr& p) { - ModulePtr module = ModulePtr::dynamicCast(p->container()); + ModulePtr module = dynamic_pointer_cast(p->container()); // // Add alias required for base exception // @@ -2632,13 +2632,13 @@ Slice::Gen::TypeScriptAliasVisitor::visitExceptionStart(const ExceptionPtr& p) void Slice::Gen::TypeScriptAliasVisitor::visitSequence(const SequencePtr& seq) { - addAlias(seq->type(), ModulePtr::dynamicCast(seq->container())); + addAlias(seq->type(), dynamic_pointer_cast(seq->container())); } void Slice::Gen::TypeScriptAliasVisitor::visitDictionary(const DictionaryPtr& dict) { - ModulePtr module = ModulePtr::dynamicCast(dict->container()); + ModulePtr module = dynamic_pointer_cast(dict->container()); addAlias(dict->keyType(), module); addAlias(dict->valueType(), module); } @@ -2679,7 +2679,7 @@ Slice::Gen::TypeScriptVisitor::writeImports() bool Slice::Gen::TypeScriptVisitor::visitModuleStart(const ModulePtr& p) { - UnitPtr unit = UnitPtr::dynamicCast(p->container()); + UnitPtr unit = dynamic_pointer_cast(p->container()); if(unit) { _out << sp; @@ -2702,7 +2702,7 @@ Slice::Gen::TypeScriptVisitor::visitModuleEnd(const ModulePtr&) bool Slice::Gen::TypeScriptVisitor::visitClassDefStart(const ClassDefPtr& p) { - const string toplevelModule = getModuleMetadata(ContainedPtr::dynamicCast(p)); + const string toplevelModule = getModuleMetadata(dynamic_pointer_cast(p)); const string icePrefix = importPrefix("Ice.", p); const DataMemberList dataMembers = p->dataMembers(); @@ -2715,7 +2715,7 @@ Slice::Gen::TypeScriptVisitor::visitClassDefStart(const ClassDefPtr& p) ClassDefPtr base = p->base(); if (base) { - const string prefix = importPrefix(ContainedPtr::dynamicCast(base), p, imports()); + const string prefix = importPrefix(dynamic_pointer_cast(base), p, imports()); _out << prefix << getUnqualified(fixId(base->scoped()), p->scope(), prefix); } else @@ -2753,7 +2753,7 @@ Slice::Gen::TypeScriptVisitor::visitClassDefStart(const ClassDefPtr& p) bool Slice::Gen::TypeScriptVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) { - const string toplevelModule = getModuleMetadata(ContainedPtr::dynamicCast(p)); + const string toplevelModule = getModuleMetadata(dynamic_pointer_cast(p)); const string icePrefix = importPrefix("Ice.", p); const OperationList ops = p->allOperations(); @@ -2949,14 +2949,14 @@ Slice::Gen::TypeScriptVisitor::visitExceptionStart(const ExceptionPtr& p) const string name = fixId(p->name()); const DataMemberList dataMembers = p->dataMembers(); const DataMemberList allDataMembers = p->allDataMembers(); - const string toplevelModule = getModuleMetadata(ContainedPtr::dynamicCast(p)); + const string toplevelModule = getModuleMetadata(dynamic_pointer_cast(p)); const string icePrefix = importPrefix("Ice.", p); ExceptionPtr base = p->base(); string baseRef; if(base) { - const string prefix = importPrefix(ContainedPtr::dynamicCast(base), p, imports()); + const string prefix = importPrefix(dynamic_pointer_cast(base), p, imports()); baseRef = prefix + getUnqualified(fixId(base->scoped()), p->scope(), prefix); } else @@ -3003,7 +3003,7 @@ Slice::Gen::TypeScriptVisitor::visitStructStart(const StructPtr& p) const string icePrefix = importPrefix("Ice.", p); const string name = fixId(p->name()); const DataMemberList dataMembers = p->dataMembers(); - const string toplevelModule = getModuleMetadata(ContainedPtr::dynamicCast(p)); + const string toplevelModule = getModuleMetadata(dynamic_pointer_cast(p)); _out << sp; writeDocSummary(_out, p); _out << nl << "class " << name << sb; @@ -3047,7 +3047,7 @@ void Slice::Gen::TypeScriptVisitor::visitSequence(const SequencePtr& p) { const string icePrefix = importPrefix("Ice.", p); - const string toplevelModule = getModuleMetadata(ContainedPtr::dynamicCast(p)); + const string toplevelModule = getModuleMetadata(dynamic_pointer_cast(p)); const string name = fixId(p->name()); _out << sp; writeDocSummary(_out, p); @@ -3070,7 +3070,7 @@ void Slice::Gen::TypeScriptVisitor::visitDictionary(const DictionaryPtr& p) { const string icePrefix = importPrefix("Ice.", p); - const string toplevelModule = getModuleMetadata(ContainedPtr::dynamicCast(p)); + const string toplevelModule = getModuleMetadata(dynamic_pointer_cast(p)); const string name = fixId(p->name()); _out << sp; writeDocSummary(_out, p); diff --git a/cpp/src/slice2js/JsUtil.cpp b/cpp/src/slice2js/JsUtil.cpp index 109138e3804..b1199f82501 100644 --- a/cpp/src/slice2js/JsUtil.cpp +++ b/cpp/src/slice2js/JsUtil.cpp @@ -2,10 +2,12 @@ // Copyright (c) ZeroC, Inc. All rights reserved. // -#include +#include "JsUtil.h" #include #include +#include + #include #include @@ -162,13 +164,13 @@ Slice::JsGenerator::getModuleMetadata(const TypePtr& type) "ice" // Ice.Object }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { return builtinModuleTable[builtin->kind()]; } - return getModuleMetadata(ContainedPtr::dynamicCast(type)); + return getModuleMetadata(dynamic_pointer_cast(type)); } string @@ -187,9 +189,9 @@ Slice::JsGenerator::getModuleMetadata(const ContainedPtr& p) bool Slice::JsGenerator::isClassType(const TypePtr& type) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); return (builtin && (builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindValue)) || - ClassDeclPtr::dynamicCast(type); + dynamic_pointer_cast(type); } // @@ -236,33 +238,33 @@ Slice::JsGenerator::importPrefix(const TypePtr& type, const ContainedPtr& toplevel, const vector >& imports) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { return typeToString(type, toplevel, imports, true); } - else if(InterfaceDeclPtr::dynamicCast(type)) + else if(dynamic_pointer_cast(type)) { - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); - return importPrefix(ContainedPtr::dynamicCast(proxy), toplevel, imports); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); + return importPrefix(dynamic_pointer_cast(proxy), toplevel, imports); } - else if(ContainedPtr::dynamicCast(type)) + else if(dynamic_pointer_cast(type)) { - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { if(cl->definition()) { - return importPrefix(ContainedPtr::dynamicCast(cl->definition()), toplevel, imports); + return importPrefix(dynamic_pointer_cast(cl->definition()), toplevel, imports); } else { - return importPrefix(ContainedPtr::dynamicCast(cl), toplevel, imports, getDefinedIn(cl)); + return importPrefix(dynamic_pointer_cast(cl), toplevel, imports, getDefinedIn(cl)); } } else { - return importPrefix(ContainedPtr::dynamicCast(type), toplevel, imports); + return importPrefix(dynamic_pointer_cast(type), toplevel, imports); } } return ""; @@ -397,7 +399,7 @@ Slice::JsGenerator::typeToString(const TypePtr& type, "Ice.Value" }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { if(typescript) @@ -417,7 +419,7 @@ Slice::JsGenerator::typeToString(const TypePtr& type, } } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { string prefix; @@ -426,11 +428,11 @@ Slice::JsGenerator::typeToString(const TypePtr& type, { if(cl->definition()) { - prefix = importPrefix(ContainedPtr::dynamicCast(cl->definition()), toplevel, imports); + prefix = importPrefix(dynamic_pointer_cast(cl->definition()), toplevel, imports); } else { - prefix = importPrefix(ContainedPtr::dynamicCast(cl), toplevel, imports, getDefinedIn(cl)); + prefix = importPrefix(dynamic_pointer_cast(cl), toplevel, imports, getDefinedIn(cl)); } } os << prefix; @@ -445,7 +447,7 @@ Slice::JsGenerator::typeToString(const TypePtr& type, return os.str(); } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { ostringstream os; @@ -453,7 +455,7 @@ Slice::JsGenerator::typeToString(const TypePtr& type, string prefix; if(typescript) { - prefix = importPrefix(ContainedPtr::dynamicCast(proxy), toplevel, imports); + prefix = importPrefix(dynamic_pointer_cast(proxy), toplevel, imports); os << prefix; } @@ -471,10 +473,10 @@ Slice::JsGenerator::typeToString(const TypePtr& type, if(!typescript || definition) { - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if (seq) { - BuiltinPtr b = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr b = dynamic_pointer_cast(seq->type()); if (b && b->kind() == Builtin::KindByte) { return "Uint8Array"; @@ -485,13 +487,13 @@ Slice::JsGenerator::typeToString(const TypePtr& type, } } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { const TypePtr keyType = d->keyType(); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(keyType); + BuiltinPtr builtin = dynamic_pointer_cast(keyType); ostringstream os; - if ((builtin && builtin->kind() == Builtin::KindLong) || StructPtr::dynamicCast(keyType)) + if ((builtin && builtin->kind() == Builtin::KindLong) || dynamic_pointer_cast(keyType)) { const string prefix = importPrefix("Ice.HashMap", toplevel); os << prefix << getUnqualified("Ice.HashMap", toplevel->scope(), prefix); @@ -511,7 +513,7 @@ Slice::JsGenerator::typeToString(const TypePtr& type, } } - ContainedPtr contained = ContainedPtr::dynamicCast(type); + ContainedPtr contained = dynamic_pointer_cast(type); if(contained) { ostringstream os; @@ -622,7 +624,7 @@ Slice::JsGenerator::writeMarshalUnmarshalCode(Output &out, { string stream = marshal ? "ostr" : "istr"; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -744,7 +746,7 @@ Slice::JsGenerator::writeMarshalUnmarshalCode(Output &out, } } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { if(marshal) { @@ -757,7 +759,7 @@ Slice::JsGenerator::writeMarshalUnmarshalCode(Output &out, return; } - if(InterfaceDeclPtr::dynamicCast(type) || StructPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type) || dynamic_pointer_cast(type)) { if(marshal) { @@ -784,7 +786,7 @@ Slice::JsGenerator::writeMarshalUnmarshalCode(Output &out, return; } - if(SequencePtr::dynamicCast(type) || DictionaryPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type) || dynamic_pointer_cast(type)) { if(marshal) { @@ -823,7 +825,7 @@ Slice::JsGenerator::writeOptionalMarshalUnmarshalCode(Output &out, return; } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { if(marshal) { @@ -849,7 +851,7 @@ Slice::JsGenerator::writeOptionalMarshalUnmarshalCode(Output &out, std::string Slice::JsGenerator::getHelper(const TypePtr& type) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -898,30 +900,30 @@ Slice::JsGenerator::getHelper(const TypePtr& type) } } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return typeToString(type) + "._helper"; } - if(StructPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return typeToString(type); } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); if(prx) { return typeToString(type); } - if(SequencePtr::dynamicCast(type) || DictionaryPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type) || dynamic_pointer_cast(type)) { stringstream s; - s << getLocalScope(ContainedPtr::dynamicCast(type)->scoped()) << "Helper"; + s << getLocalScope(dynamic_pointer_cast(type)->scoped()) << "Helper"; return s.str(); } - if(ClassDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return "Ice.ObjectHelper"; } diff --git a/cpp/src/slice2matlab/Main.cpp b/cpp/src/slice2matlab/Main.cpp index b129ea2349b..9f42d25f689 100644 --- a/cpp/src/slice2matlab/Main.cpp +++ b/cpp/src/slice2matlab/Main.cpp @@ -311,28 +311,28 @@ typeToString(const TypePtr& type) return "void"; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { return builtinTable[builtin->kind()]; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { return getAbsolute(cl); } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { return getAbsolute(proxy, "", "Prx"); } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { - if(StructPtr::dynamicCast(dict->keyType())) + if(dynamic_pointer_cast(dict->keyType())) { return "struct"; } @@ -342,7 +342,7 @@ typeToString(const TypePtr& type) } } - ContainedPtr contained = ContainedPtr::dynamicCast(type); + ContainedPtr contained = dynamic_pointer_cast(type); if(contained) { return getAbsolute(contained); @@ -356,7 +356,7 @@ dictionaryTypeToString(const TypePtr& type, bool key) { assert(type); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -396,7 +396,7 @@ dictionaryTypeToString(const TypePtr& type, bool key) } } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { // @@ -411,12 +411,12 @@ dictionaryTypeToString(const TypePtr& type, bool key) bool declarePropertyType(const TypePtr& type, bool optional) { - if(optional || SequencePtr::dynamicCast(type) || InterfaceDeclPtr::dynamicCast(type) || ClassDeclPtr::dynamicCast(type)) + if(optional || dynamic_pointer_cast(type) || dynamic_pointer_cast(type) || dynamic_pointer_cast(type)) { return false; } - BuiltinPtr b = BuiltinPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); if(b && (b->kind() == Builtin::KindObject || b->kind() == Builtin::KindObjectProxy || b->kind() == Builtin::KindValue)) { @@ -429,7 +429,7 @@ declarePropertyType(const TypePtr& type, bool optional) string constantValue(const TypePtr& type, const SyntaxTreeBasePtr& valueType, const string& value) { - ConstPtr constant = ConstPtr::dynamicCast(valueType); + ConstPtr constant = dynamic_pointer_cast(valueType); if(constant) { return getAbsolute(constant) + ".value"; @@ -437,7 +437,7 @@ constantValue(const TypePtr& type, const SyntaxTreeBasePtr& valueType, const str else { BuiltinPtr bp; - if((bp = BuiltinPtr::dynamicCast(type))) + if((bp = dynamic_pointer_cast(type))) { switch(bp->kind()) { @@ -466,9 +466,9 @@ constantValue(const TypePtr& type, const SyntaxTreeBasePtr& valueType, const str } } - else if(EnumPtr::dynamicCast(type)) + else if(dynamic_pointer_cast(type)) { - EnumeratorPtr e = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr e = dynamic_pointer_cast(valueType); assert(e); return getAbsolute(e); } @@ -492,7 +492,7 @@ defaultValue(const DataMemberPtr& m) } else { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(m->type()); + BuiltinPtr builtin = dynamic_pointer_cast(m->type()); if(builtin) { switch(builtin->kind()) @@ -515,12 +515,12 @@ defaultValue(const DataMemberPtr& m) } } - DictionaryPtr dict = DictionaryPtr::dynamicCast(m->type()); + DictionaryPtr dict = dynamic_pointer_cast(m->type()); if(dict) { const TypePtr key = dict->keyType(); const TypePtr value = dict->valueType(); - if(StructPtr::dynamicCast(key)) + if(dynamic_pointer_cast(key)) { // // We use a struct array when the key is a structure type because we can't use containers.Map. @@ -536,14 +536,14 @@ defaultValue(const DataMemberPtr& m) } } - EnumPtr en = EnumPtr::dynamicCast(m->type()); + EnumPtr en = dynamic_pointer_cast(m->type()); if(en) { const EnumeratorList enumerators = en->enumerators(); return getAbsolute(*enumerators.begin()); } - StructPtr st = StructPtr::dynamicCast(m->type()); + StructPtr st = dynamic_pointer_cast(m->type()); if(st) { return getAbsolute(st) + "()"; @@ -556,29 +556,29 @@ defaultValue(const DataMemberPtr& m) bool isClass(const TypePtr& type) { - BuiltinPtr b = BuiltinPtr::dynamicCast(type); - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); return (b && (b->kind() == Builtin::KindObject || b->kind() == Builtin::KindValue)) || cl; } bool isProxy(const TypePtr& type) { - BuiltinPtr b = BuiltinPtr::dynamicCast(type); - InterfaceDeclPtr p = InterfaceDeclPtr::dynamicCast(type); + BuiltinPtr b = dynamic_pointer_cast(type); + InterfaceDeclPtr p = dynamic_pointer_cast(type); return (b && b->kind() == Builtin::KindObjectProxy) || p; } bool needsConversion(const TypePtr& type) { - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return isClass(seq->type()) || needsConversion(seq->type()); } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { const DataMemberList members = st->dataMembers(); @@ -592,7 +592,7 @@ needsConversion(const TypePtr& type) return false; } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { return needsConversion(d->valueType()) || isClass(d->valueType()); @@ -613,19 +613,19 @@ convertValueType(IceUtilInternal::Output& out, const string& dest, const string& out.inc(); } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { out << nl << dest << " = " << getAbsolute(seq) << ".convert(" << src << ");"; } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { out << nl << dest << " = " << getAbsolute(d) << ".convert(" << src << ");"; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { out << nl << dest << " = " << src << ".ice_convert();"; @@ -1119,7 +1119,7 @@ writeDocSummary(IceUtilInternal::Output& out, const ContainedPtr& p) { out << nl << "%"; out << nl << "% " << n << " Properties:"; - EnumPtr en = EnumPtr::dynamicCast(p); + EnumPtr en = dynamic_pointer_cast(p); const EnumeratorList el = en->enumerators(); for(EnumeratorList::const_iterator q = el.begin(); q != el.end(); ++q) { @@ -1136,7 +1136,7 @@ writeDocSummary(IceUtilInternal::Output& out, const ContainedPtr& p) { out << nl << "%"; out << nl << "% " << n << " Properties:"; - StructPtr st = StructPtr::dynamicCast(p); + StructPtr st = dynamic_pointer_cast(p); const DataMemberList dml = st->dataMembers(); for(DataMemberList::const_iterator q = dml.begin(); q != dml.end(); ++q) { @@ -1151,7 +1151,7 @@ writeDocSummary(IceUtilInternal::Output& out, const ContainedPtr& p) } else if(p->containedType() == Contained::ContainedTypeException) { - ExceptionPtr ex = ExceptionPtr::dynamicCast(p); + ExceptionPtr ex = dynamic_pointer_cast(p); const DataMemberList dml = ex->dataMembers(); if(!dml.empty()) { @@ -1171,7 +1171,7 @@ writeDocSummary(IceUtilInternal::Output& out, const ContainedPtr& p) } else if(p->containedType() == Contained::ContainedTypeClass) { - ClassDefPtr cl = ClassDefPtr::dynamicCast(p); + ClassDefPtr cl = dynamic_pointer_cast(p); const DataMemberList dml = cl->dataMembers(); if(!dml.empty()) { @@ -1461,7 +1461,7 @@ writeMemberDoc(IceUtilInternal::Output& out, const DataMemberPtr& p) string n; - ContainedPtr cont = ContainedPtr::dynamicCast(p->container()); + ContainedPtr cont = dynamic_pointer_cast(p->container()); if(cont->containedType() == Contained::ContainedTypeException) { n = fixExceptionMember(p->name()); @@ -2968,7 +2968,7 @@ CodeVisitor::visitSequence(const SequencePtr& p) { const TypePtr content = p->type(); - const BuiltinPtr b = BuiltinPtr::dynamicCast(content); + const BuiltinPtr b = dynamic_pointer_cast(content); if(b) { switch(b->kind()) @@ -2993,10 +2993,10 @@ CodeVisitor::visitSequence(const SequencePtr& p) } } - EnumPtr enumContent = EnumPtr::dynamicCast(content); - SequencePtr seqContent = SequencePtr::dynamicCast(content); - StructPtr structContent = StructPtr::dynamicCast(content); - DictionaryPtr dictContent = DictionaryPtr::dynamicCast(content); + EnumPtr enumContent = dynamic_pointer_cast(content); + SequencePtr seqContent = dynamic_pointer_cast(content); + StructPtr structContent = dynamic_pointer_cast(content); + DictionaryPtr dictContent = dynamic_pointer_cast(content); const string name = fixIdent(p->name()); const string scoped = p->scoped(); @@ -3257,7 +3257,7 @@ CodeVisitor::visitDictionary(const DictionaryPtr& p) const bool cls = isClass(value); const bool convert = needsConversion(value); - const StructPtr st = StructPtr::dynamicCast(key); + const StructPtr st = dynamic_pointer_cast(key); const string name = fixIdent(p->name()); const string scoped = p->scoped(); @@ -3396,7 +3396,7 @@ CodeVisitor::visitDictionary(const DictionaryPtr& p) out << nl << "r(i).key = k;"; out << nl << "r(i).value = v;"; } - else if (EnumPtr::dynamicCast(key)) + else if (dynamic_pointer_cast(key)) { out << nl << "r(int32(k)) = v;"; } @@ -3819,7 +3819,7 @@ CodeVisitor::getOutParams(const OperationPtr& op, ParamInfoList& required, Param string CodeVisitor::getOptionalFormat(const TypePtr& type) { - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); if(bp) { switch(bp->kind()) @@ -3862,36 +3862,36 @@ CodeVisitor::getOptionalFormat(const TypePtr& type) } } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return "Ice.OptionalFormat.Size"; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return seq->type()->isVariableLength() ? "Ice.OptionalFormat.FSize" : "Ice.OptionalFormat.VSize"; } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { return (d->keyType()->isVariableLength() || d->valueType()->isVariableLength()) ? "Ice.OptionalFormat.FSize" : "Ice.OptionalFormat.VSize"; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { return st->isVariableLength() ? "Ice.OptionalFormat.FSize" : "Ice.OptionalFormat.VSize"; } - if(InterfaceDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return "Ice.OptionalFormat.FSize"; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); assert(cl); return "Ice.OptionalFormat.Class"; } @@ -3918,7 +3918,7 @@ void CodeVisitor::marshal(IceUtilInternal::Output& out, const string& stream, const string& v, const TypePtr& type, bool optional, int tag) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -4048,7 +4048,7 @@ CodeVisitor::marshal(IceUtilInternal::Output& out, const string& stream, const s return; } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); if(prx) { if(optional) @@ -4062,7 +4062,7 @@ CodeVisitor::marshal(IceUtilInternal::Output& out, const string& stream, const s return; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { if(optional) @@ -4076,7 +4076,7 @@ CodeVisitor::marshal(IceUtilInternal::Output& out, const string& stream, const s return; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { const string typeS = getAbsolute(st); @@ -4091,7 +4091,7 @@ CodeVisitor::marshal(IceUtilInternal::Output& out, const string& stream, const s return; } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { const string typeS = getAbsolute(en); @@ -4106,7 +4106,7 @@ CodeVisitor::marshal(IceUtilInternal::Output& out, const string& stream, const s return; } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { if(optional) @@ -4120,11 +4120,11 @@ CodeVisitor::marshal(IceUtilInternal::Output& out, const string& stream, const s return; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { const TypePtr content = seq->type(); - const BuiltinPtr b = BuiltinPtr::dynamicCast(content); + const BuiltinPtr b = dynamic_pointer_cast(content); if(b && b->kind() != Builtin::KindObject && b->kind() != Builtin::KindObjectProxy && b->kind() != Builtin::KindValue) @@ -4176,7 +4176,7 @@ void CodeVisitor::unmarshal(IceUtilInternal::Output& out, const string& stream, const string& v, const TypePtr& type, bool optional, int tag) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -4306,7 +4306,7 @@ CodeVisitor::unmarshal(IceUtilInternal::Output& out, const string& stream, const return; } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); if(prx) { const string typeS = getAbsolute(prx, "", "Prx"); @@ -4327,7 +4327,7 @@ CodeVisitor::unmarshal(IceUtilInternal::Output& out, const string& stream, const return; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { const string cls = getAbsolute(cl); @@ -4342,7 +4342,7 @@ CodeVisitor::unmarshal(IceUtilInternal::Output& out, const string& stream, const return; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { const string typeS = getAbsolute(st); @@ -4357,7 +4357,7 @@ CodeVisitor::unmarshal(IceUtilInternal::Output& out, const string& stream, const return; } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { const string typeS = getAbsolute(en); @@ -4372,7 +4372,7 @@ CodeVisitor::unmarshal(IceUtilInternal::Output& out, const string& stream, const return; } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { if(optional) @@ -4386,11 +4386,11 @@ CodeVisitor::unmarshal(IceUtilInternal::Output& out, const string& stream, const return; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { const TypePtr content = seq->type(); - const BuiltinPtr b = BuiltinPtr::dynamicCast(content); + const BuiltinPtr b = dynamic_pointer_cast(content); if(b && b->kind() != Builtin::KindObject && b->kind() != Builtin::KindObjectProxy && b->kind() != Builtin::KindValue) diff --git a/cpp/src/slice2objc/Gen.cpp b/cpp/src/slice2objc/Gen.cpp index d99631411f7..8a544d090a7 100644 --- a/cpp/src/slice2objc/Gen.cpp +++ b/cpp/src/slice2objc/Gen.cpp @@ -1551,10 +1551,10 @@ Slice::Gen::TypesVisitor::writeConstantValue(IceUtilInternal::Output& out, const } else { - EnumPtr ep = EnumPtr::dynamicCast(type); + EnumPtr ep = dynamic_pointer_cast(type); if(ep) { - EnumeratorPtr lte = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr lte = dynamic_pointer_cast(valueType); assert(lte); string enumeratorPrefix = ep->hasMetaData("objc:scoped") ? ep->name() : ""; out << moduleName(findModule(ep)) << enumeratorPrefix << lte->name(); @@ -1708,7 +1708,7 @@ Slice::Gen::TypesVisitor::writeMembers(const DataMemberList& dataMembers, int ba TypePtr type = (*q)->type(); string name = fixId((*q)->name(), baseType); - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); _H << nl << typeToString(type) << " "; if(mapsToPointerType(type)) { @@ -1736,7 +1736,7 @@ Slice::Gen::TypesVisitor::writeMemberSignature(const DataMemberList& dataMembers { TypePtr type = (*q)->type(); string typeString; - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); typeString = inTypeToString(type, (*q)->optional()); if(q != dataMembers.begin() || ct == LocalException) @@ -1804,8 +1804,8 @@ Slice::Gen::TypesVisitor::requiresMemberInit(const DataMemberList& members) cons } TypePtr t = (*p)->type(); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(t); - if((builtin && builtin->kind() == Builtin::KindString) || EnumPtr::dynamicCast(t) || StructPtr::dynamicCast(t)) + BuiltinPtr builtin = dynamic_pointer_cast(t); + if((builtin && builtin->kind() == Builtin::KindString) || dynamic_pointer_cast(t) || dynamic_pointer_cast(t)) { return true; } @@ -1831,13 +1831,13 @@ Slice::Gen::TypesVisitor::writeMemberDefaultValueInit(const DataMemberList& data } else { - BuiltinPtr builtin = BuiltinPtr::dynamicCast((*p)->type()); + BuiltinPtr builtin = dynamic_pointer_cast((*p)->type()); if(builtin && builtin->kind() == Builtin::KindString) { _M << nl << "self->" << name << " = @\"\";"; } - EnumPtr en = EnumPtr::dynamicCast((*p)->type()); + EnumPtr en = dynamic_pointer_cast((*p)->type()); if(en) { string firstEnum = fixName(en->enumerators().front()); @@ -1846,7 +1846,7 @@ Slice::Gen::TypesVisitor::writeMemberDefaultValueInit(const DataMemberList& data if(!(*p)->optional()) { - StructPtr st = StructPtr::dynamicCast((*p)->type()); + StructPtr st = dynamic_pointer_cast((*p)->type()); if(st) { _M << nl << "self->" << name << " = [[" << typeToString(st) << " alloc] init];"; @@ -1996,7 +1996,7 @@ Slice::Gen::TypesVisitor::writeMemberHashCode(const DataMemberList& dataMembers, if(isValueType(type)) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -2041,7 +2041,7 @@ Slice::Gen::TypesVisitor::writeMemberEquals(const DataMemberList& dataMembers, i if(!dataMembers.empty()) { ContainerPtr container = (*dataMembers.begin())->container(); - ContainedPtr contained = ContainedPtr::dynamicCast(container); + ContainedPtr contained = dynamic_pointer_cast(container); string containerName = fixName(contained); _M << nl << containerName << " *obj_ = (" << containerName << " *)o_;"; for(DataMemberList::const_iterator q = dataMembers.begin(); q != dataMembers.end(); ++q) @@ -2349,14 +2349,14 @@ Slice::Gen::HelperVisitor::visitSequence(const SequencePtr& p) { string name = moduleName(findModule(p)) + p->name() + "Helper"; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); + BuiltinPtr builtin = dynamic_pointer_cast(p->type()); if(builtin) { _H << sp << nl << "typedef ICE" << getBuiltinName(builtin) << "SequenceHelper " << name << ";"; return; } - EnumPtr en = EnumPtr::dynamicCast(p->type()); + EnumPtr en = dynamic_pointer_cast(p->type()); if(en) { _H << sp << nl << _dllExport << "@interface " << name << " : ICEEnumSequenceHelper"; @@ -2378,7 +2378,7 @@ Slice::Gen::HelperVisitor::visitSequence(const SequencePtr& p) return; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(p->type()); + ClassDeclPtr cl = dynamic_pointer_cast(p->type()); if(cl) { _H << sp << nl << _dllExport << "@interface " << name << " : ICEObjectSequenceHelper"; @@ -2393,8 +2393,8 @@ Slice::Gen::HelperVisitor::visitSequence(const SequencePtr& p) return; } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(p->type()); - ContainedPtr contained = ContainedPtr::dynamicCast(p->type()); + InterfaceDeclPtr proxy = dynamic_pointer_cast(p->type()); + ContainedPtr contained = dynamic_pointer_cast(p->type()); _H << sp << nl << _dllExport << "@interface " << name << " : ICEArraySequenceHelper"; _H << nl << "@end"; @@ -2437,21 +2437,21 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) TypePtr keyType = p->keyType(); string keyS; - BuiltinPtr keyBuiltin = BuiltinPtr::dynamicCast(keyType); + BuiltinPtr keyBuiltin = dynamic_pointer_cast(keyType); if(keyBuiltin) { - keyS = "ICE" + getBuiltinName(BuiltinPtr::dynamicCast(keyType)) + "Helper"; + keyS = "ICE" + getBuiltinName(dynamic_pointer_cast(keyType)) + "Helper"; } else { - ContainedPtr contained = ContainedPtr::dynamicCast(keyType); + ContainedPtr contained = dynamic_pointer_cast(keyType); keyS = moduleName(findModule(contained)) + contained->name() + "Helper"; } string valueS; TypePtr valueType = p->valueType(); - BuiltinPtr valueBuiltin = BuiltinPtr::dynamicCast(valueType); - ClassDeclPtr valueClass = ClassDeclPtr::dynamicCast(valueType); + BuiltinPtr valueBuiltin = dynamic_pointer_cast(valueType); + ClassDeclPtr valueClass = dynamic_pointer_cast(valueType); if((valueBuiltin && (valueBuiltin->kind() == Builtin::KindObject || valueBuiltin->kind() == Builtin::KindValue)) || valueClass) { @@ -2479,10 +2479,10 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) return; } - InterfaceDeclPtr valueProxy = InterfaceDeclPtr::dynamicCast(valueType); + InterfaceDeclPtr valueProxy = dynamic_pointer_cast(valueType); if(valueBuiltin) { - valueS = "ICE" + getBuiltinName(BuiltinPtr::dynamicCast(valueType)) + "Helper"; + valueS = "ICE" + getBuiltinName(dynamic_pointer_cast(valueType)) + "Helper"; } else if(valueProxy) { @@ -2490,7 +2490,7 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) } else { - ContainedPtr contained = ContainedPtr::dynamicCast(valueType); + ContainedPtr contained = dynamic_pointer_cast(valueType); valueS = moduleName(findModule(contained)) + contained->name() + "Helper"; } _H << sp << nl << _dllExport << "@interface " << name << " : ICEDictionaryHelper"; diff --git a/cpp/src/slice2objc/ObjCUtil.cpp b/cpp/src/slice2objc/ObjCUtil.cpp index d941d693c1c..14dea4f6f13 100644 --- a/cpp/src/slice2objc/ObjCUtil.cpp +++ b/cpp/src/slice2objc/ObjCUtil.cpp @@ -2,10 +2,12 @@ // Copyright (c) ZeroC, Inc. All rights reserved. // -#include +#include "ObjCUtil.h" #include #include +#include + #include #include @@ -145,13 +147,13 @@ Slice::ObjCGenerator::moduleName(const ModulePtr& m) ModulePtr Slice::ObjCGenerator::findModule(const ContainedPtr& cont, int /*baseTypes*/, bool /*mangleCasts*/) { - ModulePtr m = ModulePtr::dynamicCast(cont); + ModulePtr m = dynamic_pointer_cast(cont); ContainerPtr container = cont->container(); while(container && !m) { - ContainedPtr contained = ContainedPtr::dynamicCast(container); + ContainedPtr contained = dynamic_pointer_cast(container); container = contained->container(); - m = ModulePtr::dynamicCast(contained); + m = dynamic_pointer_cast(contained); } assert(m); return m; @@ -192,7 +194,7 @@ string Slice::ObjCGenerator::getParamId(const ContainedPtr& param) { string n; - if(ParamDeclPtr::dynamicCast(param) && param->findMetaData("objc:param:", n)) + if(dynamic_pointer_cast(param) && param->findMetaData("objc:param:", n)) { return lookupParamIdKwd(n.substr(11)); } @@ -218,7 +220,7 @@ Slice::ObjCGenerator::getParamName(const ContainedPtr& param, bool internal) string Slice::ObjCGenerator::getFactoryMethod(const ContainedPtr& p, bool deprecated) { - ClassDefPtr def = ClassDefPtr::dynamicCast(p); + ClassDefPtr def = dynamic_pointer_cast(p); // // If deprecated is true, we return uDPConnectionInfo for a class @@ -270,32 +272,32 @@ Slice::ObjCGenerator::typeToString(const TypePtr& type) "ICEValue" }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { return builtinTable[builtin->kind()]; } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { string mName = moduleName(findModule(proxy)); return "id<" + mName + (proxy->name()) + "Prx>"; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return fixName(seq); } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { return fixName(d); } - ContainedPtr contained = ContainedPtr::dynamicCast(type); + ContainedPtr contained = dynamic_pointer_cast(type); if(contained) { return fixName(contained); @@ -346,8 +348,8 @@ Slice::ObjCGenerator::outTypeToString(const TypePtr& type, bool optional, bool a } else { - SequencePtr seq = SequencePtr::dynamicCast(type); - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(isString(type)) { s = "NSMutableString"; @@ -385,7 +387,7 @@ Slice::ObjCGenerator::outTypeToString(const TypePtr& type, bool optional, bool a string Slice::ObjCGenerator::typeToObjCTypeString(const TypePtr& type) { - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { return moduleName(findModule(proxy)) + (proxy->name()) + "Prx"; @@ -401,11 +403,11 @@ Slice::ObjCGenerator::defaultValue(const TypePtr& type, bool isOptional) { if(isValueType(type) && !isOptional) { - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return "0"; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -443,7 +445,7 @@ Slice::ObjCGenerator::isValueType(const TypePtr& type) { return true; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -463,7 +465,7 @@ Slice::ObjCGenerator::isValueType(const TypePtr& type) } } } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return true; } @@ -477,18 +479,18 @@ Slice::ObjCGenerator::isString(const TypePtr& type) { return false; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); return builtin && builtin->kind() == Builtin::KindString; } bool Slice::ObjCGenerator::isClass(const TypePtr& type) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { return builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindValue; } - return ClassDeclPtr::dynamicCast(type); + return dynamic_pointer_cast(type) != nullptr; } bool @@ -498,12 +500,12 @@ Slice::ObjCGenerator::mapsToPointerType(const TypePtr& type) { return false; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { return builtin->kind() != Builtin::KindObjectProxy; } - return !InterfaceDeclPtr::dynamicCast(type); + return !dynamic_pointer_cast(type); } string @@ -565,12 +567,12 @@ Slice::ObjCGenerator::getOptionalHelperGetter(const TypePtr& type) { if(isValueType(type)) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { return "get" + getBuiltinName(builtin); } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return "getInt"; } @@ -581,7 +583,7 @@ Slice::ObjCGenerator::getOptionalHelperGetter(const TypePtr& type) string Slice::ObjCGenerator::getOptionalFormat(const TypePtr& type) { - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); if(bp) { switch(bp->kind()) @@ -621,36 +623,36 @@ Slice::ObjCGenerator::getOptionalFormat(const TypePtr& type) } } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return "ICEOptionalFormatSize"; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return seq->type()->isVariableLength() ? "ICEOptionalFormatFSize" : "ICEOptionalFormatVSize"; } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { return (d->keyType()->isVariableLength() || d->valueType()->isVariableLength()) ? "ICEOptionalFormatFSize" : "ICEOptionalFormatVSize"; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { return st->isVariableLength() ? "ICEOptionalFormatFSize" : "ICEOptionalFormatVSize"; } - if(InterfaceDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return "ICEOptionalFormatFSize"; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); assert(cl); return "ICEOptionalFormatClass"; } @@ -660,7 +662,7 @@ Slice::ObjCGenerator::writeMarshalUnmarshalCode(Output &out, const TypePtr& type bool marshal, bool autoreleased) const { string stream = marshal ? "ostr" : "istr"; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { @@ -722,7 +724,7 @@ Slice::ObjCGenerator::writeMarshalUnmarshalCode(Output &out, const TypePtr& type return; } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); if(prx) { if(marshal) @@ -757,7 +759,7 @@ Slice::ObjCGenerator::writeMarshalUnmarshalCode(Output &out, const TypePtr& type return; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { if(marshal) @@ -789,7 +791,7 @@ Slice::ObjCGenerator::writeMarshalUnmarshalCode(Output &out, const TypePtr& type return; } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { if(marshal) @@ -805,7 +807,7 @@ Slice::ObjCGenerator::writeMarshalUnmarshalCode(Output &out, const TypePtr& type return; } - ContainedPtr c = ContainedPtr::dynamicCast(type); + ContainedPtr c = dynamic_pointer_cast(type); assert(c); string name = moduleName(findModule(c)) + c->name() + "Helper"; if(marshal) @@ -814,7 +816,7 @@ Slice::ObjCGenerator::writeMarshalUnmarshalCode(Output &out, const TypePtr& type } else { - if(StructPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { if(autoreleased) { @@ -847,7 +849,7 @@ Slice::ObjCGenerator::writeOptMemberMarshalUnmarshalCode(Output &out, const Type string optionalHelper; string helper; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { if(builtin->kind() == Builtin::KindObjectProxy) @@ -862,28 +864,28 @@ Slice::ObjCGenerator::writeOptMemberMarshalUnmarshalCode(Output &out, const Type } } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { writeMarshalUnmarshalCode(out, type, param, marshal, false); return; } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { writeMarshalUnmarshalCode(out, type, param, marshal, false); return; } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); if(prx) { optionalHelper = "ICEVarLengthOptionalHelper"; helper = "objc_getClass(\"" + moduleName(findModule(prx)) + prx->name() + "PrxHelper\")"; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { if(st->isVariableLength()) @@ -897,7 +899,7 @@ Slice::ObjCGenerator::writeOptMemberMarshalUnmarshalCode(Output &out, const Type helper = "[" + typeToString(st) + "Helper class]"; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { TypePtr element = seq->type(); @@ -917,7 +919,7 @@ Slice::ObjCGenerator::writeOptMemberMarshalUnmarshalCode(Output &out, const Type helper = "[" + moduleName(findModule(seq)) + seq->name() + "Helper class]"; } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { if(d->keyType()->isVariableLength() || d->valueType()->isVariableLength()) @@ -948,8 +950,8 @@ Slice::ObjCGenerator::writeOptParamMarshalUnmarshalCode(Output &out, const TypeP int tag, bool marshal) const { string helper; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(builtin) { helper = "ICE" + getBuiltinName(builtin) + "Helper"; @@ -963,7 +965,7 @@ Slice::ObjCGenerator::writeOptParamMarshalUnmarshalCode(Output &out, const TypeP helper = typeToString(type) + "Helper"; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(cl) { out << nl; @@ -1162,7 +1164,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitConst(const ConstPtr& p) void Slice::ObjCGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) { - ModulePtr m = ModulePtr::dynamicCast(cont); + ModulePtr m = dynamic_pointer_cast(cont); if(m) { bool error = false; @@ -1218,7 +1220,7 @@ Slice::ObjCGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) } } - EnumPtr en = EnumPtr::dynamicCast(cont); + EnumPtr en = dynamic_pointer_cast(cont); if(en) { StringList meta = getMetaData(en); diff --git a/cpp/src/slice2php/Main.cpp b/cpp/src/slice2php/Main.cpp index 4ba9bb51494..2e083e9ad5e 100644 --- a/cpp/src/slice2php/Main.cpp +++ b/cpp/src/slice2php/Main.cpp @@ -851,7 +851,7 @@ void CodeVisitor::visitDictionary(const DictionaryPtr& p) { TypePtr keyType = p->keyType(); - BuiltinPtr b = BuiltinPtr::dynamicCast(keyType); + BuiltinPtr b = dynamic_pointer_cast(keyType); const UnitPtr unit = p->unit(); const DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); @@ -882,7 +882,7 @@ CodeVisitor::visitDictionary(const DictionaryPtr& p) assert(false); } } - else if(!EnumPtr::dynamicCast(keyType)) + else if(!dynamic_pointer_cast(keyType)) { dc->warning(InvalidMetaData, p->file(), p->line(), "dictionary key type not supported in PHP"); } @@ -1005,7 +1005,7 @@ CodeVisitor::writeType(const TypePtr& p) string CodeVisitor::getType(const TypePtr& p) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p); + BuiltinPtr builtin = dynamic_pointer_cast(p); if(builtin) { switch(builtin->kind()) @@ -1054,13 +1054,13 @@ CodeVisitor::getType(const TypePtr& p) } } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(p); + InterfaceDeclPtr prx = dynamic_pointer_cast(p); if(prx) { return getTypeVar(prx, "Prx"); } - ContainedPtr cont = ContainedPtr::dynamicCast(p); + ContainedPtr cont = dynamic_pointer_cast(p); assert(cont); return getTypeVar(cont); } @@ -1069,7 +1069,7 @@ void CodeVisitor::writeDefaultValue(const DataMemberPtr& m) { TypePtr p = m->type(); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p); + BuiltinPtr builtin = dynamic_pointer_cast(p); if(builtin) { switch(builtin->kind()) @@ -1109,7 +1109,7 @@ CodeVisitor::writeDefaultValue(const DataMemberPtr& m) return; } - EnumPtr en = EnumPtr::dynamicCast(p); + EnumPtr en = dynamic_pointer_cast(p); if(en) { EnumeratorList enums = en->enumerators(); @@ -1122,7 +1122,7 @@ CodeVisitor::writeDefaultValue(const DataMemberPtr& m) // function foo($theStruct=new MyStructType) // // Instead we use null as the default value and allocate an instance in the constructor. - if(StructPtr::dynamicCast(p)) + if(dynamic_pointer_cast(p)) { _out << "null"; return; @@ -1134,7 +1134,7 @@ CodeVisitor::writeDefaultValue(const DataMemberPtr& m) void CodeVisitor::writeAssign(const MemberInfo& info) { - StructPtr st = StructPtr::dynamicCast(info.dataMember->type()); + StructPtr st = dynamic_pointer_cast(info.dataMember->type()); if(st) { _out << nl << "$this->" << info.fixedName << " = is_null($" << info.fixedName << ") ? new " @@ -1149,15 +1149,15 @@ CodeVisitor::writeAssign(const MemberInfo& info) void CodeVisitor::writeConstantValue(const TypePtr& type, const SyntaxTreeBasePtr& valueType, const string& value) { - ConstPtr constant = ConstPtr::dynamicCast(valueType); + ConstPtr constant = dynamic_pointer_cast(valueType); if(constant) { _out << getAbsolute(constant); } else { - Slice::BuiltinPtr b = Slice::BuiltinPtr::dynamicCast(type); - Slice::EnumPtr en = Slice::EnumPtr::dynamicCast(type); + Slice::BuiltinPtr b = dynamic_pointer_cast(type); + Slice::EnumPtr en = dynamic_pointer_cast(type); if(b) { switch(b->kind()) @@ -1201,7 +1201,7 @@ CodeVisitor::writeConstantValue(const TypePtr& type, const SyntaxTreeBasePtr& va } else if(en) { - EnumeratorPtr lte = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr lte = dynamic_pointer_cast(valueType); assert(lte); _out << getAbsolute(en) << "::" << fixIdent(lte->name()); } diff --git a/cpp/src/slice2swift/Gen.cpp b/cpp/src/slice2swift/Gen.cpp index 5d718e76fb0..0624473c70c 100644 --- a/cpp/src/slice2swift/Gen.cpp +++ b/cpp/src/slice2swift/Gen.cpp @@ -133,7 +133,7 @@ Gen::ImportVisitor::visitModuleStart(const ModulePtr& p) // // Always import Ice module first if not building Ice // - if(UnitPtr::dynamicCast(p->container()) && _imports.empty()) + if (dynamic_pointer_cast(p->container()) && _imports.empty()) { string swiftModule = getSwiftModule(p); if(swiftModule != "Ice") @@ -162,7 +162,7 @@ Gen::ImportVisitor::visitClassDefStart(const ClassDefPtr& p) ClassDefPtr base = p->base(); if (base) { - addImport(ContainedPtr::dynamicCast(base), p); + addImport(dynamic_pointer_cast(base), p); } // @@ -186,7 +186,7 @@ Gen::ImportVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) InterfaceList bases = p->bases(); for(InterfaceList::const_iterator i = bases.begin(); i != bases.end(); ++i) { - addImport(ContainedPtr::dynamicCast(*i), p); + addImport(dynamic_pointer_cast(*i), p); } // @@ -235,7 +235,7 @@ Gen::ImportVisitor::visitExceptionStart(const ExceptionPtr& p) ExceptionPtr base = p->base(); if(base) { - addImport(ContainedPtr::dynamicCast(base), p); + addImport(dynamic_pointer_cast(base), p); } // @@ -280,7 +280,7 @@ Gen::ImportVisitor::writeImports() void Gen::ImportVisitor::addImport(const TypePtr& definition, const ContainedPtr& toplevel) { - if(!BuiltinPtr::dynamicCast(definition)) + if(!dynamic_pointer_cast(definition)) { ModulePtr m1 = getTopLevelModule(definition); ModulePtr m2 = getTopLevelModule(toplevel); @@ -324,7 +324,7 @@ Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& o) : out(o) bool Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p) { - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string name = fixIdent(getUnqualified(getAbsolute(p), swiftModule)); const string traits = fixIdent(getUnqualified(getAbsolute(p), swiftModule) + "Traits"); @@ -369,7 +369,7 @@ Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p) bool Gen::TypesVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) { - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string name = fixIdent(getUnqualified(getAbsolute(p), swiftModule)); const string traits = fixIdent(getUnqualified(getAbsolute(p), swiftModule) + "Traits"); @@ -414,7 +414,7 @@ Gen::TypesVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) bool Gen::TypesVisitor::visitExceptionStart(const ExceptionPtr& p) { - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string name = getUnqualified(getAbsolute(p), swiftModule); ExceptionPtr base = p->base(); @@ -601,7 +601,7 @@ Gen::TypesVisitor::visitExceptionStart(const ExceptionPtr& p) bool Gen::TypesVisitor::visitStructStart(const StructPtr& p) { - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string name = fixIdent(getUnqualified(getAbsolute(p), swiftModule)); bool containsSequence; bool legalKeyType = Dictionary::legalKeyType(p, containsSequence); @@ -717,12 +717,12 @@ Gen::TypesVisitor::visitStructStart(const StructPtr& p) void Gen::TypesVisitor::visitSequence(const SequencePtr& p) { - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string name = getUnqualified(getAbsolute(p), swiftModule); int typeCtx = 0; const TypePtr type = p->type(); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); + BuiltinPtr builtin = dynamic_pointer_cast(p->type()); out << sp; writeDocSummary(out, p); @@ -876,7 +876,7 @@ Gen::TypesVisitor::visitSequence(const SequencePtr& p) void Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p) { - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string name = getUnqualified(getAbsolute(p), swiftModule); int typeCtx = 0; @@ -1028,7 +1028,7 @@ Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p) void Gen::TypesVisitor::visitEnum(const EnumPtr& p) { - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string name = fixIdent(getUnqualified(getAbsolute(p), swiftModule)); const EnumeratorList enumerators = p->enumerators(); const string enumType = p->maxValue() <= 0xFF ? "Swift.UInt8" : "Swift.Int32"; @@ -1132,7 +1132,7 @@ Gen::TypesVisitor::visitConst(const ConstPtr& p) { const string name = fixIdent(p->name()); const TypePtr type = p->type(); - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); writeDocSummary(out, p); out << nl << "public let " << name << ": " << typeToString(type, p) << " = "; @@ -1160,7 +1160,7 @@ Gen::ProxyVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) { InterfaceList bases = p->bases(); - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string name = getUnqualified(getAbsolute(p), swiftModule); const string traits = name + "Traits"; const string prx = name + "Prx"; @@ -1336,7 +1336,7 @@ bool Gen::ValueVisitor::visitClassDefStart(const ClassDefPtr& p) { const string prefix = getClassResolverPrefix(p->unit()); - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string name = getUnqualified(getAbsolute(p), swiftModule); const string traits = name + "Traits"; @@ -1554,7 +1554,7 @@ Gen::ObjectVisitor::visitModuleEnd(const ModulePtr&) bool Gen::ObjectVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) { - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string disp = fixIdent(getUnqualified(getAbsolute(p), swiftModule) + "Disp"); const string traits = fixIdent(getUnqualified(getAbsolute(p), swiftModule) + "Traits"); const string servant = fixIdent(getUnqualified(getAbsolute(p), swiftModule)); @@ -1689,7 +1689,7 @@ void Gen::ObjectVisitor::visitOperation(const OperationPtr& op) { const bool isAmd = operationIsAmd(op); - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(op))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(op))); const string opName = fixIdent(op->name() + (isAmd ? "Async" : "")); const ParamInfoList allInParams = getAllInParams(op); const ParamInfoList allOutParams = getAllOutParams(op); @@ -1740,7 +1740,7 @@ Gen::ObjectExtVisitor::visitModuleEnd(const ModulePtr&) bool Gen::ObjectExtVisitor::visitInterfaceDefStart(const InterfaceDefPtr& p) { - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(p))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(p))); const string name = getUnqualified(getAbsolute(p), swiftModule); out << sp; diff --git a/cpp/src/slice2swift/SwiftUtil.cpp b/cpp/src/slice2swift/SwiftUtil.cpp index 29685fb68a5..a22308b38cb 100644 --- a/cpp/src/slice2swift/SwiftUtil.cpp +++ b/cpp/src/slice2swift/SwiftUtil.cpp @@ -156,13 +156,13 @@ Slice::getTopLevelModule(const ContainedPtr& cont) ContainedPtr p = cont; while(true) { - if(ModulePtr::dynamicCast(p)) + if(dynamic_pointer_cast(p)) { - m = ModulePtr::dynamicCast(p); + m = dynamic_pointer_cast(p); } ContainerPtr c = p->container(); - p = ContainedPtr::dynamicCast(c); // This cast fails for Unit. + p = dynamic_pointer_cast(c); // This cast fails for Unit. if(!p) { break; @@ -174,11 +174,11 @@ Slice::getTopLevelModule(const ContainedPtr& cont) ModulePtr Slice::getTopLevelModule(const TypePtr& type) { - assert(InterfaceDeclPtr::dynamicCast(type) || ContainedPtr::dynamicCast(type)); + assert(dynamic_pointer_cast(type) || dynamic_pointer_cast(type)); - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); - return getTopLevelModule(proxy ? ContainedPtr::dynamicCast(proxy) : - ContainedPtr::dynamicCast(type)); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); + return getTopLevelModule(proxy ? dynamic_pointer_cast(proxy) : + dynamic_pointer_cast(type)); } void @@ -925,7 +925,7 @@ getAbsoluteImpl(const ContainedPtr& cont, const string& prefix = "", const strin string SwiftGenerator::getValue(const string& swiftModule, const TypePtr& type) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -957,25 +957,25 @@ SwiftGenerator::getValue(const string& swiftModule, const TypePtr& type) } } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { return "." + fixIdent((*en->enumerators().begin())->name()); } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { return getUnqualified(getAbsolute(type), swiftModule) + "()"; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return getUnqualified(getAbsolute(type), swiftModule) + "()"; } - DictionaryPtr dict = DictionaryPtr::dynamicCast(type); + DictionaryPtr dict = dynamic_pointer_cast(type); if(dict) { return getUnqualified(getAbsolute(type), swiftModule) + "()"; @@ -989,7 +989,7 @@ SwiftGenerator::writeConstantValue(IceUtilInternal::Output& out, const TypePtr& const SyntaxTreeBasePtr& valueType, const string& value, const StringList&, const string& swiftModule, bool optional) { - ConstPtr constant = ConstPtr::dynamicCast(valueType); + ConstPtr constant = dynamic_pointer_cast(valueType); if(constant) { out << getUnqualified(getAbsolute(constant), swiftModule); @@ -998,8 +998,8 @@ SwiftGenerator::writeConstantValue(IceUtilInternal::Output& out, const TypePtr& { if(valueType) { - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); - EnumPtr ep = EnumPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); + EnumPtr ep = dynamic_pointer_cast(type); if(bp && bp->kind() == Builtin::KindString) { out << "\""; @@ -1009,7 +1009,7 @@ SwiftGenerator::writeConstantValue(IceUtilInternal::Output& out, const TypePtr& else if(ep) { assert(valueType); - EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(valueType); + EnumeratorPtr enumerator = dynamic_pointer_cast(valueType); assert(enumerator); out << getUnqualified(getAbsolute(ep), swiftModule) << "." << enumerator->name(); } @@ -1061,7 +1061,7 @@ SwiftGenerator::typeToString(const TypePtr& type, // The current module where the type is being used // string currentModule = getSwiftModule(getTopLevelModule(toplevel)); - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); bool nonnull = find(metadata.begin(), metadata.end(), "swift:nonnull") != metadata.end(); if(builtin) @@ -1076,9 +1076,9 @@ SwiftGenerator::typeToString(const TypePtr& type, } } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); - ContainedPtr cont = ContainedPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); + ContainedPtr cont = dynamic_pointer_cast(type); if(cl) { @@ -1118,19 +1118,19 @@ SwiftGenerator::getAbsolute(const TypePtr& type) "Ice.Value" // Value }; - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { return builtinTable[builtin->kind()]; } - InterfaceDeclPtr proxy = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr proxy = dynamic_pointer_cast(type); if(proxy) { return getAbsoluteImpl(proxy, "", "Prx"); } - ContainedPtr cont = ContainedPtr::dynamicCast(type); + ContainedPtr cont = dynamic_pointer_cast(type); if(cont) { return getAbsoluteImpl(cont); @@ -1240,7 +1240,7 @@ SwiftGenerator::modeToString(Operation::Mode opMode) string SwiftGenerator::getOptionalFormat(const TypePtr& type) { - BuiltinPtr bp = BuiltinPtr::dynamicCast(type); + BuiltinPtr bp = dynamic_pointer_cast(type); if(bp) { switch(bp->kind()) @@ -1283,36 +1283,36 @@ SwiftGenerator::getOptionalFormat(const TypePtr& type) } } - if(EnumPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return ".Size"; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { return seq->type()->isVariableLength() ? ".FSize" : ".VSize"; } - DictionaryPtr d = DictionaryPtr::dynamicCast(type); + DictionaryPtr d = dynamic_pointer_cast(type); if(d) { return (d->keyType()->isVariableLength() || d->valueType()->isVariableLength()) ? ".FSize" : ".VSize"; } - StructPtr st = StructPtr::dynamicCast(type); + StructPtr st = dynamic_pointer_cast(type); if(st) { return st->isVariableLength() ? ".FSize" : ".VSize"; } - if(InterfaceDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { return ".FSize"; } - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); assert(cl); return ".Class"; } @@ -1320,7 +1320,7 @@ SwiftGenerator::getOptionalFormat(const TypePtr& type) bool SwiftGenerator::isNullableType(const TypePtr& type) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -1338,23 +1338,23 @@ SwiftGenerator::isNullableType(const TypePtr& type) } } - return ClassDeclPtr::dynamicCast(type) || InterfaceDeclPtr::dynamicCast(type); + return dynamic_pointer_cast(type) || dynamic_pointer_cast(type); } bool SwiftGenerator::isProxyType(const TypePtr& p) { - const BuiltinPtr builtin = BuiltinPtr::dynamicCast(p); - return (builtin && builtin->kind() == Builtin::KindObjectProxy) || InterfaceDeclPtr::dynamicCast(p); + const BuiltinPtr builtin = dynamic_pointer_cast(p); + return (builtin && builtin->kind() == Builtin::KindObjectProxy) || dynamic_pointer_cast(p); } bool SwiftGenerator::isClassType(const TypePtr& p) { - const BuiltinPtr builtin = BuiltinPtr::dynamicCast(p); + const BuiltinPtr builtin = dynamic_pointer_cast(p); return (builtin && (builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindValue)) || - ClassDeclPtr::dynamicCast(p); + dynamic_pointer_cast(p); } bool @@ -1368,26 +1368,26 @@ SwiftGenerator::containsClassMembers(const StructPtr& s) return true; } - StructPtr st = StructPtr::dynamicCast((*i)->type()); + StructPtr st = dynamic_pointer_cast((*i)->type()); if(st && containsClassMembers(st)) { return true; } - SequencePtr seq = SequencePtr::dynamicCast((*i)->type()); + SequencePtr seq = dynamic_pointer_cast((*i)->type()); if(seq) { - st = StructPtr::dynamicCast(seq->type()); + st = dynamic_pointer_cast(seq->type()); if(isClassType(seq->type()) || (st && containsClassMembers(st))) { return true; } } - DictionaryPtr dict = DictionaryPtr::dynamicCast((*i)->type()); + DictionaryPtr dict = dynamic_pointer_cast((*i)->type()); if(dict) { - st = StructPtr::dynamicCast(dict->valueType()); + st = dynamic_pointer_cast(dict->valueType()); if(isClassType(dict->valueType()) || (st && containsClassMembers(st))) { return true; @@ -1504,9 +1504,9 @@ SwiftGenerator::writeMembers(IceUtilInternal::Output& out, // to avoid ambiguity. // string alias; - if(!protocol && memberName == memberType && (StructPtr::dynamicCast(type) || - SequencePtr::dynamicCast(type) || - DictionaryPtr::dynamicCast(type))) + if(!protocol && memberName == memberType && (dynamic_pointer_cast(type) || + dynamic_pointer_cast(type) || + dynamic_pointer_cast(type))) { ModulePtr m = getTopLevelModule(type); alias = m->name() + "_" + memberType; @@ -1538,17 +1538,17 @@ SwiftGenerator::writeMembers(IceUtilInternal::Output& out, bool SwiftGenerator::usesMarshalHelper(const TypePtr& type) { - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { - BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr builtin = dynamic_pointer_cast(seq->type()); if(builtin) { return builtin->kind() > Builtin::KindString; } return true; } - return DictionaryPtr::dynamicCast(type); + return dynamic_pointer_cast(type) != nullptr; } void @@ -1560,7 +1560,7 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, int tag) { string swiftModule = getSwiftModule(getTopLevelModule(p)); - string stream = StructPtr::dynamicCast(p) ? "self" : marshal ? "ostr" : "istr"; + string stream = dynamic_pointer_cast(p) ? "self" : marshal ? "ostr" : "istr"; string args; if(tag >= 0) @@ -1581,7 +1581,7 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, args += param; } - BuiltinPtr builtin = BuiltinPtr::dynamicCast(type); + BuiltinPtr builtin = dynamic_pointer_cast(type); if(builtin) { switch(builtin->kind()) @@ -1643,9 +1643,9 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, } } - if(ClassDeclPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { - ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type); + ClassDeclPtr cl = dynamic_pointer_cast(type); if(marshal) { out << nl << stream << ".write(" << args << ")"; @@ -1682,7 +1682,7 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, return; } - EnumPtr en = EnumPtr::dynamicCast(type); + EnumPtr en = dynamic_pointer_cast(type); if(en) { if(marshal) @@ -1696,7 +1696,7 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, return; } - InterfaceDeclPtr prx = InterfaceDeclPtr::dynamicCast(type); + InterfaceDeclPtr prx = dynamic_pointer_cast(type); if(prx) { if(marshal) @@ -1716,7 +1716,7 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, return; } - if(StructPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { if(marshal) { @@ -1729,10 +1729,10 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, return; } - SequencePtr seq = SequencePtr::dynamicCast(type); + SequencePtr seq = dynamic_pointer_cast(type); if(seq) { - BuiltinPtr seqBuiltin = BuiltinPtr::dynamicCast(seq->type()); + BuiltinPtr seqBuiltin = dynamic_pointer_cast(seq->type()); if(seqBuiltin && seqBuiltin->kind() <= Builtin::KindString) { if(marshal) @@ -1746,7 +1746,7 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, } else { - string helper = getUnqualified(getAbsoluteImpl(ContainedPtr::dynamicCast(type)), swiftModule) + "Helper"; + string helper = getUnqualified(getAbsoluteImpl(dynamic_pointer_cast(type)), swiftModule) + "Helper"; if(marshal) { out << nl << helper <<".write(to: " << stream << ", " << args << ")"; @@ -1764,9 +1764,9 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, return; } - if(DictionaryPtr::dynamicCast(type)) + if(dynamic_pointer_cast(type)) { - string helper = getUnqualified(getAbsoluteImpl(ContainedPtr::dynamicCast(type)), swiftModule) + "Helper"; + string helper = getUnqualified(getAbsoluteImpl(dynamic_pointer_cast(type)), swiftModule) + "Helper"; if(marshal) { out << nl << helper <<".write(to: " << stream << ", " << args << ")"; @@ -1787,7 +1787,7 @@ SwiftGenerator::writeMarshalUnmarshalCode(Output &out, bool SwiftGenerator::MetaDataVisitor::visitModuleStart(const ModulePtr& p) { - if(UnitPtr::dynamicCast(p->container())) + if(dynamic_pointer_cast(p->container())) { // top-level module const UnitPtr ut = p->unit(); @@ -2385,7 +2385,7 @@ SwiftGenerator::writeUnmarshalInParams(::IceUtilInternal::Output& out, const Ope void SwiftGenerator::writeUnmarshalUserException(::IceUtilInternal::Output& out, const OperationPtr& op) { - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(op))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(op))); ExceptionList throws = op->throws(); throws.sort(); throws.unique(); @@ -2429,7 +2429,7 @@ SwiftGenerator::writeProxyOperation(::IceUtilInternal::Output& out, const Operat const ParamInfoList allOutParams = getAllOutParams(op); const ExceptionList allExceptions = op->throws(); - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(op))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(op))); out << sp; writeOpDocSummary(out, op, false, false); @@ -2515,7 +2515,7 @@ SwiftGenerator::writeProxyAsyncOperation(::IceUtilInternal::Output& out, const O const ParamInfoList allOutParams = getAllOutParams(op); const ExceptionList allExceptions = op->throws(); - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(op))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(op))); out << sp; writeOpDocSummary(out, op, true, false); @@ -2606,7 +2606,7 @@ SwiftGenerator::writeDispatchOperation(::IceUtilInternal::Output& out, const Ope const ParamInfoList allOutParams = getAllOutParams(op); const ExceptionList allExceptions = op->throws(); - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(op))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(op))); out << sp; out << nl << "func _iceD_" << opName; @@ -2668,7 +2668,7 @@ SwiftGenerator::writeDispatchAsyncOperation(::IceUtilInternal::Output& out, cons const ParamInfoList allInParams = getAllInParams(op); const ParamInfoList allOutParams = getAllOutParams(op); - const string swiftModule = getSwiftModule(getTopLevelModule(ContainedPtr::dynamicCast(op))); + const string swiftModule = getSwiftModule(getTopLevelModule(dynamic_pointer_cast(op))); out << sp; out << nl << "func _iceD_" << op->name(); @@ -2851,14 +2851,14 @@ SwiftGenerator::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const S continue; } - if(ModulePtr::dynamicCast(cont) && s.find("swift:module:") == 0) + if(dynamic_pointer_cast(cont) && s.find("swift:module:") == 0) { continue; } if(local) { - OperationPtr op = OperationPtr::dynamicCast(cont); + OperationPtr op = dynamic_pointer_cast(cont); if(op) { if(s == "swift:noexcept") @@ -2869,7 +2869,7 @@ SwiftGenerator::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const S if(s == "swift:nonnull") { TypePtr returnType = op->returnType(); - if(!returnType) + if (!returnType) { dc->warning(InvalidMetaData, file, line, "ignoring invalid metadata `" + s + "' for operation with void return type"); @@ -2887,7 +2887,7 @@ SwiftGenerator::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const S if(operationParameter && s == "swift:nonnull") { - if(!isNullableType(TypePtr::dynamicCast(cont))) + if(!isNullableType(dynamic_pointer_cast(cont))) { dc->warning(InvalidMetaData, file, line, "ignoring invalid metadata `swift:nonnull' for non nullable type"); @@ -2901,7 +2901,7 @@ SwiftGenerator::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const S continue; } - SequencePtr seq = SequencePtr::dynamicCast(cont); + SequencePtr seq = dynamic_pointer_cast(cont); if(seq && s == "swift:nonnull") { if(!isNullableType(seq->type())) @@ -2914,16 +2914,16 @@ SwiftGenerator::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const S } } - if(InterfaceDefPtr::dynamicCast(cont) && s.find("swift:inherits:") == 0) + if(dynamic_pointer_cast(cont) && s.find("swift:inherits:") == 0) { continue; } - if((ClassDefPtr::dynamicCast(cont) || - InterfaceDefPtr::dynamicCast(cont) || - EnumPtr::dynamicCast(cont) || - ExceptionPtr::dynamicCast(cont) || - OperationPtr::dynamicCast(cont)) && s.find("swift:attribute:") == 0) + if((dynamic_pointer_cast(cont) || + dynamic_pointer_cast(cont) || + dynamic_pointer_cast(cont) || + dynamic_pointer_cast(cont) || + dynamic_pointer_cast(cont)) && s.find("swift:attribute:") == 0) { continue; }