From 0568897c39dca167706825219e284a396be956a7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Sat, 28 May 2011 11:47:48 +0100 Subject: [PATCH] Use regular C strings everywhere. --- glretrace_cgl.cpp | 2 +- glretrace_glx.cpp | 2 +- glretrace_main.cpp | 2 +- glretrace_wgl.cpp | 2 +- retrace.py | 2 +- trace_model.cpp | 4 ++-- trace_model.hpp | 27 ++++++++++++--------------- trace_parser.cpp | 14 ++++++-------- trace_parser.hpp | 3 +-- 9 files changed, 26 insertions(+), 32 deletions(-) diff --git a/glretrace_cgl.cpp b/glretrace_cgl.cpp index c42dd81..8cb5786 100644 --- a/glretrace_cgl.cpp +++ b/glretrace_cgl.cpp @@ -113,7 +113,7 @@ static void retrace_CGLFlushDrawable(Trace::Call &call) { void glretrace::retrace_call_cgl(Trace::Call &call) { - const char *name = call.name().c_str(); + const char *name = call.name(); if (strcmp(name, "CGLSetCurrentContext") == 0) { retrace_CGLSetCurrentContext(call); diff --git a/glretrace_glx.cpp b/glretrace_glx.cpp index 7edcfa0..0b2c141 100644 --- a/glretrace_glx.cpp +++ b/glretrace_glx.cpp @@ -235,7 +235,7 @@ static void retrace_glXGetProcAddress(Trace::Call &call) { } void glretrace::retrace_call_glx(Trace::Call &call) { - const char *name = call.name().c_str(); + const char *name = call.name(); switch (name[3]) { case 'C': diff --git a/glretrace_main.cpp b/glretrace_main.cpp index 6a740d3..7f7b876 100644 --- a/glretrace_main.cpp +++ b/glretrace_main.cpp @@ -156,7 +156,7 @@ static void display(void) { Trace::Call *call; while ((call = parser.parse_call())) { - const std::string &name = call->name(); + const char *name = call->name(); if (retrace::verbosity >= 1) { std::cout << *call; diff --git a/glretrace_wgl.cpp b/glretrace_wgl.cpp index a7185f7..a3ca05b 100644 --- a/glretrace_wgl.cpp +++ b/glretrace_wgl.cpp @@ -243,7 +243,7 @@ static void retrace_wglGetProcAddress(Trace::Call &call) { } void glretrace::retrace_call_wgl(Trace::Call &call) { - const char *name = call.name().c_str(); + const char *name = call.name(); switch (name[0]) { case 'g': diff --git a/retrace.py b/retrace.py index 3b68d60..c4750d4 100644 --- a/retrace.py +++ b/retrace.py @@ -254,7 +254,7 @@ class Retracer: self.retrace_function(function) print 'void retrace::retrace_call(Trace::Call &call) {' - print ' const char *name = call.name().c_str();' + print ' const char *name = call.name();' print func_dict = dict([(function.name, function) for function in functions]) diff --git a/trace_model.cpp b/trace_model.cpp index e8bb3e4..75ad9e3 100644 --- a/trace_model.cpp +++ b/trace_model.cpp @@ -132,7 +132,7 @@ unsigned long long Pointer::toUIntPtr(void) const { return value; } // string cast const char * Value ::toString(void) const { assert(0); return NULL; } const char * Null ::toString(void) const { return NULL; } -const char * String::toString(void) const { return value.c_str(); } +const char * String::toString(void) const { return value; } // virtual Value::visit() @@ -219,7 +219,7 @@ public: void visit(String *node) { os << literal << "\""; - for (std::string::const_iterator it = node->value.begin(); it != node->value.end(); ++it) { + for (const char *it = node->value; *it; ++it) { unsigned char c = (unsigned char) *it; if (c == '\"') os << "\\\""; diff --git a/trace_model.hpp b/trace_model.hpp index e7a2249..1864b03 100644 --- a/trace_model.hpp +++ b/trace_model.hpp @@ -33,7 +33,6 @@ #include -#include #include #include #include @@ -44,8 +43,6 @@ namespace Trace { class Visitor; -class Dumper; -class UInt; class Value @@ -150,26 +147,26 @@ public: class String : public Value { public: - String(std::string _value) : value(_value) {} + String(const char * _value) : value(_value) {} bool toBool(void) const; const char *toString(void) const; void visit(Visitor &visitor); - std::string value; + const char * value; }; class Enum : public Value { public: - struct Signature : public std::pair + struct Signature : public std::pair { Signature() - : std::pair() + : std::pair() {} - Signature(const std::string &n, Trace::Value *val) - : std::pair(n, val) + Signature(const char *n, Trace::Value *val) + : std::pair(n, val) {} ~Signature() { @@ -193,7 +190,7 @@ public: class Bitmask : public UInt { public: - typedef std::pair Pair; + typedef std::pair Pair; typedef std::vector Signature; Bitmask(const Signature *_sig, unsigned long long _value) : UInt(_value), sig(_sig) {} @@ -208,8 +205,8 @@ class Struct : public Value { public: struct Signature { - std::string name; - std::vector member_names; + const char *name; + std::vector member_names; }; Struct(Signature *_sig) : sig(_sig), members(_sig->member_names.size()) { } @@ -299,8 +296,8 @@ class Call { public: struct Signature { - std::string name; - std::vector arg_names; + const char * name; + std::vector arg_names; }; unsigned no; @@ -311,7 +308,7 @@ public: Call(Signature *_sig) : sig(_sig), args(_sig->arg_names.size()), ret(0) { } ~Call(); - inline const std::string & name(void) const { + inline const char * name(void) const { return sig->name; } diff --git a/trace_parser.cpp b/trace_parser.cpp index 1e00665..e615ed7 100644 --- a/trace_parser.cpp +++ b/trace_parser.cpp @@ -311,7 +311,7 @@ Value *Parser::parse_enum() { size_t id = read_uint(); Enum::Signature *sig = lookup(enums, id); if (!sig) { - std::string name = read_string(); + const char *name = read_string(); Value *value = parse_value(); sig = new Enum::Signature(name, value); enums[id] = sig; @@ -396,15 +396,13 @@ Value *Parser::parse_opaque() { } -std::string Parser::read_string(void) { +const char * Parser::read_string(void) { size_t len = read_uint(); - if (!len) { - return std::string(); + char * value = new char[len + 1]; + if (len) { + gzread(file, value, (unsigned)len); } - char * buf = new char[len]; - gzread(file, buf, (unsigned)len); - std::string value(buf, len); - delete [] buf; + value[len] = 0; #if TRACE_VERBOSE std::cerr << "\tSTRING \"" << value << "\"\n"; #endif diff --git a/trace_parser.hpp b/trace_parser.hpp index 7a88d27..c9f92fc 100644 --- a/trace_parser.hpp +++ b/trace_parser.hpp @@ -29,7 +29,6 @@ #include #include -#include #include "trace_format.hpp" #include "trace_model.hpp" @@ -106,7 +105,7 @@ protected: Value *parse_opaque(); - std::string read_string(void); + const char * read_string(void); unsigned long long read_uint(void); -- 2.45.2