| 1 | /* | 
| 2 |  * Public include file for the UUID library | 
| 3 |  * | 
| 4 |  * Copyright (C) 1996, 1997, 1998 Theodore Ts'o. | 
| 5 |  * | 
| 6 |  * %Begin-Header% | 
| 7 |  * Redistribution and use in source and binary forms, with or without | 
| 8 |  * modification, are permitted provided that the following conditions | 
| 9 |  * are met: | 
| 10 |  * 1. Redistributions of source code must retain the above copyright | 
| 11 |  *    notice, and the entire permission notice in its entirety, | 
| 12 |  *    including the disclaimer of warranties. | 
| 13 |  * 2. Redistributions in binary form must reproduce the above copyright | 
| 14 |  *    notice, this list of conditions and the following disclaimer in the | 
| 15 |  *    documentation and/or other materials provided with the distribution. | 
| 16 |  * 3. The name of the author may not be used to endorse or promote | 
| 17 |  *    products derived from this software without specific prior | 
| 18 |  *    written permission. | 
| 19 |  * | 
| 20 |  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | 
| 21 |  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 
| 22 |  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF | 
| 23 |  * WHICH ARE HEREBY DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE | 
| 24 |  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 
| 25 |  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT | 
| 26 |  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR | 
| 27 |  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | 
| 28 |  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
| 29 |  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE | 
| 30 |  * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH | 
| 31 |  * DAMAGE. | 
| 32 |  * %End-Header% | 
| 33 |  */ | 
| 34 |  | 
| 35 | #ifndef _UUID_UUID_H | 
| 36 | #define _UUID_UUID_H | 
| 37 |  | 
| 38 | #include <sys/types.h> | 
| 39 | #ifndef _WIN32 | 
| 40 | #include <sys/time.h> | 
| 41 | #endif | 
| 42 | #include <time.h> | 
| 43 |  | 
| 44 | typedef unsigned char uuid_t[16]; | 
| 45 |  | 
| 46 | /* UUID Variant definitions */ | 
| 47 | #define UUID_VARIANT_NCS	0 | 
| 48 | #define UUID_VARIANT_DCE	1 | 
| 49 | #define UUID_VARIANT_MICROSOFT	2 | 
| 50 | #define UUID_VARIANT_OTHER	3 | 
| 51 |  | 
| 52 | /* UUID Type definitions */ | 
| 53 | #define UUID_TYPE_DCE_TIME   1 | 
| 54 | #define UUID_TYPE_DCE_RANDOM 4 | 
| 55 |  | 
| 56 | /* Allow UUID constants to be defined */ | 
| 57 | #ifdef __GNUC__ | 
| 58 | #define UUID_DEFINE(name,u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15) \ | 
| 59 | 	static const uuid_t name __attribute__ ((unused)) = {u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15} | 
| 60 | #else | 
| 61 | #define UUID_DEFINE(name,u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15) \ | 
| 62 | 	static const uuid_t name = {u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15} | 
| 63 | #endif | 
| 64 |  | 
| 65 | #ifdef __cplusplus | 
| 66 | extern "C"  { | 
| 67 | #endif | 
| 68 |  | 
| 69 | /* clear.c */ | 
| 70 | void uuid_clear(uuid_t uu); | 
| 71 |  | 
| 72 | /* compare.c */ | 
| 73 | int uuid_compare(const uuid_t uu1, const uuid_t uu2); | 
| 74 |  | 
| 75 | /* copy.c */ | 
| 76 | void uuid_copy(uuid_t dst, const uuid_t src); | 
| 77 |  | 
| 78 | /* gen_uuid.c */ | 
| 79 | void uuid_generate(uuid_t out); | 
| 80 | void uuid_generate_random(uuid_t out); | 
| 81 | void uuid_generate_time(uuid_t out); | 
| 82 | int uuid_generate_time_safe(uuid_t out); | 
| 83 |  | 
| 84 | /* isnull.c */ | 
| 85 | int uuid_is_null(const uuid_t uu); | 
| 86 |  | 
| 87 | /* parse.c */ | 
| 88 | int uuid_parse(const char *in, uuid_t uu); | 
| 89 |  | 
| 90 | /* unparse.c */ | 
| 91 | void uuid_unparse(const uuid_t uu, char *out); | 
| 92 | void uuid_unparse_lower(const uuid_t uu, char *out); | 
| 93 | void uuid_unparse_upper(const uuid_t uu, char *out); | 
| 94 |  | 
| 95 | /* uuid_time.c */ | 
| 96 | time_t uuid_time(const uuid_t uu, struct timeval *ret_tv); | 
| 97 | int uuid_type(const uuid_t uu); | 
| 98 | int uuid_variant(const uuid_t uu); | 
| 99 |  | 
| 100 | #ifdef __cplusplus | 
| 101 | } | 
| 102 | #endif | 
| 103 |  | 
| 104 | #endif /* _UUID_UUID_H */ | 
| 105 |  |