| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |  | 
| 2 // |  | 
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); |  | 
| 4 // you may not use this file except in compliance with the License. |  | 
| 5 // You may obtain a copy of the License at |  | 
| 6 // |  | 
| 7 //     http://www.apache.org/licenses/LICENSE-2.0 |  | 
| 8 // |  | 
| 9 // Unless required by applicable law or agreed to in writing, software |  | 
| 10 // distributed under the License is distributed on an "AS IS" BASIS, |  | 
| 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |  | 
| 12 // See the License for the specific language governing permissions and |  | 
| 13 // limitations under the License. |  | 
| 14 |  | 
| 15 #ifndef CRASHPAD_UTIL_FILE_STRING_FILE_WRITER_H_ |  | 
| 16 #define CRASHPAD_UTIL_FILE_STRING_FILE_WRITER_H_ |  | 
| 17 |  | 
| 18 #include <sys/types.h> |  | 
| 19 |  | 
| 20 #include <string> |  | 
| 21 |  | 
| 22 #include "base/basictypes.h" |  | 
| 23 #include "base/numerics/safe_math.h" |  | 
| 24 #include "util/file/file_writer.h" |  | 
| 25 |  | 
| 26 namespace crashpad { |  | 
| 27 |  | 
| 28 //! \brief A file writer backed by a virtual file, as opposed to a file on disk |  | 
| 29 //!     or other operating system file descriptor-based file. |  | 
| 30 //! |  | 
| 31 //! The virtual file is a buffer in memory. This class is convenient for use |  | 
| 32 //! with other code that normally expects to write files, when it is impractical |  | 
| 33 //! or inconvenient to write a file. It is expected that tests, in particular, |  | 
| 34 //! will benefit from using this class. |  | 
| 35 class StringFileWriter : public FileWriterInterface { |  | 
| 36  public: |  | 
| 37   StringFileWriter(); |  | 
| 38   ~StringFileWriter(); |  | 
| 39 |  | 
| 40   //! \brief Returns a string containing the virtual file’s contents. |  | 
| 41   const std::string& string() const { return string_; } |  | 
| 42 |  | 
| 43   //! \brief Resets the virtual file’s contents to be empty, and resets its file |  | 
| 44   //!     position to `0`. |  | 
| 45   void Reset(); |  | 
| 46 |  | 
| 47   // FileWriterInterface: |  | 
| 48   bool Write(const void* data, size_t size) override; |  | 
| 49   bool WriteIoVec(std::vector<WritableIoVec>* iovecs) override; |  | 
| 50   FileOffset Seek(FileOffset offset, int whence) override; |  | 
| 51 |  | 
| 52  private: |  | 
| 53   //! \brief The virtual file’s contents. |  | 
| 54   std::string string_; |  | 
| 55 |  | 
| 56   //! \brief The file offset of the virtual file. |  | 
| 57   //! |  | 
| 58   //! \note This is stored in a `size_t` to match the characteristics of |  | 
| 59   //!     #string_, the `std::string` used to store the virtual file’s contents. |  | 
| 60   //!     This type will have different characteristics than the `off_t` used to |  | 
| 61   //!     report file offsets. The implementation must take care when converting |  | 
| 62   //!     between these distinct types. |  | 
| 63   base::CheckedNumeric<size_t> offset_; |  | 
| 64 |  | 
| 65   DISALLOW_COPY_AND_ASSIGN(StringFileWriter); |  | 
| 66 }; |  | 
| 67 |  | 
| 68 }  // namespace crashpad |  | 
| 69 |  | 
| 70 #endif  // CRASHPAD_UTIL_FILE_STRING_FILE_WRITER_H_ |  | 
| OLD | NEW | 
|---|