41 #if !defined(__CATink_h__)
49 #if !defined(__COREAUDIO_USE_FLAT_INCLUDES__)
50 #include <CoreServices/CoreServices.h>
52 #include <CoreServices.h>
70 CATink(F proc) { Set(proc); }
72 ~CATink() { Set((F)0xDEADDEAD); }
87 UInt32 p = UInt32(proc);
88 mCode[0] = 0x3D600000 | (p >> 16);
89 mCode[1] = 0x616B0000 | (p & 0xFFFF);
90 mCode[2] = 0x7D6903A6;
91 mCode[3] = 0x4E800420;
92 MakeDataExecutable(mCode,
sizeof(mCode));
95 operator F () {
return F(mCode); }
108 UInt32 p = UInt32(proc);
109 mCode[0] = ((p & 0xFFFFFF) << 8) | 0x00000068;
110 mCode[1] = 0xCCCCC300 | (p >> 24);
111 MakeDataExecutable(mCode,
sizeof(mCode));
114 operator F () {
return F(&mCode[0]); }
119 #warning: CPU not directly supported by CATink
126 void Set(F proc) { mProcPtr = proc; }
128 operator F () {
return mProcPtr; }
136 CATink(
const CATink&){}
137 CATink& operator=(
const CATink&){
return *
this;}