NOT: Bu site kullanımdan kaldırılmıştır. Site 31 Ocak 2023'ten sonra kapatılacak ve trafik https://protobuf.dev adresindeki yeni siteye yönlendirilecek. Bu sırada, yalnızca protobuf.dev'de güncellemeler yapılacak.

yinelenen_alan.h

#include <google/protobuf/repeated_field.h>
namespace google::protobuf

TekrarlananAlan ve TekrarlananAlan, oluşturulan protokol mesajı sınıfları tarafından yinelenen alanları değiştirmek için kullanılır.

Bu sınıflar, STL'nin vektörüne çok benzer, ancak özellikle Protokol Arabellekleri söz konusu olduğunda yararlı olduğu tespit edilen çeşitli optimizasyonlar içerir. YinelenenedPtrField, içerdiği işaretçilerin sahipliğini yönettiği için özellikle STL vektöründen farklıdır.

Genellikle istemcilerin TekrarlananAlan nesnelerine doğrudan erişmesi gerekmez. Bunun yerine, protokol derleyici tarafından otomatik olarak oluşturulan erişimci işlevlerini kullanmalıdır.

Bu dosyadaki sınıflar

Yinelenen Alan, temel bir öğenin yinelenen alanlarını (yani dizeler ve iç içe yerleştirilmiş Mesajlar hariç her şeyi) temsil etmek için kullanılır.
TekrarlananPtrAlanı, TekrarlananAlan gibidir ancak yinelenen dizeler veya Mesajlar için kullanılır.

Dosya Üyeleri

Bu tanımlar herhangi bir sınıfın parçası değildir.
template internal::RepeatedFieldBackInsertIterator< T >
RepeatedFieldBackInserter(RepeatedField< T > *const mutable_field)
Std::back_inserter() işlevine benzer şekilde TekrarlananAlan örnekleri için bir geri ekleme yinelemesi sağlar.
template internal::RepeatedPtrFieldBackInsertIterator< T >
RepeatedPtrFieldBackInserter(RepeatedPtrField< T > *const mutable_field)
std::back_inserter() işlevine benzer şekilde TekrarlananPtrField örnekleri için bir geri ekleme yinelemesi sağlar.
template internal::RepeatedPtrFieldBackInsertIterator< T >
RepeatedFieldBackInserter(RepeatedPtrField< T > *const mutable_field)
Bir kişinin ortak bir ad kullanarak hem Tekrarlanan Alanlar'a hem de TekrarlıPtrFields'e erişebilen genel şablon kodunu yazmak istemesi ihtimaline karşı, TekrarlananPtrField örnekleri için özel geri ekleme yinelemesi.
template internal::AllocatedRepeatedPtrFieldBackInsertIterator< T >
AllocatedRepeatedPtrFieldBackInserter(RepeatedPtrField< T > *const mutable_field)
Öğeleri kopyalarken sahipliği aktaran std::back_inserter() işlevine benzer YinelenenedPtrField örnekleri için bir geri ekleme yinelemesi sağlar.
template internal::UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator< T >
UnsafeArenaAllocatedRepeatedPtrFieldBackInserter(RepeatedPtrField< T > *const mutable_field)
AllocationduplicateedPtrFieldBackInserter'a benzer şekilde, AddAllocation yerine UnsafeArenaAddAllocalized kullanılır. devamı...

template internal::UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator< T >
    protobuf::UnsafeArenaAllocatedRepeatedPtrFieldBackInserter(
        RepeatedPtrField< T > *const mutable_field)

AllocationduplicateedPtrFieldBackInserter'a benzer şekilde, AddAllocation yerine UnsafeArenaAddAllocalized kullanılır.

Bu işlem önemliyse biraz daha hızlıdır. Ayrıca, kopyalardan kaçınmak için geçici sahiplik kullanan eski kodda da kullanışlıdır. Örnek:

RepeatedPtrField<T> temp_field;
temp_field.AddAllocated(new T);
... // Do something with temp_field
temp_field.ExtractSubrange(0, temp_field.size(), nullptr);

Arenaya temp_field'ı eklerseniz bu işlem sahipliğin "AddAllocation" aramasında arenaya aktarılması ve artık serbest bırakılması nedeniyle iki kez silinir. UnsafeArenaAddAllocation'ı kullanmak bunu önler.

