CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
ConstraintVariable.hpp
Go to the documentation of this file.
1//
2// CeresEngine - A game development framework
3//
4// Created by Rogiel Sulzbach.
5// Copyright (c) 2018-2023 Rogiel Sulzbach. All rights reserved.
6//
7
8#pragma once
9
13
14#include <memory>
15#include <string>
16
18
51 private:
52 class Data;
53
56
57 public:
58 explicit ConstraintVariable(String name, Any&& context = Any()) : mData(new Data(std::move(name), std::move(context))) {}
59
62
65
67
68 public:
69 [[nodiscard]] const String& getName() const { return mData->name; }
70
71 [[nodiscard]] Any& getContext() const { return mData->context; }
72 void setContext(Any&& context) { mData->context = std::move(context); }
73
74 [[nodiscard]] double getValue() const { return mData->value; }
75 void setValue(const double value) { mData->value = value; }
76
77 // operator== is used for symbolics
78 [[nodiscard]] bool equals(const ConstraintVariable& other) { return mData == other.mData; }
79
80 public:
83
85 friend std::ostream& operator<<(std::ostream& stream, const ConstraintVariable& variable);
86
87 private:
88 class Data final : public RefCounted<Data, RefCounter<false>> {
89 public:
92 double value;
93
94 public:
96 explicit Data(const char* name, Any&& context) : name(name), context(std::move(context)), value(0.0) {}
97
98 Data(const Data& other) = delete;
99 Data& operator=(const Data& other) = delete;
100
101 ~Data() = default;
102 };
103
104 friend bool operator<(const ConstraintVariable& lhs, const ConstraintVariable& rhs) { return lhs.mData.get() < rhs.mData.get(); }
105 };
106
107} // namespace CeresEngine::Constraint
Definition Any.hpp:13
Definition ConstraintVariable.hpp:88
Data(const char *name, Any &&context)
Definition ConstraintVariable.hpp:96
Data & operator=(const Data &other)=delete
String name
Definition ConstraintVariable.hpp:90
Data(String name, Any &&context)
Definition ConstraintVariable.hpp:95
Any context
Definition ConstraintVariable.hpp:91
double value
Definition ConstraintVariable.hpp:92
A variable as used in an expression.
Definition ConstraintVariable.hpp:50
RC< Data > mData
A pointer to the shared object of the variable.
Definition ConstraintVariable.hpp:55
ConstraintVariable(String name, Any &&context=Any())
Definition ConstraintVariable.hpp:58
friend bool operator<(const ConstraintVariable &lhs, const ConstraintVariable &rhs)
Definition ConstraintVariable.hpp:104
double getValue() const
Definition ConstraintVariable.hpp:74
String toString() const
Gets a string representation of the variable.
friend std::ostream & operator<<(std::ostream &stream, const ConstraintVariable &variable)
Writes the variable to the given stream.
const String & getName() const
Definition ConstraintVariable.hpp:69
ConstraintVariable & operator=(const ConstraintVariable &)=default
void setValue(const double value)
Definition ConstraintVariable.hpp:75
void setContext(Any &&context)
Definition ConstraintVariable.hpp:72
ConstraintVariable(const ConstraintVariable &)=default
ConstraintVariable(ConstraintVariable &&) noexcept=default
bool equals(const ConstraintVariable &other)
Definition ConstraintVariable.hpp:78
Any & getContext() const
Definition ConstraintVariable.hpp:71
A retain-release type of smart pointer.
Definition SmartPtr.hpp:132
A simple reference counter base class.
Definition SmartPtr.hpp:438
Definition Constraint.hpp:22
auto move(Vector3 position)
Moves a entity to the given position.
Definition Helpers.hpp:22
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Definition Span.hpp:668