22 #include <sys/types.h>
57 #define NUM_LOG_LEVELS 10
61 #define CONST_DIRENT_T struct dirent
63 #define CONST_DIRENT_T const struct dirent
66 #define SG_SET_LOCALE_C setlocale(LC_ALL, "C")
67 #define SG_RESET_LOCALE setlocale(LC_ALL, "")
71 #define SG_GCDEBUG(...) io->message(MSG_GCDEBUG, __FILE__, __LINE__, __VA_ARGS__)
72 #define SG_DEBUG(...) io->message(MSG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
73 #define SG_INFO(...) io->message(MSG_INFO, __FILE__, __LINE__, __VA_ARGS__)
74 #define SG_WARNING(...) io->message(MSG_WARN, __FILE__, __LINE__, __VA_ARGS__)
75 #define SG_ERROR(...) io->message(MSG_ERROR, __FILE__, __LINE__, __VA_ARGS__)
76 #define SG_UNSTABLE(func, ...) io->message(MSG_WARN, __FILE__, __LINE__, \
77 __FILE__ ":" func ": Unstable method! Please report if it seems to " \
78 "work or not to the Shogun mailing list. Thanking you in " \
79 "anticipation. " __VA_ARGS__)
81 #define SG_PRINT(...) io->message(MSG_MESSAGEONLY, __FILE__, __LINE__, __VA_ARGS__)
82 #define SG_NOTIMPLEMENTED io->not_implemented(__FILE__, __LINE__)
83 #define SG_DEPRECATED io->deprecated(__FILE__, __LINE__)
85 #define SG_PROGRESS(...) io->progress(__VA_ARGS__)
86 #define SG_ABS_PROGRESS(...) io->absolute_progress(__VA_ARGS__)
87 #define SG_DONE() io->done()
90 #define SG_SGCDEBUG(...) sg_io->message(MSG_GCDEBUG,__FILE__, __LINE__, __VA_ARGS__)
91 #define SG_SDEBUG(...) sg_io->message(MSG_DEBUG,__FILE__, __LINE__, __VA_ARGS__)
92 #define SG_SINFO(...) sg_io->message(MSG_INFO,__FILE__, __LINE__, __VA_ARGS__)
93 #define SG_SWARNING(...) sg_io->message(MSG_WARN,__FILE__, __LINE__, __VA_ARGS__)
94 #define SG_SERROR(...) sg_io->message(MSG_ERROR,__FILE__, __LINE__, __VA_ARGS__)
95 #define SG_SPRINT(...) sg_io->message(MSG_MESSAGEONLY,__FILE__, __LINE__, __VA_ARGS__)
96 #define SG_SPROGRESS(...) sg_io->progress(__VA_ARGS__)
97 #define SG_SABS_PROGRESS(...) sg_io->absolute_progress(__VA_ARGS__)
98 #define SG_SDONE() sg_io->done()
99 #define SG_SNOTIMPLEMENTED sg_io->not_implemented(__FILE__, __LINE__)
100 #define SG_SDEPRECATED sg_io->deprecated(__FILE__, __LINE__)
102 #define ASSERT(x) { if (!(x)) SG_SERROR("assertion %s failed in file %s line %d\n",#x, __FILE__, __LINE__);}
169 int32_t line,
const char *fmt, ... )
const;
182 const char* prefix=
"PROGRESS:\t");
196 const char* prefix=
"PROGRESS:\t");
214 "This function is deprecated and will be removed soon.\n");
349 if (!access(fname, R_OK))
352 if (!stat(fname, &s) && S_ISREG(s.st_mode))
386 if (refcount==0 || --refcount==0)
467 memcpy(ret,s.
start,len-1);
490 char* endptr = s.
end;
505 char* endptr = s.
end;
521 int32_t int_val = atoi(c_string);
534 return strtoul(s.
start,NULL,10);
void disable_file_and_line()
void set_loglevel(EMessageType level)
uint32_t ss_length(substring s)
static char * skip_spaces(char *str)
FILE * get_target() const
int32_t ref_count() const
void buffered_message(EMessageType prio, const char *fmt,...) const
void set_target(FILE *target)
bool get_show_file_and_line() const
static char * concat_filename(const char *filename)
float32_t float_of_substring(substring s)
void message(EMessageType prio, const char *file, int32_t line, const char *fmt,...) const
static char * skip_blanks(char *str)
struct Substring, specified by start position and end position.
void enable_file_and_line()
char * c_string_of_substring(substring s)
void disable_syntax_highlighting()
static char file_buffer[FBUFSIZE]
file name buffer
void not_implemented(const char *file, int32_t line) const
void enable_syntax_highlighting()
float64_t last_progress_time
uint32_t ulong_of_substring(substring s)
int32_t int_of_substring(substring s)
void deprecated(const char *file, int32_t line) const
void set_target_to_stdout()
static const char * message_strings[NUM_LOG_LEVELS]
EMessageType get_loglevel() const
float64_t progress_start_time
float64_t double_of_substring(substring s)
bool get_show_progress() const
static void set_dirname(const char *dirname)
const char * get_msg_intro(EMessageType prio) const
void print_substring(substring s)
static int filter(CONST_DIRENT_T *d)
static char directory_name[FBUFSIZE]
directory name buffer
void progress(float64_t current_val, float64_t min_val=0.0, float64_t max_val=1.0, int32_t decimals=1, const char *prefix="PROGRESS:\t")
void absolute_progress(float64_t current_val, float64_t val, float64_t min_val=0.0, float64_t max_val=1.0, int32_t decimals=1, const char *prefix="PROGRESS:\t")
Class SGIO, used to do input output operations throughout shogun.
void set_target_to_stderr()
static const EMessageType levels[NUM_LOG_LEVELS]
bool get_syntax_highlight() const
static const char * message_strings_highlighted[NUM_LOG_LEVELS]
#define SG_CALLOC(type, len)