Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(359)

Side by Side Diff: core/include/fxcrt/fx_string.h

Issue 1090303003: Add missing operators for CFX_ByteStringC. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: use size_t Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #ifndef _FX_STRING_H_ 7 #ifndef _FX_STRING_H_
8 #define _FX_STRING_H_ 8 #define _FX_STRING_H_
9 9
10 #include <algorithm>
11
10 #include "fx_memory.h" 12 #include "fx_memory.h"
11 13
12 class CFX_ByteStringC; 14 class CFX_ByteStringC;
13 class CFX_ByteString; 15 class CFX_ByteString;
14 class CFX_WideStringC; 16 class CFX_WideStringC;
15 class CFX_WideString; 17 class CFX_WideString;
16 struct CFX_CharMap; 18 struct CFX_CharMap;
17 class CFX_BinaryBuf; 19 class CFX_BinaryBuf;
18 typedef int FX_STRSIZE; 20 typedef int FX_STRSIZE;
19 class CFX_ByteStringL; 21 class CFX_ByteStringL;
20 class CFX_WideStringL; 22 class CFX_WideStringL;
21 23
22 // An immutable string with caller-provided storage which must outlive the 24 // An immutable string with caller-provided storage which must outlive the
23 // string itself. 25 // string itself.
24 class CFX_ByteStringC 26 class CFX_ByteStringC
25 { 27 {
26 public: 28 public:
27 typedef FX_CHAR value_type; 29 typedef FX_CHAR value_type;
28 30
29 CFX_ByteStringC() 31 CFX_ByteStringC()
30 { 32 {
31 m_Ptr = NULL; 33 m_Ptr = NULL;
32 m_Length = 0; 34 m_Length = 0;
33 } 35 }
34 36
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 95
94 bool operator == (const CFX_ByteStringC& str) const 96 bool operator == (const CFX_ByteStringC& str) const
95 { 97 {
96 return str.m_Length == m_Length && FXSYS_memcmp32(str.m_Ptr, m_Ptr, m_L ength) == 0; 98 return str.m_Length == m_Length && FXSYS_memcmp32(str.m_Ptr, m_Ptr, m_L ength) == 0;
97 } 99 }
98 100
99 bool operator != (const CFX_ByteStringC& str) const 101 bool operator != (const CFX_ByteStringC& str) const
100 { 102 {
101 return str.m_Length != m_Length || FXSYS_memcmp32(str.m_Ptr, m_Ptr, m_L ength) != 0; 103 return str.m_Length != m_Length || FXSYS_memcmp32(str.m_Ptr, m_Ptr, m_L ength) != 0;
102 } 104 }
103 #define FXBSTR_ID(c1, c2, c3, c4) ((c1 << 24) | (c2 << 16) | (c3 << 8) | (c4))
104 105
105 FX_DWORD GetID(FX_STRSIZE start_pos = 0) const; 106 FX_DWORD GetID(FX_STRSIZE start_pos = 0) const;
106 107
107 FX_LPCBYTE GetPtr() const 108 FX_LPCBYTE GetPtr() const
108 { 109 {
109 return m_Ptr; 110 return m_Ptr;
110 } 111 }
111 112
112 FX_LPCSTR GetCStr() const 113 FX_LPCSTR GetCStr() const
113 { 114 {
114 return (FX_LPCSTR)m_Ptr; 115 return (FX_LPCSTR)m_Ptr;
115 } 116 }
116 117
117 FX_STRSIZE GetLength() const 118 FX_STRSIZE GetLength() const
118 { 119 {
119 return m_Length; 120 return m_Length;
120 } 121 }
121 122
122 bool IsEmpty() const 123 bool IsEmpty() const
123 { 124 {
124 return m_Length == 0; 125 return m_Length == 0;
125 } 126 }
126 127
127 operator FX_LPCBYTE() const
128 {
129 return m_Ptr;
130 }
131
132 FX_BYTE GetAt(FX_STRSIZE index) const 128 FX_BYTE GetAt(FX_STRSIZE index) const
133 { 129 {
134 return m_Ptr[index]; 130 return m_Ptr[index];
135 } 131 }
136 132
137 CFX_ByteStringC Mid(FX_STRSIZE index, FX_STRSIZE count = -1) const 133 CFX_ByteStringC Mid(FX_STRSIZE index, FX_STRSIZE count = -1) const
138 { 134 {
139 if (index < 0) { 135 if (index < 0) {
140 index = 0; 136 index = 0;
141 } 137 }
142 if (index > m_Length) { 138 if (index > m_Length) {
143 return CFX_ByteStringC(); 139 return CFX_ByteStringC();
144 } 140 }
145 if (count < 0 || count > m_Length - index) { 141 if (count < 0 || count > m_Length - index) {
146 count = m_Length - index; 142 count = m_Length - index;
147 } 143 }
148 return CFX_ByteStringC(m_Ptr + index, count); 144 return CFX_ByteStringC(m_Ptr + index, count);
149 } 145 }
146
147 const FX_BYTE& operator[] (size_t index) const
148 {
149 return m_Ptr[index];
150 }
151
152 bool operator< (const CFX_ByteStringC& that) const
153 {
154 int result = memcmp(m_Ptr, that.m_Ptr, std::min(m_Length, that.m_Length) );
155 return result < 0 || (result == 0 && m_Length < that.m_Length);
156 }
157
150 protected: 158 protected:
159 FX_LPCBYTE m_Ptr;
160 FX_STRSIZE m_Length;
151 161
152 FX_LPCBYTE m_Ptr;
153
154 FX_STRSIZE m_Length;
155 private: 162 private:
156
157 void* operator new (size_t) throw() 163 void* operator new (size_t) throw()
158 { 164 {
159 return NULL; 165 return NULL;
160 } 166 }
161 }; 167 };
162 typedef const CFX_ByteStringC& FX_BSTR; 168 typedef const CFX_ByteStringC& FX_BSTR;
163 #define FX_BSTRC(str) CFX_ByteStringC(str, sizeof str-1) 169 #define FX_BSTRC(str) CFX_ByteStringC(str, sizeof str-1)
170 #define FXBSTR_ID(c1, c2, c3, c4) ((c1 << 24) | (c2 << 16) | (c3 << 8) | (c4))
164 struct CFX_StringData { 171 struct CFX_StringData {
165 172
166 long m_nRefs; 173 long m_nRefs;
167 174
168 FX_STRSIZE m_nDataLength; 175 FX_STRSIZE m_nDataLength;
169 176
170 FX_STRSIZE m_nAllocLength; 177 FX_STRSIZE m_nAllocLength;
171 178
172 FX_CHAR m_String[1]; 179 FX_CHAR m_String[1];
173 }; 180 };
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 CFX_ByteString FX_UTF8Encode(FX_LPCWSTR pwsStr, FX_STRSIZE len); 818 CFX_ByteString FX_UTF8Encode(FX_LPCWSTR pwsStr, FX_STRSIZE len);
812 inline CFX_ByteString FX_UTF8Encode(FX_WSTR wsStr) 819 inline CFX_ByteString FX_UTF8Encode(FX_WSTR wsStr)
813 { 820 {
814 return FX_UTF8Encode(wsStr.GetPtr(), wsStr.GetLength()); 821 return FX_UTF8Encode(wsStr.GetPtr(), wsStr.GetLength());
815 } 822 }
816 inline CFX_ByteString FX_UTF8Encode(const CFX_WideString &wsStr) 823 inline CFX_ByteString FX_UTF8Encode(const CFX_WideString &wsStr)
817 { 824 {
818 return FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()); 825 return FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength());
819 } 826 }
820 #endif 827 #endif
OLDNEW
« no previous file with comments | « no previous file | core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698