blitz_incbin.c 757 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "blitz.h"
  2. typedef struct BBIncbin BBIncbin;
  3. struct BBIncbin{
  4. BBIncbin *succ;
  5. BBString *path;
  6. void *ptr;
  7. int len;
  8. };
  9. static BBIncbin *incs;
  10. static BBIncbin *find( BBString *path ){
  11. BBIncbin *p;
  12. for( p=incs;p;p=p->succ ){
  13. if( !bbStringCompare(path,p->path) ) return p;
  14. }
  15. return 0;
  16. }
  17. int bbIncbinAdd( BBString *path,void *ptr,int len ){
  18. BBIncbin *p;
  19. p=find( path );
  20. if( p ) return 0;
  21. p=(BBIncbin*)bbMemAlloc( sizeof(BBIncbin) );
  22. BBRETAIN( path );
  23. p->path=path;
  24. p->ptr=ptr;
  25. p->len=len;
  26. p->succ=incs;
  27. incs=p;
  28. return 1;
  29. }
  30. void *bbIncbinPtr( BBString *path ){
  31. BBIncbin *p;
  32. p=find( path );
  33. return p ? p->ptr : 0;
  34. }
  35. int bbIncbinLen( BBString *path ){
  36. BBIncbin *p;
  37. p=find( path );
  38. return p ? p->len : 0;
  39. }