
#ifndef adasTypes_h
#define adasTypes_h

#include <iostream>
#include <vector>

#include "CoordSys.h"

namespace jf {
namespace adas {
typedef int64_t JfDataId;

struct Junction {
    JfDataId lId;
    std::vector<std::vector<double>> vctGeoLink;
};

struct Speed {
    JfDataId lId;
    int nDirection;
    int nSPM;
    int nSPType;
    int nEffLane;
    std::vector<int> vctnVeclLimit;
    int nEffType;
};

struct IndFacility {
    JfDataId lId;
    int nType1;
    int nType2;
    double dValue;
    std::vector<Speed> vctSpeed;
    std::vector<std::vector<double>> vctGeoLink;
};

struct RADAS {
    double dLatitude;
    double dLongitude;
    double dOutCurvature;
    double dOutRoll;
    double dOutPitch;
    double dOutAzimuth;
};

struct Road {
    Junction jctStart;
    Junction jctEnd;
    double dLength;
    int nLaneNum;
    int nDirection;
    int nRank;
    int nType;
    int nForm;
    double dStartAngle;
    int nSpeed;
    int nUrban;
    std::vector<std::vector<double>> vctGeoLink;
    std::vector<IndFacility> vctIndFacilitys;
    std::vector<RADAS> vctRADASes;
};
};  // namespace adas

};  // namespace jf

#endif