0030692: Data Exchange - introduce base framework RWMesh for importing mesh data...
[occt.git] / src / TCollection / TCollection_AsciiString.lxx
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 #include <Standard_OutOfRange.hxx>
16 #include <Standard_CString.hxx>
17
18 // definition global methods for using in NCollection
19
20 //! Computes a hash code for the given ASCII string, in the range [1, theUpperBound]
21 //! @param theAsciiString the ASCII string which hash code is to be computed
22 //! @param theUpperBound the upper bound of the range a computing hash code must be within
23 //! @return a computed hash code, in the range [1, theUpperBound]
24 inline Standard_Integer HashCode (const TCollection_AsciiString& theAsciiString, const Standard_Integer theUpperBound)
25 {
26   return TCollection_AsciiString::HashCode (theAsciiString, theUpperBound);
27 }
28
29
30 //------------------------------------------------------------------------
31 //  IsEqual
32 //------------------------------------------------------------------------
33 inline Standard_Boolean IsEqual(const TCollection_AsciiString& string1,
34                                                   const TCollection_AsciiString& string2)
35 {
36   return TCollection_AsciiString::IsEqual(string1,string2);
37 }
38
39
40
41 // ----------------------------------------------------------------------------
42 // ToCString
43 // ----------------------------------------------------------------------------
44 inline Standard_CString TCollection_AsciiString::ToCString()const
45 {
46   return mystring;
47 }
48
49 // ----------------------------------------------------------------------------
50 inline Standard_Integer TCollection_AsciiString::Length() const
51 {
52  return mylength;
53 }
54
55 inline TCollection_AsciiString TCollection_AsciiString::Cat(const TCollection_AsciiString& other) const
56 {
57   return TCollection_AsciiString( *this , other ) ;
58 }
59
60 inline TCollection_AsciiString TCollection_AsciiString::Cat(const Standard_CString other) const 
61 {
62  return TCollection_AsciiString( *this , other ) ;
63 }
64
65 inline TCollection_AsciiString TCollection_AsciiString::Cat(const Standard_Character other) const 
66 {
67  return TCollection_AsciiString( *this , other ) ;
68 }
69
70 inline TCollection_AsciiString TCollection_AsciiString::Cat(const Standard_Integer other) const 
71 {
72
73  return TCollection_AsciiString( *this , TCollection_AsciiString(other) ) ;
74 }
75
76 inline TCollection_AsciiString TCollection_AsciiString::Cat(const Standard_Real other) const 
77 {
78
79  return TCollection_AsciiString( *this , TCollection_AsciiString(other) ) ;
80 }
81
82 //============================================================================
83 // function : HashCode
84 // purpose  :
85 //============================================================================
86 inline Standard_Integer TCollection_AsciiString::HashCode (const TCollection_AsciiString& theAsciiString,
87                                                            const Standard_Integer         theUpperBound)
88 {
89   return ::HashCode (theAsciiString.ToCString(), theAsciiString.Length(), theUpperBound);
90 }
91
92
93 //------------------------------------------------------------------------
94 //  IsEqual
95 //------------------------------------------------------------------------
96 inline Standard_Boolean TCollection_AsciiString::IsEqual(const TCollection_AsciiString& string1,
97                                                   const TCollection_AsciiString& string2)
98 {
99   return string1.IsEqual(string2);
100 }
101
102 //------------------------------------------------------------------------
103 //  IsEqual
104 //------------------------------------------------------------------------
105 inline Standard_Boolean TCollection_AsciiString::IsEqual(const TCollection_AsciiString& string1,
106                                                   const Standard_CString string2)
107 {
108   return string1.IsEqual( string2 );
109 }
110
111 // ----------------------------------------------------------------------------
112 // SubString
113 // ----------------------------------------------------------------------------
114 inline TCollection_AsciiString TCollection_AsciiString::SubString(const Standard_Integer FromIndex,
115                                                            const Standard_Integer ToIndex) const
116 {
117   // note the we are doing here weird casts just to suppress annoying and meaningless warning -Wstrict-overflow
118   Standard_OutOfRange_Always_Raise_if(FromIndex <= 0 || ToIndex <= 0 || (unsigned int)ToIndex > (unsigned int)mylength || (unsigned int)FromIndex > (unsigned int)ToIndex,
119                                       "TCollection_AsciiString::SubString() out of range");
120   return TCollection_AsciiString( &mystring [ FromIndex - 1 ] ,
121                                   ToIndex - FromIndex + 1 ) ;
122 }