]> git.saurik.com Git - apple/security.git/blame - Security/libsecurity_keychain/lib/KCExceptions.h
Security-57031.30.12.tar.gz
[apple/security.git] / Security / libsecurity_keychain / lib / KCExceptions.h
CommitLineData
b1ab9ed8 1/*
d8f41ccd 2 * Copyright (c) 2000-2004,2011,2013-2014 Apple Inc. All Rights Reserved.
b1ab9ed8
A
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24
25/*
26 * KCExceptions.h
27 */
28#ifndef _SECURITY_KCEXCEPTIONS_H_
29#define _SECURITY_KCEXCEPTIONS_H_
30
b1ab9ed8 31#include <security_utilities/errors.h>
427c49bc 32#include <SecBase.h>
b1ab9ed8
A
33#ifdef lock
34#undef lock
35#endif
36//#include <security_cdsa_utilities/utilities.h>
37
38#ifdef check
39#undef check
40#endif
41
42namespace Security
43{
44
45namespace KeychainCore
46{
47
48//
49// Helpers for memory pointer validation
50//
51
52/* remove RequiredParam when cdsa does namespaces
53template <class T>
427c49bc 54inline T &Required(T *ptr,OSStatus err = errSecParam)
b1ab9ed8
A
55{
56 return Required(ptr,err);
57}
58*/
59
60template <class T>
61inline void KCThrowIfMemFail_(const T *ptr)
62{
63 if (ptr==NULL)
427c49bc 64 MacOSError::throwMe(errSecAllocate);
b1ab9ed8
A
65}
66
67inline void KCThrowIf_(OSStatus theErr)
68{
69 // will also work for OSErr
427c49bc 70 if (theErr!=errSecSuccess)
b1ab9ed8
A
71 MacOSError::throwMe(theErr);
72}
73
74inline void KCThrowIf_(bool test,OSStatus theErr)
75{
76 // will also work for OSErr
77 if (test)
78 MacOSError::throwMe(theErr);
79}
80
81inline void KCThrowParamErrIf_(bool test)
82{
83 if (test)
427c49bc 84 MacOSError::throwMe(errSecParam);
b1ab9ed8
A
85}
86
87inline void KCUnimplemented_()
88{
427c49bc 89 MacOSError::throwMe(errSecUnimplemented);
b1ab9ed8
A
90}
91
92} // end namespace KeychainCore
93
94} // end namespace Security
95
96#endif /* !_SECURITY_KCEXCEPTIONS_H_ */