Add checking assertions for all copy operations.
This commit is contained in:
parent
9e2782d923
commit
4760b85930
@ -487,6 +487,8 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
0);
|
0);
|
||||||
const auto absolute_file_index_path =
|
const auto absolute_file_index_path =
|
||||||
boost::filesystem::absolute(config.file_index_path).string();
|
boost::filesystem::absolute(config.file_index_path).string();
|
||||||
|
BOOST_ASSERT(static_cast<std::size_t>(layout_ptr->GetBlockSize(
|
||||||
|
DataLayout::FILE_INDEX_PATH)) == absolute_file_index_path.size());
|
||||||
std::copy(
|
std::copy(
|
||||||
absolute_file_index_path.begin(), absolute_file_index_path.end(), file_index_path_ptr);
|
absolute_file_index_path.begin(), absolute_file_index_path.end(), file_index_path_ptr);
|
||||||
}
|
}
|
||||||
@ -559,8 +561,11 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
memory_ptr, DataLayout::LANE_DESCRIPTION_OFFSETS);
|
memory_ptr, DataLayout::LANE_DESCRIPTION_OFFSETS);
|
||||||
if (!lane_description_offsets.empty())
|
if (!lane_description_offsets.empty())
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(layout_ptr->GetBlockSize(DataLayout::LANE_DESCRIPTION_OFFSETS) >=
|
BOOST_ASSERT(
|
||||||
sizeof(lane_description_offsets[0]) * lane_description_offsets.size());
|
static_cast<std::size_t>(
|
||||||
|
layout_ptr->GetBlockSize(DataLayout::LANE_DESCRIPTION_OFFSETS)) ==
|
||||||
|
std::distance(lane_description_offsets.begin(), lane_description_offsets.end()) *
|
||||||
|
sizeof(decltype(lane_description_offsets)::value_type));
|
||||||
std::copy(lane_description_offsets.begin(),
|
std::copy(lane_description_offsets.begin(),
|
||||||
lane_description_offsets.end(),
|
lane_description_offsets.end(),
|
||||||
turn_lane_offset_ptr);
|
turn_lane_offset_ptr);
|
||||||
@ -571,8 +576,11 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
memory_ptr, DataLayout::LANE_DESCRIPTION_MASKS);
|
memory_ptr, DataLayout::LANE_DESCRIPTION_MASKS);
|
||||||
if (!lane_description_masks.empty())
|
if (!lane_description_masks.empty())
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(layout_ptr->GetBlockSize(DataLayout::LANE_DESCRIPTION_MASKS) >=
|
BOOST_ASSERT(
|
||||||
sizeof(lane_description_masks[0]) * lane_description_masks.size());
|
static_cast<std::size_t>(
|
||||||
|
layout_ptr->GetBlockSize(DataLayout::LANE_DESCRIPTION_MASKS)) ==
|
||||||
|
std::distance(lane_description_masks.begin(), lane_description_masks.end()) *
|
||||||
|
sizeof(decltype(lane_description_masks)::value_type));
|
||||||
std::copy(
|
std::copy(
|
||||||
lane_description_masks.begin(), lane_description_masks.end(), turn_lane_mask_ptr);
|
lane_description_masks.begin(), lane_description_masks.end(), turn_lane_mask_ptr);
|
||||||
}
|
}
|
||||||
@ -676,6 +684,10 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
layout_ptr->GetBlockPtr<char, true>(memory_ptr, DataLayout::DATASOURCE_NAME_DATA);
|
layout_ptr->GetBlockPtr<char, true>(memory_ptr, DataLayout::DATASOURCE_NAME_DATA);
|
||||||
if (layout_ptr->GetBlockSize(DataLayout::DATASOURCE_NAME_DATA) > 0)
|
if (layout_ptr->GetBlockSize(DataLayout::DATASOURCE_NAME_DATA) > 0)
|
||||||
{
|
{
|
||||||
|
BOOST_ASSERT(std::distance(datasource_names_data.names.begin(),
|
||||||
|
datasource_names_data.names.end()) *
|
||||||
|
sizeof(decltype(datasource_names_data.names)::value_type) ==
|
||||||
|
layout_ptr->GetBlockSize(DataLayout::DATASOURCE_NAME_DATA));
|
||||||
std::copy(datasource_names_data.names.begin(),
|
std::copy(datasource_names_data.names.begin(),
|
||||||
datasource_names_data.names.end(),
|
datasource_names_data.names.end(),
|
||||||
datasource_name_data_ptr);
|
datasource_name_data_ptr);
|
||||||
@ -685,6 +697,10 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
memory_ptr, DataLayout::DATASOURCE_NAME_OFFSETS);
|
memory_ptr, DataLayout::DATASOURCE_NAME_OFFSETS);
|
||||||
if (layout_ptr->GetBlockSize(DataLayout::DATASOURCE_NAME_OFFSETS) > 0)
|
if (layout_ptr->GetBlockSize(DataLayout::DATASOURCE_NAME_OFFSETS) > 0)
|
||||||
{
|
{
|
||||||
|
BOOST_ASSERT(std::distance(datasource_names_data.offsets.begin(),
|
||||||
|
datasource_names_data.offsets.end()) *
|
||||||
|
sizeof(decltype(datasource_names_data.offsets)::value_type) ==
|
||||||
|
layout_ptr->GetBlockSize(DataLayout::DATASOURCE_NAME_OFFSETS));
|
||||||
std::copy(datasource_names_data.offsets.begin(),
|
std::copy(datasource_names_data.offsets.begin(),
|
||||||
datasource_names_data.offsets.end(),
|
datasource_names_data.offsets.end(),
|
||||||
datasource_name_offsets_ptr);
|
datasource_name_offsets_ptr);
|
||||||
@ -694,6 +710,10 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
memory_ptr, DataLayout::DATASOURCE_NAME_LENGTHS);
|
memory_ptr, DataLayout::DATASOURCE_NAME_LENGTHS);
|
||||||
if (layout_ptr->GetBlockSize(DataLayout::DATASOURCE_NAME_LENGTHS) > 0)
|
if (layout_ptr->GetBlockSize(DataLayout::DATASOURCE_NAME_LENGTHS) > 0)
|
||||||
{
|
{
|
||||||
|
BOOST_ASSERT(std::distance(datasource_names_data.lengths.begin(),
|
||||||
|
datasource_names_data.lengths.end()) *
|
||||||
|
sizeof(decltype(datasource_names_data.lengths)::value_type) ==
|
||||||
|
layout_ptr->GetBlockSize(DataLayout::DATASOURCE_NAME_LENGTHS));
|
||||||
std::copy(datasource_names_data.lengths.begin(),
|
std::copy(datasource_names_data.lengths.begin(),
|
||||||
datasource_names_data.lengths.end(),
|
datasource_names_data.lengths.end(),
|
||||||
datasource_name_lengths_ptr);
|
datasource_name_lengths_ptr);
|
||||||
@ -814,6 +834,10 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
{
|
{
|
||||||
const auto bearing_id_ptr = layout_ptr->GetBlockPtr<BearingClassID, true>(
|
const auto bearing_id_ptr = layout_ptr->GetBlockPtr<BearingClassID, true>(
|
||||||
memory_ptr, DataLayout::BEARING_CLASSID);
|
memory_ptr, DataLayout::BEARING_CLASSID);
|
||||||
|
BOOST_ASSERT(
|
||||||
|
static_cast<std::size_t>(layout_ptr->GetBlockSize(DataLayout::BEARING_CLASSID)) ==
|
||||||
|
std::distance(bearing_class_id_table.begin(), bearing_class_id_table.end()) *
|
||||||
|
sizeof(decltype(bearing_class_id_table)::value_type));
|
||||||
std::copy(bearing_class_id_table.begin(), bearing_class_id_table.end(), bearing_id_ptr);
|
std::copy(bearing_class_id_table.begin(), bearing_class_id_table.end(), bearing_id_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -821,6 +845,10 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
{
|
{
|
||||||
const auto bearing_offsets_ptr =
|
const auto bearing_offsets_ptr =
|
||||||
layout_ptr->GetBlockPtr<unsigned, true>(memory_ptr, DataLayout::BEARING_OFFSETS);
|
layout_ptr->GetBlockPtr<unsigned, true>(memory_ptr, DataLayout::BEARING_OFFSETS);
|
||||||
|
BOOST_ASSERT(
|
||||||
|
static_cast<std::size_t>(layout_ptr->GetBlockSize(DataLayout::BEARING_OFFSETS)) ==
|
||||||
|
std::distance(bearing_offsets_data.begin(), bearing_offsets_data.end()) *
|
||||||
|
sizeof(decltype(bearing_offsets_data)::value_type));
|
||||||
std::copy(
|
std::copy(
|
||||||
bearing_offsets_data.begin(), bearing_offsets_data.end(), bearing_offsets_ptr);
|
bearing_offsets_data.begin(), bearing_offsets_data.end(), bearing_offsets_ptr);
|
||||||
}
|
}
|
||||||
@ -830,6 +858,10 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
const auto bearing_blocks_ptr =
|
const auto bearing_blocks_ptr =
|
||||||
layout_ptr->GetBlockPtr<typename util::RangeTable<16, true>::BlockT, true>(
|
layout_ptr->GetBlockPtr<typename util::RangeTable<16, true>::BlockT, true>(
|
||||||
memory_ptr, DataLayout::BEARING_BLOCKS);
|
memory_ptr, DataLayout::BEARING_BLOCKS);
|
||||||
|
BOOST_ASSERT(
|
||||||
|
static_cast<std::size_t>(layout_ptr->GetBlockSize(DataLayout::BEARING_BLOCKS)) ==
|
||||||
|
std::distance(bearing_blocks_data.begin(), bearing_blocks_data.end()) *
|
||||||
|
sizeof(decltype(bearing_blocks_data)::value_type));
|
||||||
std::copy(bearing_blocks_data.begin(), bearing_blocks_data.end(), bearing_blocks_ptr);
|
std::copy(bearing_blocks_data.begin(), bearing_blocks_data.end(), bearing_blocks_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -837,6 +869,10 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
{
|
{
|
||||||
const auto bearing_class_ptr = layout_ptr->GetBlockPtr<DiscreteBearing, true>(
|
const auto bearing_class_ptr = layout_ptr->GetBlockPtr<DiscreteBearing, true>(
|
||||||
memory_ptr, DataLayout::BEARING_VALUES);
|
memory_ptr, DataLayout::BEARING_VALUES);
|
||||||
|
BOOST_ASSERT(
|
||||||
|
static_cast<std::size_t>(layout_ptr->GetBlockSize(DataLayout::BEARING_VALUES)) ==
|
||||||
|
std::distance(bearing_class_table.begin(), bearing_class_table.end()) *
|
||||||
|
sizeof(decltype(bearing_class_table)::value_type));
|
||||||
std::copy(bearing_class_table.begin(), bearing_class_table.end(), bearing_class_ptr);
|
std::copy(bearing_class_table.begin(), bearing_class_table.end(), bearing_class_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -844,6 +880,10 @@ void Storage::LoadData(DataLayout *layout_ptr, char *memory_ptr)
|
|||||||
{
|
{
|
||||||
const auto entry_class_ptr = layout_ptr->GetBlockPtr<util::guidance::EntryClass, true>(
|
const auto entry_class_ptr = layout_ptr->GetBlockPtr<util::guidance::EntryClass, true>(
|
||||||
memory_ptr, DataLayout::ENTRY_CLASS);
|
memory_ptr, DataLayout::ENTRY_CLASS);
|
||||||
|
BOOST_ASSERT(
|
||||||
|
static_cast<std::size_t>(layout_ptr->GetBlockSize(DataLayout::ENTRY_CLASS)) ==
|
||||||
|
std::distance(entry_class_table.begin(), entry_class_table.end()) *
|
||||||
|
sizeof(decltype(entry_class_table)::value_type));
|
||||||
std::copy(entry_class_table.begin(), entry_class_table.end(), entry_class_ptr);
|
std::copy(entry_class_table.begin(), entry_class_table.end(), entry_class_ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user