msg
1.12.11devel
Loading...
Searching...
No Matches
libsofia-sip-ua
msg
sofia-sip
msg_mclass_hash.h
Go to the documentation of this file.
1
/*
2
* This file is part of the Sofia-SIP package
3
*
4
* Copyright (C) 2005 Nokia Corporation.
5
*
6
* Contact: Pekka Pessi <pekka.pessi@nokia-email.address.hidden>
7
*
8
* This library is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU Lesser General Public License
10
* as published by the Free Software Foundation; either version 2.1 of
11
* the License, or (at your option) any later version.
12
*
13
* This library is distributed in the hope that it will be useful, but
14
* WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
* Lesser General Public License for more details.
17
*
18
* You should have received a copy of the GNU Lesser General Public
19
* License along with this library; if not, write to the Free Software
20
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21
* 02110-1301 USA
22
*
23
*/
24
25
#ifndef MSG_MCLASS_HASH_H
27
#define MSG_MCLASS_HASH_H
28
40
#include <
sofia-sip/su_config.h
>
41
42
#ifndef BNF_H
43
#include <sofia-sip/bnf.h>
44
#endif
45
46
SOFIA_BEGIN_DECLS
47
49
#define MC_HASH(s, n) (msg_header_name_hash(s, NULL) % (unsigned)(n))
50
52
su_inline
53
unsigned
short
msg_header_name_hash
(
char
const
*s, isize_t *llen)
54
{
55
unsigned
short
hash = 0;
56
size_t
i;
57
58
for
(i = 0; s[i]; i++) {
59
unsigned
char
c = s[i];
60
if
(!(_bnf_table[c] & bnf_token))
61
break
;
62
if
(c >=
'A'
&& c <=
'Z'
)
63
hash += (c +
'a'
-
'A'
);
64
else
65
hash += c;
66
hash *= 38501U;
67
}
68
69
if
(llen)
70
*llen = i;
71
72
return
hash;
73
}
74
75
SOFIA_END_DECLS
76
77
#endif
msg_header_name_hash
unsigned short msg_header_name_hash(char const *s, isize_t *llen)
Hash header name.
Definition
msg_mclass_hash.h:53
su_config.h
su_inline
#define su_inline
Sofia-SIP 1.12.11devel - Copyright (C) 2006 Nokia Corporation. All rights reserved. Licensed under the terms of the GNU Lesser General Public License.