MCPcopy
hub / github.com/g3n/engine / decNextChild

Method decNextChild

loader/collada/common.go:245–288  ·  view source on GitHub ↗
(parent xml.StartElement)

Source from the content-addressed store, hash-verified

243}
244
245func (d *Decoder) decNextChild(parent xml.StartElement) (xml.StartElement, []byte, error) {
246
247 for {
248 var tok interface{}
249 var err error
250 // Reads next token
251 if d.lastToken == nil {
252 tok, err = d.xmldec.Token()
253 if err != nil {
254 return xml.StartElement{}, nil, err
255 }
256 } else {
257 tok = d.lastToken
258 d.lastToken = nil
259 }
260 // Checks if it is the end element of this parent
261 el, ok := tok.(xml.EndElement)
262 if ok {
263 if el.Name.Local == parent.Name.Local {
264 return xml.StartElement{}, nil, nil
265 }
266 continue
267 }
268 // Checks if it is a start element
269 start, ok := tok.(xml.StartElement)
270 if !ok {
271 continue
272 }
273 // Get this start element optional char data (should be next token)
274 tok, err = d.xmldec.Token()
275 if err != nil {
276 return xml.StartElement{}, nil, err
277 }
278 // If token read is CharData, return the start element and its CharData
279 cdata, ok := tok.(xml.CharData)
280 if ok {
281 return start, cdata, nil
282 }
283 // Token read was not CharData and was not processed
284 // Save it into "lastToken" to be processed at the next call
285 d.lastToken = tok
286 return start, nil, nil
287 }
288}
289
290func findAttrib(s xml.StartElement, name string) xml.Attr {
291

Callers 15

decLibraryMaterialsMethod · 0.95
decMaterialMethod · 0.95
decInstanceEffectMethod · 0.95
decLibraryGeometriesMethod · 0.95
decGeometryMethod · 0.95
decMeshMethod · 0.95
decVerticesMethod · 0.95
decLinesMethod · 0.95
decPolylistMethod · 0.95
decTrianglesMethod · 0.95
decSourceMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected