Update of /cvsroot/pure-data/externals/loaders/hexloader In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29332
Modified Files: Makefile hexloader.c Log Message:
do not handle abstraction that can be handled by pd-proper
Index: Makefile =================================================================== RCS file: /cvsroot/pure-data/externals/loaders/hexloader/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Makefile 19 Apr 2007 13:40:34 -0000 1.2 --- Makefile 28 Nov 2007 18:58:07 -0000 1.3 *************** *** 4,8 **** # path to pd ## change this according to your setup! ! PDROOT=../../../pd
# here we find the sources of pd (and evtl. the pd.lib) --- 4,9 ---- # path to pd ## change this according to your setup! ! #PDROOT=../../../pd ! PDROOT=/Net/iem/Benutzer/zmoelnig/src/pd-0.41-0test08
# here we find the sources of pd (and evtl. the pd.lib)
Index: hexloader.c =================================================================== RCS file: /cvsroot/pure-data/externals/loaders/hexloader/hexloader.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** hexloader.c 17 Oct 2007 14:31:26 -0000 1.4 --- hexloader.c 28 Nov 2007 18:58:07 -0000 1.5 *************** *** 670,684 **** int extindex=0; char*extent=patch_extent[extindex]; ! while(extent!=0) { ! if ((fd = open_via_path(".", altname, extent, dirbuf, &nameptr, MAXPDSTRING, 0)) >= 0) { ! t_symbol*s; ! close (fd); ! t_filepath*fp=hexloader_loadpatch(dirbuf, nameptr, altname, classname); ! if(fp) { ! return fp; } } - extindex++; - extent=patch_extent[extindex]; } altnames=altnames->next; --- 670,686 ---- int extindex=0; char*extent=patch_extent[extindex]; ! if(strcmp(altname, classname)) { /* we only try if it is worth trying... */ ! while(extent!=0) { ! if ((fd = open_via_path(".", altname, extent, dirbuf, &nameptr, MAXPDSTRING, 0)) >= 0) { ! t_symbol*s; ! close (fd); ! t_filepath*fp=hexloader_loadpatch(dirbuf, nameptr, altname, classname); ! if(fp) { ! return fp; ! } } + extindex++; + extent=patch_extent[extindex]; } } altnames=altnames->next; *************** *** 688,691 **** --- 690,699 ---- }
+ + /** + * this is the actual loader: + * we first try to load an external with alternative (hexified) names + * if this fails, we fall back to load a patch with athese names + */ static int hexloader_doloader(t_canvas *canvas, filelist_t*altnames0, char*classname) { *************** *** 704,707 **** --- 712,735 ----
/** + * recursive use of our powers: + * try to load the object with alternative (hexified) names using other available loaders + * when it comes to us, we just return 0... + */ + static int hexloader_callothers(t_canvas *canvas, filelist_t*altnames) { + int result=0; + while(altnames) { + char*altname=altnames->name; + verbose(2, "calling sys_load with '%s'", altname); + result=sys_load_lib(canvas, altname); + if(result==1) { + return 1; + } + altnames=altnames->next; + } + return 0; + } + + + /** * the loader * *************** *** 722,727 **** altnames=hexloader_getalternatives(classname);
! /* do the loading */ ! result=hexloader_doloader(canvas, altnames, classname);
/* clean up */ --- 750,762 ---- altnames=hexloader_getalternatives(classname);
! /* try other loaders with our power */ ! if(result==0){ ! result=hexloader_callothers(canvas, altnames); ! } ! ! /* do the loading ourselves */ ! if(result==0) { ! result=hexloader_doloader(canvas, altnames, classname); ! }
/* clean up */ *************** *** 738,745 **** filelist_t*altnames=0;
! post("hexloader: disguising as '%s'", s->s_name);
if(!pd_objectmaker) { ! post("BUG: no pd_objectmaker found"); return 0; } --- 773,780 ---- filelist_t*altnames=0;
! verbose(1, "hexloader: disguising as '%s'", s->s_name);
if(!pd_objectmaker) { ! error("BUG: no pd_objectmaker found"); return 0; }