| 119 | } |
| 120 | |
| 121 | void DataWalker::walk_dim ( char * pa, TypeInfo * ti ) { |
| 122 | TypeInfo copyInfo = *ti; |
| 123 | DAS_ASSERT(copyInfo.dimSize); |
| 124 | copyInfo.size = ti->dim[0] ? copyInfo.size / ti->dim[0] : copyInfo.size; |
| 125 | copyInfo.dimSize --; |
| 126 | vector<uint32_t> udim; |
| 127 | if ( copyInfo.dimSize ) { |
| 128 | for ( uint32_t i=0, is=copyInfo.dimSize; i!=is; ++i) { |
| 129 | udim.push_back(ti->dim[i+1]); |
| 130 | } |
| 131 | copyInfo.dim = udim.data(); |
| 132 | } else { |
| 133 | copyInfo.dim = nullptr; |
| 134 | } |
| 135 | uint32_t stride = copyInfo.size; |
| 136 | uint32_t count = ti->dim[0]; |
| 137 | walk_array(pa, stride, count, ©Info); |
| 138 | } |
| 139 | |
| 140 | void DataWalker::walk_table ( Table * tab, TypeInfo * info ) { |
| 141 | if ( !canVisitTableData(info) ) return; |