Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifdef BUILD_DEBUG
- inline void print_stack(void) const {
- printf("Printing stack:\n");
- printf("INDEX | LOADED | TYPE | POINTERS\n");
- #define NUM_TARGETS 16
- #define CHECK_TARGETS(K,CMPVAL,COMBINE) (\
- (targets[K][1]CMPVAL) COMBINE (targets[K][2]CMPVAL) COMBINE (targets[K][3]CMPVAL) COMBINE (targets[K][4]CMPVAL) COMBINE\
- (targets[K][5]CMPVAL) COMBINE (targets[K][6]CMPVAL) COMBINE (targets[K][7]CMPVAL) COMBINE (targets[K][8]CMPVAL)\
- )
- int targets[NUM_TARGETS][1+8]; for (int i=0;i<NUM_TARGETS;++i) for (int j=0;j<8;++j) targets[i][1+j]=-1;
- for (int i=0;i<MAX_SLOTS;++i) {
- _Node const* current = CNODE(i);
- if (i>0) { printf(" | | | "); for (int k=0;k<NUM_TARGETS;++k) printf(CHECK_TARGETS(k,!=-1,||)?" ║":" "); printf("\n"); }
- for (int k=0;k<31;++k) printf(" "); for (int k=0;k<NUM_TARGETS;++k) printf(CHECK_TARGETS(k,!=-1,||)?" ║":" "); printf("\r");
- printf("%5d | ",i);
- bool found_parent = false;
- int j; for (j=0;j<NUM_TARGETS;++j) if (CHECK_TARGETS(j,==i,||)) { found_parent=true; break; }
- if (found_parent || i==0) {
- if (targets[j][0]==0 || i==0) {
- printf("%6d | ",current->is_loaded);
- if (current->is_loaded) {
- int k;
- if (current->is_leaf_node) {
- printf(" Leaf | ═");
- for (k=0;k<NUM_TARGETS;++k) if (CHECK_TARGETS(k,==-1,&&)) break;
- targets[k][0] = 1;
- for (int m=0;m<IMIN(8,current->num_tris);++m) targets[k][1+m]=current->addr_tri0+m;
- } else {
- printf(" Interior | ═");
- for (k=0;k<NUM_TARGETS;++k) if (CHECK_TARGETS(k,==-1,&&)) break;
- targets[k][0] = 0;
- targets[k][1] = current->addr_childl;
- targets[k][2] = current->addr_childr;
- for (int m=3;m<8;++m) targets[k][m]=-1;
- }
- for (int m=0;m<=IMAX(found_parent?j:k,k);++m) {
- if (m==j) printf("══╝");
- else if (m==k) printf("══╗");
- else printf("═══");
- }
- } else {
- printf("<unloaded> | ═");
- for (int m=0;m<j;++m) printf("═══"); printf("══╝");
- }
- } else {
- printf(" | Triangle | ═");
- for (int m=0;m<j;++m) printf("═══"); printf("══╝");
- }
- for (int k=0;k<8;++k) if (targets[j][1+k]==i) targets[j][1+k]=-1;
- } else {
- printf(" - | <empty> |");
- }
- printf("\n");
- }
- printf("Done!\n");
- }
- #endif
- /*
- Printing stack:
- INDEX | LOADED | TYPE | POINTERS
- 0 | 1 | Interior | ═══╗
- | | | ║
- 1 | 1 | Interior | ═══╝══╗
- | | | ║ ║
- 2 | 1 | Interior | ═══╝═════╗
- | | | ║ ║
- 3 | 1 | Interior | ═══╗═════╝
- | | | ║ ║ ║
- 4 | 0 | <unloaded> | ═════════╝
- | | | ║ ║
- 5 | 1 | Interior | ═══╝═════╗
- | | | ║ ║ ║
- 6 | 1 | Interior | ═══╝════════╗
- | | | ║ ║ ║
- 7 | 1 | Interior | ═══╗════════╝
- | | | ║ ║ ║ ║
- 8 | 0 | <unloaded> | ════════════╝
- | | | ║ ║ ║
- 9 | 0 | <unloaded> | ═══╝ ║ ║
- | | | ║ ║ ║
- 10 | 1 | Interior | ═══╝════════╗
- | | | ║ ║ ║
- 11 | 1 | Leaf | ═══╗════════╝
- | | | ║ ║ ║ ║
- 12 | 1 | Leaf | ════════════╝══╗
- | | | ║ ║ ║ ║
- 13 | | Triangle | ═══════════════╝
- | | | ║ ║ ║ ║
- 14 | | Triangle | ═══════════════╝
- | | | ║ ║ ║
- 15 | 1 | Interior | ═════════╝══╗
- | | | ║ ║ ║ ║
- 16 | 1 | Interior | ═════════╝═════╗
- | | | ║ ║ ║ ║
- 17 | 1 | Interior | ═════════╗══╝ ║
- | | | ║ ║ ║ ║ ║
- 18 | 0 | <unloaded> | ════════════╝ ║
- | | | ║ ║ ║ ║
- 19 | 1 | Interior | ═════════╝══╗ ║
- | | | ║ ║ ║ ║ ║
- 20 | 1 | Interior | ═════════╝════════╗
- | | | ║ ║ ║ ║ ║
- 21 | 1 | Interior | ═════════╗════════╝
- | | | ║ ║ ║ ║ ║ ║
- 22 | 1 | Interior | ══════════════════╝══╗
- | | | ║ ║ ║ ║ ║ ║
- 23 | 1 | Interior | ════════════╝═════╗ ║
- | | | ║ ║ ║ ║ ║ ║ ║
- 24 | 0 | <unloaded> | ════════════╝ ║ ║ ║
- | | | ║ ║ ║ ║ ║ ║
- 25 | 0 | <unloaded> | ═══════════════╝ ║ ║
- | | | ║ ║ ║ ║ ║ ║
- 26 | 1 | Interior | ════════════╗══╝ ║ ║
- | | | ║ ║ ║ ║ ║ ║
- 27 | 1 | Interior | ═══════════════╗══╝ ║
- | | | ║ ║ ║ ║ ║ ║ ║
- 28 | 1 | Interior | ══════════════════╝═════╗
- | | | ║ ║ ║ ║ ║ ║ ║
- 29 | 1 | Interior | ══════════════════╗═════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 30 | 1 | Interior | ════════════════════════╝══╗
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 31 | 0 | <unloaded> | ═══════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 32 | 1 | Interior | ════════════════════════╗══╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 33 | 0 | <unloaded> | ════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 34 | 1 | Interior | ════════════════════════╝══╗
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 35 | 1 | Leaf | ════════════════════════╗══╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║ ║
- 36 | 1 | Leaf | ═══════════════════════════╝══╗
- | | | ║ ║ ║ ║ ║ ║ ║ ║ ║
- 37 | | Triangle | ══════════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║ ║
- 38 | | Triangle | ══════════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║ ║
- 39 | | Triangle | ══════════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║ ║
- 40 | | Triangle | ══════════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║ ║
- 41 | | Triangle | ══════════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║ ║
- 42 | | Triangle | ══════════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 43 | 0 | <unloaded> | ═══════════════╝ ║ ║ ║
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 44 | 1 | Interior | ═══════════════╝═══════════╗
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 45 | 0 | <unloaded> | ═══════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 46 | 1 | Interior | ═══════════════╗═══════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 47 | 0 | <unloaded> | ═══════════════╝ ║ ║ ║
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 48 | 1 | Interior | ═══════════════╝═══════════╗
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 49 | 0 | <unloaded> | ═══════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 50 | 1 | Interior | ═══════════════╗═══════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 51 | 1 | Leaf | ═══════════════╝═══════════╗
- | | | ║ ║ ║ ║ ║ ║ ║ ║ ║
- 52 | 0 | <unloaded> | ═══════════════╝ ║ ║ ║ ║
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 53 | | Triangle | ═══════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 54 | | Triangle | ═══════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 55 | | Triangle | ═══════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║ ║
- 56 | | Triangle | ═══════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║
- 57 | | Triangle | ════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║
- 58 | | Triangle | ════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║
- 59 | | Triangle | ════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║ ║
- 60 | | Triangle | ════════════════════════╝
- | | | ║ ║ ║ ║ ║ ║
- 61 | 0 | <unloaded> | ══════════════════╝ ║
- | | | ║ ║ ║ ║ ║ ║
- 62 | 1 | Interior | ═══════════════╗══╝ ║
- | | | ║ ║ ║ ║ ║ ║
- 63 | 0 | <unloaded> | ═══════════════╝ ║
- | | | ║ ║ ║ ║ ║ ║
- 64 | 1 | Interior | ═══════════════╝══╗ ║
- | | | ║ ║ ║ ║ ║ ║
- 65 | 1 | Leaf | ═══════════════╗══╝ ║
- | | | ║ ║ ║ ║ ║ ║ ║
- 66 | 0 | <unloaded> | ══════════════════╝ ║
- | | | ║ ║ ║ ║ ║ ║
- 67 | | Triangle | ═══════════════╝ ║
- | | | ║ ║ ║ ║ ║ ║
- 68 | | Triangle | ═══════════════╝ ║
- | | | ║ ║ ║ ║ ║ ║
- 69 | | Triangle | ═══════════════╝ ║
- | | | ║ ║ ║ ║ ║ ║
- 70 | | Triangle | ═══════════════╝ ║
- | | | ║ ║ ║ ║ ║
- 71 | | Triangle | ═══╝ ║ ║ ║ ║
- | | | ║ ║ ║ ║ ║
- 72 | | Triangle | ═══╝ ║ ║ ║ ║
- | | | ║ ║ ║ ║
- 73 | 1 | Interior | ═══╗════════╝ ║
- | | | ║ ║ ║ ║ ║
- 74 | 0 | <unloaded> | ════════════╝ ║
- | | | ║ ║ ║ ║
- 75 | 0 | <unloaded> | ═══╝ ║ ║ ║
- | | | ║ ║ ║ ║
- 76 | 0 | <unloaded> | ═══╝ ║ ║ ║
- | | | ║ ║ ║
- 77 | 0 | <unloaded> | ═════════════════════╝
- | | | ║ ║ ║
- 78 | 0 | <unloaded> | ═════════════════════╝
- | | | ║ ║
- 79 | 0 | <unloaded> | ══════╝ ║
- | | | ║ ║
- 80 | 0 | <unloaded> | ══════╝ ║
- | | | ║
- 81 | 1 | Interior | ═══╗═════╝
- | | | ║ ║
- 82 | 0 | <unloaded> | ═════════╝
- | | | ║
- 83 | 0 | <unloaded> | ═══╝
- | | | ║
- 84 | 0 | <unloaded> | ═══╝
- Done!
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement