Program Listing for File QtToDds.hpp

Return to documentation for file (sinspekto/QtToDds.hpp)

#pragma once

#include <QObject>
#include <QString>
#include <memory>

namespace ratatosk {
  namespace types {
    class DoubleVal;
    class Double2;
    class Double3;
    class Double4;
    class PosInfo;
    class GyroInfo;
    class WindInfo;
    class DepthInfo;
    class LogInfo;
    class CurrentAtDepth;
    class CurrentProfile;

  }
}


namespace fkin {
  class Bit;
  class Real;
  class IdVec1d;
  class IdVec2d;
  class IdVec3d;
  class IdVec4d;
  class Kinematics2D;
  class Kinematics6D;
  class BatchIdVec1d;
  class BatchKinematics2D;
  class BatchKinematics6D;
  class ProcessStateAutomaton;
  class Command;
  class CommandResponse;
  class NlpConfig;
  class OptiStats;

  // Do not know how to forward declare dds enums to be used by qt..
  enum class ProcessStateKind;
  enum class CommandType;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
#endif
#ifndef DOXYGEN_SHOULD_SKIP_THIS
  Q_NAMESPACE
  enum class ProcessStateKind;
  Q_ENUM_NS(ProcessStateKind);

  Q_NAMESPACE
  enum class CommandType;
  Q_ENUM_NS(CommandType);

  Q_NAMESPACE
  enum class DimId
    {
     X,
     Y,
     Z,
     W,
     T,
     PosX,
     PosY,
     PosZ,
     Course,
     Speed,
     VelX,
     VelY,
     VelZ,
     EulerX,
     EulerY,
     EulerZ
    };
  Q_ENUM_NS(DimId);

#endif
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
}

namespace weather {
  class ModuleData;
}

#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace sinspekto {
  template <typename T> struct Writer;
  template <typename T> struct Reader;
  template <typename T> class DdsReaderListener;
}
#endif

#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
#endif

namespace qml_enums
{

  Q_NAMESPACE
  enum class ProcessStateKind
  {
   IDLE,
   INITIALIZING,
   RUNNING,
   FAILURE,
   DEAD,
   UNKNOWN
  };
#ifndef DOXYGEN_SHOULD_SKIP_THIS
  Q_ENUM_NS(ProcessStateKind);
#endif

  Q_NAMESPACE
  enum class CommandType
  {
   START_PROCESS,
   STOP_PROCESS,
   TERMINATE_PROCESS,
   BOGUS_COMMAND
  };
#ifndef DOXYGEN_SHOULD_SKIP_THIS
  Q_ENUM_NS(CommandType);
#endif

  Q_NAMESPACE
  enum class DimId
    {
     X,
     Y,
     Z,
     W,
     T,
     PosX,
     PosY,
     PosZ,
     Course,
     Speed,
     VelX,
     VelY,
     VelZ,
     EulerX,
     EulerY,
     EulerZ
    };
#ifndef DOXYGEN_SHOULD_SKIP_THIS
  Q_ENUM_NS(DimId);
#endif
}
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif

struct QtToDds : public QObject
{
  Q_OBJECT
  Q_PROPERTY(bool initialized READ initialized NOTIFY initializedChanged)

  bool initialized() const;

public:
  QtToDds(QObject *parent = nullptr);
  virtual ~QtToDds();


  Q_INVOKABLE void init(int domain);

signals:
  void initializedChanged(bool ready);

public:
  struct Dds;
  std::unique_ptr<Dds> dds;
private:
  bool m_ready;

};