labeled_progress.h 1.63 KB
Newer Older
Valentin Platzgummer's avatar
Valentin Platzgummer committed
1 2
#pragma once

3
#include <QJsonObject>
Valentin Platzgummer's avatar
Valentin Platzgummer committed
4

5 6
#include <QDebug>
#include <QString>
Valentin Platzgummer's avatar
Valentin Platzgummer committed
7 8 9 10 11 12 13 14 15 16 17

namespace ros_bridge {
//! @brief Namespace containing classes and methodes ros message generation.
namespace messages {
//! @brief Namespace containing classes and methodes for geometry_msgs
//! generation.
namespace nemo_msgs {
//! @brief Namespace containing methodes for geometry_msgs/Point32 message
//! generation.
namespace labeled_progress {

18
QString messageType();
Valentin Platzgummer's avatar
Valentin Platzgummer committed
19 20 21 22 23 24 25 26 27

namespace {
const char *progressKey = "progress";
const char *idKey = "id";
} // namespace

//! @brief C++ representation of nemo_msgs/labeled_progress message
class LabeledProgress {
public:
28 29
  LabeledProgress() : _id(""), _progress(0) {}
  LabeledProgress(double progress, QString id) : _id(id), _progress(progress) {}
Valentin Platzgummer's avatar
Valentin Platzgummer committed
30

31 32
  QString id() const { return _id; }
  void setId(QString id) { _id = id; }
Valentin Platzgummer's avatar
Valentin Platzgummer committed
33 34 35 36 37

  double progress() const { return _progress; }
  void setProgress(double progress) { _progress = progress; }

protected:
38
  QString _id;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
39 40 41 42
  double _progress;
};

template <class LabeledProgressType>
43 44 45
bool toJson(const LabeledProgressType &lp, QJsonObject &value) {
  value[idKey] = lp.id();
  value[progressKey] = lp.progress();
Valentin Platzgummer's avatar
Valentin Platzgummer committed
46 47 48 49
  return true;
}

template <class ProgressType>
50 51
bool fromJson(const QJsonObject &value, ProgressType &p) {
  if (!value.contains(progressKey) || !value[progressKey].isDouble()) {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
52 53 54
    return false;
  }

55
  if (!value.contains(idKey) || !value[idKey].isString()) {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
56 57 58
    return false;
  }

59 60
  p.setId(value[idKey].toString());
  p.setProgress(value[progressKey].toDouble());
Valentin Platzgummer's avatar
Valentin Platzgummer committed
61 62 63 64 65 66 67 68

  return true;
}

} // namespace labeled_progress
} // namespace nemo_msgs
} // namespace messages
} // namespace ros_bridge