1 // xmillinspect.cpp : XMI file inspector infrastructure 2 // 3 4 #include "stdafx.h" 5 6 /* (de)contrustors */ XMIInspect(int l)7XMIInspect::XMIInspect(int l) 8 { 9 level = l; 10 11 statesize = NULL; 12 numcontainers = NULL; 13 pathindex = NULL; 14 containersize = NULL; 15 index = NULL; 16 labels = NULL; 17 exprs = NULL; 18 exprinfo = NULL; 19 numcontdata = NULL; 20 numrealcontdata = NULL; 21 #if 0 22 dictionarysizes = NULL; 23 #endif 24 25 numlabels = 0; 26 numexprs = 0; 27 28 reset(); 29 30 buffer = NULL; 31 realloc = true; 32 newBuffer(BUFLEN); 33 } 34 ~XMIInspect()35XMIInspect::~XMIInspect() 36 { 37 reset(); 38 trydela(buffer); 39 } 40 41 /* helpers */ newBuffer(long size)42void XMIInspect::newBuffer(long size) 43 { 44 len = buflen = size; 45 if (realloc) { 46 trydela(buffer); 47 buffer = new unsigned char[buflen+1]; 48 realloc = false; 49 } 50 } 51 reset()52void XMIInspect::reset() 53 { 54 state = XMIINS_READ_HEADER; 55 56 gpc = NULL; 57 58 trydela (index); 59 trydela (statesize); 60 trydela (numcontainers); 61 trydela (containersize); 62 trydela (pathindex); 63 trydela (numcontdata); 64 trydela (numrealcontdata); 65 #if 0 66 trydela (dictionarysizes); 67 #endif 68 69 if (labels) { 70 for (int i=0; i<numlabels; i++) { 71 delete[] labels[i]; 72 } 73 } 74 trydela (labels); 75 76 if (exprs && exprinfo) { 77 for (int i=0; i<numexprs; i++) { 78 delete[] exprs[i]; 79 delete exprinfo[i]; 80 } 81 } 82 trydela (exprinfo); 83 84 curptr = NULL; 85 86 numopen = 0; 87 numclose = 0; 88 numdata = 0; 89 numspecial = 0; 90 numwhite = 0; 91 92 numlabels = 0; 93 numexprs = 0; 94 numbuffers = 0; 95 expectedcontainers = 0; 96 foundcontainers = 0; 97 compsize = 0; 98 totalcompsize = 0; 99 totaluncompsize = 0; 100 totalrunsize = 0; 101 runsize = 0; 102 headersize = 0; 103 totalheadersize = 0; 104 numheaders = 0; 105 totaldatasize = 0; 106 globalsfound = 0; 107 numlargeglobals = 0; 108 globaldatasize = 0; 109 110 len = buflen; 111 } 112 113