Program Listing for File InputParser.hpp

Return to documentation for file (include/judge/InputParser/InputParser.hpp)

#pragma once

#include "PDJE_Input_DataLine.hpp"
#include "PDJE_Note_OBJ.hpp"
#include "PDJE_Rule.hpp"
#include <cstdint>
#include <unordered_map>
#include <vector>

namespace PDJE_JUDGE {

using INPUT_RAW = std::pair<PDJE_Input_Log *, uint64_t>;
using DEV_ID    = std::string;
struct PARSE_OUT {
    std::vector<PDJE_Input_Log> logs;
    uint64_t                    lowest;
    uint64_t                    highest;
};

class InputParser {
  private:
    PARSE_OUT outCache;

  public:
    std::unordered_map<RAIL_META, RAIL_SETTINGS> railData;
    std::unordered_map<DEV_ID, OFFSET>           offsetData;
    PARSE_OUT *
    Parse(const INPUT_RAW &raw);
    InputParser() = default;

    ~InputParser() = default;
};
} // namespace PDJE_JUDGE