MCPcopy
hub / github.com/go-qml/qml / ensureEngine

Function ensureEngine

bridge.go:571–605  ·  view source on GitHub ↗
(enginep, foldp unsafe.Pointer)

Source from the content-addressed store, hash-verified

569}
570
571func ensureEngine(enginep, foldp unsafe.Pointer) *valueFold {
572 fold := (*valueFold)(foldp)
573 if fold.engine != nil {
574 if fold.init.IsValid() {
575 initGoType(fold)
576 }
577 return fold
578 }
579
580 if enginep == nilPtr {
581 panic("accessing value without an engine pointer; who created the value?")
582 }
583 engine := engines[enginep]
584 if engine == nil {
585 panic("unknown engine pointer; who created the engine?")
586 }
587 fold.engine = engine
588 prev := engine.values[fold.gvalue]
589 if prev != nil {
590 for prev.next != nil {
591 prev = prev.next
592 }
593 prev.next = fold
594 fold.prev = prev
595 } else {
596 engine.values[fold.gvalue] = fold
597 }
598 before := len(typeNew)
599 delete(typeNew, fold)
600 if len(typeNew) == before {
601 panic("value had no engine, but was not created by a registered type; who created the value?")
602 }
603 initGoType(fold)
604 return fold
605}
606
607func initGoType(fold *valueFold) {
608 if cdata.Ref() == atomic.LoadUintptr(&guiPaintRef) {

Callers 5

hookGoValueReadFieldFunction · 0.85
hookGoValueWriteFieldFunction · 0.85
hookGoValueCallMethodFunction · 0.85
hookGoValuePaintFunction · 0.85
unpackDataValueFunction · 0.85

Calls 1

initGoTypeFunction · 0.85

Tested by

no test coverage detected