diff options
author | Aki <please@ignore.pl> | 2024-03-26 01:45:33 +0100 |
---|---|---|
committer | Aki <please@ignore.pl> | 2024-03-26 01:49:16 +0100 |
commit | ea4c0557d0b7c2317e03d3d3aaefd6063c99f091 (patch) | |
tree | dad4634faf3c17f3642d736f62350df88c117a59 /StarsEx/ParseUtil.inl.h | |
parent | 38332f77dc1e7bb03776631101eff6e8ad8bcaef (diff) | |
download | starshatter-ea4c0557d0b7c2317e03d3d3aaefd6063c99f091.zip starshatter-ea4c0557d0b7c2317e03d3d3aaefd6063c99f091.tar.gz starshatter-ea4c0557d0b7c2317e03d3d3aaefd6063c99f091.tar.bz2 |
DWORD replaced with std::uint32_t in non-Win32-related parts
With the exception of some netcode. This brings some important questions
and solidifies me in pursuing better abstract over definitions. It might
also be a good idea to have distinct aliases or compound types for time
and (net) identifiers.
Diffstat (limited to 'StarsEx/ParseUtil.inl.h')
-rw-r--r-- | StarsEx/ParseUtil.inl.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/StarsEx/ParseUtil.inl.h b/StarsEx/ParseUtil.inl.h new file mode 100644 index 0000000..f59489b --- /dev/null +++ b/StarsEx/ParseUtil.inl.h @@ -0,0 +1,30 @@ +/* Starshatter: The Open Source Project + Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors + Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors + Copyright (c) 1997-2006, Destroyer Studios LLC. +*/ + +#include <type_traits> + +#include <starshatter/definition.h> +#include <Utils.h> + + +template <typename Number> +bool +GetDefNumber(Number& dst, TermDef* def, const char* file) +{ + static_assert(std::is_convertible<long double, Number>::value); + if (!def || !def->term()) { + Print("WARNING: missing NUMBER TermDef in '%s'\n", file); + return false; + } + TermNumber* tr = def->term()->isNumber(); + if (tr) { + dst = static_cast<Number>(tr->value()); + return true; + } + else + Print("WARNING: invalid NUMBER %s in '%s'\n", def->name()->value().data(), file); + return false; +} |