SpiecsEngine
 
Loading...
Searching...
No Matches

◆ GetElement()

template<class type >
type Spices::GltfHelper::GetElement ( const Json::object_t * pRoot,
const char * path,
type pDefault )
inlinestaticprivate

Get specific type in Json::object_t.

Template Parameters
typespecific type.
Parameters
[in]pRootjson object.
[in]pathtype name.
[in]pDefaultdefault return value. return Returns value if found or default if not.

Definition at line 130 of file GltfHelper.h.

131 {
133
134 const char* p = path;
135 char token[128];
136 while (true)
137 {
138 for (; *p != '/' && *p != 0 && *p != '['; p++);
139 memcpy(token, path, p - path);
140 token[p - path] = 0;
141
142 auto it = pRoot->find(token);
143 if (it == pRoot->end())
144 {
145 return pDefault;
146 }
147
148 if (*p == '[')
149 {
150 p++;
151 int i = atoi(p);
152 for (; *p != 0 && *p != ']'; p++);
153 pRoot = it->second.at(i).get_ptr<const Json::object_t*>();
154 p++;
155 }
156 else
157 {
158 if (it->second.is_object())
159 {
160 pRoot = it->second.get_ptr<const Json::object_t*>();
161 }
162 else
163 {
164 return it->second.get<type>();
165 }
166 }
167 p++;
168 path = p;
169 }
170
171 return pDefault;
172 }
#define SPICES_PROFILE_ZONE