findlanabyname-20040228
[openafs.git] / src / WINNT / afsclass / c_grp.h
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 #ifndef AFSCLASS_GROUP_H
11 #define AFSCLASS_GROUP_H
12
13 #include <WINNT/afsclass.h>
14
15
16 /*
17  * PTSGROUP CLASS _____________________________________________________________
18  *
19  */
20
21 typedef struct PTSGROUPSTATUS
22    {
23    int nMembers;
24    int uidName;
25    int uidOwner;
26    int uidCreator;
27    ACCOUNTACCESS aaListStatus;
28    ACCOUNTACCESS aaListGroupsOwned;
29    ACCOUNTACCESS aaListMembers;
30    ACCOUNTACCESS aaAddMember;
31    ACCOUNTACCESS aaDeleteMember;
32    TCHAR szOwner[ cchNAME ];
33    TCHAR szCreator[ cchNAME ];
34    } PTSGROUPSTATUS, *LPPTSGROUPSTATUS;
35
36
37 class PTSGROUP
38    {
39    friend class CELL;
40    friend class IDENT;
41    friend class USER;
42
43    public:
44       void Close (void);
45       void Invalidate (void);
46       BOOL RefreshStatus (BOOL fNotify = TRUE, ULONG *pStatus = NULL);
47
48       // User properties
49       //
50       LPIDENT GetIdentifier (void);
51       LPCELL OpenCell (ULONG *pStatus = NULL);
52       void GetName (LPTSTR pszGroup);
53
54       BOOL GetStatus (LPPTSGROUPSTATUS lpgs, BOOL fNotify = TRUE, ULONG *pStatus = NULL);
55
56       PVOID GetUserParam (void);
57       void SetUserParam (PVOID pUserParam);
58
59       // Users and Groups
60       //
61       BOOL GetMembers (LPTSTR *ppmsz, ULONG *pStatus = NULL);
62       BOOL GetMemberOf (LPTSTR *ppmsz, ULONG *pStatus = NULL);
63       BOOL GetOwnerOf (LPTSTR *ppmsz, ULONG *pStatus = NULL);
64
65    private:
66       PTSGROUP (LPCELL lpCellParent, LPTSTR pszGroup);
67       ~PTSGROUP (void);
68       void SendDeleteNotifications (void);
69
70    private:
71       LPIDENT m_lpiCell;
72       TCHAR m_szName[ cchNAME ];
73
74       LPIDENT m_lpiThis;
75
76       BOOL m_fStatusOutOfDate;
77       PTSGROUPSTATUS m_gs;
78
79       LPTSTR m_mszMembers;
80       LPTSTR m_mszMemberOf;
81       LPTSTR m_mszOwnerOf;
82
83    public:
84       // (used internally)
85       void PTSGROUP::ChangeIdentName (LPTSTR pszNewName);
86    };
87
88
89 #endif  // AFSCLASS_GROUP_H
90