Skip to content

Commit d80ec49

Browse files
committed
[C++]: adding copy/move constructors and assignment operators back into codecs for #468
1 parent 7a161ec commit d80ec49

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1258,6 +1258,28 @@ private static CharSequence generateFixedFlyweightCode(final String className, f
12581258
" {\n" +
12591259
" reset(buffer, 0, bufferLength, actingVersion);\n" +
12601260
" }\n\n" +
1261+
" %1$s(const %1$s& codec) :\n" +
1262+
" m_buffer(codec.m_buffer), m_offset(codec.m_offset), m_actingVersion(codec.m_actingVersion){}\n\n" +
1263+
"#if __cplusplus >= 201103L\n" +
1264+
" %1$s(%1$s&& codec) :\n" +
1265+
" m_buffer(codec.m_buffer), m_offset(codec.m_offset), m_actingVersion(codec.m_actingVersion){}\n\n" +
1266+
" %1$s& operator=(%1$s&& codec)\n" +
1267+
" {\n" +
1268+
" m_buffer = codec.m_buffer;\n" +
1269+
" m_bufferLength = codec.m_bufferLength;\n" +
1270+
" m_offset = codec.m_offset;\n" +
1271+
" m_actingVersion = codec.m_actingVersion;\n" +
1272+
" return *this;\n" +
1273+
" }\n\n" +
1274+
"#endif\n\n" +
1275+
" %1$s& operator=(const %1$s& codec)\n" +
1276+
" {\n" +
1277+
" m_buffer = codec.m_buffer;\n" +
1278+
" m_bufferLength = codec.m_bufferLength;\n" +
1279+
" m_offset = codec.m_offset;\n" +
1280+
" m_actingVersion = codec.m_actingVersion;\n" +
1281+
" return *this;\n" +
1282+
" }\n\n" +
12611283
" %1$s &wrap(char *buffer, const std::uint64_t offset, const std::uint64_t actingVersion," +
12621284
" const std::uint64_t bufferLength)\n" +
12631285
" {\n" +
@@ -1292,6 +1314,26 @@ private static CharSequence generateConstructorsAndOperators(final String classN
12921314
" const std::uint64_t actingVersion)\n" +
12931315
" {\n" +
12941316
" reset(buffer, 0, bufferLength, actingBlockLength, actingVersion);\n" +
1317+
" }\n\n" +
1318+
" %1$s(const %1$s& codec)\n" +
1319+
" {\n" +
1320+
" reset(codec);\n" +
1321+
" }\n\n" +
1322+
"#if __cplusplus >= 201103L\n" +
1323+
" %1$s(%1$s&& codec)\n" +
1324+
" {\n" +
1325+
" reset(codec);\n" +
1326+
" }\n\n" +
1327+
" %1$s& operator=(%1$s&& codec)\n" +
1328+
" {\n" +
1329+
" reset(codec);\n" +
1330+
" return *this;\n" +
1331+
" }\n\n" +
1332+
"#endif\n\n" +
1333+
" %1$s& operator=(const %1$s& codec)\n" +
1334+
" {\n" +
1335+
" reset(codec);\n" +
1336+
" return *this;\n" +
12951337
" }\n\n",
12961338
className);
12971339
}
@@ -1325,6 +1367,16 @@ private CharSequence generateMessageFlyweightCode(final String className, final
13251367
" m_positionPtr = &m_position;\n" +
13261368
" position(offset + m_actingBlockLength);\n" +
13271369
" }\n\n" +
1370+
" inline void reset(const %10$s& codec)\n" +
1371+
" {\n" +
1372+
" m_buffer = codec.m_buffer;\n" +
1373+
" m_offset = codec.m_offset;\n" +
1374+
" m_bufferLength = codec.m_bufferLength;\n" +
1375+
" m_actingBlockLength = codec.m_actingBlockLength;\n" +
1376+
" m_actingVersion = codec.m_actingVersion;\n" +
1377+
" m_positionPtr = &m_position;\n" +
1378+
" m_position = codec.m_position;\n" +
1379+
" }\n\n" +
13281380
"public:\n\n" +
13291381
"%11$s" +
13301382
" static SBE_CONSTEXPR %1$s sbeBlockLength()\n" +

0 commit comments

Comments
 (0)