home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 648a.lha / MTRD_Library_v0.99゚ / MTRD.h < prev    next >
C/C++ Source or Header  |  1992-06-12  |  3KB  |  98 lines

  1. void WriteData(struct MFile *File, struct MUser *User, char *Data);
  2. struct MFile *OpenMFile(struct MsgPort *Port, struct FileID *FID, unsigned short Flags);
  3. void CloseMFile(struct MFile *File, struct MUser *User);
  4. unsigned long CountFiles(unsigned short Type, unsigned short Sub);
  5. unsigned long GetFileList(struct FileList *Buffer, unsigned long Max, unsigned short Type, unsigned short Sub);
  6. struct MUser *AddUser(struct MFile *File, struct MsgPort *Port, char *Buffer, unsigned short Flags);
  7. void RemUser(struct MUser *User);
  8. void InitData(char *ptr);
  9. void AddBytes(char *ptr, unsigned long offset, unsigned short size, char *byteP);
  10. void AddWords(char *ptr, unsigned long offset, unsigned short size, unsigned short *wordP);
  11. void AddLongs(char *ptr, unsigned long offset, unsigned short size, unsigned long *longP);
  12. void AddFill(char *ptr, unsigned long offset, unsigned short size, unsigned short fill);
  13. /* These are Private */
  14. unsigned short AddHeader(char *ptr, unsigned long offset, unsigned short size);
  15. void DoWrite(struct MUser *User, char *Data);
  16. struct MUpdate *GetUpdateMsg(struct MtrdBase *MtrdBase, struct MFile *File);
  17.  
  18. #include <exec/types.h>
  19. #include <exec/lists.h>
  20. #include <exec/ports.h>
  21.  
  22. struct FileID {
  23.     UWORD Type,SubType;
  24.     ULONG Size;
  25.     char *Data;
  26.     char *Name;
  27.     ULONG Defs[4];
  28. };
  29.  
  30. struct MUser {
  31.     struct Node node;
  32.     struct MsgPort *MsgPort;
  33.     char *Buffer;
  34.     UWORD Flags;
  35. };
  36. #define MUSB_LOCKED 0
  37. #define MUSF_LOCKED 1<<0
  38. #define MUSB_BUFFER 1
  39. #define MUSF_BUFFER 1<<1
  40. #define MUSB_NOTIFY 2
  41. #define MUSF_NOTIFY 1<<2
  42. #define MUSB_MASTER 3
  43. #define MUSF_MASTER 1<<3
  44. #define MUSB_LOCKWRITE 4
  45. #define MUSF_LOCKWRITE 1<<4
  46.  
  47. struct MFile {
  48.     struct Node node;
  49.     struct List UserList;
  50.     struct FileID FID;
  51.     struct MUser *MasterUser;
  52.     UWORD Flags;
  53. };
  54. #define MTFB_PUBLIC 0
  55. #define MTFF_PUBLIC 1<<0
  56.  
  57. struct MUpdate {
  58.     struct Message Message;
  59.     ULONG Type;
  60.     struct MFile *File;
  61. };
  62. #define MTUP_UPDATE 1
  63. #define MTUP_CLOSE 2
  64.  
  65. struct FileList {
  66.     struct MFile *File;
  67.     UWORD flags;
  68.     struct FileID FID;
  69. };
  70.  
  71. struct MtrdBase {
  72.     struct Library Lib;
  73.     ULONG SegList;
  74.     struct List FileList;
  75.     struct MsgPort *MsgPort;
  76.     ULONG Flags;
  77. };
  78.  
  79.  
  80. #define GETMUSER(file,user) user=file->MasterUser
  81. #define GETFID(file,fid) fid=file->FID
  82. #define GETBUFFER(file,buffer) buffer=file->FID.Data
  83. #define CUSERFLAGS(user,flags) user->Flags=flags
  84. #define UNLOCK(user) user->Flags&=~MUSF_LOCKED
  85.  
  86. #pragma amicall(MtrdBase, 0x1e, OpenMFile(a0,a1,d0))
  87. #pragma amicall(MtrdBase, 0x24, CloseMFile(d0,a0))
  88. #pragma amicall(MtrdBase, 0x2a, WriteData(d0,a0,a1))
  89. #pragma amicall(MtrdBase, 0x30, CountFiles(d0,d1))
  90. #pragma amicall(MtrdBase, 0x36, GetFileList(a0,d0,d1,d2))
  91. #pragma amicall(MtrdBase, 0x3c, AddUser(d0,a0,a1,d1))
  92. #pragma amicall(MtrdBase, 0x42, RemUser(a0))
  93. #pragma amicall(MtrdBase, 0x48, InitData(a0))
  94. #pragma amicall(MtrdBase, 0x4e, AddBytes(a0,d0,d1,a1))
  95. #pragma amicall(MtrdBase, 0x54, AddWords(a0,d0,d1,a1))
  96. #pragma amicall(MtrdBase, 0x5a, AddLongs(a0,d0,d1,a1))
  97. #pragma amicall(MtrdBase, 0x60, AddFill(a0,d0,d1,d2))
  98.