1#ifndef __TMBSTR_H__
2#define __TMBSTR_H__
3
4/* tmbstr.h - Tidy string utility functions
5
6  (c) 1998-2006 (W3C) MIT, ERCIM, Keio University
7  See tidy.h for the copyright notice.
8
9  CVS Info :
10
11    $Author: iccir $
12    $Date: 2007/01/30 23:46:52 $
13    $Revision: 1.3 $
14
15*/
16
17#include "platform.h"
18
19#ifdef __cplusplus
20extern "C"
21{
22#endif
23
24/* like strdup but using MemAlloc */
25tmbstr TY_(tmbstrdup)( ctmbstr str );
26
27/* like strndup but using MemAlloc */
28tmbstr TY_(tmbstrndup)( ctmbstr str, uint len);
29
30/* exactly same as strncpy */
31uint TY_(tmbstrncpy)( tmbstr s1, ctmbstr s2, uint size );
32
33uint TY_(tmbstrcpy)( tmbstr s1, ctmbstr s2 );
34
35uint TY_(tmbstrcat)( tmbstr s1, ctmbstr s2 );
36
37/* exactly same as strcmp */
38int TY_(tmbstrcmp)( ctmbstr s1, ctmbstr s2 );
39
40/* returns byte count, not char count */
41uint TY_(tmbstrlen)( ctmbstr str );
42
43/*
44  MS C 4.2 doesn't include strcasecmp.
45  Note that tolower and toupper won't
46  work on chars > 127.
47
48  Neither do Lexer.ToLower() or Lexer.ToUpper()!
49
50  We get away with this because, except for XML tags,
51  we are always comparing to ascii element and
52  attribute names defined by HTML specs.
53*/
54int TY_(tmbstrcasecmp)( ctmbstr s1, ctmbstr s2 );
55
56int TY_(tmbstrncmp)( ctmbstr s1, ctmbstr s2, uint n );
57
58int TY_(tmbstrncasecmp)( ctmbstr s1, ctmbstr s2, uint n );
59
60/* return offset of cc from beginning of s1,
61** -1 if not found.
62*/
63/* int TY_(tmbstrnchr)( ctmbstr s1, uint len1, tmbchar cc ); */
64
65ctmbstr TY_(tmbsubstrn)( ctmbstr s1, uint len1, ctmbstr s2 );
66/* ctmbstr TY_(tmbsubstrncase)( ctmbstr s1, uint len1, ctmbstr s2 ); */
67ctmbstr TY_(tmbsubstr)( ctmbstr s1, ctmbstr s2 );
68
69/* transform string to lower case */
70tmbstr TY_(tmbstrtolower)( tmbstr s );
71
72/* Transform ASCII chars in string to upper case */
73tmbstr TY_(tmbstrtoupper)( tmbstr s );
74
75/* Bool TY_(tmbsamefile)( ctmbstr filename1, ctmbstr filename2 ); */
76
77int TY_(tmbvsnprintf)(tmbstr buffer, size_t count, ctmbstr format, va_list args)
78#ifdef __GNUC__
79__attribute__((format(printf, 3, 0)))
80#endif
81;
82int TY_(tmbsnprintf)(tmbstr buffer, size_t count, ctmbstr format, ...)
83#ifdef __GNUC__
84__attribute__((format(printf, 3, 4)))
85#endif
86;
87
88#ifdef __cplusplus
89}  /* extern "C" */
90#endif
91
92#endif /* __TMBSTR_H__ */
93