MCPcopy Create free account
hub / github.com/LASzip/LASzip / check_item

Method check_item

src/laszip.cpp:225–278  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

223}
224
225bool LASzip::check_item(const LASitem* item)
226{
227 switch (item->type)
228 {
229 case LASitem::POINT10:
230 if (item->size != 20) return return_error("POINT10 has size != 20");
231 if (item->version > 2) return return_error("POINT10 has version > 2");
232 break;
233 case LASitem::GPSTIME11:
234 if (item->size != 8) return return_error("GPSTIME11 has size != 8");
235 if (item->version > 2) return return_error("GPSTIME11 has version > 2");
236 break;
237 case LASitem::RGB12:
238 if (item->size != 6) return return_error("RGB12 has size != 6");
239 if (item->version > 2) return return_error("RGB12 has version > 2");
240 break;
241 case LASitem::BYTE:
242 if (item->size < 1) return return_error("BYTE has size < 1");
243 if (item->version > 2) return return_error("BYTE has version > 2");
244 break;
245 case LASitem::POINT14:
246 if (item->size != 30) return return_error("POINT14 has size != 30");
247 if ((item->version != 0) && (item->version != 2) && (item->version != 3) && (item->version != 4)) return return_error("POINT14 has version != 0 and != 2 and != 3 and != 4"); // version == 2 from lasproto, version == 4 fixes context-switch
248 break;
249 case LASitem::RGB14:
250 if (item->size != 6) return return_error("RGB14 has size != 6");
251 if ((item->version != 0) && (item->version != 2) && (item->version != 3) && (item->version != 4)) return return_error("RGB14 has version != 0 and != 2 and != 3 and != 4"); // version == 2 from lasproto, version == 4 fixes context-switch
252 break;
253 case LASitem::RGBNIR14:
254 if (item->size != 8) return return_error("RGBNIR14 has size != 8");
255 if ((item->version != 0) && (item->version != 2) && (item->version != 3) && (item->version != 4)) return return_error("RGBNIR14 has version != 0 and != 2 and != 3 and != 4"); // version == 2 from lasproto, version == 4 fixes context-switch
256 break;
257 case LASitem::BYTE14:
258 if (item->size < 1) return return_error("BYTE14 has size < 1");
259 if ((item->version != 0) && (item->version != 2) && (item->version != 3) && (item->version != 4)) return return_error("BYTE14 has version != 0 and != 2 and != 3 and != 4"); // version == 2 from lasproto, version == 4 fixes context-switch
260 break;
261 case LASitem::WAVEPACKET13:
262 if (item->size != 29) return return_error("WAVEPACKET13 has size != 29");
263 if (item->version > 1) return return_error("WAVEPACKET13 has version > 1");
264 break;
265 case LASitem::WAVEPACKET14:
266 if (item->size != 29) return return_error("WAVEPACKET14 has size != 29");
267 if ((item->version != 0) && (item->version != 3) && (item->version != 4)) return return_error("WAVEPACKET14 has version != 0 and != 3 and != 4"); // version == 4 fixes context-switch
268 break;
269 default:
270 if (1)
271 {
272 char error[64];
273 snprintf(error, sizeof(error), "item unknown (%d,%d,%d)", item->type, item->size, item->version);
274 return return_error(error);
275 }
276 }
277 return true;
278}
279
280bool LASzip::check_items(const U16 num_items, const LASitem* items, const U16 point_size)
281{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected