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%
1//-------------------------------------------------------------------------------------------------------------------------------------------------------------2//3// Foundation/NSError.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 "NSDefines.hpp"26#include "NSObject.hpp"27#include "NSPrivate.hpp"28#include "NSTypes.hpp"2930//-------------------------------------------------------------------------------------------------------------------------------------------------------------3132namespace NS33{34using ErrorDomain = class String*;3536_NS_CONST(ErrorDomain, CocoaErrorDomain);37_NS_CONST(ErrorDomain, POSIXErrorDomain);38_NS_CONST(ErrorDomain, OSStatusErrorDomain);39_NS_CONST(ErrorDomain, MachErrorDomain);4041using ErrorUserInfoKey = class String*;4243_NS_CONST(ErrorUserInfoKey, UnderlyingErrorKey);44_NS_CONST(ErrorUserInfoKey, LocalizedDescriptionKey);45_NS_CONST(ErrorUserInfoKey, LocalizedFailureReasonErrorKey);46_NS_CONST(ErrorUserInfoKey, LocalizedRecoverySuggestionErrorKey);47_NS_CONST(ErrorUserInfoKey, LocalizedRecoveryOptionsErrorKey);48_NS_CONST(ErrorUserInfoKey, RecoveryAttempterErrorKey);49_NS_CONST(ErrorUserInfoKey, HelpAnchorErrorKey);50_NS_CONST(ErrorUserInfoKey, DebugDescriptionErrorKey);51_NS_CONST(ErrorUserInfoKey, LocalizedFailureErrorKey);52_NS_CONST(ErrorUserInfoKey, StringEncodingErrorKey);53_NS_CONST(ErrorUserInfoKey, URLErrorKey);54_NS_CONST(ErrorUserInfoKey, FilePathErrorKey);5556class Error : public Copying<Error>57{58public:59 static Error* error(ErrorDomain domain, Integer code, class Dictionary* pDictionary);6061 static Error* alloc();62 Error* init();63 Error* init(ErrorDomain domain, Integer code, class Dictionary* pDictionary);6465 Integer code() const;66 ErrorDomain domain() const;67 class Dictionary* userInfo() const;6869 class String* localizedDescription() const;70 class Array* localizedRecoveryOptions() const;71 class String* localizedRecoverySuggestion() const;72 class String* localizedFailureReason() const;73};74}7576//-------------------------------------------------------------------------------------------------------------------------------------------------------------7778_NS_PRIVATE_DEF_CONST(NS::ErrorDomain, CocoaErrorDomain);79_NS_PRIVATE_DEF_CONST(NS::ErrorDomain, POSIXErrorDomain);80_NS_PRIVATE_DEF_CONST(NS::ErrorDomain, OSStatusErrorDomain);81_NS_PRIVATE_DEF_CONST(NS::ErrorDomain, MachErrorDomain);8283_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, UnderlyingErrorKey);84_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, LocalizedDescriptionKey);85_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, LocalizedFailureReasonErrorKey);86_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, LocalizedRecoverySuggestionErrorKey);87_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, LocalizedRecoveryOptionsErrorKey);88_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, RecoveryAttempterErrorKey);89_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, HelpAnchorErrorKey);90_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, DebugDescriptionErrorKey);91_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, LocalizedFailureErrorKey);92_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, StringEncodingErrorKey);93_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, URLErrorKey);94_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, FilePathErrorKey);9596//-------------------------------------------------------------------------------------------------------------------------------------------------------------9798_NS_INLINE NS::Error* NS::Error::error(ErrorDomain domain, Integer code, class Dictionary* pDictionary)99{100 return Object::sendMessage<Error*>(_NS_PRIVATE_CLS(NSError), _NS_PRIVATE_SEL(errorWithDomain_code_userInfo_), domain, code, pDictionary);101}102103//-------------------------------------------------------------------------------------------------------------------------------------------------------------104105_NS_INLINE NS::Error* NS::Error::alloc()106{107 return Object::alloc<Error>(_NS_PRIVATE_CLS(NSError));108}109110//-------------------------------------------------------------------------------------------------------------------------------------------------------------111112_NS_INLINE NS::Error* NS::Error::init()113{114 return Object::init<Error>();115}116117//-------------------------------------------------------------------------------------------------------------------------------------------------------------118119_NS_INLINE NS::Error* NS::Error::init(ErrorDomain domain, Integer code, class Dictionary* pDictionary)120{121 return Object::sendMessage<Error*>(this, _NS_PRIVATE_SEL(initWithDomain_code_userInfo_), domain, code, pDictionary);122}123124//-------------------------------------------------------------------------------------------------------------------------------------------------------------125126_NS_INLINE NS::Integer NS::Error::code() const127{128 return Object::sendMessage<Integer>(this, _NS_PRIVATE_SEL(code));129}130131//-------------------------------------------------------------------------------------------------------------------------------------------------------------132133_NS_INLINE NS::ErrorDomain NS::Error::domain() const134{135 return Object::sendMessage<ErrorDomain>(this, _NS_PRIVATE_SEL(domain));136}137138//-------------------------------------------------------------------------------------------------------------------------------------------------------------139140_NS_INLINE NS::Dictionary* NS::Error::userInfo() const141{142 return Object::sendMessage<Dictionary*>(this, _NS_PRIVATE_SEL(userInfo));143}144145//-------------------------------------------------------------------------------------------------------------------------------------------------------------146147_NS_INLINE NS::String* NS::Error::localizedDescription() const148{149 return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(localizedDescription));150}151152//-------------------------------------------------------------------------------------------------------------------------------------------------------------153154_NS_INLINE NS::Array* NS::Error::localizedRecoveryOptions() const155{156 return Object::sendMessage<Array*>(this, _NS_PRIVATE_SEL(localizedRecoveryOptions));157}158159//-------------------------------------------------------------------------------------------------------------------------------------------------------------160161_NS_INLINE NS::String* NS::Error::localizedRecoverySuggestion() const162{163 return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(localizedRecoverySuggestion));164}165166//-------------------------------------------------------------------------------------------------------------------------------------------------------------167168_NS_INLINE NS::String* NS::Error::localizedFailureReason() const169{170 return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(localizedFailureReason));171}172173//-------------------------------------------------------------------------------------------------------------------------------------------------------------174