Steppable 0.0.1
A CAS project written from scratch in C++
Loading...
Searching...
No Matches
data.hpp
1/**************************************************************************************************
2 * Copyright (c) 2023-2025 NWSOFT *
3 * *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy *
5 * of this software and associated documentation files (the "Software"), to deal *
6 * in the Software without restriction, including without limitation the rights *
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell *
8 * copies of the Software, and to permit persons to whom the Software is *
9 * furnished to do so, subject to the following conditions: *
10 * *
11 * The above copyright notice and this permission notice shall be included in all *
12 * copies or substantial portions of the Software. *
13 * *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, *
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE *
20 * SOFTWARE. *
21 **************************************************************************************************/
22
23#pragma once
24
25#include <string>
26
27#include "util.hpp"
28
29using namespace std::literals;
30using namespace steppable::__internals::utils;
31
32namespace steppable
33{
34 template<typename BaseT, StringLiteral BaseTName>
35 class Data
36 {
37 BaseT value;
38
39 public:
40 std::string getDataType() { return BaseTName.value; }
41
42 Data(const BaseT object) : value(object) {} // NOLINT(*-explicit-constructor)
43 Data() : value() {}
44
45 Data& operator=(const BaseT& object)
46 {
47 value = object;
48 return *this;
49 }
50 };
51
52 enum class _Weekday : std::uint8_t
53 {
54 Sunday = 0,
55 Monday = 1,
59 Friday = 5,
61 };
62
63 using Weekday = Data<_Weekday, StringLiteral{"Weekday"}>;
64} // namespace steppable
Definition data.hpp:36
Data()
Definition data.hpp:43
std::string getDataType()
Definition data.hpp:40
Data(const BaseT object)
Definition data.hpp:42
Data & operator=(const BaseT &object)
Definition data.hpp:45
The namespace containing utility functions for the Steppable library.
Definition argParse.cpp:40
The public namespace for the Steppable library.
Definition argParse.cpp:40
_Weekday
Definition data.hpp:53
@ Tuesday
Definition data.hpp:56
@ Monday
Definition data.hpp:55
@ Thursday
Definition data.hpp:58
@ Wednesday
Definition data.hpp:57
@ Saturday
Definition data.hpp:60
@ Sunday
Definition data.hpp:54
@ Friday
Definition data.hpp:59
Data< _Weekday, StringLiteral{"Weekday"}> Weekday
Definition data.hpp:63
String literal workaround for templates.
Definition util.hpp:223
Untitled