#pragma once

#include "sdkexport.h"
#include <string>

namespace mpl {

class MPL_API RobJoint {
public:
    double rax_1 = 1e9;
    double rax_2 = 1e9;
    double rax_3 = 1e9;
    double rax_4 = 1e9;
    double rax_5 = 1e9;
    double rax_6 = 1e9;

public:
    RobJoint() = default;
    ~RobJoint() = default;
    RobJoint(const RobJoint&) = default;
    RobJoint& operator=(const RobJoint&) = default;
    RobJoint(RobJoint&&) = default;
    RobJoint& operator=(RobJoint&&) = default;

    RobJoint(double rax1, double rax2, double rax3, double rax4, double rax5, double rax6);

    bool valid() const;

    double getJointValue(unsigned index) const;

    bool isCritical(unsigned index) const;

    std::string toString() const;
    std::string toDegString() const;

};

}
