#pragma once #include #include #include #include // Razlicite pomocne funkcije za tekstove namespace fsh::util { extern const char* tokens[]; template static inline std::optional mk_optional(T t) { if (t) { return t->gvalue(); } return std::optional(); } static inline bool contains(char x, std::string text) { for (const auto& chr : text) { if (chr == x) return 1; } return 0; }; static inline std::ifstream input(const std::string& x) { std::ifstream in(x, std::ios::in); if (!in) { throw std::runtime_error("Can't open file"); } return in; } static inline std::ofstream output(const std::string& x) { std::ofstream out(x, std::ios::out); if (!out.is_open()) { throw std::runtime_error("Can't open file"); } return out; } static inline std::ofstream output_append(const std::string& x) { std::ofstream out(x, std::ios::app | std::ios::out); if (!out.is_open()) { throw std::runtime_error("Can't open file"); } return out; } }