şablon sınıfı Yinelenen Alanı

#include <google/protobuf/repeated_field.h>
namespace google::protobuf

template <typename >

Yinelenen Alan, temel bir öğenin yinelenen alanlarını (yani dizeler ve iç içe yerleştirilmiş Mesajlar hariç her şeyi) temsil etmek için kullanılır.

Çoğu kullanıcı doğrudan Tekrarlanan Alan kullanmaz. Dizine göre alma, dizine ekleme ve tekrarlanan tüm alanlar için oluşturulan erişimcileri kullanır.

Üyeler

typedef
Element * iterator
STL benzeri iteratör desteği.
typedef
const Element * const_iterator
typedef
Element value_type
typedef
value_type & reference
typedef
const value_type & const_reference
typedef
value_type * pointer
typedef
const value_type * const_pointer
typedef
int size_type
typedef
ptrdiff_t difference_type
typedef
std::reverse_iterator< const_iterator > const_reverse_iterator
Yinelenen iter desteği.
typedef
std::reverse_iterator< iterator > reverse_iterator
constexpr
RepeatedField()
explicit
RepeatedField(Arena * arena)
RepeatedField(const RepeatedField & other)
template
RepeatedField(Iter begin, Iter end)
~RepeatedField()
RepeatedField &
operator=(const RepeatedField & other)
RepeatedField(RepeatedField && other)
RepeatedField &
operator=(RepeatedField && other)
bool
empty() const
int
size() const
const Element &
Get(int index) const
Element *
Mutable(int index)
const Element &
operator[](int index) const
Element &
operator[](int index)
const Element &
at(int index) const
Element &
at(int index)
void
Set(int index, const Element & value)
void
Add(const Element & value)
Element *
Add()
Yeni öğe ekler ve bu öğeye bir işaretçi döndürür. devamı...
template void
Add(Iter begin, Iter end)
Uygun sayıda öğe ayırttıktan sonra öğeleri [[]start, end) aralığına ekleyin.
void
RemoveLast()
Dizideki son öğeyi kaldırın.
void
ExtractSubrange(int start, int num, Element * elements)
"[[]start .. start+num-1]" dizinlerinde dizinleri içeren öğeleri çıkarın. devamı...
void
Clear()
void
MergeFrom(const RepeatedField & other)
void
CopyFrom(const RepeatedField & other)
template void
Assign(Iter begin, Iter end)
İçeriği Tekrarlanan Alan(başlangıç, bitiş) ile değiştirir.
void
Reserve(int new_size)
Alanı en azından belirtilen boyuta genişletmek için alan ayırın. devamı...
void
Truncate(int new_size)
TekrarlananAlan'ı yeni ve daha küçük bir boyuta yeniden boyutlandırın. Bu O(1)'dür.
void
AddAlreadyReserved(const Element & value)
Element *
AddAlreadyReserved()
Yeni öğe ekler ve bu öğeye bir işaretçi döndürür. devamı...
Element *
AddNAlreadyReserved(int elements)
int
Capacity() const
void
Resize(int new_size, const Element & value)
STL ile yeniden boyutlandırma gibi. devamı...
Element *
mutable_data()
Temel diziyi alır. devamı...
const Element *
data() const
void
Swap(RepeatedField * other)
İçeriğin tamamını "diğer" ile değiştirin. devamı...
void
UnsafeArenaSwap(RepeatedField * other)
İçeriğin tamamını "diğer" ile değiştirin. devamı...
void
SwapElements(int index1, int index2)
İki öğeyi değiştirin.
iterator
begin()
const_iterator
begin() const
const_iterator
cbegin() const
iterator
end()
const_iterator
end() const
const_iterator
cend() const
reverse_iterator
rbegin()
const_reverse_iterator
rbegin() const
reverse_iterator
rend()
const_reverse_iterator
rend() const
size_t
SpaceUsedExcludingSelfLong() const
Sizeof(*this) hariç, yinelenen alan tarafından kullanılan bayt sayısını döndürür
int
SpaceUsedExcludingSelf() const
iterator
erase(const_iterator position)
Konumun başvurduğu öğeyi kaldırır. devamı...
iterator
erase(const_iterator first, const_iterator last)
[[]İlk, son) aralıktaki öğeleri kaldırır. devamı...
Arena *
GetArena() const
Bu koyduğunuz alan, öğelerini depoladığı Arena'yı edinin.
void
InternalSwap(RepeatedField * other)
Yalnızca şirket içi kullanım içindir. devamı...
template
RepeatedField(Iter begin, Iter end)

