#ifndef GOOGLE_PROTOBUF_REPEATED_FIELD_H__
#define GOOGLE_PROTOBUF_REPEATED_FIELD_H__
#include <algorithm>
#include <iterator>
#include <limits>
#include <string>
#include <type_traits>
#include <utility>
#include <google/protobuf/stubs/logging.h>
#include <google/protobuf/stubs/common.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/port.h>
#include <google/protobuf/message_lite.h>
#include <google/protobuf/repeated_ptr_field.h>
#include <google/protobuf/port_def.inc>
#ifdef SWIG
#error "You cannot SWIG proto headers"
#endif
namespace google {
namespace protobuf {
class Message;
internal
template <typename Element>
class RepeatedField final { … };
namespace internal {
template <typename Element,
bool HasTrivialCopy = std::is_trivial<Element>::value>
struct ElementCopier { … };
}
template <typename Element>
constexpr RepeatedField<Element>::RepeatedField()
: … { … }
template <typename Element>
inline RepeatedField<Element>::RepeatedField(Arena* arena)
: … { … }
template <typename Element>
inline RepeatedField<Element>::RepeatedField(const RepeatedField& other)
: … { … }
template <typename Element>
template <typename Iter, typename>
RepeatedField<Element>::RepeatedField(Iter begin, Iter end)
: current_size_(0), total_size_(0), arena_or_elements_(nullptr) { … }
template <typename Element>
RepeatedField<Element>::~RepeatedField() { … }
template <typename Element>
inline RepeatedField<Element>& RepeatedField<Element>::operator=(
const RepeatedField& other) { … }
template <typename Element>
inline RepeatedField<Element>::RepeatedField(RepeatedField&& other) noexcept
: … { … }
template <typename Element>
inline RepeatedField<Element>& RepeatedField<Element>::operator=(
RepeatedField&& other) noexcept { … }
template <typename Element>
inline bool RepeatedField<Element>::empty() const { … }
template <typename Element>
inline int RepeatedField<Element>::size() const { … }
template <typename Element>
inline int RepeatedField<Element>::Capacity() const { … }
template <typename Element>
inline void RepeatedField<Element>::AddAlreadyReserved(const Element& value) { … }
template <typename Element>
inline Element* RepeatedField<Element>::AddAlreadyReserved() { … }
template <typename Element>
inline Element* RepeatedField<Element>::AddNAlreadyReserved(int elements) { … }
template <typename Element>
inline void RepeatedField<Element>::Resize(int new_size, const Element& value) { … }
template <typename Element>
inline const Element& RepeatedField<Element>::Get(int index) const { … }
template <typename Element>
inline const Element& RepeatedField<Element>::at(int index) const { … }
template <typename Element>
inline Element& RepeatedField<Element>::at(int index) { … }
template <typename Element>
inline Element* RepeatedField<Element>::Mutable(int index) { … }
template <typename Element>
inline void RepeatedField<Element>::Set(int index, const Element& value) { … }
template <typename Element>
inline void RepeatedField<Element>::Add(const Element& value) { … }
template <typename Element>
inline Element* RepeatedField<Element>::Add() { … }
template <typename Element>
template <typename Iter>
inline void RepeatedField<Element>::Add(Iter begin, Iter end) { … }
template <typename Element>
inline void RepeatedField<Element>::RemoveLast() { … }
template <typename Element>
void RepeatedField<Element>::ExtractSubrange(int start, int num,
Element* elements) { … }
template <typename Element>
inline void RepeatedField<Element>::Clear() { … }
template <typename Element>
inline void RepeatedField<Element>::MergeFrom(const RepeatedField& other) { … }
template <typename Element>
inline void RepeatedField<Element>::CopyFrom(const RepeatedField& other) { … }
template <typename Element>
template <typename Iter>
inline void RepeatedField<Element>::Assign(Iter begin, Iter end) { … }
template <typename Element>
inline typename RepeatedField<Element>::iterator RepeatedField<Element>::erase(
const_iterator position) { … }
template <typename Element>
inline typename RepeatedField<Element>::iterator RepeatedField<Element>::erase(
const_iterator first, const_iterator last) { … }
template <typename Element>
inline Element* RepeatedField<Element>::mutable_data() { … }
template <typename Element>
inline const Element* RepeatedField<Element>::data() const { … }
template <typename Element>
inline void RepeatedField<Element>::InternalSwap(RepeatedField* other) { … }
template <typename Element>
void RepeatedField<Element>::Swap(RepeatedField* other) { … }
template <typename Element>
void RepeatedField<Element>::UnsafeArenaSwap(RepeatedField* other) { … }
template <typename Element>
void RepeatedField<Element>::SwapElements(int index1, int index2) { … }
template <typename Element>
inline typename RepeatedField<Element>::iterator
RepeatedField<Element>::begin() { … }
template <typename Element>
inline typename RepeatedField<Element>::const_iterator
RepeatedField<Element>::begin() const { … }
template <typename Element>
inline typename RepeatedField<Element>::const_iterator
RepeatedField<Element>::cbegin() const { … }
template <typename Element>
inline typename RepeatedField<Element>::iterator RepeatedField<Element>::end() { … }
template <typename Element>
inline typename RepeatedField<Element>::const_iterator
RepeatedField<Element>::end() const { … }
template <typename Element>
inline typename RepeatedField<Element>::const_iterator
RepeatedField<Element>::cend() const { … }
template <typename Element>
inline size_t RepeatedField<Element>::SpaceUsedExcludingSelfLong() const { … }
namespace internal {
template <typename T, int kRepHeaderSize>
inline int CalculateReserveSize(int total_size, int new_size) { … }
}
template <typename Element>
void RepeatedField<Element>::Reserve(int new_size) { … }
template <typename Element>
inline void RepeatedField<Element>::Truncate(int new_size) { … }
template <typename Element>
inline void RepeatedField<Element>::MoveArray(Element* to, Element* from,
int array_size) { … }
template <typename Element>
inline void RepeatedField<Element>::CopyArray(Element* to, const Element* from,
int array_size) { … }
namespace internal {
template <typename Element, bool HasTrivialCopy>
void ElementCopier<Element, HasTrivialCopy>::operator()(Element* to,
const Element* from,
int array_size) { … }
ElementCopier<Element, true>;
}
namespace internal {
template <typename Element>
class RepeatedIterator { … };
template <typename T>
class RepeatedFieldBackInsertIterator { … };
}
template <typename T>
internal::RepeatedFieldBackInsertIterator<T> RepeatedFieldBackInserter(
RepeatedField<T>* const mutable_field) { … }
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<bool>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<int32_t>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<uint32_t>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<int64_t>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<uint64_t>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<float>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<double>;
namespace internal {
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedIterator<bool>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE
RepeatedIterator<int32_t>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE
RepeatedIterator<uint32_t>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE
RepeatedIterator<int64_t>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE
RepeatedIterator<uint64_t>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedIterator<float>;
extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedIterator<double>;
}
}
}
#include <google/protobuf/port_undef.inc>
#endif