#ifndef VIS_ENGINE_STL_PARSER_HPP
#define VIS_ENGINE_STL_PARSER_HPP

#include "triangle.hpp"

namespace visual_engine {

class bin_stl_parser final {
    using triangle = visual_engine::triangle;

    static constexpr unsigned long stl_attribute_len = 2;
    static constexpr unsigned long stl_start_pos = 80;

    std::vector<triangle> triags_;
    visual_engine::count_t count_;

public:
    bin_stl_parser(std::string path);
    visual_engine::count_t triag_count() const { return count_; }
    std::vector<triangle>::iterator begin();
    std::vector<triangle>::iterator end();

private:
    point  read_point (std::fstream& fs) const;
    vector read_vector(std::fstream& fs) const;
};

} // namespace visual_engine

#endif // VIS_ENGINE_STL_PARSER_HPP