Element * RepeatedField::Add()

Yeni öğe ekler ve bu öğeye bir işaretçi döndürür.

|Öğe| bir POD türüyse yeni öğe başlatılmamıştır.


void RepeatedField::ExtractSubrange(
        int start,
        int num,
        Element * elements)

"[[]start .. start+num-1]" dizinlerinde dizinleri içeren öğeleri çıkarın.

"Elements" NULL değilse "items[[]0 .. num-1]" içine kopyalayın. Dikkat: Uygulama öğeleri, dizinleri [[]start+num ..] olan öğeleri de taşır. Bir döngü içinde bu rutinin çağrılması ikinci dereceden davranışa neden olabilir.


void RepeatedField::Reserve(
        int new_size)

Alanı en azından belirtilen boyuta genişletmek için alan ayırın.

Reserve() satırını satır içi yapmaktan kaçının: Yeni, kopyala ve sil[[]] ciddi miktarda kod şişmesine neden olur.

Dizin büyütülürse her zaman en az iki katına çıkar.


Element * RepeatedField::AddAlreadyReserved()

Yeni öğe ekler ve bu öğeye bir işaretçi döndürür.

|Öğe| bir POD türüyse yeni öğe başlatılmamıştır. Yalnızca Capacity() > Size() işlevi çağrılmalıdır.


void RepeatedField::Resize(
        int new_size,
        const Element & value)

STL ile yeniden boyutlandırma gibi.

Eklenen öğeleri doldurmak için değer kullanır. new_size <= size() ise Truncate() gibi bir değer girin. Aksi takdirde O(new_size - size()) değerini girin.


Element * RepeatedField::mutable_data()

Temel diziyi alır.

Bu işaretçi her türlü ekleme veya kaldırma işlemiyle geçersiz kılınmış olabilir.


void RepeatedField::Swap(
        RepeatedField * other)

İçeriğin tamamını "diğer" ile değiştirin.

Bunlar ayrı alanlarsa verileri birbirleri arasında kopyalar.


void RepeatedField::UnsafeArenaSwap(
        RepeatedField * other)

İçeriğin tamamını "diğer" ile değiştirin.

Yalnızca, arayanın her iki yinelenen alanın da aynı arenada veya yığında olduğunu garanti edebildiği durumlarda çağrılmalıdır. Farklı arenalar arasında geçiş yapmaya izin verilmiyor ve bir GOOGLE_DCheck tarafından yakalanıyor (ayrıntılar için API dokümanlarına bakın).


iterator RepeatedField::erase(
        const_iterator position)

Konumun başvurduğu öğeyi kaldırır.

Kaldırılan öğenin hemen ardından öğeye bir yineleme döndürür.

end() da dahil olmak üzere, kaldırılan öğedeki veya sonraki öğenin tüm tekrarlarını geçersiz kılar.


iterator RepeatedField::erase(
        const_iterator first,
        const_iterator last)

[[]İlk, son) aralıktaki öğeleri kaldırır.

Kaldırılan aralığın hemen ardından öğeye döner.

end() dahil olmak üzere, kaldırılan aralıktaki veya sonraki tüm tekrarlayıcıları geçersiz kılar.


void RepeatedField::InternalSwap(
        RepeatedField * other)

Yalnızca şirket içi kullanım içindir.

Oluşturulan kod tarafından çağrıldığı için bu işlem herkese açıktır.

şablon sınıfı TekrarlıPtrField

#include <google/protobuf/repeated_field.h>
namespace google::protobuf

template <typename >

TekrarlananPtrAlanı, TekrarlananAlan gibidir ancak yinelenen dizeler veya Mesajlar için kullanılır.

Üyeler

