798e346296e6d6e9fbbe8791f5ed9b93d58b7e5d
[occt.git] / src / Standard / Standard_CString.hxx
1 // Copyright (c) 1998-1999 Matra Datavision
2 // Copyright (c) 1999-2014 OPEN CASCADE SAS
3 //
4 // This file is part of Open CASCADE Technology software library.
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License version 2.1 as published
8 // by the Free Software Foundation, with special exception defined in the file
9 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 // distribution for complete text of the license and disclaimer of any warranty.
11 //
12 // Alternatively, this file may be used under the terms of Open CASCADE
13 // commercial license or contractual agreement.
14
15 //!@file Functions working with plain C strings
16
17 #ifndef _Standard_CString_HeaderFile
18 # define _Standard_CString_HeaderFile
19
20 #include <Standard_Macro.hxx>
21
22 # include <string.h>
23 # include <stdio.h>
24
25 # if defined(_MSC_VER) && ! defined(strcasecmp)
26 #  define strcasecmp _stricmp
27 # endif
28
29 // C++ only definitions
30 #ifdef __cplusplus
31
32 #include <Standard_Integer.hxx>
33
34 //! Returns bounded hash code for a null-terminated string, in range [1, theUpper]
35 __Standard_API Standard_Integer HashCode (const Standard_CString theStr, const Standard_Integer theUpper);
36
37 //! Returns 32-bit hash code for the first theLen characters in the string theStr 
38 __Standard_API Standard_Integer HashCodes (const Standard_CString theStr, const Standard_Integer theLen);
39
40 //! Returns bounded hash code for the first theLen characters in 
41 //! the string theStr, in range [1, theUpper]
42 inline Standard_Integer HashCode (const Standard_CString theStr,
43                                   const Standard_Integer theLen,
44                                   const Standard_Integer theUpper)
45 {
46 //  return (Abs( HashCodes( Value , Len ) ) % Upper ) + 1 ;
47   return HashCode (HashCodes (theStr, theLen), theUpper);
48 }
49
50 //! Returns Standard_True if two strings are equal
51 inline Standard_Boolean IsEqual (const Standard_CString theOne, const Standard_CString theTwo)
52 {
53   return strcmp (theOne, theTwo) == 0;
54 }
55
56 #endif /* __cplusplus */
57
58 #ifdef __cplusplus
59 extern "C" {
60 #endif /* __cplusplus */
61
62 //! Equivalent of standard C function atof() that always uses C locale
63 __Standard_API double Atof (const char* theStr);
64
65 //! Optimized equivalent of standard C function strtod() that always uses C locale
66 __Standard_API double Strtod (const char* theStr, char** theNextPtr);
67
68 //! Equivalent of standard C function printf() that always uses C locale
69 __Standard_API int Printf (const char* theFormat, ...);
70
71 //! Equivalent of standard C function fprintf() that always uses C locale
72 __Standard_API int Fprintf (FILE* theFile, const char* theFormat, ...);
73
74 //! Equivalent of standard C function sprintf() that always uses C locale
75 __Standard_API int Sprintf (char* theBuffer, const char* theFormat, ...);
76
77 #ifdef __cplusplus
78 }
79 #endif /* __cplusplus */
80
81 #endif