/** * Pack an unsigned 8-bit int into the dashboard data structure. * @param value Data to be packed into the structure. */ void Dashboard::AddU8(UINT8 value) { if (!ValidateAdd(sizeof(UINT8))) return; memcpy(m_packPtr, (char*)&value, sizeof(value)); m_packPtr += sizeof(value); AddedElement(kU8); }
/** * Pack a boolean into the dashboard data structure. * @param value Data to be packed into the structure. */ void Dashboard::AddBoolean(bool value) { if (!ValidateAdd(sizeof(char))) return; *m_packPtr = value ? 1 : 0; m_packPtr += sizeof(char); AddedElement(kBoolean); }
/** * Pack a signed 32-bit int into the dashboard data structure. * @param value Data to be packed into the structure. */ void Dashboard::AddI32(INT32 value) { if (!ValidateAdd(sizeof(INT32))) return; memcpy(m_packPtr, (char*)&value, sizeof(value)); m_packPtr += sizeof(value); AddedElement(kI32); }
/** * Pack a 64-bit floating point number into the dashboard data structure. * @param value Data to be packed into the structure. */ void Dashboard::AddDouble(double value) { if (!ValidateAdd(sizeof(double))) return; memcpy(m_packPtr, (char*)&value, sizeof(value)); m_packPtr += sizeof(value); AddedElement(kDouble); }
/** * Pack a 32-bit floating point number into the dashboard data structure. * @param value Data to be packed into the structure. */ void Dashboard::AddFloat(float value) { if (!ValidateAdd(sizeof(float))) return; memcpy(m_packPtr, (char*)&value, sizeof(value)); m_packPtr += sizeof(value); AddedElement(kFloat); }
/** * Pack a signed 16-bit int into the dashboard data structure. * @param value Data to be packed into the structure. */ void Dashboard::AddI16(int16_t value) { if (!ValidateAdd(sizeof(int16_t))) return; memcpy(m_packPtr, (char*)&value, sizeof(value)); m_packPtr += sizeof(value); AddedElement(kI16); }
/** * Pack an unsigned 32-bit int into the dashboard data structure. * @param value Data to be packed into the structure. */ void Dashboard::AddU32(uint32_t value) { if (!ValidateAdd(sizeof(uint32_t))) return; memcpy(m_packPtr, (char*)&value, sizeof(value)); m_packPtr += sizeof(value); AddedElement(kU32); }
/** * Pack a string of 8-bit characters of specified length into the dashboard data structure. * @param value Data to be packed into the structure. * @param length The number of bytes in the string to pack. */ void Dashboard::AddString(char* value, INT32 length) { if (!ValidateAdd(length + sizeof(length))) return; memcpy(m_packPtr, (char*)&length, sizeof(length)); m_packPtr += sizeof(length); memcpy(m_packPtr, value, length); m_packPtr += length; AddedElement(kString); }
/** * Indicate the end of a cluster packed into the dashboard data structure. * * After packing data into the cluster, call FinalizeCluster(). * Every call to AddCluster() must have a matching call to FinalizeCluster(). */ void Dashboard::FinalizeCluster() { if (m_complexTypeStack.top() != kCluster) { wpi_setWPIError(MismatchedComplexTypeClose); return; } m_complexTypeStack.pop(); AddedElement(kOther); }
/** * Indicate the end of an array packed into the dashboard data structure. * * After packing data into the array, call FinalizeArray(). * Every call to AddArray() must have a matching call to FinalizeArray(). */ void Dashboard::FinalizeArray() { if (m_complexTypeStack.top() != kArray) { wpi_setWPIError(MismatchedComplexTypeClose); return; } m_complexTypeStack.pop(); *(m_arraySizePtr.back()) = m_arrayElementCount.back(); m_arraySizePtr.pop_back(); if (m_arrayElementCount.back() != 0) { m_expectedArrayElementType.pop_back(); } m_arrayElementCount.pop_back(); AddedElement(kOther); }