////////////////////////////////////////////////////////////
//
// Definion of classes
// CDSGroupManager
//
// Copyright 2001
//
////////////////////////////////////////////////////////////
#ifndef __DCEMANAGER_H__
#define __DCEMANAGER_H__
#include <dce/rpc.h>
#include "AFifo.C"
class CDSGroupManager
{
public:
int status;
// removes group entry,
// if (1) it did not exist before, (2) creates it and (3) clears the group
CDSGroupManager(const char *name, bool create_entry=false, bool clear_group=true,unsigned32 syntax=rpc_c_ns_syntax_default);
~CDSGroupManager();
int add_member(const char *name, unsigned32 syntax=rpc_c_ns_syntax_default);
private:
class node
{
public:
unsigned_char_t *name;
unsigned32 syntax;
node():name(0),syntax(rpc_c_ns_syntax_default){}
node(const char *n,unsigned32 s):name(0),syntax(s)
{set_name((unsigned_char_t *)n);}
node(const node& z):name(0),syntax(z.syntax)
{set_name(z.name);}
~node(){delete name;}
node& operator=(const node& z)
{ syntax=z.syntax; set_name(z.name); return *this;}
private:
int set_name(const unsigned_char_t *n);
};
unsigned_char_t *group_name;
unsigned32 group_name_syntax;
bool clear_group,clear_group_entry;
AFifo<node> members;
};
#endif