protected:
gzFile file;
- typedef std::map<size_t, std::string> namemap;
- namemap names;
-
typedef std::map<unsigned, Call *> callmap;
callmap calls;
return new UInt(addr);
}
- std::string read_name(void) {
- std::string name;
- size_t id = read_uint();
- if (id >= names.size()) {
- assert(id == names.size());
- name = read_string();
- names[id] = name;
- return name;
- } else {
- name = names[id];
- }
-#if TRACE_VERBOSE
- std::cerr << "\tNAME " << id << " " << name << "\n";
-#endif
- return name;
- }
-
std::string read_string(void) {
size_t len = read_uint();
if (!len) {
Write(str, len);
}
-typedef std::map<const char *, size_t> namemap;
-static namemap names;
-
-static inline void
-WriteName(const char *name) {
- namemap::iterator it = names.find(name);
- if (it == names.end()) {
- size_t name_id = names.size();
- WriteUInt(name_id);
- WriteString(name);
- names[name] = name_id;
- } else {
- WriteUInt(it->second);
- }
-}
-
void Open(void) {
if (!g_gzFile) {
_Open("trace");