SPB Git

spb/forge Public MIT

Forge — LLM training from scratch in pure C++20 + Metal on Apple Silicon.

C++ 61.2% C 23% Python 7.6% TeX 7.2% CMake 1.1%
20.5 KB · 532 lines cpp
Raw Blame History
1//-------------------------------------------------------------------------------------------------------------------------------------------------------------2//3// Foundation/NSPrivate.hpp4//5// Copyright 2020-2024 Apple Inc.6//7// Licensed under the Apache License, Version 2.0 (the "License");8// you may not use this file except in compliance with the License.9// You may obtain a copy of the License at10//11//     http://www.apache.org/licenses/LICENSE-2.012//13// Unless required by applicable law or agreed to in writing, software14// distributed under the License is distributed on an "AS IS" BASIS,15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.16// See the License for the specific language governing permissions and17// limitations under the License.18//19//-------------------------------------------------------------------------------------------------------------------------------------------------------------2021#pragma once2223//-------------------------------------------------------------------------------------------------------------------------------------------------------------2425#include <objc/runtime.h>2627//-------------------------------------------------------------------------------------------------------------------------------------------------------------2829#define _NS_PRIVATE_CLS(symbol) (Private::Class::s_k##symbol)30#define _NS_PRIVATE_SEL(accessor) (Private::Selector::s_k##accessor)3132//-------------------------------------------------------------------------------------------------------------------------------------------------------------3334#if defined(NS_PRIVATE_IMPLEMENTATION)3536#include <dlfcn.h>3738namespace NS::Private39{40    template <typename _Type>41    inline _Type const LoadSymbol(const char* pSymbol)42    {43        const _Type* pAddress = static_cast<_Type*>(dlsym(RTLD_DEFAULT, pSymbol));4445        return pAddress ? *pAddress : _Type();46    }47} // NS::Private4849#ifdef METALCPP_SYMBOL_VISIBILITY_HIDDEN50#define _NS_PRIVATE_VISIBILITY __attribute__((visibility("hidden")))51#else52#define _NS_PRIVATE_VISIBILITY __attribute__((visibility("default")))53#endif // METALCPP_SYMBOL_VISIBILITY_HIDDEN5455#define _NS_PRIVATE_IMPORT __attribute__((weak_import))5657#ifdef __OBJC__58#define _NS_PRIVATE_OBJC_LOOKUP_CLASS(symbol) ((__bridge void*)objc_lookUpClass(#symbol))59#define _NS_PRIVATE_OBJC_GET_PROTOCOL(symbol) ((__bridge void*)objc_getProtocol(#symbol))60#else61#define _NS_PRIVATE_OBJC_LOOKUP_CLASS(symbol) objc_lookUpClass(#symbol)62#define _NS_PRIVATE_OBJC_GET_PROTOCOL(symbol) objc_getProtocol(#symbol)63#endif // __OBJC__6465#define _NS_PRIVATE_DEF_CLS(symbol) void* s_k##symbol _NS_PRIVATE_VISIBILITY = _NS_PRIVATE_OBJC_LOOKUP_CLASS(symbol)66#define _NS_PRIVATE_DEF_PRO(symbol) void* s_k##symbol _NS_PRIVATE_VISIBILITY = _NS_PRIVATE_OBJC_GET_PROTOCOL(symbol)67#define _NS_PRIVATE_DEF_SEL(accessor, symbol) SEL s_k##accessor _NS_PRIVATE_VISIBILITY = sel_registerName(symbol)6869#if defined(__MAC_26_0) || defined(__IPHONE_26_0) || defined(__TVOS_26_0)70#define _NS_PRIVATE_DEF_CONST(type, symbol)              \71    _NS_EXTERN type const NS##symbol _NS_PRIVATE_IMPORT; \72    type const                       NS::symbol = (nullptr != &NS##symbol) ? NS##symbol : type()73#else74#define _NS_PRIVATE_DEF_CONST(type, symbol) \75    _NS_EXTERN type const MTL##symbol _NS_PRIVATE_IMPORT; \76    type const             NS::symbol = Private::LoadSymbol<type>("NS" #symbol)77#endif7879#else8081#define _NS_PRIVATE_DEF_CLS(symbol) extern void* s_k##symbol82#define _NS_PRIVATE_DEF_PRO(symbol) extern void* s_k##symbol83#define _NS_PRIVATE_DEF_SEL(accessor, symbol) extern SEL s_k##accessor84#define _NS_PRIVATE_DEF_CONST(type, symbol) extern type const NS::symbol8586#endif // NS_PRIVATE_IMPLEMENTATION8788//-------------------------------------------------------------------------------------------------------------------------------------------------------------8990namespace NS91{92namespace Private93{94    namespace Class95    {9697        _NS_PRIVATE_DEF_CLS(NSArray);98        _NS_PRIVATE_DEF_CLS(NSAutoreleasePool);99        _NS_PRIVATE_DEF_CLS(NSBundle);100        _NS_PRIVATE_DEF_CLS(NSCondition);101        _NS_PRIVATE_DEF_CLS(NSDate);102        _NS_PRIVATE_DEF_CLS(NSDictionary);103        _NS_PRIVATE_DEF_CLS(NSError);104        _NS_PRIVATE_DEF_CLS(NSNotificationCenter);105        _NS_PRIVATE_DEF_CLS(NSNumber);106        _NS_PRIVATE_DEF_CLS(NSObject);107        _NS_PRIVATE_DEF_CLS(NSProcessInfo);108        _NS_PRIVATE_DEF_CLS(NSSet);109        _NS_PRIVATE_DEF_CLS(NSString);110        _NS_PRIVATE_DEF_CLS(NSURL);111        _NS_PRIVATE_DEF_CLS(NSValue);112113    } // Class114} // Private115} // MTL116117//-------------------------------------------------------------------------------------------------------------------------------------------------------------118119namespace NS120{121namespace Private122{123    namespace Protocol124    {125126    } // Protocol127} // Private128} // NS129130//-------------------------------------------------------------------------------------------------------------------------------------------------------------131132namespace NS133{134namespace Private135{136    namespace Selector137    {138139        _NS_PRIVATE_DEF_SEL(addObject_,140            "addObject:");141        _NS_PRIVATE_DEF_SEL(addObserverName_object_queue_block_,142            "addObserverForName:object:queue:usingBlock:");143        _NS_PRIVATE_DEF_SEL(activeProcessorCount,144            "activeProcessorCount");145        _NS_PRIVATE_DEF_SEL(allBundles,146            "allBundles");147        _NS_PRIVATE_DEF_SEL(allFrameworks,148            "allFrameworks");149        _NS_PRIVATE_DEF_SEL(allObjects,150            "allObjects");151        _NS_PRIVATE_DEF_SEL(alloc,152            "alloc");153        _NS_PRIVATE_DEF_SEL(appStoreReceiptURL,154            "appStoreReceiptURL");155        _NS_PRIVATE_DEF_SEL(arguments,156            "arguments");157        _NS_PRIVATE_DEF_SEL(array,158            "array");159        _NS_PRIVATE_DEF_SEL(arrayWithObject_,160            "arrayWithObject:");161        _NS_PRIVATE_DEF_SEL(arrayWithObjects_count_,162            "arrayWithObjects:count:");163        _NS_PRIVATE_DEF_SEL(automaticTerminationSupportEnabled,164            "automaticTerminationSupportEnabled");165        _NS_PRIVATE_DEF_SEL(autorelease,166            "autorelease");167        _NS_PRIVATE_DEF_SEL(beginActivityWithOptions_reason_,168            "beginActivityWithOptions:reason:");169        _NS_PRIVATE_DEF_SEL(boolValue,170            "boolValue");171        _NS_PRIVATE_DEF_SEL(broadcast,172            "broadcast");173        _NS_PRIVATE_DEF_SEL(builtInPlugInsPath,174            "builtInPlugInsPath");175        _NS_PRIVATE_DEF_SEL(builtInPlugInsURL,176            "builtInPlugInsURL");177        _NS_PRIVATE_DEF_SEL(bundleIdentifier,178            "bundleIdentifier");179        _NS_PRIVATE_DEF_SEL(bundlePath,180            "bundlePath");181        _NS_PRIVATE_DEF_SEL(bundleURL,182            "bundleURL");183        _NS_PRIVATE_DEF_SEL(bundleWithPath_,184            "bundleWithPath:");185        _NS_PRIVATE_DEF_SEL(bundleWithURL_,186            "bundleWithURL:");187        _NS_PRIVATE_DEF_SEL(bytes,188            "bytes");189        _NS_PRIVATE_DEF_SEL(caseInsensitiveCompare_,190            "caseInsensitiveCompare:");191        _NS_PRIVATE_DEF_SEL(characterAtIndex_,192            "characterAtIndex:");193        _NS_PRIVATE_DEF_SEL(charValue,194            "charValue");195        _NS_PRIVATE_DEF_SEL(countByEnumeratingWithState_objects_count_,196            "countByEnumeratingWithState:objects:count:");197        _NS_PRIVATE_DEF_SEL(cStringUsingEncoding_,198            "cStringUsingEncoding:");199        _NS_PRIVATE_DEF_SEL(code,200            "code");201        _NS_PRIVATE_DEF_SEL(compare_,202            "compare:");203        _NS_PRIVATE_DEF_SEL(copy,204            "copy");205        _NS_PRIVATE_DEF_SEL(count,206            "count");207        _NS_PRIVATE_DEF_SEL(dateWithTimeIntervalSinceNow_,208            "dateWithTimeIntervalSinceNow:");209        _NS_PRIVATE_DEF_SEL(defaultCenter,210            "defaultCenter");211        _NS_PRIVATE_DEF_SEL(descriptionWithLocale_,212            "descriptionWithLocale:");213        _NS_PRIVATE_DEF_SEL(disableAutomaticTermination_,214            "disableAutomaticTermination:");215        _NS_PRIVATE_DEF_SEL(disableSuddenTermination,216            "disableSuddenTermination");217        _NS_PRIVATE_DEF_SEL(debugDescription,218            "debugDescription");219        _NS_PRIVATE_DEF_SEL(description,220            "description");221        _NS_PRIVATE_DEF_SEL(dictionary,222            "dictionary");223        _NS_PRIVATE_DEF_SEL(dictionaryWithObject_forKey_,224            "dictionaryWithObject:forKey:");225        _NS_PRIVATE_DEF_SEL(dictionaryWithObjects_forKeys_count_,226            "dictionaryWithObjects:forKeys:count:");227        _NS_PRIVATE_DEF_SEL(domain,228            "domain");229        _NS_PRIVATE_DEF_SEL(doubleValue,230            "doubleValue");231        _NS_PRIVATE_DEF_SEL(drain,232            "drain");233        _NS_PRIVATE_DEF_SEL(enableAutomaticTermination_,234            "enableAutomaticTermination:");235        _NS_PRIVATE_DEF_SEL(enableSuddenTermination,236            "enableSuddenTermination");237        _NS_PRIVATE_DEF_SEL(endActivity_,238            "endActivity:");239        _NS_PRIVATE_DEF_SEL(environment,240            "environment");241        _NS_PRIVATE_DEF_SEL(errorWithDomain_code_userInfo_,242            "errorWithDomain:code:userInfo:");243        _NS_PRIVATE_DEF_SEL(executablePath,244            "executablePath");245        _NS_PRIVATE_DEF_SEL(executableURL,246            "executableURL");247        _NS_PRIVATE_DEF_SEL(fileSystemRepresentation,248            "fileSystemRepresentation");249        _NS_PRIVATE_DEF_SEL(fileURLWithPath_,250            "fileURLWithPath:");251        _NS_PRIVATE_DEF_SEL(floatValue,252            "floatValue");253        _NS_PRIVATE_DEF_SEL(fullUserName,254            "fullUserName");255        _NS_PRIVATE_DEF_SEL(getValue_size_,256            "getValue:size:");257        _NS_PRIVATE_DEF_SEL(globallyUniqueString,258            "globallyUniqueString");259        _NS_PRIVATE_DEF_SEL(hash,260            "hash");261        _NS_PRIVATE_DEF_SEL(hasPerformanceProfile_,262            "hasPerformanceProfile:");263        _NS_PRIVATE_DEF_SEL(hostName,264            "hostName");265        _NS_PRIVATE_DEF_SEL(infoDictionary,266            "infoDictionary");267        _NS_PRIVATE_DEF_SEL(init,268            "init");269        _NS_PRIVATE_DEF_SEL(initFileURLWithPath_,270            "initFileURLWithPath:");271        _NS_PRIVATE_DEF_SEL(initWithBool_,272            "initWithBool:");273        _NS_PRIVATE_DEF_SEL(initWithBytes_objCType_,274            "initWithBytes:objCType:");275        _NS_PRIVATE_DEF_SEL(initWithBytesNoCopy_length_encoding_freeWhenDone_,276            "initWithBytesNoCopy:length:encoding:freeWhenDone:");277        _NS_PRIVATE_DEF_SEL(initWithChar_,278            "initWithChar:");279        _NS_PRIVATE_DEF_SEL(initWithCoder_,280            "initWithCoder:");281        _NS_PRIVATE_DEF_SEL(initWithCString_encoding_,282            "initWithCString:encoding:");283        _NS_PRIVATE_DEF_SEL(initWithDomain_code_userInfo_,284            "initWithDomain:code:userInfo:");285        _NS_PRIVATE_DEF_SEL(initWithDouble_,286            "initWithDouble:");287        _NS_PRIVATE_DEF_SEL(initWithFloat_,288            "initWithFloat:");289        _NS_PRIVATE_DEF_SEL(initWithInt_,290            "initWithInt:");291        _NS_PRIVATE_DEF_SEL(initWithLong_,292            "initWithLong:");293        _NS_PRIVATE_DEF_SEL(initWithLongLong_,294            "initWithLongLong:");295        _NS_PRIVATE_DEF_SEL(initWithObjects_count_,296            "initWithObjects:count:");297        _NS_PRIVATE_DEF_SEL(initWithObjects_forKeys_count_,298            "initWithObjects:forKeys:count:");299        _NS_PRIVATE_DEF_SEL(initWithPath_,300            "initWithPath:");301        _NS_PRIVATE_DEF_SEL(initWithShort_,302            "initWithShort:");303        _NS_PRIVATE_DEF_SEL(initWithString_,304            "initWithString:");305        _NS_PRIVATE_DEF_SEL(initWithUnsignedChar_,306            "initWithUnsignedChar:");307        _NS_PRIVATE_DEF_SEL(initWithUnsignedInt_,308            "initWithUnsignedInt:");309        _NS_PRIVATE_DEF_SEL(initWithUnsignedLong_,310            "initWithUnsignedLong:");311        _NS_PRIVATE_DEF_SEL(initWithUnsignedLongLong_,312            "initWithUnsignedLongLong:");313        _NS_PRIVATE_DEF_SEL(initWithUnsignedShort_,314            "initWithUnsignedShort:");315        _NS_PRIVATE_DEF_SEL(initWithURL_,316            "initWithURL:");317        _NS_PRIVATE_DEF_SEL(integerValue,318            "integerValue");319        _NS_PRIVATE_DEF_SEL(intValue,320            "intValue");321        _NS_PRIVATE_DEF_SEL(isDeviceCertified_,322            "isDeviceCertifiedFor:");323        _NS_PRIVATE_DEF_SEL(isEqual_,324            "isEqual:");325        _NS_PRIVATE_DEF_SEL(isEqualToNumber_,326            "isEqualToNumber:");327        _NS_PRIVATE_DEF_SEL(isEqualToString_,328            "isEqualToString:");329        _NS_PRIVATE_DEF_SEL(isEqualToValue_,330            "isEqualToValue:");331        _NS_PRIVATE_DEF_SEL(isiOSAppOnMac,332            "isiOSAppOnMac");333        _NS_PRIVATE_DEF_SEL(isLoaded,334            "isLoaded");335        _NS_PRIVATE_DEF_SEL(isLowPowerModeEnabled,336            "isLowPowerModeEnabled");337        _NS_PRIVATE_DEF_SEL(isMacCatalystApp,338            "isMacCatalystApp");339        _NS_PRIVATE_DEF_SEL(isOperatingSystemAtLeastVersion_,340            "isOperatingSystemAtLeastVersion:");341        _NS_PRIVATE_DEF_SEL(keyEnumerator,342            "keyEnumerator");343        _NS_PRIVATE_DEF_SEL(length,344            "length");345        _NS_PRIVATE_DEF_SEL(lengthOfBytesUsingEncoding_,346            "lengthOfBytesUsingEncoding:");347        _NS_PRIVATE_DEF_SEL(load,348            "load");349        _NS_PRIVATE_DEF_SEL(loadAndReturnError_,350            "loadAndReturnError:");351        _NS_PRIVATE_DEF_SEL(localizedDescription,352            "localizedDescription");353        _NS_PRIVATE_DEF_SEL(localizedFailureReason,354            "localizedFailureReason");355        _NS_PRIVATE_DEF_SEL(localizedInfoDictionary,356            "localizedInfoDictionary");357        _NS_PRIVATE_DEF_SEL(localizedRecoveryOptions,358            "localizedRecoveryOptions");359        _NS_PRIVATE_DEF_SEL(localizedRecoverySuggestion,360            "localizedRecoverySuggestion");361        _NS_PRIVATE_DEF_SEL(localizedStringForKey_value_table_,362            "localizedStringForKey:value:table:");363        _NS_PRIVATE_DEF_SEL(lock,364            "lock");365        _NS_PRIVATE_DEF_SEL(longValue,366            "longValue");367        _NS_PRIVATE_DEF_SEL(longLongValue,368            "longLongValue");369        _NS_PRIVATE_DEF_SEL(mainBundle,370            "mainBundle");371        _NS_PRIVATE_DEF_SEL(maximumLengthOfBytesUsingEncoding_,372            "maximumLengthOfBytesUsingEncoding:");373        _NS_PRIVATE_DEF_SEL(methodSignatureForSelector_,374            "methodSignatureForSelector:");375        _NS_PRIVATE_DEF_SEL(name,376            "name");377        _NS_PRIVATE_DEF_SEL(nextObject,378            "nextObject");379        _NS_PRIVATE_DEF_SEL(numberWithBool_,380            "numberWithBool:");381        _NS_PRIVATE_DEF_SEL(numberWithChar_,382            "numberWithChar:");383        _NS_PRIVATE_DEF_SEL(numberWithDouble_,384            "numberWithDouble:");385        _NS_PRIVATE_DEF_SEL(numberWithFloat_,386            "numberWithFloat:");387        _NS_PRIVATE_DEF_SEL(numberWithInt_,388            "numberWithInt:");389        _NS_PRIVATE_DEF_SEL(numberWithLong_,390            "numberWithLong:");391        _NS_PRIVATE_DEF_SEL(numberWithLongLong_,392            "numberWithLongLong:");393        _NS_PRIVATE_DEF_SEL(numberWithShort_,394            "numberWithShort:");395        _NS_PRIVATE_DEF_SEL(numberWithUnsignedChar_,396            "numberWithUnsignedChar:");397        _NS_PRIVATE_DEF_SEL(numberWithUnsignedInt_,398            "numberWithUnsignedInt:");399        _NS_PRIVATE_DEF_SEL(numberWithUnsignedLong_,400            "numberWithUnsignedLong:");401        _NS_PRIVATE_DEF_SEL(numberWithUnsignedLongLong_,402            "numberWithUnsignedLongLong:");403        _NS_PRIVATE_DEF_SEL(numberWithUnsignedShort_,404            "numberWithUnsignedShort:");405        _NS_PRIVATE_DEF_SEL(objCType,406            "objCType");407        _NS_PRIVATE_DEF_SEL(object,408            "object");409        _NS_PRIVATE_DEF_SEL(objectAtIndex_,410            "objectAtIndex:");411        _NS_PRIVATE_DEF_SEL(objectEnumerator,412            "objectEnumerator");413        _NS_PRIVATE_DEF_SEL(objectForInfoDictionaryKey_,414            "objectForInfoDictionaryKey:");415        _NS_PRIVATE_DEF_SEL(objectForKey_,416            "objectForKey:");417        _NS_PRIVATE_DEF_SEL(operatingSystem,418            "operatingSystem");419        _NS_PRIVATE_DEF_SEL(operatingSystemVersion,420            "operatingSystemVersion");421        _NS_PRIVATE_DEF_SEL(operatingSystemVersionString,422            "operatingSystemVersionString");423        _NS_PRIVATE_DEF_SEL(pathForAuxiliaryExecutable_,424            "pathForAuxiliaryExecutable:");425        _NS_PRIVATE_DEF_SEL(performActivityWithOptions_reason_usingBlock_,426            "performActivityWithOptions:reason:usingBlock:");427        _NS_PRIVATE_DEF_SEL(performExpiringActivityWithReason_usingBlock_,428            "performExpiringActivityWithReason:usingBlock:");429        _NS_PRIVATE_DEF_SEL(physicalMemory,430            "physicalMemory");431        _NS_PRIVATE_DEF_SEL(pointerValue,432            "pointerValue");433        _NS_PRIVATE_DEF_SEL(preflightAndReturnError_,434            "preflightAndReturnError:");435        _NS_PRIVATE_DEF_SEL(privateFrameworksPath,436            "privateFrameworksPath");437        _NS_PRIVATE_DEF_SEL(privateFrameworksURL,438            "privateFrameworksURL");439        _NS_PRIVATE_DEF_SEL(processIdentifier,440            "processIdentifier");441        _NS_PRIVATE_DEF_SEL(processInfo,442            "processInfo");443        _NS_PRIVATE_DEF_SEL(processName,444            "processName");445        _NS_PRIVATE_DEF_SEL(processorCount,446            "processorCount");447        _NS_PRIVATE_DEF_SEL(rangeOfString_options_,448            "rangeOfString:options:");449        _NS_PRIVATE_DEF_SEL(release,450            "release");451        _NS_PRIVATE_DEF_SEL(removeObserver_,452            "removeObserver:");453        _NS_PRIVATE_DEF_SEL(resourcePath,454            "resourcePath");455        _NS_PRIVATE_DEF_SEL(resourceURL,456            "resourceURL");457        _NS_PRIVATE_DEF_SEL(respondsToSelector_,458            "respondsToSelector:");459        _NS_PRIVATE_DEF_SEL(retain,460            "retain");461        _NS_PRIVATE_DEF_SEL(retainCount,462            "retainCount");463        _NS_PRIVATE_DEF_SEL(setAutomaticTerminationSupportEnabled_,464            "setAutomaticTerminationSupportEnabled:");465        _NS_PRIVATE_DEF_SEL(setProcessName_,466            "setProcessName:");467        _NS_PRIVATE_DEF_SEL(sharedFrameworksPath,468            "sharedFrameworksPath");469        _NS_PRIVATE_DEF_SEL(sharedFrameworksURL,470            "sharedFrameworksURL");471        _NS_PRIVATE_DEF_SEL(sharedSupportPath,472            "sharedSupportPath");473        _NS_PRIVATE_DEF_SEL(sharedSupportURL,474            "sharedSupportURL");475        _NS_PRIVATE_DEF_SEL(shortValue,476            "shortValue");477        _NS_PRIVATE_DEF_SEL(showPools,478            "showPools");479        _NS_PRIVATE_DEF_SEL(signal,480            "signal");481        _NS_PRIVATE_DEF_SEL(string,482            "string");483        _NS_PRIVATE_DEF_SEL(stringValue,484            "stringValue");485        _NS_PRIVATE_DEF_SEL(stringWithString_,486            "stringWithString:");487        _NS_PRIVATE_DEF_SEL(stringWithCString_encoding_,488            "stringWithCString:encoding:");489        _NS_PRIVATE_DEF_SEL(stringByAppendingString_,490            "stringByAppendingString:");491        _NS_PRIVATE_DEF_SEL(systemUptime,492            "systemUptime");493        _NS_PRIVATE_DEF_SEL(thermalState,494            "thermalState");495        _NS_PRIVATE_DEF_SEL(unload,496            "unload");497        _NS_PRIVATE_DEF_SEL(unlock,498            "unlock");499        _NS_PRIVATE_DEF_SEL(unsignedCharValue,500            "unsignedCharValue");501        _NS_PRIVATE_DEF_SEL(unsignedIntegerValue,502            "unsignedIntegerValue");503        _NS_PRIVATE_DEF_SEL(unsignedIntValue,504            "unsignedIntValue");505        _NS_PRIVATE_DEF_SEL(unsignedLongValue,506            "unsignedLongValue");507        _NS_PRIVATE_DEF_SEL(unsignedLongLongValue,508            "unsignedLongLongValue");509        _NS_PRIVATE_DEF_SEL(unsignedShortValue,510            "unsignedShortValue");511        _NS_PRIVATE_DEF_SEL(URLForAuxiliaryExecutable_,512            "URLForAuxiliaryExecutable:");513        _NS_PRIVATE_DEF_SEL(userInfo,514            "userInfo");515        _NS_PRIVATE_DEF_SEL(userName,516            "userName");517        _NS_PRIVATE_DEF_SEL(UTF8String,518            "UTF8String");519        _NS_PRIVATE_DEF_SEL(valueWithBytes_objCType_,520            "valueWithBytes:objCType:");521        _NS_PRIVATE_DEF_SEL(valueWithPointer_,522            "valueWithPointer:");523        _NS_PRIVATE_DEF_SEL(wait,524            "wait");525        _NS_PRIVATE_DEF_SEL(waitUntilDate_,526            "waitUntilDate:");527    } // Class528} // Private529} // MTL530531//-------------------------------------------------------------------------------------------------------------------------------------------------------------532