// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifdef UNSAFE_BUFFERS_BUILD // TODO(crbug.com/40284755): Remove this and spanify to fix the errors. #pragma allow_unsafe_buffers #endif #ifndef BASE_PICKLE_H_ #define BASE_PICKLE_H_ #include <stddef.h> #include <stdint.h> #include <optional> #include <string> #include <string_view> #include "base/base_export.h" #include "base/check_op.h" #include "base/containers/span.h" #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr_exclusion.h" #include "base/memory/ref_counted.h" namespace base { class Pickle; // PickleIterator reads data from a Pickle. The Pickle object must remain valid // while the PickleIterator object is in use. class BASE_EXPORT PickleIterator { … }; // This class provides facilities for basic binary value packing and unpacking. // // The Pickle class supports appending primitive values (ints, strings, etc.) // to a pickle instance. The Pickle instance grows its internal memory buffer // dynamically to hold the sequence of primitive values. The internal memory // buffer is exposed as the "data" of the Pickle. This "data" can be passed // to a Pickle object to initialize it for reading. // // When reading from a Pickle object, it is important for the consumer to know // what value types to read and in what order to read them as the Pickle does // not keep track of the type of data written to it. // // The Pickle's data has a header which contains the size of the Pickle's // payload. It can optionally support additional space in the header. That // space is controlled by the header_size parameter passed to the Pickle // constructor. // class BASE_EXPORT Pickle { … }; } // namespace base #endif // BASE_PICKLE_H_