Skip to content
Snippets Groups Projects

Resolve "Implement Resolution of Memory Links in ARON Data during Query"

Closes #61 (closed)

Edited by Rainer Kartmann

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Philip Scherer assigned to @phesch

    assigned to @phesch

  • Any Dict in XML

    XML syntax:

            <Object name='Request'>
                <ObjectChild key='config'>
                    <AnyDict />
                </ObjectChild>
            </Object>

    Generated cpp code:

     class PoseTest
            : public armarx::aron::codegenerator::cpp::AronCppClass
        {
        public:
            using This = armarx::PoseTest;
            ...
            ::armarx::aron::data::DictPtr any;  // also add include
    
    ...
            template<class WriterInterfaceT>
            requires armarx::aron::data::isWriter<WriterInterfaceT>
            typename WriterInterfaceT::ReturnType
            write(WriterInterfaceT& aron_w, const armarx::aron::Path& aron_p = armarx::aron::Path()) const
            {
                using T = typename WriterInterfaceT::ReturnType;
                std::map<std::string, T> aron_objectMembers;
                std::optional<T> aron_objectExtends;
                // members of armarx::PoseTest
                auto aron_variant_pose = aron_w.writeNull();
                aron_variant_pose = aron_w.writeNDArray({4, 4, 4}, "float", reinterpret_cast<const unsigned char*>(pose.data()), armarx::aron::Path(aron_p, {"pose"})); // of pose
                aron_objectMembers.emplace("pose", aron_variant_pose);
    
                {
                    using ConverterImplementation = aron::data::VariantConverter<WriterInterfaceT>;
                    // typename ConverterImplementation::ReaderInputType anyy = any;
                    aron_objectMembers.emplace("any", aron::data::readAndWrite<ConverterImplementation>(this->any));
                }
    
                return aron_w.writeDict(aron_objectMembers, aron_objectExtends, aron_p); // of top level object armarx::PoseTest
            }
    ....
            template<class ReaderInterfaceT>
            requires aron::data::isReader<ReaderInterfaceT>
            void read(ReaderInterfaceT& aron_r, typename ReaderInterfaceT::InputType& input)
            {
                using T = typename ReaderInterfaceT::InputType;
                using TNonConst = typename std::remove_const<T>::type;
                {
                    const TNonConst* _suppressUnusedWarning;
                    (void) _suppressUnusedWarning;
                }
                this->resetSoft();
                if (aron_r.readNull(input))
                {
                    throw armarx::aron::error::AronException(__PRETTY_FUNCTION__, "The input to the read method must not be null.");
                }
                std::map<std::string, TNonConst> aron_objectMembers;
                aron_r.readDict(input, aron_objectMembers); // of top level object armarx::PoseTest
                std::string aron_variant_pose_typeAsString;
                std::vector<int> aron_variant_pose_shape;
                std::vector<unsigned char> aron_variant_pose_data;
                aron_r.readNDArray(aron_objectMembers.at("pose"), aron_variant_pose_shape, aron_variant_pose_typeAsString, aron_variant_pose_data); // of pose
                std::memcpy(reinterpret_cast<unsigned char*>(pose.data()), aron_variant_pose_data.data(), aron_variant_pose_data.size());
    
                {
                    using ConverterImplementation = aron::data::VariantConverter<ReaderInterfaceT>;
                    // typename ConverterImplementation::ReaderInputType anyy = any;
                    this->any = aron::data::readAndWrite<ConverterImplementation>(aron_objectMembers.at("any"));
                }
            }

    Templates in XML

    XML Syntax:

            <Template typename="DataT" >
                <Object name="MemoryLink" >
                    <ObjectChild key="id">
                        <armarx::armem::arondto::MemoryID />
                    </ObjectChild>
    
                    <ObjectChild key="data">
                        <DataT optional="true" />
                    </ObjectChild>
                </Object>
            </Template>

    CPP:

    template <class DataT>
    requires ValueT isAronCppClass<>
    class MemoryLink
    {
        armarx::armem::arondto::MemoryID id;
        std::option<lValueT> data;
    
        ...
        void write(foo)
        {
            ...
            value->write(foo);
        }
    }
  • Fabian Tërnava added 42 commits

    added 42 commits

    Compare with previous version

  • Fabian Tërnava added 2 commits

    added 2 commits

    Compare with previous version

  • Rainer Kartmann assigned to @fratty

    assigned to @fratty

  • Rainer Kartmann requested review from @RainerKartmann

    requested review from @RainerKartmann

  • Rainer Kartmann unassigned @fratty

    unassigned @fratty

    • Result of discussion: Remove concept from generated class templates
    • Rename using T = ... to using _AronT = ...
  • mentioned in issue #82 (closed)

  • Philip Scherer added 109 commits

    added 109 commits

    • 676dde5c...af29eae9 - 102 commits from branch master
    • 3b025e1f - Merge branch 'master' into 61-implement-resolution-of-memory-links-in-aron-data-during-query
    • f50b0388 - Add MemoryLink Aron type with a usage example
    • 55c23329 - Add extra utilities to aroncommon and armem/util
    • b790f250 - Implement MemoryLink resolution in Reader
    • cdf7fe77 - Add MemoryLink resolution option to MemoryViewer
    • 9f275f85 - Fix InstanceViewer keeping children of NULL items
    • a26ca861 - Merge branch 'master' into 61-implement-resolution-of-memory-links-in-aron-data-during-query

    Compare with previous version

  • Philip Scherer added 1 commit

    added 1 commit

    • 5c290be2 - Rename newRunningQueries to runningQueries

    Compare with previous version

  • Philip Scherer added 2 commits

    added 2 commits

    • ae5910cd - Enable rec depth spinner if GetData is checked
    • 8b802d21 - Add docs to new Reader query, catch exception

    Compare with previous version

  • Philip Scherer added 27 commits

    added 27 commits

    • 8b802d21...082d819f - 25 commits from branch master
    • c74ba6c2 - Merge branch 'master' into 61-implement-resolution-of-memory-links-in-aron-data-during-query
    • 75a7e199 - Fix BOSubObjectFinder templates, clean up Reader

    Compare with previous version

  • Rainer Kartmann added 29 commits

    added 29 commits

    • 75a7e199...752a720b - 26 commits from branch master
    • 7a61ab6f - Add missing include
    • 507ea228 - Remove unused attribute
    • 065e65ec - Merge branch 'master' into 61-implement-resolution-of-memory-links-in-aron-data-during-query

    Compare with previous version

  • Rainer Kartmann marked this merge request as ready

    marked this merge request as ready

  • Rainer Kartmann approved this merge request

    approved this merge request

  • Rainer Kartmann mentioned in commit 417ee748

    mentioned in commit 417ee748

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading