/* @(#)62	1.3  src/rpc/sys_idl/uuid.idl, rpc.idl.src, os2dce21.dss, 960602a.1 5/17/95 09:47:02 */
/*
 * COMPONENT_NAME:  rpc.idl.src 
 *
 * FUNCTIONS: 
 *
 * ORIGINS: 72
 *
 */
/*
 * (c) Copyright 1990, 1991 OPEN SOFTWARE FOUNDATION, INC.
 * ALL RIGHTS RESERVED
 * COPYRIGHT NOTICE
 * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
 * ALL RIGHTS RESERVED (DCE).  See the file named COPYRIGHT.DCE in the
 * src directory for the full copyright text.
 */
/*
 * HISTORY
 * $Log: uuid.idl,v $
 * Revision 1.1.2.3  1993/01/04  00:10:43  bbelch
 * 	Embedding copyright notice
 * 	[1993/01/03  20:16:26  bbelch]
 *
 * Revision 1.1.2.2  1992/12/23  21:21:34  zeliff
 * 	Embedding copyright notice
 * 	[1992/12/23  15:48:09  zeliff]
 * 
 * Revision 1.1  1992/01/19  03:13:40  devrcs
 * 	Initial revision
 * 
 * $EndLog$
 */
/*
**  Copyright (c) 1989 by
**      Hewlett-Packard Company, Palo Alto, Ca. & 
**      Digital Equipment Corporation, Maynard, Mass.
**
**
**  NAME:
**
**      uuid.idl
**
**  FACILITY:
**
**      UUID
**
**  ABSTRACT:
**
**      UUID Interface Definition
**
**
*/

[local] interface uuid
{
import  "dce/lbase.idl";
/*************************************************************************/
/*************************  Common definitions  **************************/
/*************************************************************************/

/*
 * architectural version 1
 */
const long      uuid_c_version          = 1;
const long      uuid_c_version_highest  = 2;

/*
 * A vector of UUIDs.
 */
typedef struct uuid_vector_t  /* OT7619, CMVC5209, uuid_vector_t added */
{
    unsigned32              count;
    uuid_p_t                uuid[1];
} uuid_vector_t, *uuid_vector_p_t;


/*************************************************************************/
/****************************  Status Codes  *****************************/
/*************************************************************************/

/* moved to rpcsts.msf. See dce_error.c */

const long      uuid_s_ok                   = error_status_ok;

/*
 * U U I D _ C R E A T E
 *
 * Create a new UUID.
 */
void uuid_create
(
    [out]   uuid_t              *uuid,
    [out]   unsigned32          *status
);


/*
 * U U I D _ C R E A T E _ N I L
 *
 * Create a 'nil' uuid
 */
void uuid_create_nil
(
    [out]   uuid_t              *uuid,
    [out]   unsigned32          *status
);


/*
 * U U I D _ T O _ S T R I N G
 *
 * Convert a UUID in (non-human) UUID format to STRING format
 */
void uuid_to_string
(
    [in]    uuid_p_t            uuid,
    [out]   unsigned_char_p_t   *uuid_string,
    [out]   unsigned32          *status
);


/*
 * U U I D _  F R O M _ S T R I N G
 *
 * Convert a UUID in STRING format to a UUID in UUID format
 */
void uuid_from_string
(
    [in]    unsigned_char_p_t   uuid_string,
    [out]   uuid_t              *uuid,
    [out]   unsigned32          *status
);
 

/*
 * U U I D _ E Q U A L
 *
 * Compare two UUIDs
 */
boolean32 uuid_equal
(
    [in]    uuid_p_t            uuid1,
    [in]    uuid_p_t            uuid2,
    [out]   unsigned32          *status
);


/*
 * U U I D _ I S _ N I L
 *
 * Return boolean true if uuid is 'nil'
 */
boolean32 uuid_is_nil
(
    [in]    uuid_p_t            uuid,
    [out]   unsigned32          *status
);


/*
 * U U I D _ C O M P A R E
 *
 * Compare two UUIDs "lexically"
 */
signed32 uuid_compare
(
    [in]    uuid_p_t            uuid1,
    [in]    uuid_p_t            uuid2,
    [out]   unsigned32          *status
);


/*
 * U U I D _ H A S H
 *
 * Create a hash value for a UUID
 */
unsigned16 uuid_hash
(
    [in]    uuid_p_t            uuid,
    [out]   unsigned32          *status
);

}
