| 103 | } |
| 104 | |
| 105 | u32 beginZone(const char* name, const char* func, u32 lineNumber) |
| 106 | { |
| 107 | ZoneMap::iterator iZone = s_zoneMap.find(name); |
| 108 | u32 id = 0; |
| 109 | |
| 110 | if (iZone == s_zoneMap.end()) |
| 111 | { |
| 112 | id = (u32)s_zoneList.size(); |
| 113 | |
| 114 | Zone zone; |
| 115 | zone.id = id; |
| 116 | zone.path = s_currentPath; |
| 117 | zone.timeInZone[s_readBuffer] = 0; |
| 118 | zone.timeInZone[s_writeBuffer] = 0; |
| 119 | zone.timeInZoneAve = 0.0; |
| 120 | zone.fractOfParentAve = 0.0; |
| 121 | zone.frame = 0; |
| 122 | |
| 123 | s_zoneList.push_back(zone); |
| 124 | s_zoneMap[name] = id; |
| 125 | } |
| 126 | else |
| 127 | { |
| 128 | id = iZone->second; |
| 129 | } |
| 130 | |
| 131 | Zone& zone = s_zoneList[id]; |
| 132 | strcpy(zone.name, name); |
| 133 | strcpy(zone.func, func); |
| 134 | zone.lineNumber = lineNumber; |
| 135 | zone.level = s_level; |
| 136 | |
| 137 | zone.parent = s_level > 0 ? s_zoneStack[s_level - 1] : NULL_ZONE; |
| 138 | if (zone.parent == NULL_ZONE) |
| 139 | { |
| 140 | s_roots.push_back(id); |
| 141 | } |
| 142 | else |
| 143 | { |
| 144 | addZoneChild(zone.parent, zone.id); |
| 145 | } |
| 146 | |
| 147 | s_zoneStack[s_level] = id; |
| 148 | s_level++; |
| 149 | |
| 150 | return id; |
| 151 | } |
| 152 | |
| 153 | void endZone(u32 id, u64 dt) |
| 154 | { |
no test coverage detected