00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __MK__scorefile_H___
00016 #define __MK__scorefile_H___
00017
00018 #import <Foundation/Foundation.h>
00019
00020 #import "_MKNameTable.h"
00021
00022 typedef struct __MKScoreInStruct {
00023 double timeTag;
00024 id part;
00025 BOOL isInBody;
00026
00027 NSMutableData *printStream;
00028 BOOL _freeStream;
00029
00030 void *_parsePtr;
00031 _MKNameTable *_symbolTable;
00032 NSMutableDictionary *_noteTagTable;
00033 int _fileHighTag,_fileLowTag;
00034 int _newLowTag;
00035 id _aNote;
00036 char *_ranState;
00037
00038 id _owner;
00039 int _errCount;
00040 NSMutableArray *_binaryIndexedObjects;
00041 BOOL _binary;
00042 void *_repeatStack;
00043 } _MKScoreInStruct;
00044
00045 typedef struct __MKScoreOutStruct {
00046 double timeTag;
00047
00048 BOOL isInBody;
00049 NSMutableData *_stream;
00050 id _owner;
00051 _MKNameTable *_nameTable;
00052 BOOL _ownerIsNoteRecorder;
00053 double _timeShift;
00054 long _tagRangePos;
00055 NSMapTable *_binaryIndecies;
00056 int _highBinaryIndex;
00057 BOOL _binary;
00058 } _MKScoreOutStruct;
00059
00060
00061 extern _MKScoreOutStruct *
00062 _MKInitScoreOut(NSMutableData *fileStream, id owner, MKNote *anInfoNote,
00063 double timeShift, BOOL isNoteRecorder, BOOL binary);
00064 extern _MKScoreOutStruct *
00065 _MKWritePartDecl(MKPart *part, _MKScoreOutStruct *p, MKNote *aPartInfo);
00066 extern _MKScoreOutStruct *
00067 _MKWriteNote(MKNote *aNote, MKPart *aPart, _MKScoreOutStruct *scoreWPtr);
00068 extern _MKScoreOutStruct *
00069 _MKFinishScoreOut(_MKScoreOutStruct *scoreWPtr, BOOL writeEnd);
00070
00071
00072 extern void _MKParseScoreHeader(_MKScoreInStruct *scorefileRPtr);
00073 extern _MKScoreInStruct *_MKNewScoreInStruct(NSData *aStream,id owner,
00074 NSMutableData *printStream,
00075 BOOL mergeParts,NSString *name,unsigned int *pointer);
00076 extern BOOL _MKParseScoreHeaderStmt(_MKScoreInStruct *scorefileRPtr);
00077 extern id _MKParseScoreNote(_MKScoreInStruct * scorefileRPtr);
00078 extern _MKScoreInStruct *_MKFinishScoreIn(_MKScoreInStruct *scorefileRPtr);
00079
00080 extern const char *_MKTranstab();
00081
00082
00083 extern void _MKWriteIntPar(NSMutableData *aStream,int anInt);
00084 extern void _MKWriteDoublePar(NSMutableData *aStream,double aDouble);
00085 extern void _MKWriteStringPar(NSMutableData *aStream,NSString *aString);
00086 extern void _MKWriteVarPar(NSMutableData *aStream,NSString *aString);
00087 extern void _MKWriteInt(NSMutableData *aStream,int anInt);
00088 extern void _MKWriteShort(NSMutableData *aStream,short anShort);
00089 extern void _MKWriteDouble(NSMutableData *aStream,double aDouble);
00090 extern void _MKWriteChar(NSMutableData *aStream,char aChar);
00091 extern void _MKWriteString(NSMutableData *aStream,char *aString);
00092 extern void _MKWriteNSString(NSMutableData *aStream,NSString *aString);
00093 extern void _MKWriteFloat(NSMutableData *aStream,float aFloat);
00094
00095 #define _MK_BINARYSCOREFILEEXT @"playscore"
00096 #define _MK_SCOREFILEEXT @"score"
00097
00098 #endif