this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Core Services: Core Endian flipper impl

+50
+43
src/CoreServices/CoreEndian.cpp
··· 20 20 #include "CoreEndian.h" 21 21 #include <endian.h> 22 22 #include <stdint.h> 23 + #include <map> 24 + #include "MacErrors.h" 25 + #include "util/mutex.h" 26 + 27 + static std::map< 28 + std::pair<uint32_t,uint32_t>, 29 + std::pair<CEFlipper,void*> 30 + > g_flippers; 31 + static Darling::Mutex g_flippersMutex; 23 32 24 33 template <typename T> T bswap(T value); 25 34 ··· 262 271 return NtoL(value); 263 272 } 264 273 274 + OSStatus CoreEndianFlipData(uint32_t dataDomain, uint32_t dataType, int16_t id, void* data, unsigned long length, Boolean isNative) 275 + { 276 + Darling::MutexLock l(g_flippersMutex); 277 + auto it = g_flippers.find(std::make_pair(dataDomain, dataType)); 278 + 279 + if (it == g_flippers.end()) 280 + return handlerNotFoundErr; 281 + 282 + return it->second.first(dataDomain, dataType, id, data, length, isNative, it->second.second); 283 + } 284 + 285 + OSStatus CoreEndianInstallFlipper(uint32_t dataDomain, uint32_t dataType, CEFlipper flipper, void* opaque) 286 + { 287 + Darling::MutexLock l(g_flippersMutex); 288 + g_flippers[std::make_pair(dataDomain, dataType)] = std::make_pair(flipper, opaque); 289 + return noErr; 290 + } 291 + 292 + OSStatus CoreEndianGetFlipper(uint32_t dataDomain, uint32_t dataType, CEFlipper* flipper, void** opaque) 293 + { 294 + Darling::MutexLock l(g_flippersMutex); 295 + auto it = g_flippers.find(std::make_pair(dataDomain, dataType)); 296 + 297 + *opaque = nullptr; 298 + *flipper = nullptr; 299 + 300 + if (it == g_flippers.end()) 301 + return paramErr; 302 + 303 + *flipper = it->second.first; 304 + *opaque = it->second.second; 305 + 306 + return noErr; 307 + }
+6
src/CoreServices/CoreEndian.h
··· 70 70 UInt64 EndianU64_NtoB(UInt64 value); 71 71 UInt64 EndianU64_NtoL(UInt64 value); 72 72 73 + typedef OSStatus (*CEFlipper)(uint32_t dataDomain, uint32_t dataType, int16_t id, void* data, unsigned long length, Boolean isNative, void* opaque); 74 + 75 + OSStatus CoreEndianFlipData(uint32_t dataDomain, uint32_t dataType, int16_t id, void* data, unsigned long length, Boolean isNative); 76 + OSStatus CoreEndianInstallFlipper(uint32_t dataDomain, uint32_t dataType, CEFlipper flipper, void* opaque); 77 + OSStatus CoreEndianGetFlipper(uint32_t dataDomain, uint32_t dataType, CEFlipper* flipper, void** opaque); 78 + 73 79 } 74 80 75 81 #endif
+1
src/CoreServices/MacErrors.h
··· 8 8 #define unimpErr -4 9 9 #define fnfErr -43 // file not found 10 10 #define paramErr -50 11 + #define handlerNotFoundErr -1856 11 12 #define kLocalesBufferTooSmallErr -30001 12 13 #define kUCOutputBufferTooSmall -25340 13 14