#ifndef POINTFIELD_H
#define POINTFIELD_H

#include <cstdint>
#include <string>

namespace sensor_msgs
{

struct PointField
{
    // Các hằng số kiểu dữ liệu (theo chuẩn ROS)
    static constexpr uint8_t INT8    = 1;
    static constexpr uint8_t UINT8   = 2;
    static constexpr uint8_t INT16   = 3;
    static constexpr uint8_t UINT16  = 4;
    static constexpr uint8_t INT32   = 5;
    static constexpr uint8_t UINT32  = 6;
    static constexpr uint8_t FLOAT32 = 7;
    static constexpr uint8_t FLOAT64 = 8;

    std::string name;      // Tên trường (vd: "x", "y", "z", "intensity")
    uint32_t offset = 0;   // Vị trí byte bắt đầu trong cấu trúc mỗi điểm
    uint8_t datatype = 0;  // Kiểu dữ liệu (sử dụng các hằng ở trên)
    uint32_t count = 0;    // Số phần tử trong trường (vd: 3 cho vector3)

    PointField() = default;
};

}
#endif // POINTFIELD_H
