summaryrefslogtreecommitdiff
path: root/src/mmo/version.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mmo/version.hpp')
-rw-r--r--src/mmo/version.hpp86
1 files changed, 44 insertions, 42 deletions
diff --git a/src/mmo/version.hpp b/src/mmo/version.hpp
index 11bab39..440dce6 100644
--- a/src/mmo/version.hpp
+++ b/src/mmo/version.hpp
@@ -1,5 +1,4 @@
-#ifndef TMWA_MMO_VERSION_HPP
-#define TMWA_MMO_VERSION_HPP
+#pragma once
// version.hpp - Prevent mass rebuild when conf/version.hpp changes.
//
// Copyright © ????-2004 Athena Dev Teams
@@ -21,20 +20,24 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
-# include "../sanity.hpp"
+#include "fwd.hpp"
-# include <cstdint>
+#include <cstdint>
-# include "../strings/fwd.hpp"
+#include "../strings/fwd.hpp"
+
+namespace tmwa
+{
// TODO make these bitwise enums
-# define TMWA_FLAG_REGISTRATION 0x01
+#define TMWA_FLAG_REGISTRATION 0x01
-# define TMWA_SERVER_LOGIN 0x01
-# define TMWA_SERVER_CHAR 0x02
-# define TMWA_SERVER_INTER 0x04
-# define TMWA_SERVER_MAP 0x08
+#define TMWA_SERVER_LOGIN 0x01
+#define TMWA_SERVER_CHAR 0x02
+#define TMWA_SERVER_INTER 0x04
+#define TMWA_SERVER_MAP 0x08
+// TODO now that I generate the protocol, split 'flags' out of the struct
struct Version
{
uint8_t major;
@@ -46,6 +49,35 @@ struct Version
uint8_t which;
uint16_t vend;
// can't add vendor name yet
+
+ constexpr friend
+ bool operator < (Version l, Version r)
+ {
+ return (l.major < r.major
+ || (l.major == r.major
+ && (l.minor < r.minor
+ || (l.minor == r.minor
+ && (l.patch < r.patch
+ || (l.patch == r.patch
+ && (l.devel < r.devel
+ || (l.devel == r.devel
+ && l.vend < r.vend))))))));
+ }
+ constexpr friend
+ bool operator > (Version l, Version r)
+ {
+ return r < l;
+ }
+ constexpr friend
+ bool operator <= (Version l, Version r)
+ {
+ return !(r < l);
+ }
+ constexpr friend
+ bool operator >= (Version l, Version r)
+ {
+ return !(l < r);
+ }
};
static_assert(sizeof(Version) == 8, "this is sent over the network, can't change");
@@ -55,37 +87,7 @@ extern Version CURRENT_LOGIN_SERVER_VERSION;
extern Version CURRENT_CHAR_SERVER_VERSION;
extern Version CURRENT_MAP_SERVER_VERSION;
-extern const char CURRENT_VERSION_STRING[];
+extern LString CURRENT_VERSION_STRING;
bool extract(XString str, Version *vers);
-
-constexpr
-bool operator < (Version l, Version r)
-{
- return (l.major < r.major
- || (l.major == r.major
- && (l.minor < r.minor
- || (l.minor == r.minor
- && (l.patch < r.patch
- || (l.patch == r.patch
- && (l.devel < r.devel
- || (l.devel == r.devel
- && l.vend < r.vend))))))));
-}
-constexpr
-bool operator > (Version l, Version r)
-{
- return r < l;
-}
-constexpr
-bool operator <= (Version l, Version r)
-{
- return !(r < l);
-}
-constexpr
-bool operator >= (Version l, Version r)
-{
- return !(l < r);
-}
-
-#endif // TMWA_MMO_VERSION_HPP
+} // namespace tmwa