00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _IMPULSE_H_
00009 #define _IMPULSE_H_
00010
00011 #define DEBUG
00012
00013 #ifdef DEBUG
00014 #define BEG( string ) trace << &(spaces[60 - indent]) << "> " << string << endl; indent += 3;
00015 #define END( string ) indent -= 3; trace << &(spaces[60 - indent]) << "< " << string << endl
00016 #define TRACE( string ) trace << &(spaces[60 - indent]) << string << endl;
00017 #else
00018 #define BEG( string )
00019 #define END( string )
00020 #define TRACE( string )
00021 #endif
00022
00023
00024 #define ASSERT( code ) cout << ((code) ? \
00025 "\x1b[32mpass\x1b[0m" : "\x1b[31mfail\x1b[0m") << " " << #code << endl
00026 #define OUTPUT( string ) cout << string << endl
00027
00028 #include <map>
00029
00030 using namespace std;
00031
00032 namespace impulse {
00033
00034 class UnitTest {
00035
00036 public:
00037
00038 virtual ~UnitTest() { }
00039
00040 virtual void runTests() { }
00041
00042 static UnitTest& create() { return *new UnitTest(); }
00043
00044 };
00045
00046
00047
00048
00049
00050 class Value;
00051 class Frame;
00052 class Symbol;
00053 class Array;
00054 class String;
00055 class Stream;
00056
00057
00058
00059
00060
00061 extern Value _nil_;
00062 extern Value _Object_;
00063 extern Value _Float_;
00064 extern Value _LitNum_;
00065
00066 extern char spaces[];
00067 extern int indent;
00068
00069 }
00070
00071 #include "core/value.h"
00072 #include "core/frame.h"
00073
00074 #include "protos/stream.h"
00075
00076 using namespace impulse::io;
00077
00078 #include "core/value_inline.h"
00079 #include "core/frame_inline.h"
00080
00081
00082 #endif