@@ -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