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 "util.hpp"
26
27#include <cstdint>
28#include <string>
29
30using namespace std::literals;
31using namespace steppable::__internals::utils;
32
33namespace steppable
34{
43 template<typename BaseT, StringLiteral BaseTName>
44 class Data
45 {
46 BaseT value;
47
48 public:
49 std::string getDataType() { return BaseTName.value; }
50
51 Data(const BaseT object) : value(object) {} // NOLINT(*-explicit-constructor)
52 Data() : value() {}
53
54 Data& operator=(const BaseT& object)
55 {
56 value = object;
57 return *this;
58 }
59 };
60
61 enum class _Weekday : std::uint8_t
62 {
63 Sunday = 0,
64 Monday = 1,
65 Tuesday = 2,
68 Friday = 5,
70 };
71
72 using Weekday = Data<_Weekday, StringLiteral{ "Weekday" }>;
73} // namespace steppable
Represents data that is being passed through Steppable.
Definition data.hpp:45
Data()
Definition data.hpp:52
std::string getDataType()
Definition data.hpp:49
Data(const BaseT object)
Definition data.hpp:51
Data & operator=(const BaseT &object)
Definition data.hpp:54
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:62
@ Tuesday
Tuesday.
Definition data.hpp:65
@ Monday
Monday.
Definition data.hpp:64
@ Thursday
Thursday.
Definition data.hpp:67
@ Wednesday
Wednesday.
Definition data.hpp:66
@ Saturday
Saturday.
Definition data.hpp:69
@ Sunday
Sunday.
Definition data.hpp:63
@ Friday
Friday.
Definition data.hpp:68
Data< _Weekday, StringLiteral{ "Weekday" }> Weekday
Definition data.hpp:72
String literal workaround for templates.
Definition util.hpp:226
Untitled