////////////////////////////////////////////////////////////
//
//     	Implementation of a class
//	DceUuid
//
//      Copyright 2001 
//
////////////////////////////////////////////////////////////

#include <string.h>
#include "DceUuid.h"

	// DceUuid

DceUuid::DceUuid()
{
	unsigned32 s=0;
	uuid_create_nil(&uuid,&s);
	
	if(s==uuid_s_ok) status=0;
	else status=1;
}
					

int DceUuid::set(const uuid_t& z)
{
	status=0;
	uuid=z;
	return status;
}

int DceUuid::set(const unsigned char* z)
{
	unsigned32 s=0;
	uuid_from_string((unsigned char*)z,&uuid,&s);
	
	if(s==uuid_s_ok) status=0;
	else status=1;
	
	return status;
}

int DceUuid::set(const char* z)
{
	unsigned32 s=0;
	uuid_from_string((unsigned char*)z,&uuid,&s);
	
	if(s==uuid_s_ok) status=0;
	else status=1;
		
	return status;
}

int DceUuid::set_random()
{
	unsigned32 s=0;
	uuid_create(&uuid,&s);
	
	if(s==uuid_s_ok) status=0;
	else status=1;
	
	return status;
}

							
unsigned short DceUuid::hash_value()const
{
	unsigned32 s=0;
	unsigned short z=uuid_hash((uuid_t*)&uuid,&s);
	return z;
}
		
	
bool DceUuid::operator==(const DceUuid& z)const
{
	unsigned32 s=0;
	boolean32 zz=uuid_equal((uuid_t*)&uuid,(uuid_t*)&z.uuid,&s);
	return (bool)zz;
}

bool DceUuid::is_nil()const
{
	unsigned32 s=0;
	boolean32 zz=uuid_is_nil((uuid_t*)&uuid,&s);
	return (bool)zz;
}

int DceUuid::get_string(DceString& z)const
{
	unsigned32 s=0;
	
	uuid_to_string((uuid_t*)&uuid,&z.data,&s);
	
	if(s!=uuid_s_ok) return 1;
	
	return 0;
}