@@ -1183,7 +1183,17 @@ private CharSequence generateArrayProperty(
11831183 token .arrayLength ()));
11841184
11851185 sb .append (String .format ("\n "  +
1186-  indent  + " const char *%1$s() const\n "  +
1186+  indent  + " const char *%1$s() const SBE_NOEXCEPT\n "  +
1187+  indent  + " {\n "  +
1188+  "%2$s"  +
1189+  indent  + " return (m_buffer + m_offset + %3$d);\n "  +
1190+  indent  + " }\n " ,
1191+  propertyName ,
1192+  generateTypeFieldNotPresentCondition (token .version (), indent ),
1193+  offset ));
1194+ 
1195+  sb .append (String .format ("\n "  +
1196+  indent  + " char *%1$s() SBE_NOEXCEPT\n "  +
11871197 indent  + " {\n "  +
11881198 "%2$s"  +
11891199 indent  + " return (m_buffer + m_offset + %3$d);\n "  +
@@ -1199,7 +1209,7 @@ private CharSequence generateArrayProperty(
11991209 indent );
12001210
12011211 sb .append (String .format ("\n "  +
1202-  indent  + " %1$s %2$s(const  std::uint64_t index) const\n "  +
1212+  indent  + " %1$s %2$s(std::uint64_t index) const\n "  +
12031213 indent  + " {\n "  +
12041214 indent  + " if (index >= %3$d)\n "  +
12051215 indent  + " {\n "  +
@@ -1222,7 +1232,7 @@ private CharSequence generateArrayProperty(
12221232 indent );
12231233
12241234 sb .append (String .format ("\n "  +
1225-  indent  + " %1$s %2$s(const  std::uint64_t index, const  %3$s value)\n "  +
1235+  indent  + " %1$s %2$s(std::uint64_t index, %3$s value)\n "  +
12261236 indent  + " {\n "  +
12271237 indent  + " if (index >= %4$d)\n "  +
12281238 indent  + " {\n "  +
@@ -1238,7 +1248,7 @@ private CharSequence generateArrayProperty(
12381248 storeValue ));
12391249
12401250 sb .append (String .format ("\n "  +
1241-  indent  + " std::uint64_t get%1$s(char *dst, const  std::uint64_t length) const\n "  +
1251+  indent  + " std::uint64_t get%1$s(char *dst, std::uint64_t length) const\n "  +
12421252 indent  + " {\n "  +
12431253 indent  + " if (length > %2$d)\n "  +
12441254 indent  + " {\n "  +
@@ -1255,7 +1265,7 @@ private CharSequence generateArrayProperty(
12551265 cppTypeName ));
12561266
12571267 sb .append (String .format ("\n "  +
1258-  indent  + " %1$s &put%2$s(const char *src)\n "  +
1268+  indent  + " %1$s &put%2$s(const char *src) SBE_NOEXCEPT \n "  +
12591269 indent  + " {\n "  +
12601270 indent  + " std::memcpy(m_buffer + m_offset + %3$d, src, sizeof(%4$s) * %5$d);\n "  +
12611271 indent  + " return *this;\n "  +
@@ -1279,11 +1289,31 @@ private CharSequence generateArrayProperty(
12791289 token .arrayLength ()));
12801290
12811291 sb .append (String .format ("\n "  +
1282-  indent  + " %1$s &put%2$s(const std::string& str)\n "  +
1292+  indent  + " #if __cplusplus >= 201703L\n "  +
1293+  indent  + " std::string_view get%1$sAsStringView() const SBE_NOEXCEPT\n "  +
1294+  indent  + " {\n "  +
1295+  indent  + " std::string_view result(m_buffer + m_offset + %2$d, %3$d);\n "  +
1296+  indent  + " return result;\n "  +
1297+  indent  + " }\n "  +
1298+  indent  + " #endif\n " ,
1299+  toUpperFirstChar (propertyName ),
1300+  offset ,
1301+  token .arrayLength ()));
1302+ 
1303+  sb .append (String .format ("\n "  +
1304+  indent  + " #if __cplusplus >= 201703L\n "  +
1305+  indent  + " %1$s &put%2$s(std::string_view str) SBE_NOEXCEPT\n "  +
12831306 indent  + " {\n "  +
12841307 indent  + " std::memcpy(m_buffer + m_offset + %3$d, str.c_str(), %4$d);\n "  +
12851308 indent  + " return *this;\n "  +
1286-  indent  + " }\n " ,
1309+  indent  + " }\n "  +
1310+  indent  + " #else\n "  +
1311+  indent  + " %1$s &put%2$s(const std::string& str) SBE_NOEXCEPT\n "  +
1312+  indent  + " {\n "  +
1313+  indent  + " std::memcpy(m_buffer + m_offset + %3$d, str.c_str(), %4$d);\n "  +
1314+  indent  + " return *this;\n "  +
1315+  indent  + " }\n "  +
1316+  indent  + " #endif\n " ,
12871317 containingClassName ,
12881318 toUpperFirstChar (propertyName ),
12891319 offset ,
0 commit comments