////////////////////////////////////////////////////////////
//
//     	Declaration of a class
//	DceUuid
//
//      Copyright 2001 
//
////////////////////////////////////////////////////////////

#ifndef __DCEUUID_H__
#define __DCEUUID_H__

#include <dce/uuid.h>
#include "DceString.h"


	// DceUuid

class DceUuid
{		
public:
	int status;
	   
	DceUuid(); // sets "zero" uuid - for arrays
	DceUuid(const uuid_t& z):status(0),uuid(z){}					
	DceUuid(const unsigned char* z){set(z);}			
	DceUuid(const char* z){set(z);}			
	DceUuid(const DceUuid& z):status(z.status),uuid(z.uuid){}
	~DceUuid(){}
	
	DceUuid& operator=(const DceUuid& z)
	{ status=z.status; uuid=z.uuid; return *this;}
	
	int set(const uuid_t& z);
	int set(const unsigned char*);
	int set(const char*);
	int set_random();
	
	unsigned short hash_value()const;
	
	bool operator==(const DceUuid& z) const;		
	bool operator!=(const DceUuid& z) const
	{ return !operator==(z);}
	
	bool is_nil()const;		
			
	int get_uuid_t(uuid_t& z) const
	{ z=uuid; return 0;}	
	
	int get_string(DceString& )const;
							
private:
	uuid_t	uuid;				
};


#endif