]> git.saurik.com Git - apple/security.git/blob - cdsa/cdsa_utilities/os9utils.h
Security-54.1.tar.gz
[apple/security.git] / cdsa / cdsa_utilities / os9utils.h
1 /*
2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
3 *
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
8 * using this file.
9 *
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
16 */
17
18
19 //
20 // os9utils - MacOS 9 specific utilities
21 //
22 #ifndef _H_OS9UTILS
23 #define _H_OS9UTILS
24
25 #include <Security/utility_config.h>
26 #if TARGET_API_MAC_OS8
27
28 #include <Security/utilities.h>
29 #include <string>
30
31
32 namespace Security
33 {
34
35 namespace MacOS9Utilities
36 {
37
38
39 //
40 // A temporary or in-place Str255 constructed from other string forms
41 //
42 class PString {
43 public:
44 PString(const char *s) { set(s, strlen(s)); }
45 PString(string s) { set(s.data(), s.size()); }
46 operator const unsigned char * () const { return mString; }
47
48 private:
49 Str255 mString;
50 void set(const char *str, int size)
51 {
52 if (size > 255)
53 CssmError::throwMe(CSSM_ERRCODE_INTERNAL_ERROR);
54 mString[0] = size;
55 memcpy(mString+1, str, size);
56 }
57 };
58
59
60 //
61 // Make an STL string from a Pascal string
62 //
63 inline string p2cString(StringPtr s)
64 {
65 return string(reinterpret_cast<const char *>(s + 1), s[0]);
66 }
67
68
69 } // end namespace MacOS9Utilities
70
71 } // end namespace Security
72
73 #endif // OS 8/9
74 #endif //_H_OS9UTILS