| OLD | NEW | 
|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium 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 #ifndef CHROME_INSTALLER_MINI_INSTALLER_MINI_STRING_H_ | 5 #ifndef CHROME_INSTALLER_MINI_INSTALLER_MINI_STRING_H_ | 
| 6 #define CHROME_INSTALLER_MINI_INSTALLER_MINI_STRING_H_ | 6 #define CHROME_INSTALLER_MINI_INSTALLER_MINI_STRING_H_ | 
| 7 | 7 | 
| 8 #ifndef COMPILE_ASSERT |  | 
| 9 // COMPILE_ASSERT macro borrowed from basictypes.h |  | 
| 10 template <bool> |  | 
| 11 struct CompileAssert {}; |  | 
| 12 #define COMPILE_ASSERT(expr, msg) \ |  | 
| 13     typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] |  | 
| 14 #endif |  | 
| 15 | 8 | 
| 16 namespace mini_installer { | 9 namespace mini_installer { | 
| 17 | 10 | 
| 18 // NOTE: Do not assume that these string functions support UTF encoding. | 11 // NOTE: Do not assume that these string functions support UTF encoding. | 
| 19 // This is fine for the purposes of the mini_installer, but you have | 12 // This is fine for the purposes of the mini_installer, but you have | 
| 20 // been warned! | 13 // been warned! | 
| 21 | 14 | 
| 22 // Formats a sequence of |bytes| as hex.  The |str| buffer must have room for | 15 // Formats a sequence of |bytes| as hex.  The |str| buffer must have room for | 
| 23 // at least 2*|size| + 1. | 16 // at least 2*|size| + 1. | 
| 24 bool HexEncode(const void* bytes, size_t size, wchar_t* str, size_t str_size); | 17 bool HexEncode(const void* bytes, size_t size, wchar_t* str, size_t str_size); | 
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 65 // terminator. | 58 // terminator. | 
| 66 wchar_t* GetNameFromPathExt(wchar_t* path, size_t size); | 59 wchar_t* GetNameFromPathExt(wchar_t* path, size_t size); | 
| 67 | 60 | 
| 68 // A string class that manages a fixed size buffer on the stack. | 61 // A string class that manages a fixed size buffer on the stack. | 
| 69 // The methods in the class are based on the above string methods and the | 62 // The methods in the class are based on the above string methods and the | 
| 70 // class additionally is careful about proper buffer termination. | 63 // class additionally is careful about proper buffer termination. | 
| 71 template <size_t kCapacity> | 64 template <size_t kCapacity> | 
| 72 class StackString { | 65 class StackString { | 
| 73  public: | 66  public: | 
| 74   StackString() { | 67   StackString() { | 
| 75     COMPILE_ASSERT(kCapacity != 0, invalid_buffer_size); | 68     static_assert(kCapacity != 0, "invalid buffer size"); | 
| 76     buffer_[kCapacity] = L'\0';  // We always reserve 1 more than asked for. | 69     buffer_[kCapacity] = L'\0';  // We always reserve 1 more than asked for. | 
| 77     clear(); | 70     clear(); | 
| 78   } | 71   } | 
| 79 | 72 | 
| 80   // We do not expose a constructor that accepts a string pointer on purpose. | 73   // We do not expose a constructor that accepts a string pointer on purpose. | 
| 81   // We expect the caller to call assign() and handle failures. | 74   // We expect the caller to call assign() and handle failures. | 
| 82 | 75 | 
| 83   // Returns the number of reserved characters in this buffer, _including_ | 76   // Returns the number of reserved characters in this buffer, _including_ | 
| 84   // the reserved char for the terminator. | 77   // the reserved char for the terminator. | 
| 85   size_t capacity() const { | 78   size_t capacity() const { | 
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 137   wchar_t buffer_[kCapacity + 1]; | 130   wchar_t buffer_[kCapacity + 1]; | 
| 138 | 131 | 
| 139  private: | 132  private: | 
| 140   StackString(const StackString&); | 133   StackString(const StackString&); | 
| 141   StackString& operator=(const StackString&); | 134   StackString& operator=(const StackString&); | 
| 142 }; | 135 }; | 
| 143 | 136 | 
| 144 }  // namespace mini_installer | 137 }  // namespace mini_installer | 
| 145 | 138 | 
| 146 #endif  // CHROME_INSTALLER_MINI_INSTALLER_MINI_STRING_H_ | 139 #endif  // CHROME_INSTALLER_MINI_INSTALLER_MINI_STRING_H_ | 
| OLD | NEW | 
|---|