Help with DynamicArray of Emsi Containers
vit
vit at vit.vit
Sun May 1 07:12:51 UTC 2022
On Saturday, 30 April 2022 at 20:22:43 UTC, Christian Köstlin
wrote:
> I am struggling with initializing an Emsi Containers
> DynamicArray in a nice way. Some background information of my
> usecase:
>
> I experimenting in porting some old 3d engine code of mine from
> c++ to dlang. In the engine I want to exactly control when
> resources are freed and not rely on the garbage collector. For
> that I am using reference counters courtesy of autoptr.
>
> e.g.
>
> ```d
>
> alias Texture = IntrusivePtr!TextureData; // dub package autoptr
> class TextureData
> {
> IFImage image; // dub package imagefmt
> }
>
> ```
>
>
> another class of mine now is supposed to hold several of those
> textures for multitexturing and should be initialized in its
> constructor:
>
> ```d
> class Appearance
> {
> Texture[] textures;
> this(Texture[] textures)
> {
> this.textures = textures;
> }
> }
> ```
> Unfortunately this does not work properly together with
> autoptr's (see
> https://github.com/submada/autoptr/issues/5#issuecomment-997683868).
>
> Because of that I am using now DynamicArrays from Emsi
> Containers, but I am having trouble initializing them:
>
> ```d
> class Apperance
> {
> DynamicArray!Texture textures;
> this(DynamicArray!Texture textures)
> {
> this.textures = textures;
> }
> }
> ```
> does not compile.
>
> What would be the best way to initialize the variable?
>
> Kind regards,
> Christian
DynamicArray has disabled postblit (is not copyable).
Package autoptr is deprecated (internaly redirected to
btl:atuoptr), all functionality is moved to package
[BTL](https://code.dlang.org/packages/btl) (subpackage
btl:autoptr). This library contains subpackage btl:vector with
functionality like DynamicArray with support for copying. I use
IntrusivePtr inside Vector/SmallVector and i have no problems.
More information about the Digitalmars-d-learn
mailing list