#pragma once #include "common.h" #include "oslib.h" /** * Functions emulating classic Mac OS on other OSes */ #ifdef __cplusplus extern "C" { #endif /********************************/ /* ErrMgr */ extern char *GetSysErrText(SInt16 msgNbr, char *errMsg); /********************************/ /* Files */ extern OSErr HCreate(SInt16 volume, SInt32 dirid, ConstStr255Param fileName, OSType creator, OSType type); extern OSErr HOpen(SInt16 vRefNum, SInt32 dirID, ConstStr255Param fileName, SInt8 permission, SInt16 *refNum); extern OSErr HOpenDF(SInt16 vRefNum, SInt32 dirID, ConstStr255Param fileName, SInt8 permission, SInt16 *refNum); extern OSErr HDelete(SInt16 vRefNum, SInt32 dirID, ConstStr255Param fileName); extern OSErr HRename(SInt16 vRefNum, SInt32 dirID, ConstStr255Param oldName, ConstStr255Param newName); extern OSErr HGetFInfo(SInt16 vRefNum, SInt32 dirID, ConstStr255Param fileName, FInfo *fndrInfo); extern OSErr HSetFInfo(SInt16 vRefNum, SInt32 dirID, ConstStr255Param fileName, const FInfo *fndrInfo); extern OSErr FSpCreate(const FSSpec *fss, OSType creator, OSType fileType, ScriptCode scriptTag); extern OSErr FSpDirCreate(const FSSpec *fss, ScriptCode scriptTag, SInt32 *createdDirID); extern OSErr FSpOpenDF(const FSSpec *fss, SInt8 permission, SInt16 *refNum); extern OSErr FSpDelete(const FSSpec *fss); extern OSErr FSpRename(const FSSpec *oldfss, ConstStr255Param newName); extern OSErr FSpGetFInfo(const FSSpec *fss, FInfo *fndrInfo); extern OSErr FSpSetFInfo(const FSSpec *fss, const FInfo *fndrInfo); extern OSErr HGetVol(StringPtr volName, SInt16 *vRefNum, SInt32 *dirID); extern OSErr HSetVol(ConstStr63Param volName, SInt16 vRefNum, SInt32 dirID); extern OSErr FlushVol(ConstStr63Param volName, SInt16 vRefNum); extern OSErr FSRead(SInt16 fRefNum, SInt32 *Size, void *Buffer); extern OSErr FSWrite(SInt16 fRefNum, SInt32 *Size, const void *Buffer); extern OSErr FSClose(SInt16 fRefNum); extern OSErr GetEOF(SInt16 fRefNum, SInt32 *curEOF); extern OSErr SetEOF(SInt16 fRefNum, SInt32 newEOF); extern OSErr GetFPos(SInt16 fRefNum, SInt32 *pos); extern OSErr SetFPos(SInt16 fRefNum, SInt16 posMode, SInt32 posOffset); extern OSErr GetVInfo(SInt16 vRefNum, StringPtr name, SInt16 *vRef, SInt32 *hDir); extern OSErr PBWriteSync(ParmBlkPtr paramBlock); extern OSErr PBHGetFInfoSync(HParmBlkPtr paramBlock); extern OSErr PBHSetFInfoSync(HParmBlkPtr paramBlock); extern OSErr PBGetCatInfoSync(CInfoPBPtr paramBlock); extern OSErr ResolveAliasFile(FSSpec *fss, Boolean resolveChains, Boolean *isFolder, Boolean *wasAliased); extern OSErr FSMakeFSSpec(SInt16 vRefNum, SInt32 dirID, ConstStr255Param pathName, FSSpec *fss); extern OSErr Allocate(SInt16 refNum, SInt32 *byteCount); /********************************/ /* LowMem */ extern UInt32 LMGetTicks(); extern UInt32 LMGetTime(); extern OSErr LMGetMemErr(); extern void LMSetMemErr(OSErr value); /********************************/ /* Memory */ extern OSHandle *OS_PeekMacHandle(Handle h); extern Handle OS_CreateMacHandle(OSHandle *h); extern Handle OS_CreateMacHandleDup(OSHandle *h); extern void OS_DestroyMacHandle(Handle h, OSHandle *ret); extern OSErr MemError(); extern Handle NewHandle(SInt32 dataSize); extern Handle NewHandleClear(UInt32 dataSize); extern Handle TempNewHandle(UInt32 dataSize, OSErr *resultCode); extern void DisposeHandle(Handle h); extern void HLock(Handle h); extern void HLockHi(Handle h); extern void HUnlock(Handle h); extern void HPurge(Handle theHandle); extern void HNoPurge(Handle theHandle); extern SInt8 HGetState(Handle theHandle); extern void HSetState(Handle theHandle, SInt8 flags); extern SInt32 GetHandleSize(Handle h); extern void SetHandleSize(Handle h, SInt32 newSize); extern OSErr PtrAndHand(const void *srcPtr, Handle destHandle, SInt32 size); extern OSErr PtrToHand(const void *srcPtr, Handle *destHandle, SInt32 size); extern OSErr HandToHand(Handle *destHandle); extern OSErr HandAndHand(Handle src, Handle dst); extern void MoveHHi(Handle theHandle); extern void BlockMove(const void *srcPtr, void *destPtr, UInt32 byteCount); extern void BlockMoveData(const void *srcPtr, void *destPtr, UInt32 byteCount); extern Ptr NewPtr(SInt32 dataSize); extern void DisposePtr(Ptr p); extern Ptr NewPtrClear(SInt32 dataSize); extern void DebugStr(ConstStringPtr str); extern struct Zone *HandleZone(); extern struct Zone *ApplicationZone(); /********************************/ /* Resources */ extern Boolean OS_UsingMacResourceForkInfo(); extern void OS_UseMacResourceForkInfo(Boolean which); extern OSErr SystemInitResources(OSSpec *spec); extern void OS_AddMacResourceForkRef(int ref, const OSSpec *spec); extern void OS_RemoveMacResourceForkRef(int ref); extern OSSpec *OS_GetMacResourceForkFromRef(int ref); extern Boolean OS_SearchMacResourceForkList(const OSSpec *rspec, int *ref); extern int OS_SetMacResourceForkCreatorAndType(int ref, OSType creator, OSType type); extern int OS_GetMacResourceForkCreatorAndType(int ref, OSType *creator, OSType *type); extern void OS_CleanupMacResourceForkDir(const OSPathSpec *dir); extern OSErr OS_MacDumpResourceFork(SInt16 ref, Boolean dumpContents); extern OSErr FSpOpenRF(const FSSpec *fss, SInt8 permission, SInt16 *refNum); extern OSErr HOpenRF(SInt16 vRefNum, SInt32 dirID, ConstStringPtr fileName, SInt8 permission, SInt16 *refNum); extern OSErr InitResources(); extern OSErr ResError(); extern void FSpCreateResFile(const FSSpec *fss, OSType creator, OSType fileType, ScriptCode scriptTag); extern void HCreateResFile(SInt16 vRefNum, SInt32 dirID, ConstStringPtr fileName); extern OSErr FSpOpenResFile(const FSSpec *spec, SInt8 permission); extern SInt16 HOpenResFile(SInt16 vRefNum, SInt32 dirID, ConstStringPtr fileName, SInt8 permission); extern SInt16 CurResFile(); extern void UseResFile(SInt16 refNum); extern SInt16 HomeResFile(Handle theResource); extern Handle GetResource(OSType theType, SInt16 theID); extern Handle Get1Resource(OSType theType, SInt16 theID); extern Handle GetNamedResource(OSType theType, ConstStringPtr theName); extern Handle Get1NamedResource(OSType theType, ConstStringPtr theName); extern void SetResLoad(Boolean load); extern void MacEmul_LoadResource(Handle theResource); extern void GetResInfo(Handle theResource, SInt16 *theID, OSType *theType, StringPtr name); extern void SetResInfo(Handle theResource, SInt16 theID, ConstStringPtr name); extern SInt16 GetResAttrs(Handle theResource); extern void SetResAttrs(Handle theResource, SInt16 attrs); extern void ChangedResource(Handle theResource); extern void AddResource(Handle theData, OSType theType, SInt16 theID, ConstStringPtr name); extern void UpdateResFile(SInt16 refnum); extern void WriteResource(Handle theResource); extern void SetResPurge(Boolean install); extern SInt16 CountResources(OSType theType); extern SInt16 Count1Resources(OSType theType); extern Handle GetIndResource(OSType theType, SInt16 index); extern Handle Get1IndResource(OSType theType, SInt16 index); extern SInt16 Count1Types(); extern void Get1IndType(OSType *theType, SInt16 index); extern void ReleaseResource(); extern void DetachResource(Handle theResource); extern void RemoveResource(Handle theResource); extern void CloseResFile(SInt16 refNum); extern SInt16 GetResFileAttrs(SInt16); extern Boolean LMGetResLoad(); /********************************/ /* ResourceStrings */ extern void Res_Initialize(); extern int Res_AddResource(const char *name, SInt16 rsrcid, const char **strings); extern const char *Res_GetResource(SInt16 rsrcid, SInt16 index); extern void Res_Cleanup(); /********************************/ /* TextUtils */ extern StringPtr c2pstr(char *s); extern char *p2cstr(StringPtr s); extern SInt16 CharacterByteType(Ptr textBuf, SInt16 textOffset, ScriptCode script); extern SInt16 CharByte(); extern void GetDateTime(UInt32 *secs); extern Boolean EqualString(ConstStr255Param strA, ConstStr255Param strB, Boolean caseSens, Boolean diacSens); extern void GetIndString(Str255 theString, SInt16 strListID, SInt16 index); extern char *getindstring(char *theString, SInt16 strListID, SInt16 index); extern void NumToString(SInt32 theNum, Str255 theString); extern void StringToNum(ConstStr255Param theString, SInt32 *theNum); #ifdef __cplusplus } #endif