#pragma once #include #include "locator.h" inline std::string command_name { "Command executed on the command line" }; inline std::string command_pathname { "Pathname of command executed on the command line" }; class Error : std::exception { public: Error(const std::string& error_type, const std::string& description, const Locator& locator = Locator(), bool do_justify = true) : m_type(error_type) , m_desc(description) , m_loc(locator) , m_just(do_justify) {} void print_message(const std::string& epilog=""); std::string m_type {}; std::string m_desc {}; Locator m_loc; // {}; bool m_just { true }; }; class Parsing_error : public Error { public: explicit Parsing_error( const std::string& description, const Locator& locator=Locator(), bool do_justify=true) : Error("parsing", description, locator, do_justify) {}; }; class File_error : public Error { public: explicit File_error( const std::string& description, const Locator& locator=Locator(), bool do_justify=true) : Error("file", description, locator, do_justify) {}; }; class Target_error : public Error { public: explicit Target_error( const std::string& description, const Locator& locator=Locator(), bool do_justify=true) : Error("target", description, locator, do_justify) {}; }; class Klammerset_error : public Error { public: explicit Klammerset_error( const std::string& description, const Locator& locator=Locator(), bool do_justify=true) : Error("klammerset", description, locator, do_justify) {}; }; class Definition_error : public Error { public: explicit Definition_error( const std::string& description, const Locator& locator=Locator(), bool do_justify=true) : Error("definition", description, locator, do_justify) {}; }; class Argument_error : public Error { public: explicit Argument_error( const std::string& description, const Locator& locator=Locator(), bool do_justify=true) : Error("argument", description, locator, do_justify) {}; }; class Environment_error : public Error { public: explicit Environment_error( const std::string& description, const Locator& locator=Locator(), bool do_justify=true) : Error("environment", description, locator, do_justify) {}; }; class Internal_error : public Error { public: explicit Internal_error( const std::string& description, const Locator& locator=Locator(), bool do_justify=true) : Error("internal", description, locator, do_justify) {}; };