Path: blob/master/thirdparty/metal-cpp/Foundation/NSError.hpp
21117 views
//-------------------------------------------------------------------------------------------------------------------------------------------------------------1//2// Foundation/NSError.hpp3//4// Copyright 2020-2024 Apple Inc.5//6// Licensed under the Apache License, Version 2.0 (the "License");7// you may not use this file except in compliance with the License.8// You may obtain a copy of the License at9//10// http://www.apache.org/licenses/LICENSE-2.011//12// Unless required by applicable law or agreed to in writing, software13// distributed under the License is distributed on an "AS IS" BASIS,14// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.15// See the License for the specific language governing permissions and16// limitations under the License.17//18//-------------------------------------------------------------------------------------------------------------------------------------------------------------1920#pragma once2122//-------------------------------------------------------------------------------------------------------------------------------------------------------------2324#include "NSDefines.hpp"25#include "NSObject.hpp"26#include "NSPrivate.hpp"27#include "NSTypes.hpp"2829//-------------------------------------------------------------------------------------------------------------------------------------------------------------3031namespace NS32{33using ErrorDomain = class String*;3435_NS_CONST(ErrorDomain, CocoaErrorDomain);36_NS_CONST(ErrorDomain, POSIXErrorDomain);37_NS_CONST(ErrorDomain, OSStatusErrorDomain);38_NS_CONST(ErrorDomain, MachErrorDomain);3940using ErrorUserInfoKey = class String*;4142_NS_CONST(ErrorUserInfoKey, UnderlyingErrorKey);43_NS_CONST(ErrorUserInfoKey, LocalizedDescriptionKey);44_NS_CONST(ErrorUserInfoKey, LocalizedFailureReasonErrorKey);45_NS_CONST(ErrorUserInfoKey, LocalizedRecoverySuggestionErrorKey);46_NS_CONST(ErrorUserInfoKey, LocalizedRecoveryOptionsErrorKey);47_NS_CONST(ErrorUserInfoKey, RecoveryAttempterErrorKey);48_NS_CONST(ErrorUserInfoKey, HelpAnchorErrorKey);49_NS_CONST(ErrorUserInfoKey, DebugDescriptionErrorKey);50_NS_CONST(ErrorUserInfoKey, LocalizedFailureErrorKey);51_NS_CONST(ErrorUserInfoKey, StringEncodingErrorKey);52_NS_CONST(ErrorUserInfoKey, URLErrorKey);53_NS_CONST(ErrorUserInfoKey, FilePathErrorKey);5455class Error : public Copying<Error>56{57public:58static Error* error(ErrorDomain domain, Integer code, class Dictionary* pDictionary);5960static Error* alloc();61Error* init();62Error* init(ErrorDomain domain, Integer code, class Dictionary* pDictionary);6364Integer code() const;65ErrorDomain domain() const;66class Dictionary* userInfo() const;6768class String* localizedDescription() const;69class Array* localizedRecoveryOptions() const;70class String* localizedRecoverySuggestion() const;71class String* localizedFailureReason() const;72};73}7475//-------------------------------------------------------------------------------------------------------------------------------------------------------------7677_NS_PRIVATE_DEF_CONST(NS::ErrorDomain, CocoaErrorDomain);78_NS_PRIVATE_DEF_CONST(NS::ErrorDomain, POSIXErrorDomain);79_NS_PRIVATE_DEF_CONST(NS::ErrorDomain, OSStatusErrorDomain);80_NS_PRIVATE_DEF_CONST(NS::ErrorDomain, MachErrorDomain);8182_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, UnderlyingErrorKey);83_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, LocalizedDescriptionKey);84_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, LocalizedFailureReasonErrorKey);85_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, LocalizedRecoverySuggestionErrorKey);86_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, LocalizedRecoveryOptionsErrorKey);87_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, RecoveryAttempterErrorKey);88_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, HelpAnchorErrorKey);89_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, DebugDescriptionErrorKey);90_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, LocalizedFailureErrorKey);91_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, StringEncodingErrorKey);92_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, URLErrorKey);93_NS_PRIVATE_DEF_CONST(NS::ErrorUserInfoKey, FilePathErrorKey);9495//-------------------------------------------------------------------------------------------------------------------------------------------------------------9697_NS_INLINE NS::Error* NS::Error::error(ErrorDomain domain, Integer code, class Dictionary* pDictionary)98{99return Object::sendMessage<Error*>(_NS_PRIVATE_CLS(NSError), _NS_PRIVATE_SEL(errorWithDomain_code_userInfo_), domain, code, pDictionary);100}101102//-------------------------------------------------------------------------------------------------------------------------------------------------------------103104_NS_INLINE NS::Error* NS::Error::alloc()105{106return Object::alloc<Error>(_NS_PRIVATE_CLS(NSError));107}108109//-------------------------------------------------------------------------------------------------------------------------------------------------------------110111_NS_INLINE NS::Error* NS::Error::init()112{113return Object::init<Error>();114}115116//-------------------------------------------------------------------------------------------------------------------------------------------------------------117118_NS_INLINE NS::Error* NS::Error::init(ErrorDomain domain, Integer code, class Dictionary* pDictionary)119{120return Object::sendMessage<Error*>(this, _NS_PRIVATE_SEL(initWithDomain_code_userInfo_), domain, code, pDictionary);121}122123//-------------------------------------------------------------------------------------------------------------------------------------------------------------124125_NS_INLINE NS::Integer NS::Error::code() const126{127return Object::sendMessage<Integer>(this, _NS_PRIVATE_SEL(code));128}129130//-------------------------------------------------------------------------------------------------------------------------------------------------------------131132_NS_INLINE NS::ErrorDomain NS::Error::domain() const133{134return Object::sendMessage<ErrorDomain>(this, _NS_PRIVATE_SEL(domain));135}136137//-------------------------------------------------------------------------------------------------------------------------------------------------------------138139_NS_INLINE NS::Dictionary* NS::Error::userInfo() const140{141return Object::sendMessage<Dictionary*>(this, _NS_PRIVATE_SEL(userInfo));142}143144//-------------------------------------------------------------------------------------------------------------------------------------------------------------145146_NS_INLINE NS::String* NS::Error::localizedDescription() const147{148return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(localizedDescription));149}150151//-------------------------------------------------------------------------------------------------------------------------------------------------------------152153_NS_INLINE NS::Array* NS::Error::localizedRecoveryOptions() const154{155return Object::sendMessage<Array*>(this, _NS_PRIVATE_SEL(localizedRecoveryOptions));156}157158//-------------------------------------------------------------------------------------------------------------------------------------------------------------159160_NS_INLINE NS::String* NS::Error::localizedRecoverySuggestion() const161{162return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(localizedRecoverySuggestion));163}164165//-------------------------------------------------------------------------------------------------------------------------------------------------------------166167_NS_INLINE NS::String* NS::Error::localizedFailureReason() const168{169return Object::sendMessage<String*>(this, _NS_PRIVATE_SEL(localizedFailureReason));170}171172//-------------------------------------------------------------------------------------------------------------------------------------------------------------173174175