64 return RPT_(
"Operator");
66 return RPT_(
"Property");
68 return RPT_(
"Warning");
72 return RPT_(
"Invalid Input Error");
74 return RPT_(
"Invalid Context Error");
76 return RPT_(
"Out Of Memory Error");
78 return RPT_(
"Undefined Type");
94 reports->
lock = MEM_new<std::mutex>(__func__);
105 MEM_delete(reports->
lock);
106 reports->
lock =
nullptr;
111 Report *report, *report_next;
117 std::scoped_lock
lock(*reports->
lock);
122 report_next = report->
next;
125 report = report_next;
133 reports->
lock->lock();
138 reports->
lock->unlock();
148 std::scoped_lock
lock(*reports_src->
lock, *reports_dst->
lock);
157 const char *message =
RPT_(_message);
165 std::scoped_lock
lock(*reports->
lock);
172 len = strlen(message);
174 memcpy(message_alloc, message,
sizeof(
char) * (
len + 1));
175 report->
message = message_alloc;
188 va_start(args, _format);
197 std::scoped_lock
lock(*reports->
lock);
201 va_start(args, _format);
221 std::scoped_lock
lock(*reports->
lock);
223 const size_t prefix_len = strlen(prepend);
227 report->message = message;
228 report->len += prefix_len;
247 va_start(args, prepend_format);
271 std::scoped_lock
lock(*reports->
lock);
291 std::scoped_lock
lock(*reports->
lock);
305 std::scoped_lock
lock(*reports->
lock);
309 if (report->type >= level) {
327 if (reports ==
nullptr) {
345 if (reports ==
nullptr) {
350 if (report->type >= level) {
360 if (cstring ==
nullptr) {
365 fputs(cstring, stdout);
372 std::scoped_lock
lock(*reports->
lock);
385 if (reports !=
nullptr) {
386 std::scoped_lock
lock(*reports->
lock);
389 if (report->type >= level) {
403 std::scoped_lock
lock(*reports->
lock);
406 fprintf(fp,
"%s # %s\n", report->message, report->typestr);
420 "Unable to save '%s': %s\n",
422 errno ? strerror(errno) :
"Unknown error opening file");
@ RPT_PRINT_HANDLED_BY_OWNER
@ RPT_ERROR_OUT_OF_MEMORY
@ RPT_ERROR_INVALID_INPUT
@ RPT_ERROR_INVALID_CONTEXT
A dynamically sized string ADT.
char * BLI_dynstr_get_cstring(const DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_dynstr_get_len(const DynStr *ds) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
void BLI_dynstr_appendf(DynStr *__restrict ds, const char *__restrict format,...) ATTR_PRINTF_FORMAT(2
File and directory operations.
FILE * BLI_fopen(const char *filepath, const char *mode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void void void BLI_movelisttolist(ListBase *dst, ListBase *src) ATTR_NONNULL(1
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
char char * BLI_vsprintfN(const char *__restrict format, va_list args) ATTR_NONNULL(1
#define BLI_string_joinN(...)
#define CLOG_STR_DEBUG(clg_ref, str)
#define CLOG_STR_ERROR(clg_ref, str)
#define CLOG_INFO_NOCHECK(clg_ref, format,...)
#define CLOG_STR_WARN(clg_ref, str)
Read Guarded memory(de)allocation.
void * MEM_callocN(size_t len, const char *str)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
bool BKE_reports_contain(ReportList *reports, eReportType level)
void BKE_reports_unlock(ReportList *reports)
bool BKE_reports_print_test(const ReportList *reports, eReportType type)
eReportType BKE_report_store_level(ReportList *reports)
bool BKE_report_write_file(const char *filepath, ReportList *reports, const char *header)
char * BKE_reports_string(ReportList *reports, eReportType level)
static void reports_prepend_impl(ReportList *reports, const char *prepend)
bool BKE_report_write_file_fp(FILE *fp, ReportList *reports, const char *header)
Report * BKE_reports_last_displayable(ReportList *reports)
void BKE_reports_free(ReportList *reports)
const char * BKE_report_type_str(eReportType type)
void BKE_reports_prepend(ReportList *reports, const char *prepend)
void BKE_report_print_level_set(ReportList *reports, eReportType level)
void BKE_reports_log(ReportList *reports, eReportType level, CLG_LogRef *log)
void BKE_report_store_level_set(ReportList *reports, eReportType level)
eReportType BKE_report_print_level(ReportList *reports)
void BKE_reports_clear(ReportList *reports)
void BKE_reportf(ReportList *reports, eReportType type, const char *_format,...)
void BKE_report(ReportList *reports, eReportType type, const char *_message)
void BKE_reports_prependf(ReportList *reports, const char *prepend_format,...)
void BKE_reports_lock(ReportList *reports)
void BKE_reports_init(ReportList *reports, int flag)
void BKE_reports_print(ReportList *reports, eReportType level)
void BKE_reports_move_to_reports(ReportList *reports_dst, ReportList *reports_src)
void BKE_report_log(eReportType type, const char *message, CLG_LogRef *log)