37 return RPT_(
"Operator");
39 return RPT_(
"Property");
41 return RPT_(
"Warning");
45 return RPT_(
"Invalid Input Error");
47 return RPT_(
"Invalid Context Error");
49 return RPT_(
"Out Of Memory Error");
51 return RPT_(
"Undefined Type");
67 reports->lock = MEM_new<std::mutex>(__func__);
84 Report *report, *report_next;
95 report_next = report->
next;
121 std::scoped_lock
lock(*reports_src->
lock, *reports_dst->
lock);
130 const char *message =
RPT_(_message);
145 len = strlen(message);
147 memcpy(message_alloc, message,
sizeof(
char) * (
len + 1));
148 report->
message = message_alloc;
162 va_start(args, _format);
165 fprintf(stdout,
"\n");
174 va_start(args, _format);
196 const size_t prefix_len = strlen(prepend);
200 report->message = message;
201 report->len += prefix_len;
220 va_start(args, prepend_format);
282 if (report->type >= level) {
320 if (cstring ==
nullptr) {
325 fputs(cstring, stdout);
349 if (report->type >= level) {
366 fprintf(fp,
"%s # %s\n", report->message, report->typestr);
380 "Unable to save '%s': %s\n",
382 errno ? strerror(errno) :
"Unknown error opening file");
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(...)
@ RPT_PRINT_HANDLED_BY_OWNER
@ RPT_ERROR_OUT_OF_MEMORY
@ RPT_ERROR_INVALID_INPUT
@ RPT_ERROR_INVALID_CONTEXT
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_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)