22 #include <sys/types.h>
57 #define NUM_LOG_LEVELS 10
61 #include <Availability.h>
62 #if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8
63 #define CONST_DIRENT_T struct dirent
65 #define CONST_DIRENT_T const struct dirent
66 #endif // Mountain Lion or earlier
68 #define CONST_DIRENT_T const struct dirent
71 #define SG_SET_LOCALE_C setlocale(LC_ALL, "C")
72 #define SG_RESET_LOCALE setlocale(LC_ALL, "")
76 #define SG_GCDEBUG(...) io->message(MSG_GCDEBUG, __FILE__, __LINE__, __VA_ARGS__)
77 #define SG_DEBUG(...) io->message(MSG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
78 #define SG_INFO(...) io->message(MSG_INFO, __FILE__, __LINE__, __VA_ARGS__)
79 #define SG_WARNING(...) io->message(MSG_WARN, __FILE__, __LINE__, __VA_ARGS__)
80 #define SG_ERROR(...) io->message(MSG_ERROR, __FILE__, __LINE__, __VA_ARGS__)
81 #define SG_UNSTABLE(func, ...) io->message(MSG_WARN, __FILE__, __LINE__, \
82 __FILE__ ":" func ": Unstable method! Please report if it seems to " \
83 "work or not to the Shogun mailing list. Thanking you in " \
84 "anticipation. " __VA_ARGS__)
86 #define SG_PRINT(...) io->message(MSG_MESSAGEONLY, __FILE__, __LINE__, __VA_ARGS__)
87 #define SG_NOTIMPLEMENTED io->not_implemented(__FILE__, __LINE__)
88 #define SG_DEPRECATED io->deprecated(__FILE__, __LINE__)
90 #define SG_PROGRESS(...) io->progress(__VA_ARGS__)
91 #define SG_ABS_PROGRESS(...) io->absolute_progress(__VA_ARGS__)
92 #define SG_DONE() io->done()
95 #define SG_SGCDEBUG(...) sg_io->message(MSG_GCDEBUG,__FILE__, __LINE__, __VA_ARGS__)
96 #define SG_SDEBUG(...) sg_io->message(MSG_DEBUG,__FILE__, __LINE__, __VA_ARGS__)
97 #define SG_SINFO(...) sg_io->message(MSG_INFO,__FILE__, __LINE__, __VA_ARGS__)
98 #define SG_SWARNING(...) sg_io->message(MSG_WARN,__FILE__, __LINE__, __VA_ARGS__)
99 #define SG_SERROR(...) sg_io->message(MSG_ERROR,__FILE__, __LINE__, __VA_ARGS__)
100 #define SG_SPRINT(...) sg_io->message(MSG_MESSAGEONLY,__FILE__, __LINE__, __VA_ARGS__)
101 #define SG_SPROGRESS(...) sg_io->progress(__VA_ARGS__)
102 #define SG_SABS_PROGRESS(...) sg_io->absolute_progress(__VA_ARGS__)
103 #define SG_SDONE() sg_io->done()
104 #define SG_SNOTIMPLEMENTED sg_io->not_implemented(__FILE__, __LINE__)
105 #define SG_SDEPRECATED sg_io->deprecated(__FILE__, __LINE__)
107 #define ASSERT(x) { if (!(x)) SG_SERROR("assertion %s failed in file %s line %d\n",#x, __FILE__, __LINE__);}
108 #define REQUIRE(x, ...) { if (!(x)) SG_SERROR(__VA_ARGS__); }
175 int32_t line,
const char *fmt, ... )
const;
188 const char* prefix=
"PROGRESS:\t");
202 const char* prefix=
"PROGRESS:\t");
220 "This function is deprecated and will be removed soon.\n");
355 if (!access(fname, R_OK))
358 if (!stat(fname, &s) && S_ISREG(s.st_mode))
392 if (refcount==0 || --refcount==0)
473 memcpy(ret,s.
start,len-1);
496 char* endptr = s.
end;
511 char* endptr = s.
end;
527 int32_t int_val = atoi(c_string);
540 return strtoul(s.
start,NULL,10);