home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / pOSxA.lzx / pOSxA / clib / iffparse_protos.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-12  |  7.6 KB  |  364 lines

  1. #ifndef __INC_POSA_CLIB_IFFPARSE_PROTOS_C
  2. #define __INC_POSA_CLIB_IFFPARSE_PROTOS_C
  3. /*******************************************************************
  4.  $CRT 04 Feb 1997 : hp
  5.  
  6.  $AUT Holger Papajewski
  7.  $DAT >>iffparse_protos.c<<   04 Feb 1997    14:15:40 - (C) ProDAD
  8. *******************************************************************/
  9.  
  10. #pragma -
  11.  
  12. #define NOMYDEBUG
  13.  
  14.  
  15. #ifndef  EXEC_TYPES_H
  16. #include <exec/types.h>
  17. #endif
  18. #ifndef IFF_IFFPARSE_H
  19. #include <libraries/iffparse.h>
  20. #endif
  21.  
  22. #ifndef __INC_POS_PEXEC_MEMORY_H
  23. #include "p:pExec/Memory.h"
  24. #endif
  25. #ifndef __INC_POS_PDOS_IOSTRUCT_H
  26. #include "p:pDOS/IOStruct.h"
  27. #endif
  28. #ifndef __INC_POS_PIFFPARSE_IFFPARSE_H
  29. #include "p:pIFFParse/IFFParse.h"
  30. #endif
  31. #ifndef __INC_POS_PIFFPARSE_IFFPARSETAGS_H
  32. #include "p:pIFFParse/IFFParseTags.h"
  33. #endif
  34. #ifndef __INC_POS_PROTO_PEXEC2_H
  35. #include "p:proto/pExec2.h"
  36. #endif
  37. #ifndef __INC_POS_PROTO_PDOS2_H
  38. #include "p:proto/pDOS2.h"
  39. #endif
  40. #ifndef __INC_POS_PROTO_PIFFPARSE2_H
  41. #include "p:proto/pIFFParse2.h"
  42. #endif
  43.  
  44. #pragma -
  45.  
  46.  
  47.  
  48. /*\
  49. *** spezielle IFFHandle Struktur,
  50. *** um Crosscompiling zu ermöglichen
  51. \*/
  52. struct pOS_IFFxA
  53. {
  54.   ULONG           iffhxA_Stream;
  55.   SLONG           iffhxA_Depth;
  56.   UWORD           iffhxA_IFFMode;
  57.   pOS_IFFHandle  *iffhxA_IFF;
  58. };
  59.  
  60. enum pOS_IFFxA_IFFMode
  61. {
  62.   IFFxAMD_IFFasDOS = 0x0001,
  63. };
  64.  
  65.  
  66.  
  67.  
  68.  
  69. struct IFFHandle *AllocIFF( void )
  70. {
  71.   pOS_IFFxA *iffa;
  72.   iffa = (pOS_IFFxA*)pOS_AllocVec(sizeof(pOS_IFFxA),MEMF_CLEAR);
  73.   return((struct IFFHandle*)iffa );
  74. }
  75.  
  76.  
  77.  
  78. void FreeIFF( struct IFFHandle *iff )
  79. { pOS_FreeVec( iff ); }
  80.  
  81.  
  82.  
  83. void InitIFFasDOS( struct IFFHandle *iff )
  84. {
  85.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  86.  
  87.   iffa->iffhxA_IFFMode = IFFxAMD_IFFasDOS;
  88. }
  89.  
  90.  
  91.  
  92. LONG OpenIFF( struct IFFHandle *iff, long rwMode )
  93. {
  94.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  95.   LONG Res=-1;
  96.  
  97.   if( iffa->iffhxA_Stream )
  98.   {
  99.     switch( iffa->iffhxA_IFFMode )
  100.     {
  101.       case IFFxAMD_IFFasDOS:
  102.         iffa->iffhxA_IFF = pOS_OpenIFF(
  103.         IFFTAG_FH,iffa->iffhxA_Stream,
  104.         IFFTAG_AccessMode, rwMode, TAG_DONE );
  105.         break;
  106.  
  107.       default:
  108.         break;
  109.     }
  110.  
  111.     if( iffa->iffhxA_IFF ) Res=0;
  112.   }
  113.  
  114.   return( Res );
  115. }
  116.  
  117.  
  118.  
  119. void CloseIFF( struct IFFHandle *iff )
  120. {
  121.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  122.  
  123.   if( iffa->iffhxA_IFF )
  124.   {
  125.     switch( iffa->iffhxA_IFFMode )
  126.     {
  127.       case IFFxAMD_IFFasDOS:
  128.         pOS_CloseIFF( iffa->iffhxA_IFF );
  129.         break;
  130.  
  131.       default:
  132.         break;
  133.     }
  134.     iffa->iffhxA_IFF = NULL;
  135.   }
  136. }
  137.  
  138.  
  139.  
  140. LONG ParseIFF( struct IFFHandle *iff, long mode )
  141. {
  142.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  143.   SLONG Res=-1;
  144.  
  145.   if( iffa->iffhxA_IFF )
  146.   {
  147.     Res = pOS_ParseIFF( iffa->iffhxA_IFF, mode );
  148.     if( !Res )
  149.       iffa->iffhxA_Depth = iffa->iffhxA_IFF->iffh_Depth;
  150.   }
  151.   return( Res );
  152. }
  153.  
  154.  
  155. LONG ReadChunkBytes( struct IFFHandle *iff, APTR buf, long num )
  156. {
  157.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  158.   return(pOS_ReadChunkBytes(iffa->iffhxA_IFF,buf,num));
  159. }
  160.  
  161.  
  162.  
  163. LONG WriteChunkBytes( struct IFFHandle *iff, APTR buf, long num )
  164. {
  165.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  166.   return(pOS_WriteChunkBytes(iffa->iffhxA_IFF,buf,num));
  167. }
  168.  
  169.  
  170.  
  171. LONG ReadChunkRecords( struct IFFHandle *iff, APTR buf,
  172.   long bytesPerRecord, long numRecords )
  173. {
  174.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  175.   SLONG Res=0;
  176.  
  177.   while( numRecords )
  178.   {
  179.     if(pOS_ReadChunkBytes(iffa->iffhxA_IFF,buf,bytesPerRecord)==bytesPerRecord)
  180.     { buf=(UBYTE*)buf+bytesPerRecord; Res++; numRecords--; }
  181.     else
  182.     { Res=IFFERR_Read; break; }
  183.   }
  184.   return( Res );
  185. }
  186.  
  187.  
  188.  
  189. LONG WriteChunkRecords( struct IFFHandle *iff, APTR buf,
  190.   long bytesPerRecord, long numRecords )
  191. {
  192.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  193.   SLONG Res=0;
  194.  
  195.   while( numRecords )
  196.   {
  197.     if(pOS_WriteChunkBytes(iffa->iffhxA_IFF,buf,bytesPerRecord)==bytesPerRecord)
  198.     { buf=(UBYTE*)buf+bytesPerRecord; Res++; numRecords--; }
  199.     else
  200.     { Res=IFFERR_Write; break; }
  201.   }
  202.   return( Res );
  203. }
  204.  
  205.  
  206.  
  207. LONG PushChunk( struct IFFHandle *iff, long type, long id, long size )
  208. {
  209.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  210.   return(pOS_PushChunk(iffa->iffhxA_IFF,type,id,size));
  211. }
  212.  
  213.  
  214.  
  215. LONG PopChunk( struct IFFHandle *iff )
  216. {
  217.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  218.   return(pOS_PopChunk(iffa->iffhxA_IFF));
  219. }
  220.  
  221.  
  222.  
  223. LONG PropChunk( struct IFFHandle *iff, long type, long id )
  224. {
  225.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  226.   return(pOS_PropChunk(iffa->iffhxA_IFF,IFFTAG_ParseType,type,
  227.     IFFTAG_ParseID,id,TAG_DONE));
  228. }
  229.  
  230.  
  231.  
  232. LONG PropChunks( struct IFFHandle *iff, LONG *propArray, long numPairs )
  233. {
  234.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  235.   SLONG Res=0;
  236.  
  237.   while( numPairs-- )
  238.   {
  239.     Res=pOS_PropChunk(iffa->iffhxA_IFF,IFFTAG_ParseType,*propArray++,
  240.       IFFTAG_ParseID,*propArray++,TAG_DONE);
  241.  
  242.     if( Res ) break;
  243.   }
  244.   return( Res );
  245. }
  246.  
  247.  
  248.  
  249. LONG StopChunk( struct IFFHandle *iff, long type, long id )
  250. {
  251.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  252.   return(pOS_StopChunk(iffa->iffhxA_IFF,IFFTAG_StopType,type,
  253.     IFFTAG_StopID,id,TAG_DONE));
  254. }
  255.  
  256.  
  257. LONG StopChunks( struct IFFHandle *iff, LONG *propArray, long numPairs )
  258. {
  259.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  260.   SLONG Res=0;
  261.  
  262.   while( numPairs-- )
  263.   {
  264.     Res=pOS_StopChunk(iffa->iffhxA_IFF,IFFTAG_StopType,*propArray++,
  265.       IFFTAG_StopID,*propArray++,TAG_DONE);
  266.  
  267.     if( Res ) break;
  268.   }
  269.   return( Res );
  270. }
  271.  
  272.  
  273.  
  274. LONG StopOnExit( struct IFFHandle *iff, long type, long id )
  275. {
  276.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  277.   return(pOS_StopChunk(iffa->iffhxA_IFF,IFFTAG_StopOnExit,TRUE,
  278.     IFFTAG_StopType,type,IFFTAG_StopID,id,TAG_DONE));
  279. }
  280.  
  281.  
  282. struct StoredProperty *FindProp( struct IFFHandle *iff, long type, long id )
  283. {
  284.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  285.   return((StoredProperty*)pOS_FindProp(iffa->iffhxA_IFF,type,id));
  286. }
  287.  
  288.  
  289. struct ContextNode *CurrentChunk( struct IFFHandle *iff )
  290. {
  291.   pOS_IFFxA *iffa = (pOS_IFFxA*)iff;
  292.   return((ContextNode*)pOS_CurrentChunk(iffa->iffhxA_IFF));
  293. }
  294.  
  295. STRPTR IDtoStr( long id, STRPTR buf )
  296. {
  297.   buf[4] = 0;
  298.   buf[3] = id & 0xFF;
  299.   id >>= 8;
  300.   buf[2] = id & 0xFF;
  301.   id >>= 8;
  302.   buf[1] = id & 0xFF;
  303.   id >>= 8;
  304.   buf[0] = id & 0xFF;
  305.  
  306.   return( buf );
  307. }
  308.  
  309.  
  310.  
  311. /*****************************************************************************/
  312.  
  313.  
  314. #ifdef __IGNORE_NOT_SUPPORTED__
  315.  
  316.  
  317. LONG EntryHandler( struct IFFHandle *iff, long type, long id, long position,struct Hook *handler, APTR object )
  318. { return(-1); }
  319. LONG ExitHandler( struct IFFHandle *iff, long type, long id, long position,struct Hook *handler, APTR object )
  320. { return(-1); }
  321. struct CollectionItem *FindCollection( struct IFFHandle *iff, long type,long id )
  322. { return(NULL); }
  323. struct ContextNode *FindPropContext( struct IFFHandle *iff )
  324. { return(NULL); }
  325. LONG CollectionChunk( struct IFFHandle *iff, long type, long id )
  326. { return(-1); }
  327. LONG CollectionChunks( struct IFFHandle *iff, LONG *propArray,long numPairs )
  328. { return(-1); }
  329. struct ContextNode *ParentChunk( struct ContextNode *contextNode )
  330. { return(NULL); }
  331. struct LocalContextItem *AllocLocalItem( long type, long id, long ident,long dataSize )
  332. { return(NULL); }
  333. APTR LocalItemData( struct LocalContextItem *localItem )
  334. { return(NULL); }
  335. void SetLocalItemPurge( struct LocalContextItem *localItem,struct Hook *purgeHook )
  336. {}
  337. void FreeLocalItem( struct LocalContextItem *localItem )
  338. {}
  339. struct LocalContextItem *FindLocalItem( struct IFFHandle *iff, long type,long id, long ident )
  340. { return(NULL); }
  341. LONG StoreLocalItem( struct IFFHandle *iff, struct LocalContextItem *localItem,long position )
  342. { return(-1); }
  343. void StoreItemInContext( struct IFFHandle *iff,struct LocalContextItem *localItem,struct ContextNode *contextNode )
  344. {}
  345. void InitIFF( struct IFFHandle *iff, long flags, struct Hook *streamHook )
  346. {}
  347. void InitIFFasClip( struct IFFHandle *iff )
  348. {}
  349. struct ClipboardHandle *OpenClipboard( long unitNumber )
  350. { return(NULL); }
  351. void CloseClipboard( struct ClipboardHandle *clipHandle )
  352. {}
  353. LONG GoodID( long id )
  354. { return(1); }
  355. LONG GoodType( long type )
  356. { return(1); }
  357.  
  358.  
  359. #endif
  360.  
  361.  
  362.  
  363. #endif
  364.