typedef
internal::RepeatedPtrIterator< Element > iterator
STL benzeri iteratör desteği.
typedef
internal::RepeatedPtrIterator< const Element > const_iterator
typedef
Element value_type
typedef
value_type & reference
typedef
const value_type & const_reference
typedef
value_type * pointer
typedef
const value_type * const_pointer
typedef
int size_type
typedef
ptrdiff_t difference_type
typedef
std::reverse_iterator< const_iterator > const_reverse_iterator
Yinelenen iter desteği.
typedef
std::reverse_iterator< iterator > reverse_iterator
typedef
internal::RepeatedPtrOverPtrsIterator< Element *, void * > pointer_iterator
Tekrar eden ve temel işaretçileri öğenin kendisi yerine Element'e döndüren STL benzeri özel iteratör.
typedef
internal::RepeatedPtrOverPtrsIterator< const Element *const, const void *const > const_pointer_iterator
constexpr
RepeatedPtrField()
explicit
RepeatedPtrField(Arena * arena)
RepeatedPtrField(const RepeatedPtrField & other)
template
RepeatedPtrField(Iter begin, Iter end)
~RepeatedPtrField()
RepeatedPtrField &
operator=(const RepeatedPtrField & other)
RepeatedPtrField(RepeatedPtrField && other)
RepeatedPtrField &
operator=(RepeatedPtrField && other)
bool
empty() const
int
size() const
const Element &
Get(int index) const
Element *
Mutable(int index)
Element *
Add()
void
Add(Element && value)
template void
Add(Iter begin, Iter end)
Uygun sayıda öğe ayırttıktan sonra öğeleri [[]start, end) aralığına ekleyin.
const Element &
operator[](int index) const
Element &
operator[](int index)
const Element &
at(int index) const
Element &
at(int index)
void
RemoveLast()
Dizideki son öğeyi kaldırın. devamı...
void
DeleteSubrange(int start, int num)
[[]start içerisinde dizinleri olan öğeleri silin . devamı...
void
Clear()
void
MergeFrom(const RepeatedPtrField & other)
void
CopyFrom(const RepeatedPtrField & other)
template void
Assign(Iter begin, Iter end)
İçeriği TekrarlıPtrField(start, end) ile değiştirir.
void
Reserve(int new_size)
Alanı en azından belirtilen boyuta genişletmek için alan ayırın. devamı...
int
Capacity() const
Element **
mutable_data()
Temel diziyi alır. devamı...
const Element *const *
data() const
void
Swap(RepeatedPtrField * other)
İçeriğin tamamını "diğer" ile değiştirin. devamı...
void
UnsafeArenaSwap(RepeatedPtrField * other)
İçeriğin tamamını "diğer" ile değiştirin. devamı...
void
SwapElements(int index1, int index2)
İki öğeyi değiştirin.
iterator
begin()
const_iterator
begin() const
const_iterator
cbegin() const
iterator
end()
const_iterator
end() const
const_iterator
cend() const
reverse_iterator
rbegin()
const_reverse_iterator
rbegin() const
reverse_iterator
rend()
const_reverse_iterator
rend() const
pointer_iterator
pointer_begin()
const_pointer_iterator
pointer_begin() const
pointer_iterator
pointer_end()
const_pointer_iterator
pointer_end() const
size_t
SpaceUsedExcludingSelfLong() const
Size*(*this) hariç, yinelenen alan tarafından kullanılan bayt sayısını döndürür (tahmini).
int
SpaceUsedExcludingSelf() const
template
RepeatedPtrField(Iter begin, Iter end)

Gelişmiş bellek yönetimi

Güçlü bellek yönetimi gerektiğinde (zaman zaman Google'da yapılması gerektiğinde), aşağıdaki yöntemler yararlı olabilir.
void
AddAllocated(Element * value)
Sahipliği YinelenenedPtrField öğesine geçirerek önceden ayrılmış bir nesne ekleyin. devamı...
PROTOBUF_FUTURE_MUST_USE_RESULT Element *
ReleaseLast()
Son öğeyi kaldırın ve geri vererek sahipliği arayana iletin. devamı...
void
UnsafeArenaAddAllocated(Element * value)
Arena-sahiplik kontrollerini atlayarak zaten ayrılmış bir nesne ekleyin. devamı...
Element *
UnsafeArenaReleaseLast()
Son öğeyi kaldırıp kaldırın. devamı...
void
ExtractSubrange(int start, int num, Element ** elements)
"[[]start .. start+num-1]" aralığında dizinlere sahip öğeleri çıkarın. devamı...
void
UnsafeArenaExtractSubrange(int start, int num, Element ** elements)
Tekrarlanan alan bir arenada yer alıyorsa nesne kopyaları oluşturulmaması dışında, yukarıda açıklanan extraSubrange() ile aynıdır. devamı...
int
ClearedCount() const
Yeniden kullanım için kullanılmakta olan temizlenmiş nesne sayısını alın.
void
AddCleared(Element * value)
Temizlenen nesneler havuzuna bir öğe ekleyerek sahipliği YinelenenedPtrField'e iletin. devamı...
PROTOBUF_FUTURE_MUST_USE_RESULT Element *
ReleaseCleared()
Temizlenen havuzdan tek bir öğe kaldırıp sahipliği kaldırarak arayana aktarın. devamı...
iterator
erase(const_iterator position)
Konumun başvurduğu öğeyi kaldırır. devamı...
iterator
erase(const_iterator first, const_iterator last)
[[]İlk, son) aralıktaki öğeleri kaldırır. devamı...
Arena *
GetArena() const
Bu TekrarlananPtrField öğesinin öğelerini depoladığı alanı alır.
void
InternalSwap(RepeatedPtrField * other)
Yalnızca şirket içi kullanım içindir. devamı...

void RepeatedPtrField::RemoveLast()

Dizideki son öğeyi kaldırın.

Öğenin sahipliği dizi tarafından korunur.


void RepeatedPtrField::DeleteSubrange(
        int start,
        int num)

[[]start içerisinde dizinleri olan öğeleri silin .

. başlangıç+sayı-1]. Dikkat: Uygulama, dizinleri [[]start+num .. ] olan tüm öğeleri taşır. Bir döngü içinde bu rutinin çağrılması ikinci dereceden davranışa neden olabilir.


void RepeatedPtrField::Reserve(
        int new_size)

Alanı en azından belirtilen boyuta genişletmek için alan ayırın.

Bu işlem yalnızca işaretçi dizisini yeniden boyutlandırır; herhangi bir nesne ayırmaz. Dizin büyütülürse her zaman en az iki katına çıkar.


Element ** RepeatedPtrField::mutable_data()

Temel diziyi alır.

Bu işaretçi her türlü ekleme veya kaldırma işlemiyle geçersiz kılınmış olabilir.


void RepeatedPtrField::Swap(
        RepeatedPtrField * other)

İçeriğin tamamını "diğer" ile değiştirin.

Bunlar ayrı alanlardaysa verileri kopyalar.


void RepeatedPtrField::UnsafeArenaSwap(
        RepeatedPtrField * other)

İçeriğin tamamını "diğer" ile değiştirin.

Arayan, her iki alanın da aynı arenada veya her ikisinde de bulunduğunu garanti etmelidir. Bu işlevle farklı arenalar arasında geçiş yapmaya izin verilmez ve bunlar GOOGLE_DCheck ile yakalanır.


void RepeatedPtrField::AddAllocated(
        Element * value)

Sahipliği YinelenenedPtrField öğesine geçirerek önceden ayrılmış bir nesne ekleyin.

Arenalarla ilgili bazı özel davranışların gerçekleştiğini unutmayın:

(i) if this field holds submessages, the new submessage will be copied if
the original is in an arena and this RepeatedPtrField is either in a
different arena, or on the heap.
(ii) if this field holds strings, the passed-in string *must* be
heap-allocated, not arena-allocated. There is no way to dynamically check
this at runtime, so User Beware.

PROTOBUF_FUTURE_MUST_USE_RESULT Element *
    RepeatedPtrField::ReleaseLast()

Son öğeyi kaldırın ve geri vererek sahipliği arayana iletin.

Gereken boyut: size() > 0

Bu koyduğu Yinelenen Alan bir arenadaysa sahipliği kullanıcıya aktarmak için bir nesne kopyası gerekir (uyumlu semantik için). Bu davranış istenmeyen bir durumsa UnsafeArenaReleaseLast() işlevini kullanın.


void RepeatedPtrField::UnsafeArenaAddAllocated(
        Element * value)

Arena-sahiplik kontrollerini atlayarak zaten ayrılmış bir nesne ekleyin.

Kullanıcı, belirtilen nesnenin bu YinelenenedPtrField ile aynı arenada olduğunu garanti etmelidir. Ayrıca, kopyalardan kaçınmak için geçici sahiplik kullanan eski kodda da kullanışlıdır. Örnek:

RepeatedPtrField<T> temp_field;
temp_field.AddAllocated(new T);
... // Do something with temp_field
temp_field.ExtractSubrange(0, temp_field.size(), nullptr);

Arenaya temp_field'ı eklerseniz bu işlem sahipliğin "AddAllocation" aramasında arenaya aktarılması ve artık serbest bırakılması nedeniyle iki kez silinir. UnsafeArenaAddAllocation bunu engeller.


Element * RepeatedPtrField::UnsafeArenaReleaseLast()

Son öğeyi kaldırıp kaldırın.

Yalnızca bir arenada çalışırken çalışır. Döndürülen işaretçi arenadaki orijinal nesneye işaret ediyor, bu nedenle arenanın ömrü var. Gereken: current_size_ > 0


void RepeatedPtrField::ExtractSubrange(
        int start,
        int num,
        Element ** elements)

"[[]start .. start+num-1]" aralığında dizinlere sahip öğeleri çıkarın.

Arayan kişi, çıkarılan öğelerin sahipliğini üstlenir ve artık gerekli olmayan öğeleri silmekten sorumludur. "Elements" NULL değilse, çıkarılan öğeleri işaret edenler arayanın yararı için "Elements[[]0 .. num-1]" içinde depolanır. "Elements" NULL ise arayan, bu öğelerde başka işlemler (ör. silme) gerçekleştirmek için başka bir mekanizma kullanmalıdır. Dikkat: Uygulama öğeleri, dizinleri [[]start+num ..] olan öğeleri de taşır. Bir döngü içinde bu rutinin çağrılması ikinci dereceden davranışa neden olabilir.

Bellek kopyalama davranışı yukarıda açıklanan ReleaseLast() ile aynıdır: Bu koyduğu yinelenen alan bir arenada döndürülürse döndürülen her öğe için nesne kopyası oluşturulur. Böylece döndürülen tüm öğe işaretçileri yığınla ayrılmış kopyaları oluşturur. Bu kopya istenmezse kullanıcı UnsafeArenaextraSubrange() yöntemini çağırmalıdır.


void RepeatedPtrField::UnsafeArenaExtractSubrange(
        int start,
        int num,
        Element ** elements)

Tekrarlanan alan bir arenada yer alıyorsa nesne kopyaları oluşturulmaması dışında, yukarıda açıklanan extraSubrange() ile aynıdır.

Bunun yerine, ham nesne işaretçileri döndürülür. Bu nedenle, bir arenada döndürülen nesneler serbest bırakılmaması gerektiği için serbest bırakılmamalıdır.


void RepeatedPtrField::AddCleared(
        Element * value)

Temizlenen nesneler havuzuna bir öğe ekleyerek sahipliği YinelenenedPtrField'e iletin.

Bu yöntem çağrılmadan önce öğe temizlenmelidir.

Tekrarlanan alan bir arenada veya |value| olduğunda bu yöntem çağrılamaz. Her iki durum da bir GOOGLE_DTEST-hatası tetikler.


PROTOBUF_FUTURE_MUST_USE_RESULT Element *
    RepeatedPtrField::ReleaseCleared()

Temizlenen havuzdan tek bir öğe kaldırıp sahipliği kaldırarak arayana aktarın.

Öğenin temizleneceği garanti edilir. Gereken: ClearedCount() > 0

Tekrarlanan alan bir arenada olduğunda bu yöntem çağrılamaz. Bu işlem, bir GOOGLE_DTEST başarısızlığını tetikler.


iterator RepeatedPtrField::erase(
        const_iterator position)

Konumun başvurduğu öğeyi kaldırır.

Kaldırılan öğenin hemen ardından öğeye bir yineleme döndürür.

end() da dahil olmak üzere, kaldırılan öğedeki veya sonraki öğenin tüm tekrarlarını geçersiz kılar.


iterator RepeatedPtrField::erase(
        const_iterator first,
        const_iterator last)

[[]İlk, son) aralıktaki öğeleri kaldırır.

Kaldırılan aralığın hemen ardından öğeye döner.

end() dahil olmak üzere, kaldırılan aralıktaki veya sonraki tüm tekrarlayıcıları geçersiz kılar.


void RepeatedPtrField::InternalSwap(
        RepeatedPtrField * other)

Yalnızca şirket içi kullanım içindir.

Oluşturulan kod tarafından çağrıldığı için bu işlem herkese açıktır.