00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef SAMPA_TRACE_H
00020 #define SAMPA_TRACE_H
00021
00022 #include <cstdio>
00023 #include "sampa/core/time.h"
00024 #if SAMPA_CONFIG_DEBUG == SAMPA_ENABLED
00025
00026 namespace Sampa {
00027
00028 class Object;
00029
00030 class Trace {
00031 public:
00032 void* operator new(size_t size);
00033 void* operator new(size_t size, size_t variable_size);
00034 protected:
00035 enum DateTag { DATE_TAG };
00036 virtual size_t store(FILE*) = 0;
00037 #if SAMPA_CONFIG_MULTI_THREADED == SAMPA_ENABLED
00038 void complete() {}
00039 #else
00040 void complete();
00041 #endif
00042 unsigned object_to_id(const Object*);
00043 unsigned function_to_id(const char*);
00044 friend class TraceLog;
00045 friend class Simulation;
00046 void* operator new(size_t size,DateTag);
00047 };
00048
00049 }
00050
00051 #endif // SAMPA_CONFIG_DEBUG == SAMPA_ENABLED
00052
00053 #endif