Program Listing for File PDJE_Judge.hpp

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

#pragma once

#include <cstdint>
#include <optional>

#include "Input_State.hpp"
#include "PDJE_EXPORT_SETTER.hpp"
#include "PDJE_Judge_Loop.hpp"
#include <atomic>
#include <thread>
#include <unordered_map>
#include <vector>
namespace PDJE_JUDGE {
enum JUDGE_STATUS {
    OK                   = 0,
    CORE_LINE_IS_MISSING = 1,
    INPUT_LINE_IS_MISSING,
    EVENT_RULE_IS_EMPTY,
    INPUT_RULE_IS_EMPTY,
    NOTE_OBJECT_IS_MISSING,
};

class PDJE_API JUDGE {
  private: // cached values
    std::optional<Judge_Loop> loop_obj;

  private:
    // thread relates
    std::optional<std::thread> loop;

    JUDGE_STATUS status = JUDGE_STATUS::OK;

  public:
    Judge_Init inits;
    JUDGE_STATUS
    Start();
    void
    End();
    JUDGE_STATUS
    CheckStatus();
    JUDGE();
    ~JUDGE() = default;
};
}; // namespace PDJE_JUDGE