Skip to content

Commit 4f5dedb

Browse files
authored
Added readability-container-data-pointer clang-tidy check (PointCloudLibrary#5588)
* Added readability-container-data-pointer clang-tidy check Removed extraneous parentheses left from conversion to data() Removed extraneous conversion to data() Disabled clang-tidy for more Eigen::Vector4f Fixed typo in NOLINTEND Fixed another Eigen::Vector4f clang-tidy escape Added more NOLINT for readability-container-data-pointer check * Revised per review * Consolidated duplicated code per review
1 parent 7b7dabe commit 4f5dedb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+154
-154
lines changed

.clang-tidy

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Checks: >
2323
performance-no-automatic-move,
2424
performance-noexcept-move-constructor,
2525
performance-type-promotion-in-math-fn,
26+
readability-container-data-pointer,
2627
readability-container-size-empty,
2728
readability-delete-null-pointer,
2829
readability-duplicate-include,

common/include/pcl/common/impl/intersections.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ lineWithLineIntersection (const pcl::ModelCoefficients &line_a,
7070
const pcl::ModelCoefficients &line_b,
7171
Eigen::Vector4f &point, double sqr_eps)
7272
{
73-
Eigen::VectorXf coeff1 = Eigen::VectorXf::Map (&line_a.values[0], line_a.values.size ());
74-
Eigen::VectorXf coeff2 = Eigen::VectorXf::Map (&line_b.values[0], line_b.values.size ());
73+
Eigen::VectorXf coeff1 = Eigen::VectorXf::Map (line_a.values.data(), line_a.values.size ());
74+
Eigen::VectorXf coeff2 = Eigen::VectorXf::Map (line_b.values.data(), line_b.values.size ());
7575
return (lineWithLineIntersection (coeff1, coeff2, point, sqr_eps));
7676
}
7777

common/include/pcl/common/impl/io.hpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ namespace detail
133133
pcl::PointCloud<PointT> &cloud_out)
134134
{
135135
// Use std::copy directly, if the point types of two clouds are same
136-
std::copy (&cloud_in[0], (&cloud_in[0]) + cloud_in.size (), &cloud_out[0]);
136+
std::copy (cloud_in.data(), cloud_in.data() + cloud_in.size (), cloud_out.data());
137137
}
138138

