plugify 1.2.8
Loading...
Searching...
No Matches
property.hpp
1#pragma once
2
3#include <memory>
4#include <optional>
5#include <string>
6#include <vector>
7
8#include "plugify/global.h"
9#include "plugify/value_type.hpp"
10
11namespace plugify {
12 class EnumObject;
13 class Method;
14
15 // Property Class
16 class PLUGIFY_API Property {
17 public:
18 Property();
19 ~Property();
20 Property(const Property& other);
21 Property(Property&& other) noexcept;
22 Property& operator=(const Property& other);
23 Property& operator=(Property&& other) noexcept;
24
25 // Getters
26 [[nodiscard]] ValueType GetType() const noexcept;
27 [[nodiscard]] bool IsRef() const noexcept;
28 [[nodiscard]] const Method* GetPrototype() const noexcept;
29 [[nodiscard]] const EnumObject* GetEnumerate() const noexcept;
30
31 // Setters (pass by value and move)
32 void SetType(ValueType type);
33 void SetRef(bool ref);
34 void SetPrototype(Method prototype);
35 void SetEnumerate(EnumObject enumerate);
36
37 [[nodiscard]] bool operator==(const Property& other) const noexcept;
38 [[nodiscard]] auto operator<=>(const Property& other) const noexcept;
39
40 PLUGIFY_ACCESS : struct Impl;
41 PLUGIFY_NO_DLL_EXPORT_WARNING(std::unique_ptr<Impl> _impl;)
42 };
43}