[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17935] branches/blender2.5/blender/source : 2.5: Change blenloader module to use the Report system for reporting errors.
Brecht Van Lommel
brecht at blender.org
Fri Dec 19 01:50:21 CET 2008
Revision: 17935
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17935
Author: blendix
Date: 2008-12-19 01:50:21 +0100 (Fri, 19 Dec 2008)
Log Message:
-----------
2.5: Change blenloader module to use the Report system for reporting errors.
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/blenkernel/BKE_report.h
branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c
branches/blender2.5/blender/source/blender/blenkernel/intern/report.c
branches/blender2.5/blender/source/blender/blenloader/BLO_readfile.h
branches/blender2.5/blender/source/blender/blenloader/BLO_writefile.h
branches/blender2.5/blender/source/blender/blenloader/intern/readblenentry.c
branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
branches/blender2.5/blender/source/blender/blenloader/intern/readfile.h
branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c
branches/blender2.5/blender/source/blender/makesdna/DNA_fileglobal_types.h
branches/blender2.5/blender/source/blender/readblenfile/BLO_readblenfile.h
branches/blender2.5/blender/source/blender/readblenfile/intern/BLO_readblenfile.c
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_files.c
branches/blender2.5/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
branches/blender2.5/blender/source/gameengine/GamePlayer/ActiveX/BlenderPlayerCtl.cpp
branches/blender2.5/blender/source/gameengine/GamePlayer/common/GPC_Engine.cpp
branches/blender2.5/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
branches/blender2.5/blender/source/gameengine/GamePlayer/netscape/src/ketsji/KXH_engine_data_wraps.h
branches/blender2.5/blender/source/gameengine/GamePlayer/netscape/src/ketsji/KXH_ketsji_hooks.cpp
Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_report.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_report.h 2008-12-19 00:43:37 UTC (rev 17934)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_report.h 2008-12-19 00:50:21 UTC (rev 17935)
@@ -48,7 +48,8 @@
enum ReportListFlags {
RPT_PRINT = 1,
- RPT_STORE = 2
+ RPT_STORE = 2,
+ RPT_HAS_ERROR = 4
};
typedef struct Report {
@@ -60,21 +61,25 @@
typedef struct ReportList {
ListBase list;
- ReportType level;
- int flags;
+ ReportType printlevel;
+ ReportType storelevel;
+ int flag;
} ReportList;
-void BKE_report_list_init(ReportList *reports, int flag);
-void BKE_report_list_clear(ReportList *reports);
+void BKE_reports_init(ReportList *reports, int flag);
+void BKE_reports_clear(ReportList *reports);
void BKE_report(ReportList *reports, ReportType type, const char *message);
void BKE_reportf(ReportList *reports, ReportType type, const char *format, ...);
-ReportType BKE_report_level(ReportList *reports);
-void BKE_report_level_set(ReportList *reports, ReportType level);
+ReportType BKE_report_print_level(ReportList *reports);
+void BKE_report_print_level_set(ReportList *reports, ReportType level);
-int BKE_report_has_error(ReportList *reports);
+ReportType BKE_report_store_level(ReportList *reports);
+void BKE_report_store_level_set(ReportList *reports, ReportType level);
+void BKE_reports_print(ReportList *reports, ReportType level);
+
#ifdef __cplusplus
}
#endif
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c 2008-12-19 00:43:37 UTC (rev 17934)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/blender.c 2008-12-19 00:50:21 UTC (rev 17935)
@@ -77,6 +77,7 @@
#include "BKE_main.h"
#include "BKE_node.h"
#include "BKE_object.h"
+#include "BKE_report.h"
#include "BKE_scene.h"
#include "BKE_screen.h"
#include "BKE_sound.h"
@@ -435,11 +436,13 @@
int BKE_read_file(bContext *C, char *dir, void *unused)
{
- BlendReadError bre;
+ ReportList reports;
BlendFileData *bfd;
int retval= 1;
- bfd= BLO_read_from_file(dir, &bre);
+ BKE_reports_init(&reports, RPT_STORE);
+
+ bfd= BLO_read_from_file(dir, &reports);
if (bfd) {
if(bfd->user) retval= 2;
@@ -450,38 +453,48 @@
else {
// XXX error("Loading %s failed: %s", dir, BLO_bre_as_string(bre));
}
+
+ BKE_reports_clear(&reports);
return (bfd?retval:0);
}
int BKE_read_file_from_memory(bContext *C, char* filebuf, int filelength, void *unused)
{
- BlendReadError bre;
+ ReportList reports;
BlendFileData *bfd;
-
- bfd= BLO_read_from_memory(filebuf, filelength, &bre);
+
+ BKE_reports_init(&reports, RPT_STORE);
+
+ bfd= BLO_read_from_memory(filebuf, filelength, &reports);
if (bfd) {
setup_app_data(C, bfd, "<memory2>");
} else {
// XXX error("Loading failed: %s", BLO_bre_as_string(bre));
}
+ BKE_reports_clear(&reports);
+
return (bfd?1:0);
}
/* memfile is the undo buffer */
int BKE_read_file_from_memfile(bContext *C, MemFile *memfile)
{
- BlendReadError bre;
+ ReportList reports;
BlendFileData *bfd;
- bfd= BLO_read_from_memfile(G.sce, memfile, &bre);
+ BKE_reports_init(&reports, RPT_STORE);
+
+ bfd= BLO_read_from_memfile(G.sce, memfile, &reports);
if (bfd) {
setup_app_data(C, bfd, "<memory1>");
} else {
// XXX error("Loading failed: %s", BLO_bre_as_string(bre));
}
+ BKE_reports_clear(&reports);
+
return (bfd?1:0);
}
@@ -568,8 +581,9 @@
/* disk save version */
if(UNDO_DISK) {
+ ReportList reports;
static int counter= 0;
- char *err, tstr[FILE_MAXDIR+FILE_MAXFILE];
+ char tstr[FILE_MAXDIR+FILE_MAXFILE];
char numstr[32];
/* calculate current filename */
@@ -579,18 +593,22 @@
sprintf(numstr, "%d.blend", counter);
BLI_make_file_string("/", tstr, btempdir, numstr);
- success= BLO_write_file(C, tstr, G.fileflags, &err);
+ BKE_reports_init(&reports, 0);
+ success= BLO_write_file(C, tstr, G.fileflags, &reports);
+ BKE_reports_clear(&reports);
strcpy(curundo->str, tstr);
}
else {
+ ReportList reports;
MemFile *prevfile=NULL;
- char *err;
if(curundo->prev) prevfile= &(curundo->prev->memfile);
memused= MEM_get_memory_in_use();
- success= BLO_write_file_mem(C, prevfile, &curundo->memfile, G.fileflags, &err);
+ BKE_reports_init(&reports, 0);
+ success= BLO_write_file_mem(C, prevfile, &curundo->memfile, G.fileflags, &reports);
+ BKE_reports_clear(&reports);
curundo->undosize= MEM_get_memory_in_use() - memused;
}
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/report.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/report.c 2008-12-19 00:43:37 UTC (rev 17934)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/report.c 2008-12-19 00:50:21 UTC (rev 17935)
@@ -57,15 +57,16 @@
}
}
-void BKE_report_list_init(ReportList *reports, int flags)
+void BKE_reports_init(ReportList *reports, int flag)
{
memset(reports, 0, sizeof(ReportList));
- reports->level= RPT_WARNING;
- reports->flags= flags;
+ reports->storelevel= RPT_WARNING;
+ reports->printlevel= RPT_WARNING;
+ reports->flag= flag;
}
-void BKE_report_list_clear(ReportList *reports)
+void BKE_reports_clear(ReportList *reports)
{
Report *report;
@@ -80,15 +81,18 @@
Report *report;
int len;
- if(!reports || type < reports->level)
+ if(!reports)
return;
+
+ if(type >= RPT_ERROR)
+ reports->flag |= RPT_HAS_ERROR;
- if(reports->flags & RPT_PRINT) {
+ if((reports->flag & RPT_PRINT) && (type >= reports->printlevel)) {
printf("%s: %s\n", report_type_str(type), message);
fflush(stdout); /* this ensures the message is printed before a crash */
}
- if(reports->flags & RPT_STORE) {
+ if((reports->flag & RPT_STORE) && (type >= reports->storelevel)) {
report= MEM_callocN(sizeof(Report), "Report");
report->type= type;
report->typestr= report_type_str(type);
@@ -108,17 +112,20 @@
char *message;
int len= 256, maxlen= 65536, retval;
- if(!reports || type < reports->level)
+ if(!reports)
return;
- if(reports->flags & RPT_PRINT) {
+ if(type >= RPT_ERROR)
+ reports->flag |= RPT_HAS_ERROR;
+
+ if((reports->flag & RPT_PRINT) && (type >= reports->printlevel)) {
va_start(args, format);
vprintf(format, args);
va_end(args);
fflush(stdout); /* this ensures the message is printed before a crash */
}
- if(reports->flags & RPT_STORE) {
+ if((reports->flag & RPT_STORE) && (type >= reports->storelevel)) {
while(1) {
message= MEM_callocN(sizeof(char)*len+1, "ReportMessage");
@@ -160,27 +167,37 @@
}
}
-ReportType BKE_report_level(ReportList *reports)
+ReportType BKE_report_print_level(ReportList *reports)
{
- return reports->level;
+ return reports->printlevel;
}
-void BKE_report_level_set(ReportList *reports, ReportType level)
+void BKE_report_print_level_set(ReportList *reports, ReportType level)
{
- reports->level= level;
+ reports->printlevel= level;
}
-int BKE_report_has_error(ReportList *reports)
+ReportType BKE_report_store_level(ReportList *reports)
{
+ return reports->storelevel;
+}
+
+void BKE_report_store_level_set(ReportList *reports, ReportType level)
+{
+ reports->storelevel= level;
+}
+
+void BKE_reports_print(ReportList *reports, ReportType level)
+{
Report *report;
if(!reports)
- return 0;
+ return;
+
+ for(report=reports->list.first; report; report=report->next)
+ if(report->type >= level)
+ printf("%s: %s\n", report->typestr, report->message);
- for(report=reports->list.first; report; report=report->next)
- if(report->type >= RPT_ERROR)
- return 1;
-
- return 0;
+ fflush(stdout);
}
Modified: branches/blender2.5/blender/source/blender/blenloader/BLO_readfile.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/BLO_readfile.h 2008-12-19 00:43:37 UTC (rev 17934)
+++ branches/blender2.5/blender/source/blender/blenloader/BLO_readfile.h 2008-12-19 00:50:21 UTC (rev 17935)
@@ -34,16 +34,17 @@
extern "C" {
#endif
-struct SpaceFile;
-struct SpaceImaSel;
+struct bScreen;
+struct direntry;
struct FileList;
struct LinkNode;
struct Main;
-struct UserDef;
-struct bScreen;
-struct Scene;
struct MemFile;
-struct direntry;
+struct ReportList;
+struct Scene;
+struct SpaceFile;
+struct SpaceImaSel;
+struct UserDef;
typedef struct BlendHandle BlendHandle;
@@ -53,29 +54,6 @@
BLENFILETYPE_RUNTIME= 3
} BlenFileType;
-typedef enum {
- BRE_NONE,
-
- BRE_UNABLE_TO_OPEN,
- BRE_UNABLE_TO_READ,
-
- BRE_OUT_OF_MEMORY,
- BRE_INTERNAL_ERROR,
-
- BRE_NOT_A_BLEND,
- BRE_NOT_A_PUBFILE,
- BRE_INCOMPLETE,
- BRE_CORRUPT,
-
- BRE_TOO_NEW,
- BRE_NOT_ALLOWED,
-
- BRE_NO_SCREEN,
- BRE_NO_SCENE,
-
- BRE_INVALID
-} BlendReadError;
-
typedef struct BlendFileData {
struct Main* main;
struct UserDef* user;
@@ -93,48 +71,35 @@
/**
* Open a blender file from a pathname. The function
- * returns NULL and sets the @a error_r argument if
+ * returns NULL and sets a report in the list if
* it cannot open the file.
*
* @param file The path of the file to open.
- * @param error_r If the return value is NULL, an error
- * code indicating the cause of the failure.
+ * @param reports If the return value is NULL, errors
+ * indicating the cause of the failure.
* @return The data of the file.
*/
-BlendFileData* BLO_read_from_file (char *file, BlendReadError *error_r);
+BlendFileData* BLO_read_from_file (char *file, struct ReportList *reports);
/**
* Open a blender file from memory. The function
- * returns NULL and sets the @a error_r argument if
+ * returns NULL and sets a report in the list if
* it cannot open the file.
*
* @param mem The file data.
* @param memsize The length of @a mem.
- * @param error_r If the return value is NULL, an error
- * code indicating the cause of the failure.
+ * @param reports If the return value is NULL, errors
+ * indicating the cause of the failure.
* @return The data of the file.
*/
-BlendFileData* BLO_read_from_memory(void *mem, int memsize, BlendReadError *error_r);
+BlendFileData* BLO_read_from_memory(void *mem, int memsize, struct ReportList *reports);
/**
* file name is current file, only for retrieving library data */
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list