33 */
44
55#include " PointLayout.h"
6+ #include " DimType.h"
67
7- #include < pdal/Dimension.hpp>
88#include < pdal/DimType.hpp>
99#include < pdal/PointLayout.hpp>
1010
1111namespace pdal
1212{
1313 namespace capi
1414 {
15- size_t PDALGetDimTypeListSize (PDALDimTypeListPtr types)
16- {
17- pdal::capi::DimTypeList *wrapper = reinterpret_cast <pdal::capi::DimTypeList *>(types);
18-
19- size_t size = 0 ;
20-
21- if (wrapper && wrapper->get ())
22- {
23- try
24- {
25- pdal::DimTypeList *list = wrapper->get ();
26- size = list->size ();
27- }
28- catch (const std::exception &e)
29- {
30- printf (" %s\n " , e.what ());
31- }
32- }
33-
34- return size;
35- }
36-
37-
38- size_t PDALGetDimTypeIdName (PDALDimType dim, char *name, size_t size)
39- {
40- size_t result = 0 ;
41-
42- if (name && size > 0 )
43- {
44- std::string s = pdal::Dimension::name (
45- static_cast <pdal::Dimension::Id>(dim.id ));
46- std::strncpy (name, s.c_str (), size);
47- result = std::min (std::strlen (name), size);
48- }
49-
50- return result;
51- }
52-
53- size_t PDALGetDimTypeInterpretationName (PDALDimType dim, char *name, size_t size)
54- {
55- size_t result = 0 ;
56-
57- if (name && size > 0 )
58- {
59- std::string s = pdal::Dimension::interpretationName (
60- static_cast <pdal::Dimension::Type>(dim.type ));
61- std::strncpy (name, s.c_str (), size);
62- result = std::min (std::strlen (name), size);
63- }
64-
65- return result;
66- }
67-
68-
69- PDALDimType PDALGetDimType (PDALDimTypeListPtr types, size_t index)
70- {
71- pdal::capi::DimTypeList *wrapper = reinterpret_cast <pdal::capi::DimTypeList *>(types);
72-
73- PDALDimType dim = {
74- static_cast <uint32_t >(pdal::Dimension::id (" " )), static_cast <uint32_t >(pdal::Dimension::type (" " )),
75- 1.0 , 0.0
76- };
77-
78- if (wrapper && wrapper->get ())
79- {
80- try
81- {
82- pdal::DimTypeList *list = wrapper->get ();
83-
84- if (index < list->size ())
85- {
86- pdal::DimType nativeDim = list->at (index);
87- dim.id = static_cast <uint32_t >(nativeDim.m_id );
88- dim.type = static_cast <uint32_t >(nativeDim.m_type );
89- dim.scale = nativeDim.m_xform .m_scale .m_val ;
90- dim.offset = nativeDim.m_xform .m_offset .m_val ;
91- }
92- }
93- catch (const std::exception &e)
94- {
95- printf (" %s\n " , e.what ());
96- }
97- }
98-
99- return dim;
100- }
10115
10216 PDALDimTypeListPtr PDALGetPointLayoutDimTypes (PDALPointLayoutPtr layout)
10317 {
@@ -114,22 +28,9 @@ namespace pdal
11428 return types;
11529 }
11630
117- void PDALDisposeDimTypeList (PDALDimTypeListPtr types)
118- {
119- if (types)
120- {
121- pdal::capi::DimTypeList *ptr = reinterpret_cast <pdal::capi::DimTypeList *>(types);
122- delete ptr;
123- }
124- }
125-
12631 PDALDimType PDALFindDimType (PDALPointLayoutPtr layout, const char *name)
12732 {
128- PDALDimType dim = {
129- static_cast <uint32_t >(pdal::Dimension::id (" " )), static_cast <uint32_t >(pdal::Dimension::type (" " )),
130- 1.0 , 0.0
131- };
132-
33+ PDALDimType dim = PDALGetInvalidDimType ();
13334 pdal::PointLayoutPtr nativeLayout = reinterpret_cast <pdal::PointLayoutPtr>(layout);
13435
13536 if (name && nativeLayout)
0 commit comments