063c19ba835dbd0130994533add9cfa697936dd9
[openafs.git] / src / WINNT / afsclass / c_identlist.cpp
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #include <winsock2.h>
11 #include <ws2tcpip.h>
12
13 extern "C" {
14 #include <afsconfig.h>
15 #include <afs/param.h>
16 #include <afs/stds.h>
17 #include <roken.h>
18 }
19
20 #include <WINNT/afsclass.h>
21 #include "internal.h"
22
23
24 /*
25  * IDENTLIST CLASS ____________________________________________________________
26  *
27  */
28
29 IDENTLIST::IDENTLIST (void)
30 {
31    m_lIdents = New (HASHLIST);
32 }
33
34
35 IDENTLIST::~IDENTLIST (void)
36 {
37    if (m_lIdents)
38       Delete (m_lIdents);
39    m_lIdents = NULL;
40 }
41
42
43 void IDENTLIST::Add (LPIDENT lpi)
44 {
45    m_lIdents->AddUnique (lpi);
46 }
47
48
49 void IDENTLIST::Remove (LPIDENT lpi)
50 {
51    m_lIdents->Remove (lpi);
52 }
53
54
55 void IDENTLIST::RemoveAll (void)
56 {
57    LPIDENT lpi;
58    while ((lpi = (LPIDENT)m_lIdents->GetFirstObject()) != NULL)
59       m_lIdents->Remove (lpi);
60 }
61
62
63 void IDENTLIST::CopyFrom (LPIDENTLIST pil)
64 {
65    RemoveAll();
66
67    HENUM hEnum;
68    for (LPIDENT lpi = pil->FindFirst (&hEnum); lpi; lpi = pil->FindNext (&hEnum))
69       Add (lpi);
70 }
71
72
73 size_t IDENTLIST::GetCount (void)
74 {
75    return m_lIdents->GetCount();
76 }
77
78
79 BOOL IDENTLIST::fIsInList (LPIDENT lpi)
80 {
81    return m_lIdents->fIsInList (lpi);
82 }
83
84
85 LPIDENT IDENTLIST::FindFirst (HENUM *phEnum)
86 {
87    LPIDENT lpi = NULL;
88    if ((*phEnum = m_lIdents->FindFirst()) != NULL)
89       lpi = (LPIDENT)( (*phEnum)->GetObject() );
90    return lpi;
91 }
92
93
94 LPIDENT IDENTLIST::FindNext (HENUM *phEnum)
95 {
96    LPIDENT lpi = NULL;
97
98    if ((*phEnum) && ((*phEnum = (*phEnum)->FindNext()) != NULL))
99       lpi = (LPIDENT)( (*phEnum)->GetObject() );
100
101    return lpi;
102 }
103
104
105 void IDENTLIST::FindClose (HENUM *phEnum)
106 {
107    if (*phEnum)
108       {
109       Delete (*phEnum);
110       *phEnum = NULL;
111       }
112 }
113