jpayne@69: /* jpayne@69: * Public include file for the UUID library jpayne@69: * jpayne@69: * Copyright (C) 1996, 1997, 1998 Theodore Ts'o. jpayne@69: * jpayne@69: * %Begin-Header% jpayne@69: * Redistribution and use in source and binary forms, with or without jpayne@69: * modification, are permitted provided that the following conditions jpayne@69: * are met: jpayne@69: * 1. Redistributions of source code must retain the above copyright jpayne@69: * notice, and the entire permission notice in its entirety, jpayne@69: * including the disclaimer of warranties. jpayne@69: * 2. Redistributions in binary form must reproduce the above copyright jpayne@69: * notice, this list of conditions and the following disclaimer in the jpayne@69: * documentation and/or other materials provided with the distribution. jpayne@69: * 3. The name of the author may not be used to endorse or promote jpayne@69: * products derived from this software without specific prior jpayne@69: * written permission. jpayne@69: * jpayne@69: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED jpayne@69: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES jpayne@69: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF jpayne@69: * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE jpayne@69: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR jpayne@69: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT jpayne@69: * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR jpayne@69: * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF jpayne@69: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT jpayne@69: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE jpayne@69: * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH jpayne@69: * DAMAGE. jpayne@69: * %End-Header% jpayne@69: */ jpayne@69: jpayne@69: #ifndef _UL_LIBUUID_UUID_H jpayne@69: #define _UL_LIBUUID_UUID_H jpayne@69: jpayne@69: #include jpayne@69: #ifndef _WIN32 jpayne@69: #include jpayne@69: #endif jpayne@69: #include jpayne@69: jpayne@69: typedef unsigned char uuid_t[16]; jpayne@69: jpayne@69: /* UUID Variant definitions */ jpayne@69: #define UUID_VARIANT_NCS 0 jpayne@69: #define UUID_VARIANT_DCE 1 jpayne@69: #define UUID_VARIANT_MICROSOFT 2 jpayne@69: #define UUID_VARIANT_OTHER 3 jpayne@69: jpayne@69: #define UUID_VARIANT_SHIFT 5 jpayne@69: #define UUID_VARIANT_MASK 0x7 jpayne@69: jpayne@69: /* UUID Type definitions */ jpayne@69: #define UUID_TYPE_DCE_NIL 0 jpayne@69: #define UUID_TYPE_DCE_TIME 1 jpayne@69: #define UUID_TYPE_DCE_SECURITY 2 jpayne@69: #define UUID_TYPE_DCE_MD5 3 jpayne@69: #define UUID_TYPE_DCE_RANDOM 4 jpayne@69: #define UUID_TYPE_DCE_SHA1 5 jpayne@69: jpayne@69: #define UUID_TYPE_SHIFT 4 jpayne@69: #define UUID_TYPE_MASK 0xf jpayne@69: jpayne@69: #define UUID_STR_LEN 37 jpayne@69: jpayne@69: /* Allow UUID constants to be defined */ jpayne@69: #ifdef __GNUC__ jpayne@69: #define UUID_DEFINE(name,u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15) \ jpayne@69: static const uuid_t name __attribute__ ((unused)) = {u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15} jpayne@69: #else jpayne@69: #define UUID_DEFINE(name,u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15) \ jpayne@69: static const uuid_t name = {u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15} jpayne@69: #endif jpayne@69: jpayne@69: #ifdef __cplusplus jpayne@69: extern "C" { jpayne@69: #endif jpayne@69: jpayne@69: /* clear.c */ jpayne@69: extern void uuid_clear(uuid_t uu); jpayne@69: jpayne@69: /* compare.c */ jpayne@69: extern int uuid_compare(const uuid_t uu1, const uuid_t uu2); jpayne@69: jpayne@69: /* copy.c */ jpayne@69: extern void uuid_copy(uuid_t dst, const uuid_t src); jpayne@69: jpayne@69: /* gen_uuid.c */ jpayne@69: extern void uuid_generate(uuid_t out); jpayne@69: extern void uuid_generate_random(uuid_t out); jpayne@69: extern void uuid_generate_time(uuid_t out); jpayne@69: extern int uuid_generate_time_safe(uuid_t out); jpayne@69: jpayne@69: extern void uuid_generate_md5(uuid_t out, const uuid_t ns, const char *name, size_t len); jpayne@69: extern void uuid_generate_sha1(uuid_t out, const uuid_t ns, const char *name, size_t len); jpayne@69: jpayne@69: /* isnull.c */ jpayne@69: extern int uuid_is_null(const uuid_t uu); jpayne@69: jpayne@69: /* parse.c */ jpayne@69: extern int uuid_parse(const char *in, uuid_t uu); jpayne@69: extern int uuid_parse_range(const char *in_start, const char *in_end, uuid_t uu); jpayne@69: jpayne@69: /* unparse.c */ jpayne@69: extern void uuid_unparse(const uuid_t uu, char *out); jpayne@69: extern void uuid_unparse_lower(const uuid_t uu, char *out); jpayne@69: extern void uuid_unparse_upper(const uuid_t uu, char *out); jpayne@69: jpayne@69: /* uuid_time.c */ jpayne@69: extern time_t uuid_time(const uuid_t uu, struct timeval *ret_tv); jpayne@69: extern int uuid_type(const uuid_t uu); jpayne@69: extern int uuid_variant(const uuid_t uu); jpayne@69: jpayne@69: /* predefined.c */ jpayne@69: extern const uuid_t *uuid_get_template(const char *alias); jpayne@69: jpayne@69: #ifdef __cplusplus jpayne@69: } jpayne@69: #endif jpayne@69: jpayne@69: #endif /* _UL_LIBUUID_UUID_H */