blob: cb34d97383b76842f14c0d019a83d151044248da [file] [log] [blame]
Benny Prijono9033e312005-11-21 02:08:39 +00001/* $Id */
2/*
Benny Prijonoa771a512007-02-19 01:13:53 +00003 * Copyright (C)2003-2007 Benny Prijono <benny@prijono.org>
Benny Prijono9033e312005-11-21 02:08:39 +00004 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19#ifndef __PJ_GUID_H__
20#define __PJ_GUID_H__
21
22
23/**
24 * @file guid.h
25 * @brief GUID Globally Unique Identifier.
26 */
27#include <pj/types.h>
28
29
30PJ_BEGIN_DECL
31
32
33/**
34 * @defgroup PJ_DS Data Structure.
35 * @ingroup PJ
36 */
37/**
38 * @defgroup PJ_GUID Globally Unique Identifier
39 * @ingroup PJ_DS
40 * @{
41 *
42 * This module provides API to create string that is globally unique.
43 * If application doesn't require that strong requirement, it can just
44 * use #pj_create_random_string() instead.
45 */
46
47
48/**
49 * PJ_GUID_STRING_LENGTH specifies length of GUID string. The value is
50 * dependent on the algorithm used internally to generate the GUID string.
51 * If real GUID generator is used, then the length will be 128bit or
52 * 32 bytes. If shadow GUID generator is used, then the length
53 * will be 20 bytes. Application should not assume which algorithm will
54 * be used by GUID generator.
55 */
56extern const unsigned PJ_GUID_STRING_LENGTH;
57
58/**
59 * PJ_GUID_MAX_LENGTH specifies the maximum length of GUID string,
60 * regardless of which algorithm to use.
61 */
62#define PJ_GUID_MAX_LENGTH 32
63
64/**
65 * Create a globally unique string, which length is PJ_GUID_STRING_LENGTH
66 * characters. Caller is responsible for preallocating the storage used
67 * in the string.
68 *
69 * @param str The string to store the result.
70 *
71 * @return The string.
72 */
73PJ_DECL(pj_str_t*) pj_generate_unique_string(pj_str_t *str);
74
75/**
76 * Generate a unique string.
77 *
78 * @param pool Pool to allocate memory from.
79 * @param str The string.
80 */
81PJ_DECL(void) pj_create_unique_string(pj_pool_t *pool, pj_str_t *str);
82
83
84/**
85 * @}
86 */
87
88PJ_END_DECL
89
90#endif/* __PJ_GUID_H__ */
91