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%
7.6 KB · 174 lines cpp
Raw Blame History
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