[Rock-dev] Typekit type specialization

Goldhoorn Matthias (XC-AD/EFB1-NA) Matthias.Goldhoorn at us.bosch.com
Mon Mar 8 18:59:12 CET 2021


Hello Rock-Devs,

long time not seen :).
I currently play around with typekit and orogen in one of our projects.
I did the basic build system integration and if we continue using it, i might need to extend orogen (castxml handling) with cmake support soon, but this is a differnt story.

So, I currently struggle to create bindings/serialization helper for some special types we use:

1) Typelib[WARN]: /home/a/workspace/athena/build/vfc/include/vfc/memory/vfc_fixedblock_allocator.hpp:198: cannot create the /vfc/TFixedBlockAllocator<SOMETHING>/storage_type typedef, as it points to  which is ignored
2) Typelib[WARN]: /home/a/workspace/athena/build/vfc/include/vfc/memory/vfc_fixedblock_allocator.hpp:89: ignoring /vfc/TFixedBlockAllocator<SOMETHING,200> since its field m_memblock is of the ignored type /vfc/TFixedBlockAllocator<SOMETHING,200>/storage_type
3) Typelib[WARN]: /home/a/workspace/athena/build/vfc/include/vfc/container/vfc_fixedvector.hpp:453: ignoring /vfc/TFixedVector<SOMETHING,200,SOMETHING,200>>/storage_type as it has a non-public access specifier: private
4) Typelib[WARN]: /home/a/workspace/athena/build/vfc/include/vfc/container/vfc_fixedvector.hpp:93: ignoring /vfc/TFixedVector<SOMETHING,200,/vfc/TFixedBlockAllocator<SOMETHING,200>> since its field m_memory is of the ignored type /vfc/TFixedVector<SOMETHING,200,/vfc/TFixedBlockAllocator<SOMETHING,200>>/storage_type

And i see several issues in:
1) there is a "points to <MISSING?> which is ignored" so obvisously here is something wrong in the error message (and i havwe to trace down the /storage_type which i have no clue where its comming from
2,3) private fields, normal error, see below....
4) simliar to one

To solve the issues I thought provide a own serialization/deserialization method to prevent the usage inside RTT.

I wanted to go for a "specialize" of the types. However adding the the following specialize to my .orogen project:

________________________________

Typelib.specialize '/vfc/TFixedBlockAllocator<>' do

    include Typelib::ContainerType::StdVector #something should hopefully not YET madder, to be written later

  end


  Typelib.specialize '/vfc/TFixedVector<>' do

    include Typelib::ContainerType::StdVector #something should hopefully not YET madder, to be written later

  end

________________________________
does not have any effect. Same as if i would add it to typelib directly:


________________________________

diff --git a/bindings/ruby/lib/typelib/standard_convertions.rb b/bindings/ruby/lib/typelib/standard_convertions.rb

index fb3e3fb..f917070 100644

--- a/bindings/ruby/lib/typelib/standard_convertions.rb

+++ b/bindings/ruby/lib/typelib/standard_convertions.rb

@@ -59,6 +59,10 @@ def concat(other_string)

         include Typelib::ContainerType::StdVector

     end



+    specialize '/vfc/TFixedVector<>' do

+        include Typelib::ContainerType::FixedVector #something should hopefully not YET madder, to be written later

+    end

+

     ####

     # C string handling

     if String.instance_methods.include? :ord

________________________________

So my questions are:
* Since i am out of rock, am i going the right way, why the specialize is not taken into account?
** Cant it bypass the private fields, do i have to change my underlaying core datatypes (if so are there other ways which are copy free?, I would like to prevent going down this path)
* Can I prevent a copy this way, or will the data strucutres be copied if i go for a "specialize"?I
Thanks for your help

Best and stay safe,
Matthias
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://www.dfki.de/pipermail/rock-dev/attachments/20210308/4f41c97b/attachment.htm 


More information about the Rock-dev mailing list