]> git.saurik.com Git - apple/security.git/blame - cdsa/cdsa_utilities/os9utils.h
Security-30.1.tar.gz
[apple/security.git] / cdsa / cdsa_utilities / os9utils.h
CommitLineData
bac41a7b
A
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
32namespace Security
33{
34
35namespace MacOS9Utilities
36{
37
38
39//
40// A temporary or in-place Str255 constructed from other string forms
41//
42class PString {
43public:
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
48private:
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//
63inline 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