]> git.saurik.com Git - apple/security.git/blob - cdsa/cdsa_utilities/DbName.cpp
Security-179.tar.gz
[apple/security.git] / cdsa / cdsa_utilities / DbName.cpp
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 #ifdef __MWERKS__
20 #define _CPP_DBNAME
21 #endif
22 #include <Security/DbName.h>
23
24 #include <Security/utilities.h>
25
26 CssmNetAddress::CssmNetAddress(CSSM_DB_RECORDTYPE inAddressType, const CssmData &inAddress)
27 {
28 AddressType = inAddressType;
29 Address.Length = inAddress.Length;
30 if (Address.Length > 0)
31 {
32 Address.Data = new uint8[Address.Length];
33 memcpy (Address.Data, inAddress.Data, Address.Length);
34 }
35 else
36 Address.Data = NULL;
37 }
38
39 CssmNetAddress::CssmNetAddress(const CSSM_NET_ADDRESS &other)
40 {
41 AddressType = other.AddressType;
42 Address.Length = other.Address.Length;
43 if (Address.Length > 0)
44 {
45 Address.Data = new uint8[Address.Length];
46 memcpy (Address.Data, other.Address.Data, Address.Length);
47 }
48 else
49 Address.Data = NULL;
50 }
51
52 CssmNetAddress::~CssmNetAddress()
53 {
54 if (Address.Length > 0)
55 delete Address.Data;
56 }
57
58 DbName::DbName(const char *inDbName, const CSSM_NET_ADDRESS *inDbLocation)
59 :mDbName(&Required(inDbName)),
60 mDbLocation(nil)
61 {
62 if (inDbLocation)
63 {
64 mDbLocation = new CssmNetAddress(*inDbLocation);
65 }
66 }
67
68 DbName::DbName(const DbName &other)
69 :mDbName(other.mDbName),
70 mDbLocation(nil)
71 {
72 if (other.mDbLocation)
73 {
74 mDbLocation = new CssmNetAddress(*other.mDbLocation);
75 }
76 }
77
78 DbName &
79 DbName::operator =(const DbName &other)
80 {
81 mDbName = other.mDbName;
82 if (other.mDbLocation)
83 {
84 mDbLocation = new CssmNetAddress(*other.mDbLocation);
85 }
86
87 return *this;
88 }
89
90 DbName::~DbName()
91 {
92 if (mDbLocation)
93 {
94 delete mDbLocation;
95 }
96 }