139139
} // namespace detail
@@ -360,8 +360,8 @@ copyPointCloud (const pcl::PointCloud<PointT> &cloud_in, pcl::PointCloud<PointT>
360360

361361
if (border_type == pcl::BORDER_TRANSPARENT)
362362
{
363-
const PointT* in = &(cloud_in[0]);
364-
PointT* out = &(cloud_out[0]);
363+
const PointT* in = cloud_in.data();
364+
PointT* out = cloud_out.data();
365365
PointT* out_inner = out + cloud_out.width*top + left;
366366
for (std::uint32_t i = 0; i < cloud_in.height; i++, out_inner += cloud_out.width, in += cloud_in.width)
367367
{
@@ -387,8 +387,8 @@ copyPointCloud (const pcl::PointCloud<PointT> &cloud_in, pcl::PointCloud<PointT>
387387
for (int i = 0; i < right; i++)
388388
padding[i+left] = pcl::interpolatePointIndex (cloud_in.width+i, cloud_in.width, border_type);
389389

390-
const PointT* in = &(cloud_in[0]);
391-
PointT* out = &(cloud_out[0]);
390+
const PointT* in = cloud_in.data();
391+
PointT* out = cloud_out.data();
392392
PointT* out_inner = out + cloud_out.width*top + left;
393393

394394
for (std::uint32_t i = 0; i < cloud_in.height; i++, out_inner += cloud_out.width, in += cloud_in.width)
@@ -428,9 +428,9 @@ copyPointCloud (const pcl::PointCloud<PointT> &cloud_in, pcl::PointCloud<PointT>
428428
int right = cloud_out.width - cloud_in.width - left;
429429
int bottom = cloud_out.height - cloud_in.height - top;
430430
std::vector<PointT> buff (cloud_out.width, value);
431-
PointT* buff_ptr = &(buff[0]);
432-
const PointT* in = &(cloud_in[0]);
433-
PointT* out = &(cloud_out[0]);
431+
PointT* buff_ptr = buff.data();
432+
const PointT* in = cloud_in.data();
433+
PointT* out = cloud_out.data();
434434
PointT* out_inner = out + cloud_out.width*top + left;
435435

436436
for (std::uint32_t i = 0; i < cloud_in.height; i++, out_inner += cloud_out.width, in += cloud_in.width)

common/src/range_image.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,7 @@ RangeImage::extractFarRanges (const pcl::PCLPointCloud2& point_cloud_data,
826826
}
827827

828828
int point_step = point_cloud_data.point_step;
829-
const unsigned char* data = &point_cloud_data.data[0];
829+
const unsigned char* data = point_cloud_data.data.data();
830830
int x_offset = point_cloud_data.fields[x_idx].offset,
831831
y_offset = point_cloud_data.fields[y_idx].offset,
832832
z_offset = point_cloud_data.fields[z_idx].offset,

features/include/pcl/features/impl/brisk_2d.hpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ BRISK2DEstimation<PointInT, PointOutT, KeypointT, IntensityT>::smoothedIntensity
249249
const int r_y_1 = (1024 - r_y);
250250

251251
//+const unsigned char* ptr = static_cast<const unsigned char*> (&image[0].r) + x + y * imagecols;
252-
const unsigned char* ptr = static_cast<const unsigned char*>(&image[0]) + x + y * imagecols;
252+
const unsigned char* ptr = static_cast<const unsigned char*>(image.data()) + x + y * imagecols;
253253

254254
// just interpolate:
255255
ret_val = (r_x_1 * r_y_1 * static_cast<int>(*ptr));
@@ -312,7 +312,7 @@ BRISK2DEstimation<PointInT, PointOutT, KeypointT, IntensityT>::smoothedIntensity
312312
// now the calculation:
313313

314314
//+const unsigned char* ptr = static_cast<const unsigned char*> (&image[0].r) + x_left + imagecols * y_top;
315-
const unsigned char* ptr = static_cast<const unsigned char*>(&image[0]) + x_left + imagecols * y_top;
315+
const unsigned char* ptr = static_cast<const unsigned char*>(image.data()) + x_left + imagecols * y_top;
316316

317317
// first the corners:
318318
ret_val = A * static_cast<int>(*ptr);
@@ -334,7 +334,7 @@ BRISK2DEstimation<PointInT, PointOutT, KeypointT, IntensityT>::smoothedIntensity
334334

335335
// next the edges:
336336
//+int* ptr_integral;// = static_cast<int*> (integral.data) + x_left + integralcols * y_top + 1;
337-
const int* ptr_integral = static_cast<const int*> (&integral_image[0]) + x_left + integralcols * y_top + 1;
337+
const int* ptr_integral = static_cast<const int*> (integral_image.data()) + x_left + integralcols * y_top + 1;
338338

339339
// find a simple path through the different surface corners
340340
const int tmp1 = (*ptr_integral);
@@ -374,7 +374,7 @@ BRISK2DEstimation<PointInT, PointOutT, KeypointT, IntensityT>::smoothedIntensity
374374
// now the calculation:
375375

376376
//const unsigned char* ptr = static_cast<const unsigned char*> (&image[0].r) + x_left + imagecols * y_top;
377-
const unsigned char* ptr = static_cast<const unsigned char*>(&image[0]) + x_left + imagecols * y_top;
377+
const unsigned char* ptr = static_cast<const unsigned char*>(image.data()) + x_left + imagecols * y_top;
378378

379379
// first row:
380380
ret_val = A * static_cast<int>(*ptr);

features/include/pcl/features/impl/integral_image2D.hpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -156,12 +156,12 @@ template <typename DataType, unsigned Dimension> void
156156
IntegralImage2D<DataType, Dimension>::computeIntegralImages (
157157
const DataType *data, unsigned row_stride, unsigned element_stride)
158158
{
159-
ElementType* previous_row = &first_order_integral_image_[0];
159+
ElementType* previous_row = first_order_integral_image_.data();
160160
ElementType* current_row = previous_row + (width_ + 1);
161161
for (unsigned int i = 0; i < (width_ + 1); ++i)
162162
previous_row[i].setZero();
163163

164-
unsigned* count_previous_row = &finite_values_integral_image_[0];
164+
unsigned* count_previous_row = finite_values_integral_image_.data();
165165
unsigned* count_current_row = count_previous_row + (width_ + 1);
166166
std::fill_n(count_previous_row, width_ + 1, 0);
167167

@@ -188,7 +188,7 @@ IntegralImage2D<DataType, Dimension>::computeIntegralImages (
188188
}
189189
else
190190
{
191-
SecondOrderType* so_previous_row = &second_order_integral_image_[0];
191+
SecondOrderType* so_previous_row = second_order_integral_image_.data();
192192
SecondOrderType* so_current_row = so_previous_row + (width_ + 1);
193193
for (unsigned int i = 0; i < (width_ + 1); ++i)
194194
so_previous_row[i].setZero();
@@ -327,11 +327,11 @@ template <typename DataType> void
327327
IntegralImage2D<DataType, 1>::computeIntegralImages (
328328
const DataType *data, unsigned row_stride, unsigned element_stride)
329329
{
330-
ElementType* previous_row = &first_order_integral_image_[0];
330+
ElementType* previous_row = first_order_integral_image_.data();
331331
ElementType* current_row = previous_row + (width_ + 1);
332332
std::fill_n(previous_row, width_ + 1, 0);
333333

334-
unsigned* count_previous_row = &finite_values_integral_image_[0];
334+
unsigned* count_previous_row = finite_values_integral_image_.data();
335335
unsigned* count_current_row = count_previous_row + (width_ + 1);
336336
std::fill_n(count_previous_row, width_ + 1, 0);
337337

@@ -357,7 +357,7 @@ IntegralImage2D<DataType, 1>::computeIntegralImages (
357357
}
358358
else
359359
{
360-
SecondOrderType* so_previous_row = &second_order_integral_image_[0];
360+
SecondOrderType* so_previous_row = second_order_integral_image_.data();
361361
SecondOrderType* so_current_row = so_previous_row + (width_ + 1);
362362
std::fill_n(so_previous_row, width_ + 1, 0);
363363

filters/src/passthrough.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ pcl::PassThrough<pcl::PCLPointCloud2>::applyFilter (PCLPointCloud2 &output)
217217
}
218218

219219
// Unoptimized memcpys: assume fields x, y, z are in random order
220-
memcpy (&pt[0], &input_->data[xyz_offset[0]], sizeof(float));
220+
memcpy (&pt[0], &input_->data[xyz_offset[0]], sizeof(float)); // NOLINT(readability-container-data-pointer)
221221
memcpy (&pt[1], &input_->data[xyz_offset[1]], sizeof(float));
222222
memcpy (&pt[2], &input_->data[xyz_offset[2]], sizeof(float));
223223

@@ -245,7 +245,7 @@ pcl::PassThrough<pcl::PCLPointCloud2>::applyFilter (PCLPointCloud2 &output)
245245
for (int cp = 0; cp < nr_points; ++cp, xyz_offset += input_->point_step)
246246
{
247247
// Unoptimized memcpys: assume fields x, y, z are in random order
248-
memcpy (&pt[0], &input_->data[xyz_offset[0]], sizeof(float));
248+
memcpy (&pt[0], &input_->data[xyz_offset[0]], sizeof(float)); // NOLINT(readability-container-data-pointer)
249249
memcpy (&pt[1], &input_->data[xyz_offset[1]], sizeof(float));
250250
memcpy (&pt[2], &input_->data[xyz_offset[2]], sizeof(float));
251251

filters/src/voxel_grid.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
#include <array>
4646

4747
using Array4size_t = Eigen::Array<std::size_t, 4, 1>;
48-
48+
// NOLINTBEGIN(readability-container-data-pointer)
4949
///////////////////////////////////////////////////////////////////////////////////////////
5050
void
5151
pcl::getMinMax3D (const pcl::PCLPointCloud2ConstPtr &cloud, int x_idx, int y_idx, int z_idx,
@@ -525,7 +525,7 @@ pcl::VoxelGrid<pcl::PCLPointCloud2>::applyFilter (PCLPointCloud2 &output)
525525
++index;
526526
}
527527
}
528-
528+
// NOLINTEND(readability-container-data-pointer)
529529
#ifndef PCL_NO_PRECOMPILE
530530
#include <pcl/impl/instantiate.hpp>
531531
#include <pcl/point_types.h>

io/include/pcl/compression/impl/entropy_range_coder.hpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ pcl::AdaptiveRangeCoder::encodeCharVectorToStream (const std::vector<char>& inpu
119119
}
120120

121121
// write to stream
122-
outputByteStream_arg.write (&outputCharVector_[0], outputCharVector_.size ());
122+
outputByteStream_arg.write (outputCharVector_.data(), outputCharVector_.size ());
123123

124124
return (static_cast<unsigned long> (outputCharVector_.size ()));
125125
}
@@ -340,7 +340,7 @@ pcl::StaticRangeCoder::encodeIntVectorToStream (std::vector<unsigned int>& input
340340
}
341341

342342
// write encoded data to stream
343-
outputByteStream_arg.write (&outputCharVector_[0], outputCharVector_.size ());
343+
outputByteStream_arg.write (outputCharVector_.data(), outputCharVector_.size ());
344344

345345
streamByteCount += static_cast<unsigned long> (outputCharVector_.size ());
346346

@@ -528,7 +528,7 @@ pcl::StaticRangeCoder::encodeCharVectorToStream (const std::vector<char>& inputB
528528
}
529529

530530
// write encoded data to stream
531-
outputByteStream_arg.write (&outputCharVector_[0], outputCharVector_.size ());
531+
outputByteStream_arg.write (outputCharVector_.data(), outputCharVector_.size ());
532532

533533
streamByteCount += static_cast<unsigned long> (outputCharVector_.size ());
534534

io/include/pcl/compression/impl/organized_pointcloud_compression.hpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ namespace pcl
109109
// Encode size of compressed disparity image data
110110
compressedDataOut_arg.write (reinterpret_cast<const char*> (&compressedDisparitySize), sizeof (compressedDisparitySize));
111111
// Output compressed disparity to ostream
112-
compressedDataOut_arg.write (reinterpret_cast<const char*> (&compressedDisparity[0]), compressedDisparity.size () * sizeof(std::uint8_t));
112+
compressedDataOut_arg.write (reinterpret_cast<const char*> (compressedDisparity.data()), compressedDisparity.size () * sizeof(std::uint8_t));
113113

114114
// Compress color information
115115
if (CompressionPointTraits<PointT>::hasColor && doColorEncoding)
@@ -127,7 +127,7 @@ namespace pcl
127127
// Encode size of compressed Color image data
128128
compressedDataOut_arg.write (reinterpret_cast<const char*> (&compressedColorSize), sizeof (compressedColorSize));
129129
// Output compressed disparity to ostream
130-
compressedDataOut_arg.write (reinterpret_cast<const char*> (&compressedColor[0]), compressedColor.size () * sizeof(std::uint8_t));
130+
compressedDataOut_arg.write (reinterpret_cast<const char*> (compressedColor.data()), compressedColor.size () * sizeof(std::uint8_t));
131131

132132
if (bShowStatistics_arg)
133133
{
@@ -194,8 +194,8 @@ namespace pcl
194194
std::uint32_t compressedColorSize = 0;
195195

196196
// Remove color information of invalid points
197-
std::uint16_t* depth_ptr = &disparityMap_arg[0];
198-
std::uint8_t* color_ptr = &colorImage_arg[0];
197+
std::uint16_t* depth_ptr = disparityMap_arg.data();
198+
std::uint8_t* color_ptr = colorImage_arg.data();
199199

200200
for (std::size_t i = 0; i < cloud_size; ++i, ++depth_ptr, color_ptr += sizeof(std::uint8_t) * 3)
201201
{
@@ -211,7 +211,7 @@ namespace pcl
211211
// Encode size of compressed disparity image data
212212
compressedDataOut_arg.write (reinterpret_cast<const char*> (&compressedDisparitySize), sizeof (compressedDisparitySize));
213213
// Output compressed disparity to ostream
214-
compressedDataOut_arg.write (reinterpret_cast<const char*> (&compressedDisparity[0]), compressedDisparity.size () * sizeof(std::uint8_t));
214+
compressedDataOut_arg.write (reinterpret_cast<const char*> (compressedDisparity.data()), compressedDisparity.size () * sizeof(std::uint8_t));
215215

216216
// Compress color information
217217
if (!colorImage_arg.empty () && doColorEncoding)
@@ -244,7 +244,7 @@ namespace pcl
244244
// Encode size of compressed Color image data
245245
compressedDataOut_arg.write (reinterpret_cast<const char*> (&compressedColorSize), sizeof (compressedColorSize));
246246
// Output compressed disparity to ostream
247-
compressedDataOut_arg.write (reinterpret_cast<const char*> (&compressedColor[0]), compressedColor.size () * sizeof(std::uint8_t));
247+
compressedDataOut_arg.write (reinterpret_cast<const char*> (compressedColor.data()), compressedColor.size () * sizeof(std::uint8_t));
248248

249249
if (bShowStatistics_arg)
250250
{
@@ -320,12 +320,12 @@ namespace pcl
320320
// reading compressed disparity data
321321
compressedDataIn_arg.read (reinterpret_cast<char*> (&compressedDisparitySize), sizeof (compressedDisparitySize));
322322
compressedDisparity.resize (compressedDisparitySize);
323-
compressedDataIn_arg.read (reinterpret_cast<char*> (&compressedDisparity[0]), compressedDisparitySize * sizeof(std::uint8_t));
323+
compressedDataIn_arg.read (reinterpret_cast<char*> (compressedDisparity.data()), compressedDisparitySize * sizeof(std::uint8_t));
324324

325325
// reading compressed rgb data
326326
compressedDataIn_arg.read (reinterpret_cast<char*> (&compressedColorSize), sizeof (compressedColorSize));
327327
compressedColor.resize (compressedColorSize);
328-
compressedDataIn_arg.read (reinterpret_cast<char*> (&compressedColor[0]), compressedColorSize * sizeof(std::uint8_t));
328+
compressedDataIn_arg.read (reinterpret_cast<char*> (compressedColor.data()), compressedColorSize * sizeof(std::uint8_t));
329329

330330
std::size_t png_width = 0;
331331
std::size_t png_height = 0;

io/include/pcl/io/impl/lzf_image_io.hpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ LZFRGB24ImageReader::read (
236236
cloud.resize (getWidth () * getHeight ());
237237

238238
int rgb_idx = 0;
239-
auto *color_r = reinterpret_cast<unsigned char*> (&uncompressed_data[0]);
239+
auto *color_r = reinterpret_cast<unsigned char*> (uncompressed_data.data());
240240
auto *color_g = reinterpret_cast<unsigned char*> (&uncompressed_data[getWidth () * getHeight ()]);
241241
auto *color_b = reinterpret_cast<unsigned char*> (&uncompressed_data[2 * getWidth () * getHeight ()]);
242242

@@ -284,7 +284,7 @@ LZFRGB24ImageReader::readOMP (
284284
cloud.height = getHeight ();
285285
cloud.resize (getWidth () * getHeight ());
286286

287-
auto *color_r = reinterpret_cast<unsigned char*> (&uncompressed_data[0]);
287+
auto *color_r = reinterpret_cast<unsigned char*> (uncompressed_data.data());
288288
auto *color_g = reinterpret_cast<unsigned char*> (&uncompressed_data[getWidth () * getHeight ()]);
289289
auto *color_b = reinterpret_cast<unsigned char*> (&uncompressed_data[2 * getWidth () * getHeight ()]);
290290

@@ -341,7 +341,7 @@ LZFYUV422ImageReader::read (
341341
cloud.resize (getWidth () * getHeight ());
342342

343343
int wh2 = getWidth () * getHeight () / 2;
344-
auto *color_u = reinterpret_cast<unsigned char*> (&uncompressed_data[0]);
344+
auto *color_u = reinterpret_cast<unsigned char*> (uncompressed_data.data());
345345
auto *color_y = reinterpret_cast<unsigned char*> (&uncompressed_data[wh2]);
346346
auto *color_v = reinterpret_cast<unsigned char*> (&uncompressed_data[wh2 + getWidth () * getHeight ()]);
347347

@@ -399,7 +399,7 @@ LZFYUV422ImageReader::readOMP (
399399
cloud.resize (getWidth () * getHeight ());
400400

401401
int wh2 = getWidth () * getHeight () / 2;
402-
auto *color_u = reinterpret_cast<unsigned char*> (&uncompressed_data[0]);
402+
auto *color_u = reinterpret_cast<unsigned char*> (uncompressed_data.data());
403403
auto *color_y = reinterpret_cast<unsigned char*> (&uncompressed_data[wh2]);
404404
auto *color_v = reinterpret_cast<unsigned char*> (&uncompressed_data[wh2 + getWidth () * getHeight ()]);
405405

@@ -462,8 +462,8 @@ LZFBayer8ImageReader::read (
462462
// Convert Bayer8 to RGB24
463463
std::vector<unsigned char> rgb_buffer (getWidth () * getHeight () * 3);
464464
DeBayer i;
465-
i.debayerEdgeAware (reinterpret_cast<unsigned char*> (&uncompressed_data[0]),
466-
static_cast<unsigned char*> (&rgb_buffer[0]),
465+
i.debayerEdgeAware (reinterpret_cast<unsigned char*> (uncompressed_data.data()),
466+
static_cast<unsigned char*> (rgb_buffer.data()),
467467
getWidth (), getHeight ());
468468
// Copy to PointT
469469
cloud.width = getWidth ();
@@ -512,8 +512,8 @@ LZFBayer8ImageReader::readOMP (
512512
// Convert Bayer8 to RGB24
513513
std::vector<unsigned char> rgb_buffer (getWidth () * getHeight () * 3);
514514
DeBayer i;
515-
i.debayerEdgeAware (reinterpret_cast<unsigned char*> (&uncompressed_data[0]),
516-
static_cast<unsigned char*> (&rgb_buffer[0]),
515+
i.debayerEdgeAware (reinterpret_cast<unsigned char*> (uncompressed_data.data()),
516+
static_cast<unsigned char*> (rgb_buffer.data()),
517517
getWidth (), getHeight ());
518518
// Copy to PointT
519519
cloud.width = getWidth ();

io/include/pcl/io/impl/point_cloud_image_extractors.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ pcl::io::PointCloudImageExtractorFromLabelField<PointT>::extractImpl (const Poin
154154
img.height = cloud.height;
155155
img.step = img.width * sizeof (unsigned short);
156156
img.data.resize (img.step * img.height);
157-
auto* data = reinterpret_cast<unsigned short*>(&img.data[0]);
157+
auto* data = reinterpret_cast<unsigned short*>(img.data.data());
158158
for (std::size_t i = 0; i < cloud.size (); ++i)
159159
{
160160
std::uint32_t val;
@@ -255,7 +255,7 @@ pcl::io::PointCloudImageExtractorWithScaling<PointT>::extractImpl (const PointCl
255255
img.height = cloud.height;
256256
img.step = img.width * sizeof (unsigned short);
257257
img.data.resize (img.step * img.height);
258-
auto* data = reinterpret_cast<unsigned short*>(&img.data[0]);
258+
auto* data = reinterpret_cast<unsigned short*>(img.data.data());
259259

260260
float scaling_factor = scaling_factor_;
261261
float data_min = 0.0f;

io/src/ascii_io.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ pcl::ASCIIReader::read (
143143

144144
int total=0;
145145

146-
std::uint8_t* data = &cloud.data[0];
146+
std::uint8_t* data = cloud.data.data();
147147
while (std::getline (ifile, line))
148148
{
149149
boost::algorithm::trim (line);

0 commit comments

Comments
 (0)