Version.h

Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation