topic "Buffer"; [2 $$0,0#00000000000000000000000000000000:Default] [i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class] [l288;2 $$2,0#27521748481378242620020725143825:desc] [0 $$3,0#96390100711032703541132217272105:end] [H6;0 $$4,0#05600065144404261032431302351956:begin] [i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:item] [l288;a17;*@5;1 $$6,6#70004532496200323422659154056402:requirement] [l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param] [{_}%EN-US [s0; Buffer&] [s5;K%- template_<[@(0.0.255) class][@(64) _][@4 T][@(64) >__][@(0.0.255) class][@(64) _]Buffer[@(64) _ :_][@(0.0.255) private][@(64) _][^`:`:Moveable^@(64) Moveable][@(64) <_]Buffer[@(64) <][@4 T][@(64) > _>_]&] [s0; class_[* Buffer]&] [s2; &] [s0; [%-*C@4 T]-|Type of elements stored in Buffer.&] [s0; &] [s0; Buffer is a simple class used to manage a fixed size plain old C dynamically allocated vector of elements of a specified type. The size of the buffer is specified as a constructor parameter and it can be also reallocated with new size, while loosing all current data.&] [s0; Buffer is a [*/^topic`:`/`/Core`/srcdoc`/Moveable`$en`-us^ moveable][*/ ]type with [*/^topic`:`/`/Core`/srcdoc`/pick`_`$en`-us^ pick] (only) transfer semantics. Calling methods of picked Buffer is logic error with the exceptions of&] [s0; [C+75 void Alloc(int size);]&] [s0; [C+75 void Alloc(int size, const T`& in);]&] [s0; [C+75 void Clear();]&] [s0; [C+75 void operator`=(pick`_ Buffer`& v);]&] [s0;*C@4 &] [s0;%- [%%/ Derived from][%% ]Moveable< Buffer > &] [s0; &] [s0;:`:`:Buffer`:`:Buffer`(`):%- [* Buffer]()&] [s2; Constructs an empty buffer.&] [s0; &] [s0;:`:`:Buffer`:`:Buffer`(int`):%- [* Buffer](int_[*@3 size])&] [s2; Constructs the Buffer.&] [s6; [@4 T][@0 must have default constructor.]&] [s7; [%-*C@3 size]-|Number of elements.&] [s0; &] [s0;:`:`:Buffer`:`:Buffer`(int`,const T`&`):%- [* Buffer](int_[*@3 size], const_T`&_[*@3 init])&] [s2; Constructs the Buffer initializing the elements to the specified value.&] [s6; [@4 T][@0 must have deep copy constructor.]&] [s7; [%-*C@3 size]-|Number of elements.&] [s7; [%-*C@3 init]-|Initialization value.&] [s0; &] [s0;:`:`:Buffer`:`:Buffer`(pick`_`:`:Buffer`&`):%- [* Buffer](pick`__[* Buffer]`&_[*@3 v])&] [s2; Pick constructor.&] [s7; [%-*C@3 v]-|Source Buffer.&] [s0; &] [s5;K%- [@(0.0.255) void][@(64) _]operator`=[@(64) (pick`__][^`:`:Buffer^@(64) Buffer][@(64) `& _][@3 v][@(64) )]&] [s2; Pick operator.&] [s7; [%-*C@3 v]-|Source buffer to be picked.&] [s0; &] [s5;K%- operator_T`*()&] [s7; [*/ Return value]-|Returns a pointer to the first element of the Buffer or NULL if the Buffer is empty.&] [s0; &] [s5;K%- operator_[@(0.0.255) const][@(64) _T`*()_][@(0.0.255) const]&] [s7; [*/ Return value]-|Returns a pointer to the first element of the Buffer or NULL if the Buffer is empty.&] [s0; &] [s5;K%- T_`*operator`~[@(64) ()]&] [s7; [*/ Return value]-|Returns a pointer to the first element of the Buffer or NULL if the Buffer is empty.&] [s0; &] [s5;K%- [@(0.0.255) const][@(64) _T_`*]operator`~[@(64) ()_][@(0.0.255) const]&] [s7; [*/ Return value]-|Returns a pointer to the first element of the Buffer or NULL if the Buffer is empty.&] [s0; &] [s5;K%- [@(0.0.255) void][@(64) _]Alloc[@(64) (][@(0.0.255) int][@(64) _][@3 size][@(64) )]&] [s2; Clears the buffer and allocates it with the new size. All current elements are lost.&] [s6; [@4 T][@0 must have default constructor.]&] [s7; [%-*C@3 size]-|Number of elements.&] [s0; &] [s5;K%- [@(0.0.255) void][@(64) _]Alloc[@(64) (][@(0.0.255) int][@(64) _][@3 size][@(64) , ][@(0.0.255) const][@(64) _T`&_][@3 in][@(64) )]&] [s2; Clears the buffer and allocates it with the new size, using the initialization value. All current elements are lost.&] [s6; [@4 T][@0 must have deep copy constructor.]&] [s7; [%-*C@3 size]-|Number of elements.&] [s7; [%-*C@3 in]-|Initialization value.&] [s0; &] [s5;K%- [@(0.0.255) void][@(64) _]Clear[@(64) ()]&] [s0; Clears the buffer to the same state as default constructor. All current elements are destroyed.]