MCPcopy Create free account
hub / github.com/GaijinEntertainment/daScript / walk_struct

Method walk_struct

src/simulate/data_walker.cpp:24–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22 }
23
24 void DataWalker::walk_struct ( char * ps, StructInfo * si ) {
25 if ( ps && (si->flags & StructInfo::flag_class) ) {
26 auto ti = *(TypeInfo **) ps;
27 if ( ti!=nullptr ) si = ti->structType;
28 else invalidData(); // we are walking uninitialized class here
29 }
30 if ( canVisitStructure_(ps, si) ) {
31 beforeStructure_(ps, si);
32 if ( cancel() ) {
33 afterStructureCancel_(ps, si);
34 return;
35 }
36 for ( uint32_t i=0, is=si->count; i!=is; ++i ) {
37 bool last = i==(si->count-1);
38 VarInfo * vi = si->fields[i];
39 char * pf = ps + vi->offset;
40 beforeStructureField(ps, si, pf, vi, last);
41 if ( cancel() ) {
42 afterStructureCancel_(ps, si);
43 return;
44 }
45 walk(pf, vi);
46 if ( cancel() ) {
47 afterStructureCancel_(ps, si);
48 return;
49 }
50 afterStructureField(ps, si, pf, vi, last);
51 if ( cancel() ) {
52 afterStructureCancel_(ps, si);
53 return;
54 }
55 }
56 afterStructure_(ps, si);
57 }
58 }
59
60 void DataWalker::walk_tuple ( char * ps, TypeInfo * ti ) {
61 if ( canVisitTuple(ps,ti) ) {

Callers 2

walkMethod · 0.45
dapiWalkDataSFunction · 0.45

Calls 9

invalidDataFunction · 0.85
canVisitStructure_Function · 0.85
beforeStructure_Function · 0.85
cancelFunction · 0.85
afterStructureCancel_Function · 0.85
beforeStructureFieldFunction · 0.85
walkFunction · 0.85
afterStructureFieldFunction · 0.85
afterStructure_Function · 0.85

Tested by

no test coverage detected