blob: 7b24dd516e2734fbe66c36fce51eb9af6ea8803b [file] [log] [blame]
Alexandre Lision67916dd2014-01-24 13:33:04 -05001/* $Id$ */
2/*
3 * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
4 * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20#ifndef __PJ_GUID_H__
21#define __PJ_GUID_H__
22
23
24/**
25 * @file guid.h
26 * @brief GUID Globally Unique Identifier.
27 */
28#include <pj/types.h>
29
30
31PJ_BEGIN_DECL
32
33
34/**
35 * @defgroup PJ_DS Data Structure.
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 between 32 and
52 * 36 bytes. Application should not assume which algorithm will
53 * be used by GUID generator.
54 *
55 * Regardless of the actual length of the GUID, it will not exceed
56 * PJ_GUID_MAX_LENGTH characters.
57 *
58 * @see pj_GUID_STRING_LENGTH()
59 * @see PJ_GUID_MAX_LENGTH
60 */
61PJ_DECL_DATA(const unsigned) PJ_GUID_STRING_LENGTH;
62
63/**
64 * Get #PJ_GUID_STRING_LENGTH constant.
65 */
66PJ_DECL(unsigned) pj_GUID_STRING_LENGTH(void);
67
68/**
69 * PJ_GUID_MAX_LENGTH specifies the maximum length of GUID string,
70 * regardless of which algorithm to use.
71 */
72#define PJ_GUID_MAX_LENGTH 36
73
74/**
75 * Create a globally unique string, which length is PJ_GUID_STRING_LENGTH
76 * characters. Caller is responsible for preallocating the storage used
77 * in the string.
78 *
79 * @param str The string to store the result.
80 *
81 * @return The string.
82 */
83PJ_DECL(pj_str_t*) pj_generate_unique_string(pj_str_t *str);
84
85/**
86 * Create a globally unique string in lowercase, which length is
87 * PJ_GUID_STRING_LENGTH characters. Caller is responsible for preallocating
88 * the storage used in the string.
89 *
90 * @param str The string to store the result.
91 *
92 * @return The string.
93 */
94PJ_DECL(pj_str_t*) pj_generate_unique_string_lower(pj_str_t *str);
95
96/**
97 * Generate a unique string.
98 *
99 * @param pool Pool to allocate memory from.
100 * @param str The string.
101 */
102PJ_DECL(void) pj_create_unique_string(pj_pool_t *pool, pj_str_t *str);
103
104/**
105 * Generate a unique string in lowercase.
106 *
107 * @param pool Pool to allocate memory from.
108 * @param str The string.
109 */
110PJ_DECL(void) pj_create_unique_string_lower(pj_pool_t *pool, pj_str_t *str);
111
112
113/**
114 * @}
115 */
116
117PJ_END_DECL
118
119#endif/* __PJ_GUID_H__ */
120