#ifndef __NiLib2_h__
#define __NiLib2_h__ 1
class NiLib2 {
public:
static ni_status Create ( void *domain, char *pathname );
static ni_status CreateProp ( void *domain, char *pathname, const ni_name key, ni_namelist values );
static ni_status CreateDirProp ( void *domain, ni_id *dir, const ni_name key, ni_namelist values );
static ni_status AppendProp ( void *domain, char *pathname, const ni_name key, ni_namelist values );
static ni_status AppendDirProp ( void *domain, ni_id *dir, const ni_name key, ni_namelist values );
static ni_status MergeProp ( void *domain, char *pathname, const ni_name key, ni_namelist values );
static ni_status MergeDirProp ( void *domain, ni_id *dir, const ni_name key, ni_namelist values );
static ni_status InsertVal ( void *domain, char *pathname, const ni_name key, const ni_name value, ni_index where );
static ni_status InsertDirVal ( void *domain, ni_id *dir, const ni_name key, const ni_name value, ni_index whereval );
static ni_status Destroy ( void *domain, char *pathname );
static ni_status Destroy ( void *inDomain, ni_id *inDirID );
static ni_status DestroyDir ( void *domain, ni_id *dir, ni_id *parent );
static ni_status DestroyProp ( void *domain, char *pathname, ni_namelist keys );
static ni_status DestroyDirProp ( void *domain, ni_id *dir, ni_namelist keys );
static ni_status DestroyVal ( void *domain, char *pathname, const ni_name key, ni_namelist values );
static ni_status DestroyDirVal ( void *domain, ni_id *dir, const ni_name key, ni_namelist values );
static ni_status RenameProp ( void *domain, char *pathname, const ni_name oldname, const ni_name newname );
static ni_status RenameDirProp ( void *domain, ni_id *dir, const ni_name oldname, const ni_name newname );
static ni_status CreatePath ( void *domain, ni_id *dir, char *pathname );
static ni_status CreateChild ( void *domain, ni_id *dir, const ni_name dirname );
static ni_status PathSearch ( void *domain, ni_id *dir, char *pathname );
static ni_status StatProp ( void *domain, char *pathname, const ni_name key, ni_index *where );
static ni_status StatPropDir ( void *domain, ni_id *dir, const ni_name key, ni_index *where );
static ni_status StatVal ( void *domain, char *pathname, const ni_name key, const ni_name value, ni_index *where );
static ni_status StatValDir ( void *domain, ni_id *dir, const ni_name key, const ni_name value, ni_index *where );
static ni_status ReapProp ( void *domain, char *pathname, const ni_name key );
static ni_status ReappropDir ( void *domain, ni_id *dir, const ni_name key );
static ni_status ReapDir ( void *domain, char *pathname );
static ni_status Copy ( void *srcdomain, char *srcpath, void*dstdomain, bool recursive );
static ni_status Copy ( void *srcdomain, ni_id *inSrcDirID, char *path, void *dstdomain, bool recursive );
static ni_status CopyDir ( void *srcdomain, ni_id *srcdir, void*dstdomain, ni_id *dstdir, bool recursive );
static ni_status CopyDirToParentDir ( void *srcdomain, ni_id *srcdir, void*dstdomain, ni_id *dstdir, bool recursive );
static ni_status LookUpProp ( void *domain, char *pathname, const ni_name key, ni_namelist *values );
static ni_index InsertSorted ( ni_namelist *values, const ni_name newvalue );
static ni_status InAccessList ( const char* user, ni_namelist access_list);
static ni_status ValidateDir ( const char* user, ni_proplist *pl );
static ni_status ValidateName ( const char* user, ni_proplist *pl, ni_index prop_index );
};
#endif