199 lines
4.5 KiB
C++
199 lines
4.5 KiB
C++
|
/**********************************************************************/
|
||
|
/** Microsoft LAN Manager **/
|
||
|
/** Copyright(c) Microsoft Corp., 1990 **/
|
||
|
/**********************************************************************/
|
||
|
|
||
|
/*
|
||
|
* History
|
||
|
* o-SimoP 08-Apr-91 Cloned from lmouser.hxx
|
||
|
* o-SimoP 20-Apr-91 CR changes, attended by ChuckC,
|
||
|
* ErichCh, RustanL, JonN and me
|
||
|
* terryk 07-Oct-91 type changes for NT
|
||
|
* jonn 08-Oct-91 Added GROUP_0 and GROUP_1
|
||
|
*/
|
||
|
|
||
|
#ifndef _LMOGROUP_HXX_
|
||
|
#define _LMOGROUP_HXX_
|
||
|
|
||
|
#include "lmobj.hxx"
|
||
|
|
||
|
/*
|
||
|
NT BUGBUG: The following definition of MAX_GROUP_INFO_SIZE_1
|
||
|
is not safe for NT. It should be moved to a global header file.
|
||
|
*/
|
||
|
#define MAX_GROUP_INFO_SIZE_1 (sizeof(struct group_info_1) + (MAXCOMMENTSZ+1))
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: GROUP
|
||
|
|
||
|
SYNOPSIS: Superclass for manipulation of groups
|
||
|
|
||
|
INTERFACE: GROUP(), constructor
|
||
|
|
||
|
~GROUP(), destructor
|
||
|
|
||
|
QueryName(), returns pointer to the group name
|
||
|
that was passed in to constructor or
|
||
|
set by SetName if the name was correct.
|
||
|
Otherwise returns previous name.
|
||
|
|
||
|
SetName(), sets group name, returns error code
|
||
|
which is NERR_Success on success.
|
||
|
|
||
|
I_Delete(), deletes a group.
|
||
|
|
||
|
PARENT: LOC_LM_OBJ
|
||
|
|
||
|
HISTORY:
|
||
|
o-SimoP 08-Apr-91 Cloned from lmouser.hxx
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS GROUP : public LOC_LM_OBJ
|
||
|
{
|
||
|
private:
|
||
|
|
||
|
NLS_STR _nlsGroup;
|
||
|
|
||
|
VOID CtAux( const TCHAR * pszGroup );
|
||
|
|
||
|
protected:
|
||
|
|
||
|
virtual APIERR I_Delete( UINT uiForce );
|
||
|
|
||
|
APIERR W_CloneFrom( const GROUP & group );
|
||
|
|
||
|
public:
|
||
|
|
||
|
GROUP(const TCHAR *pszGroup, const TCHAR *pszLocation = NULL);
|
||
|
GROUP(const TCHAR *pszGroup, enum LOCATION_TYPE loctype);
|
||
|
GROUP(const TCHAR *pszGroup, const LOCATION & loc);
|
||
|
~GROUP();
|
||
|
|
||
|
const TCHAR *QueryName() const;
|
||
|
|
||
|
APIERR SetName( const TCHAR *pszGroup );
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: GROUP_0
|
||
|
|
||
|
SYNOPSIS: NetGroupGet/SetGroup[0] (dummy class)
|
||
|
|
||
|
INTERFACE: GROUP_0() constructor
|
||
|
|
||
|
~GROUP_0() destructor
|
||
|
|
||
|
PARENT: GROUP
|
||
|
|
||
|
HISTORY:
|
||
|
jonn 08-Oct-91 Created
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS GROUP_0 : public GROUP
|
||
|
{
|
||
|
|
||
|
public:
|
||
|
|
||
|
GROUP_0(const TCHAR *pszGroup, const TCHAR *pszLocation = NULL)
|
||
|
: GROUP( pszGroup, pszLocation )
|
||
|
{}
|
||
|
GROUP_0(const TCHAR *pszGroup, enum LOCATION_TYPE loctype)
|
||
|
: GROUP( pszGroup, loctype )
|
||
|
{}
|
||
|
GROUP_0(const TCHAR *pszGroup, const LOCATION & loc)
|
||
|
: GROUP( pszGroup, loc )
|
||
|
{}
|
||
|
|
||
|
~GROUP_0() {}
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: GROUP_1
|
||
|
|
||
|
SYNOPSIS: NetGroupGet/SetGroup[1]
|
||
|
|
||
|
INTERFACE: GROUP_1() constructor
|
||
|
|
||
|
~GROUP_1() destructor
|
||
|
|
||
|
I_GetInfo
|
||
|
Reads in the current state of the object
|
||
|
|
||
|
I_WriteInfo
|
||
|
Writes the current state of the object to the
|
||
|
API. This write is atomic, either all
|
||
|
parameters are set or none are set.
|
||
|
|
||
|
I_CreateNew
|
||
|
Sets up the GROUP_1 object with default values in
|
||
|
preparation for a call to WriteNew
|
||
|
|
||
|
I_WriteNew
|
||
|
Adds a new group
|
||
|
|
||
|
CloneFrom
|
||
|
Makes this GROUP_1 instance an exact copy of the
|
||
|
parameter GROUP_1 instance. All fields including
|
||
|
name and state will be copied. If this operation
|
||
|
fails, the object will be invalid. The parameter
|
||
|
must be a GROUP_1 and not a subclass of GROUP_1.
|
||
|
|
||
|
QueryComment()
|
||
|
SetComment()
|
||
|
|
||
|
PARENT: GROUP_0
|
||
|
|
||
|
HISTORY:
|
||
|
jonn 08-Oct-91 Created
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS GROUP_1 : public GROUP_0
|
||
|
{
|
||
|
|
||
|
private:
|
||
|
NLS_STR _nlsComment;
|
||
|
|
||
|
VOID CtAux();
|
||
|
|
||
|
APIERR W_Write(); // helper for I_WriteInfo and I_WriteNew
|
||
|
|
||
|
protected:
|
||
|
virtual APIERR I_GetInfo();
|
||
|
virtual APIERR I_WriteInfo();
|
||
|
virtual APIERR I_CreateNew();
|
||
|
virtual APIERR I_WriteNew();
|
||
|
virtual APIERR I_ChangeToNew();
|
||
|
|
||
|
virtual APIERR W_CreateNew();
|
||
|
APIERR W_CloneFrom( const GROUP_1 & group1 );
|
||
|
|
||
|
public:
|
||
|
|
||
|
GROUP_1(const TCHAR *pszGroup, const TCHAR *pszLocation = NULL);
|
||
|
GROUP_1(const TCHAR *pszGroup, enum LOCATION_TYPE loctype);
|
||
|
GROUP_1(const TCHAR *pszGroup, const LOCATION & loc);
|
||
|
~GROUP_1();
|
||
|
|
||
|
APIERR CloneFrom( const GROUP_1 & group1 );
|
||
|
|
||
|
inline const TCHAR * QueryComment() const
|
||
|
{ CHECK_OK(NULL); return _nlsComment.QueryPch(); }
|
||
|
|
||
|
APIERR SetComment( const TCHAR * pszComment );
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // _LMOGROUP_HXX_
|