#ifndef __HFS_MACOS_TYPES__
#define __HFS_MACOS_TYPES__
#include <sys/appleapiopts.h>
#ifdef KERNEL
#ifdef __APPLE_API_PRIVATE
#include <sys/param.h>
#include <libkern/OSTypes.h>
#include <libkern/libkern.h>
#include <sys/systm.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/proc.h>
#define TARGET_OS_MAC 0
#define TARGET_OS_WIN32 0
#define TARGET_OS_UNIX 0
#define PRAGMA_IMPORT 0
#define PRAGMA_STRUCT_ALIGN 1
#define PRAGMA_ONCE 0
#define PRAGMA_STRUCT_PACK 0
#define PRAGMA_STRUCT_PACKPUSH 0
#if __GNUC__ >= 2
#define TYPE_LONGLONG 1
#else
#define TYPE_LONGLONG 0
#endif
#ifdef __cplusplus
#define TYPE_BOOL 1
#else
#define TYPE_BOOL 0
#endif
#define EXTERN_API(_type) extern _type
#define EXTERN_API_C(_type) extern _type
#define CALLBACK_API_C(_type, _name) _type ( * _name)
#define TARGET_API_MACOS_X 1
#define TARGET_API_MAC_OS8 0
#define TARGET_API_MAC_CARBON 0
#define __size_t__
#if HFS_DIAGNOSTIC
#define DEBUG_BUILD 1
#else
#define DEBUG_BUILD 0
#endif
#ifndef NULL
#define NULL 0
#endif
#ifndef nil
#define nil NULL
#endif
typedef char * Ptr;
typedef long Size;
typedef int16_t OSErr;
typedef u_int32_t ItemCount;
typedef u_int32_t ByteCount;
typedef u_int8_t * BytePtr;
typedef u_int32_t ByteOffset;
typedef u_int16_t UniChar;
typedef unsigned char Str255[256];
typedef unsigned char Str31[32];
typedef unsigned char * StringPtr;
typedef const unsigned char * ConstStr255Param;
typedef const unsigned char * ConstStr31Param;
typedef const unsigned char * ConstUTF8Param;
typedef u_int8_t Byte;
typedef u_int32_t TextEncoding;
typedef UniChar * UniCharArrayPtr;
typedef const UniChar * ConstUniCharArrayPtr;
#if !TYPE_BOOL && !__bool_true_false_are_defined
enum {
false = 0,
true = 1
};
#endif
EXTERN_API( void ) DebugStr(const char * debuggerMsg);
typedef struct vnode* FileReference;
#if ! defined (__size_t__)
#define __size_t__
#if defined (__xlc) || defined (__xlC) || defined (__xlC__) || defined (__MWERKS__)
typedef unsigned long size_t;
#else
typedef unsigned int size_t;
#endif
#endif
enum {
noErr = 0,
dskFulErr = -34,
bdNamErr = -37,
paramErr = -50,
memFullErr = -108,
fileBoundsErr = -1309,
kTECUsedFallbacksStatus = -8783,
};
enum {
kHasBeenInited = 0x0100,
kHasCustomIcon = 0x0400,
kIsStationery = 0x0800,
kNameLocked = 0x1000,
kHasBundle = 0x2000,
kIsInvisible = 0x4000,
kIsAlias = 0x8000
};
enum {
fsRtParID = 1,
fsRtDirID = 2
};
enum {
kTextEncodingMacRoman = 0L,
kTextEncodingMacJapanese = 1,
kTextEncodingMacChineseTrad = 2,
kTextEncodingMacKorean = 3,
kTextEncodingMacArabic = 4,
kTextEncodingMacHebrew = 5,
kTextEncodingMacGreek = 6,
kTextEncodingMacCyrillic = 7,
kTextEncodingMacDevanagari = 9,
kTextEncodingMacGurmukhi = 10,
kTextEncodingMacGujarati = 11,
kTextEncodingMacOriya = 12,
kTextEncodingMacBengali = 13,
kTextEncodingMacTamil = 14,
kTextEncodingMacTelugu = 15,
kTextEncodingMacKannada = 16,
kTextEncodingMacMalayalam = 17,
kTextEncodingMacSinhalese = 18,
kTextEncodingMacBurmese = 19,
kTextEncodingMacKhmer = 20,
kTextEncodingMacThai = 21,
kTextEncodingMacLaotian = 22,
kTextEncodingMacGeorgian = 23,
kTextEncodingMacArmenian = 24,
kTextEncodingMacChineseSimp = 25,
kTextEncodingMacTibetan = 26,
kTextEncodingMacMongolian = 27,
kTextEncodingMacEthiopic = 28,
kTextEncodingMacCentralEurRoman = 29,
kTextEncodingMacVietnamese = 30,
kTextEncodingMacExtArabic = 31,
kTextEncodingMacSymbol = 33,
kTextEncodingMacDingbats = 34,
kTextEncodingMacTurkish = 35,
kTextEncodingMacCroatian = 36,
kTextEncodingMacIcelandic = 37,
kTextEncodingMacRomanian = 38,
kTextEncodingMacUnicode = 0x7E,
kTextEncodingMacFarsi = 0x8C,
kTextEncodingMacUkrainian = 0x98,
};
#if HFS_DIAGNOSTIC
extern void RequireFileLock(FileReference vp, int shareable);
#define REQUIRE_FILE_LOCK(vp,s) RequireFileLock((vp),(s))
#else
#define REQUIRE_FILE_LOCK(vp,s)
#endif
EXTERN_API( void )
BlockMoveData(const void * srcPtr, void * destPtr, Size byteCount);
#define BlockMoveData(src, dest, len) bcopy((src), (dest), (len))
EXTERN_API_C( void )
ClearMemory(void * start, u_int32_t length);
#define ClearMemory(start, length) bzero((start), (size_t)(length));
EXTERN_API( Ptr )
NewPtr(Size byteCount);
EXTERN_API( Ptr )
NewPtrSysClear(Size byteCount);
EXTERN_API( void )
DisposePtr(Ptr p);
#endif
#endif
#endif