00001 /* 00002 * This program is free software; you can redistribute it and/or modify 00003 * it under the terms of the GNU General Public License as published by 00004 * the Free Software Foundation; either version 3 of the License, or 00005 * (at your option) any later version. 00006 * 00007 * Written (W) 1999-2009 Soeren Sonnenburg 00008 * Copyright (C) 1999-2009 Fraunhofer Institute FIRST and Max Planck Society 00009 */ 00010 00011 #include <shogun/base/init.h> 00012 00013 #include <shogun/lib/common.h> 00014 #include <shogun/io/SGIO.h> 00015 #include <shogun/lib/versionstring.h> 00016 #include <shogun/lib/config.h> 00017 00018 #ifndef VERSION_H__ 00019 #define VERSION_H__ 00020 00021 namespace shogun 00022 { 00023 class IO; 00024 00031 class Version 00032 { 00033 public: 00035 Version(); 00037 virtual ~Version(); 00038 00040 static inline void print_version() 00041 { 00042 SG_SPRINT("libshogun (%s/%s%d)\n\n", MACHINE, VERSION_RELEASE, version_revision); 00043 SG_SPRINT("Copyright (C) 1999-2009 Fraunhofer Institute FIRST\n"); 00044 SG_SPRINT("Copyright (C) 1999-2011 Max Planck Society\n"); 00045 SG_SPRINT("Copyright (C) 2009-2011 Berlin Institute of Technology\n"); 00046 SG_SPRINT("Written (W) 1999-2011 Soeren Sonnenburg, Gunnar Raetsch et al.\n\n"); 00047 #ifndef USE_SVMLIGHT 00048 SG_SPRINT("This is free software; see the source for copying conditions. There is NO\n"); 00049 SG_SPRINT("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"); 00050 #endif 00051 SG_SPRINT( "( configure options: \"%s\" compile flags: \"%s\" link flags: \"%s\" )\n", CONFIGURE_OPTIONS, COMPFLAGS_CPP, LINKFLAGS); 00052 } 00053 00055 static inline const char* get_version_extra() 00056 { 00057 return version_extra; 00058 } 00059 00061 static inline const char* get_version_release() 00062 { 00063 return version_release; 00064 } 00065 00067 static inline int32_t get_version_revision() 00068 { 00069 return version_revision; 00070 } 00071 00073 static inline int32_t get_version_year() 00074 { 00075 return version_year; 00076 } 00077 00079 static inline int32_t get_version_month() 00080 { 00081 return version_month; 00082 } 00083 00085 static inline int32_t get_version_day() 00086 { 00087 return version_day; 00088 } 00089 00091 static inline int32_t get_version_hour() 00092 { 00093 return version_hour; 00094 } 00095 00097 static inline int32_t get_version_minute() 00098 { 00099 return version_year; 00100 } 00101 00103 static inline int32_t get_version_parameter() 00104 { 00105 return version_parameter; 00106 } 00107 00109 static inline int64_t get_version_in_minutes() 00110 { 00111 return ((((version_year)*12 + version_month)*30 + version_day)* 24 + version_hour)*60 + version_minute; 00112 } 00113 00117 inline int32_t ref() 00118 { 00119 ++refcount; 00120 return refcount; 00121 } 00122 00126 inline int32_t ref_count() const 00127 { 00128 return refcount; 00129 } 00130 00134 inline int32_t unref() 00135 { 00136 if (refcount==0 || --refcount==0) 00137 { 00138 delete this; 00139 return 0; 00140 } 00141 else 00142 return refcount; 00143 } 00144 00145 protected: 00147 static const char version_release[128]; 00149 static const char version_extra[128]; 00150 00152 static const int32_t version_revision; 00154 static const int32_t version_year; 00156 static const int32_t version_month; 00158 static const int32_t version_day; 00160 static const int32_t version_hour; 00162 static const int32_t version_minute; 00164 static const int32_t version_parameter; 00165 private: 00166 int32_t refcount; 00167 }; 00168 } 00169 #endif