I would like to translate this C++ code into Nim struct Foo { int i; }; struct Bar : Foo { int j; };
The most obvious way I can see is type Foo {.inheritable} = object i: int Bar = object of Foo j: int Which works fine, but adds a pointer to the beginning of the resulting C++ truct # generated C++, simplified struct Foo { TNimType* m_type int i; }; struct Bar : Foo { int j; }; This doesn't work for my use-case, because the library I am working with provides me with a memory blob and requires me cast it to my type. So I need to replicate the C++ type exactly, without extra bytes at the beginning. If I was providing the blob _to_ the library, I could increase the pointer by sizeof[TNimType] bytes and it would work. But because I am _receiving_ the blob, I have no control over the memory location, so I can 't add a TNimType pointer to the beginning without copying the whole thing somewhere else to make room at the beginning. So I need to recreate the type in Nim in a manageable way. For now, I just used the magic of copy and paste, which works fine, but will become tedious rather quickly (the real Foo is loooong and gets used in lots of different places). struct Bar { int i; int j; }; I would love to just replicate the inheritence syntax without the extra pointer, but I have no idea where to start- template? macro? type Foo = object i: int Bar = object MyNewOp Foo j: int Help much appreciated!