From 32b4443ba2ec5c3f7c09221ab9b21911a3126ef9 Mon Sep 17 00:00:00 2001 From: Lexi Winter Date: Mon, 23 Jun 2025 18:34:18 +0100 Subject: add separate module implementation files --- nihil.ucl/type.ccm | 48 ++++-------------------------------------------- 1 file changed, 4 insertions(+), 44 deletions(-) (limited to 'nihil.ucl/type.ccm') diff --git a/nihil.ucl/type.ccm b/nihil.ucl/type.ccm index bf6c6bc..088d196 100644 --- a/nihil.ucl/type.ccm +++ b/nihil.ucl/type.ccm @@ -30,34 +30,7 @@ export enum struct object_type { }; // Get the name of a type. -export auto str(object_type type) -> std::string_view { - using namespace std::literals; - - switch (type) { - case object_type::object: - return "object"sv; - case object_type::array: - return "array"sv; - case object_type::integer: - return "integer"sv; - case object_type::real: - return "real"sv; - case object_type::string: - return "string"sv; - case object_type::boolean: - return "boolean"sv; - case object_type::time: - return "time"sv; - case object_type::userdata: - return "userdata"sv; - case object_type::null: - return "null"sv; - default: - // Don't fail here, since UCL might add more types that we - // don't know about. - return "unknown"sv; - } -} +export auto str(object_type type) -> std::string_view; // Concept of a UCL data type. export template @@ -69,25 +42,12 @@ concept datatype = requires(T o) { // Exception thrown when a type assertion fails. export struct type_mismatch : error { - type_mismatch(object_type expected_type, object_type actual_type) - : error(std::format("UCL type mismatch: expected type '{}' " - "!= actual type '{}'", - str(expected_type), str(actual_type))) - , _expected_type(expected_type) - , _actual_type(actual_type) - {} + type_mismatch(object_type expected_type, object_type actual_type); // The type we expected. - auto expected_type(this type_mismatch const &self) -> object_type - { - return self._expected_type; - } - + auto expected_type(this type_mismatch const &self) -> object_type; // The type we got. - auto actual_type(this type_mismatch const &self) -> object_type - { - return self._actual_type; - } + auto actual_type(this type_mismatch const &self) -> object_type; private: object_type _expected_type; -- cgit v1.2.3