00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _EYEDB_ARCHITECTURE_H
00026 #define _EYEDB_ARCHITECTURE_H
00027
00028 namespace eyedb {
00029
00038 class Architecture {
00039
00040 public:
00045 const char *getArch() const {return arch;}
00046
00051 const char *getMach() const {return mach;}
00052
00057 const char *getOS() const {return os;}
00058
00063 const char *getCC() const {return cc;}
00064
00069 bool isBigEndian() const {return is_big_endian;}
00070
00075 static Architecture *getArchitecture();
00076
00077 private:
00078 char *arch;
00079 char *mach;
00080 char *os;
00081 char *cc;
00082 bool is_big_endian;
00083
00084 Architecture(const Architecture &);
00085 Architecture& operator=(const Architecture &);
00086
00087 ~Architecture() {
00088 free(arch);
00089 free(os);
00090 free(mach);
00091 free(cc);
00092 }
00093
00094 friend class Object;
00095
00096 public:
00097 static void init();
00098 static void _release();
00099
00100 Architecture(const char *_arch, const char *_mach,
00101 const char *_os, const char *_cc,
00102 bool _is_big_endian) :
00103 arch(strdup(_arch)), mach(strdup(_mach)), os(strdup(_os)),
00104 cc(strdup(_cc)), is_big_endian(_is_big_endian) { }
00105 };
00106
00107 Architecture *getArchitecture();
00108
00113 }
00114
00115 #endif