| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        tests/benchmarks/bench.h
 
- // Purpose:     Main header of the benchmarking suite
 
- // Author:      Vadim Zeitlin
 
- // Created:     2008-07-19
 
- // Copyright:   (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_TESTS_BENCHMARKS_BENCH_H_
 
- #define _WX_TESTS_BENCHMARKS_BENCH_H_
 
- #include "wx/cpp.h"
 
- #include "wx/defs.h"
 
- namespace Bench
 
- {
 
- /**
 
-     Utility object used to register the benchmark functions.
 
-     @see BENCHMARK_FUNC
 
-  */
 
- class Function
 
- {
 
- public:
 
-     typedef bool (*InitType)();
 
-     typedef bool (*FuncType)();
 
-     typedef void (*DoneType)();
 
-     /// Ctor is used implicitly by BENCHMARK_FUNC().
 
-     Function(const char *name,
 
-              FuncType func,
 
-              InitType init = NULL,
 
-              DoneType done = NULL)
 
-         : m_name(name),
 
-           m_func(func),
 
-           m_init(init),
 
-           m_done(done),
 
-           m_next(ms_head)
 
-     {
 
-         ms_head = this;
 
-     }
 
-     /// Get the name of this function
 
-     const char *GetName() const { return m_name; }
 
-     /// Perform once-only initialization prior to Run().
 
-     bool Init() { return m_init ? (*m_init)() : true; }
 
-     /// Run the function, return its return value.
 
-     bool Run() { return (*m_func)(); }
 
-     /// Clean up after performing the benchmark.
 
-     void Done() { if ( m_done ) (*m_done)(); }
 
-     /// Get the head of the linked list of benchmark objects
 
-     static Function *GetFirst() { return ms_head; }
 
-     /// Get the next object in the linked list or NULL
 
-     Function *GetNext() const { return m_next; }
 
- private:
 
-     // the head of the linked list of Bench::Function objects
 
-     static Function *ms_head;
 
-     // name of and pointer to the function, as passed to the ctor
 
-     const char * const m_name;
 
-     const FuncType m_func;
 
-     const InitType m_init;
 
-     const DoneType m_done;
 
-     // pointer to the next object in the linked list or NULL
 
-     Function * const m_next;
 
-     DECLARE_NO_COPY_CLASS(Function)
 
- };
 
- /**
 
-     Get the numeric parameter.
 
-     Tests may use this parameter in whatever way they see fit, by default it is
 
-     1 but can be set to a different value by user from the command line.
 
-  */
 
- long GetNumericParameter();
 
- /**
 
-     Get the string parameter.
 
-     Tests may use this parameter in whatever way they see fit, by default it is
 
-     empty but can be set to a different value by user from the command line.
 
-  */
 
- wxString GetStringParameter();
 
- } // namespace Bench
 
- /**
 
-     This macro defines a benchmark function.
 
-     All these functions return a boolean value and take no parameters. The
 
-     return value is needed to prevent the compiler from optimizing the
 
-     benchmark entirely away and so typically will be constructed using the
 
-     results of the benchmark actions, even though normally benchmark should
 
-     always return true.
 
-     Once benchmark is defined, it can be invoked from the command line of the
 
-     main benchmarking program.
 
-  */
 
- #define BENCHMARK_FUNC(name)                                                  \
 
-     static bool name();                                                       \
 
-     static Bench::Function wxMAKE_UNIQUE_NAME(name)(#name, name);             \
 
-     bool name()
 
- /**
 
-     Define a benchmark function requiring initialization and shutdown.
 
-     This macro is similar to BENCHMARK_FUNC() but ensures that @a init is
 
-     called before the benchmark is ran and @a done afterwards.
 
-  */
 
- #define BENCHMARK_FUNC_WITH_INIT(name, init, done)                            \
 
-     static bool name();                                                       \
 
-     static Bench::Function wxMAKE_UNIQUE_NAME(name)(#name, name, init, done); \
 
-     bool name()
 
- #endif // _WX_TESTS_BENCHMARKS_BENCH_H_
 
 
  |