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-2025 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 <mrpt/version.h>

#include <map>

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

class EntityBase : public mrpt::serialization::CSerializable
{
#if MRPT_VERSION < 0x020e00
  DEFINE_VIRTUAL_SERIALIZABLE(EntityBase);
#else
  DEFINE_VIRTUAL_SERIALIZABLE(EntityBase, mola);
#endif

 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