Program Listing for File EntityBase.h

Return to documentation for file (include/mola_kernel/entities/EntityBase.h)

/* -------------------------------------------------------------------------
 *   A Modular Optimization framework for Localization and mApping  (MOLA)
 * Copyright (C) 2018-2024 Jose Luis Blanco, University of Almeria
 * See LICENSE for license information.
 * ------------------------------------------------------------------------- */
#pragma once

#include <mola_kernel/LazyLoadResource.h>
#include <mola_kernel/id.h>
#include <mrpt/core/Clock.h>
#include <mrpt/serialization/CSerializable.h>

#include <map>

namespace mola
{
using annotations_data_t = std::map<std::string, LazyLoadResource>;

class EntityBase : public mrpt::serialization::CSerializable
{
    DEFINE_VIRTUAL_SERIALIZABLE(EntityBase);

   public:
    EntityBase();
    virtual ~EntityBase();

    mola::id_t my_id_{mola::INVALID_ID};

    mrpt::Clock::time_point timestamp_{};

    annotations_data_t annotations_;

    void load();
    void unload();
    bool is_unloaded() const;

   protected:
    // Derived classes mus call these methods to serialize the common data in
    // this base class:
    void baseSerializeTo(mrpt::serialization::CArchive& out) const;
    void baseSerializeFrom(mrpt::serialization::CArchive& in);
};

}  // namespace mola