diff options
Diffstat (limited to 'lldb/tools/lldb-perf/lib/Results.h')
-rw-r--r-- | lldb/tools/lldb-perf/lib/Results.h | 461 |
1 files changed, 177 insertions, 284 deletions
diff --git a/lldb/tools/lldb-perf/lib/Results.h b/lldb/tools/lldb-perf/lib/Results.h index 388077e..a3d467ff 100644 --- a/lldb/tools/lldb-perf/lib/Results.h +++ b/lldb/tools/lldb-perf/lib/Results.h @@ -17,296 +17,189 @@ namespace lldb_perf { -class Results -{ +class Results { public: - class Array; - class Dictionary; - class Double; - class String; - class Unsigned; - - class Result - { - public: - enum class Type - { - Invalid, - Array, - Dictionary, - Double, - String, - Unsigned - }; - - Result (Type type, const char *name, const char *description) : - m_name (), - m_description(), - m_type (type) - { - if (name && name[0]) - m_name = name; - if (description && description[0]) - m_description = description; - } - - virtual - ~Result() - { - } - - virtual void - Write (Results &results) = 0; - - Array * - GetAsArray () - { - if (m_type == Type::Array) - return (Array *)this; - return NULL; - } - Dictionary * - GetAsDictionary () - { - if (m_type == Type::Dictionary) - return (Dictionary *)this; - return NULL; - } - Double * - GetAsDouble () - { - if (m_type == Type::Double) - return (Double *)this; - return NULL; - } - - String * - GetAsString () - { - if (m_type == Type::String) - return (String *)this; - return NULL; - } - Unsigned * - GetAsUnsigned () - { - if (m_type == Type::Unsigned) - return (Unsigned *)this; - return NULL; - } - - const char * - GetName() const - { - if (m_name.empty()) - return NULL; - return m_name.c_str(); - } - - const char * - GetDescription() const - { - if (m_description.empty()) - return NULL; - return m_description.c_str(); - } - - Type - GetType() const - { - return m_type; - } - - protected: - std::string m_name; - std::string m_description; - Type m_type; - }; - - typedef std::shared_ptr<Result> ResultSP; - - class Array : public Result - { - public: - Array (const char *name, const char *description) : - Result (Type::Array, name, description) - { - } - - virtual - ~Array() - { - } - - ResultSP - Append (const ResultSP &result_sp); - - void - ForEach (const std::function <bool (const ResultSP &)> &callback); - - virtual void - Write (Results &results) - { - } - protected: - typedef std::vector<ResultSP> collection; - collection m_array; - }; - - class Dictionary : public Result - { - public: - Dictionary () : - Result (Type::Dictionary, NULL, NULL) - { - } - - Dictionary (const char *name, const char *description) : - Result (Type::Dictionary, name, description) - { - } - - virtual - ~Dictionary() - { - } - - virtual void - Write (Results &results) - { - } - - void - ForEach (const std::function <bool (const std::string &, const ResultSP &)> &callback); - - ResultSP - Add (const char *name, const char *description, const ResultSP &result_sp); - - ResultSP - AddDouble (const char *name, const char *descriptiorn, double value); - - ResultSP - AddUnsigned (const char *name, const char *description, uint64_t value); - - ResultSP - AddString (const char *name, const char *description, const char *value); - - protected: - - typedef std::map<std::string, ResultSP> collection; - collection m_dictionary; - }; - - class String : public Result - { - public: - String (const char *name, const char *description, const char *value) : - Result (Type::String, name, description), - m_string () - { - if (value && value[0]) - m_string = value; - } - - virtual - ~String() - { - } - - virtual void - Write (Results &results) - { - } - - const char * - GetValue () const - { - return m_string.empty() ? NULL : m_string.c_str(); - } - - protected: - std::string m_string; - }; - - class Double : public Result - { - public: - Double (const char *name, const char *description, double value) : - Result (Type::Double, name, description), - m_double (value) - { - } - - virtual - ~Double() - { - } - - virtual void - Write (Results &results) - { - } - - double - GetValue () const - { - return m_double; - } - - protected: - double m_double; - }; - - class Unsigned : public Result - { - public: - Unsigned (const char *name, const char *description, uint64_t value) : - Result (Type::Unsigned, name, description), - m_unsigned (value) - { - } - - virtual - ~Unsigned() - { - } - - virtual void - Write (Results &results) - { - } - - uint64_t - GetValue () const - { - return m_unsigned; - } - - protected: - uint64_t m_unsigned; - }; - - Results () : - m_results () - { + class Array; + class Dictionary; + class Double; + class String; + class Unsigned; + + class Result { + public: + enum class Type { Invalid, Array, Dictionary, Double, String, Unsigned }; + + Result(Type type, const char *name, const char *description) + : m_name(), m_description(), m_type(type) { + if (name && name[0]) + m_name = name; + if (description && description[0]) + m_description = description; } - - ~Results() - { + + virtual ~Result() {} + + virtual void Write(Results &results) = 0; + + Array *GetAsArray() { + if (m_type == Type::Array) + return (Array *)this; + return NULL; + } + Dictionary *GetAsDictionary() { + if (m_type == Type::Dictionary) + return (Dictionary *)this; + return NULL; + } + Double *GetAsDouble() { + if (m_type == Type::Double) + return (Double *)this; + return NULL; + } + + String *GetAsString() { + if (m_type == Type::String) + return (String *)this; + return NULL; + } + Unsigned *GetAsUnsigned() { + if (m_type == Type::Unsigned) + return (Unsigned *)this; + return NULL; + } + + const char *GetName() const { + if (m_name.empty()) + return NULL; + return m_name.c_str(); + } + + const char *GetDescription() const { + if (m_description.empty()) + return NULL; + return m_description.c_str(); + } + + Type GetType() const { return m_type; } + + protected: + std::string m_name; + std::string m_description; + Type m_type; + }; + + typedef std::shared_ptr<Result> ResultSP; + + class Array : public Result { + public: + Array(const char *name, const char *description) + : Result(Type::Array, name, description) {} + + virtual ~Array() {} + + ResultSP Append(const ResultSP &result_sp); + + void ForEach(const std::function<bool(const ResultSP &)> &callback); + + virtual void Write(Results &results) {} + + protected: + typedef std::vector<ResultSP> collection; + collection m_array; + }; + + class Dictionary : public Result { + public: + Dictionary() : Result(Type::Dictionary, NULL, NULL) {} + + Dictionary(const char *name, const char *description) + : Result(Type::Dictionary, name, description) {} + + virtual ~Dictionary() {} + + virtual void Write(Results &results) {} + + void ForEach(const std::function<bool(const std::string &, + const ResultSP &)> &callback); + + ResultSP Add(const char *name, const char *description, + const ResultSP &result_sp); + + ResultSP AddDouble(const char *name, const char *descriptiorn, + double value); + + ResultSP AddUnsigned(const char *name, const char *description, + uint64_t value); + + ResultSP AddString(const char *name, const char *description, + const char *value); + + protected: + typedef std::map<std::string, ResultSP> collection; + collection m_dictionary; + }; + + class String : public Result { + public: + String(const char *name, const char *description, const char *value) + : Result(Type::String, name, description), m_string() { + if (value && value[0]) + m_string = value; } - - Dictionary & - GetDictionary () - { - return m_results; + + virtual ~String() {} + + virtual void Write(Results &results) {} + + const char *GetValue() const { + return m_string.empty() ? NULL : m_string.c_str(); } - void - Write (const char *path); - + protected: + std::string m_string; + }; + + class Double : public Result { + public: + Double(const char *name, const char *description, double value) + : Result(Type::Double, name, description), m_double(value) {} + + virtual ~Double() {} + + virtual void Write(Results &results) {} + + double GetValue() const { return m_double; } + + protected: + double m_double; + }; + + class Unsigned : public Result { + public: + Unsigned(const char *name, const char *description, uint64_t value) + : Result(Type::Unsigned, name, description), m_unsigned(value) {} + + virtual ~Unsigned() {} + + virtual void Write(Results &results) {} + + uint64_t GetValue() const { return m_unsigned; } + + protected: + uint64_t m_unsigned; + }; + + Results() : m_results() {} + + ~Results() {} + + Dictionary &GetDictionary() { return m_results; } + + void Write(const char *path); + protected: - Dictionary m_results; + Dictionary m_results; }; - + } // namespace lldb_perf #endif // #ifndef __PerfTestDriver_Results_h__ |