1
0
Fork 0

directly create data types

This commit is contained in:
Kevin Matz 2023-05-20 13:43:56 -04:00
parent 26645b5c4d
commit e565437988
1 changed files with 23 additions and 31 deletions

View File

@ -961,79 +961,71 @@ void Packet::iStream(std::shared_ptr<bufferstream> stream)
switch (opcode) { // 3-...
case OpPoll:
createData<poll_data>(stream);
_data = std::make_shared<poll_data>();
break;
case OpPollReply:
createData<pollreply_data>(stream);
_data = std::make_shared<pollreply_data>();
break;
case OpIpProg:
createData<ipprog_data>(stream);
_data = std::make_shared<ipprog_data>();
break;
case OpIpProgReply:
createData<ipprogreply_data>(stream);
_data = std::make_shared<ipprogreply_data>();
break;
case OpAddress:
createData<address_data>(stream);
_data = std::make_shared<address_data>();
break;
case OpDiagData:
createData<diagdata_data>(stream);
_data = std::make_shared<diagdata_data>();
break;
case OpTimeCode:
createData<timecode_data>(stream);
_data = std::make_shared<timecode_data>();
break;
case OpCommand:
createData<command_data>(stream);
_data = std::make_shared<command_data>();
break;
case OpTrigger:
createData<trigger_data>(stream);
_data = std::make_shared<trigger_data>();
break;
case OpDmx:
createData<dmx_data>(stream);
_data = std::make_shared<dmx_data>();
break;
case OpSync:
createData<sync_data>(stream);
_data = std::make_shared<sync_data>();
break;
case OpNzs:
{
createData<nzs_data>(stream);
if (!_data)
break;
#ifdef RTTI_ENABLED
auto data = std::dynamic_pointer_cast<nzs_data>(_data);
#else
auto data = std::static_pointer_cast<nzs_data>(_data);
#endif
if (data->data[0] == VLC::START_CODE)
_data = std::make_shared<vlc_data>(data.get());
}
_data = std::make_shared<nzs_data>();
break;
case OpInput:
createData<input_data>(stream);
_data = std::make_shared<input_data>();
break;
case OpFirmwareMaster:
createData<firmwaremaster_data>(stream);
_data = std::make_shared<firmwaremaster_data>();
break;
case OpFirmwareReply:
createData<firmwarereply_data>(stream);
_data = std::make_shared<firmwarereply_data>();
break;
case OpTodRequest:
createData<todrequest_data>(stream);
_data = std::make_shared<todrequest_data>();
break;
case OpTodData:
createData<toddata_data>(stream);
_data = std::make_shared<toddata_data>();
break;
case OpTodControl:
createData<todcontrol_data>(stream);
_data = std::make_shared<todcontrol_data>();
break;
case OpRdm:
createData<rdm_data>(stream);
_data = std::make_shared<rdm_data>();
break;
case OpRdmSub:
createData<rdmsub_data>(stream);
_data = std::make_shared<rdmsub_data>();
break;
default:
break;
}
if (_data)
_data->iStream(stream);
}