Skip to content
Flecs v4.1
decl.hpp
Go to the documentation of this file.
1/**
2 * @file addons/cpp/mixins/script/decl.hpp
3 * @brief Script declarations.
4 */
5
6#pragma once
7
8#include "builder.hpp"
9
10namespace flecs {
11
12/**
13 * @defgroup cpp_addons_script Script
14 * @ingroup cpp_addons
15 *
16 * @{
17 */
18
19struct script_builder;
20
21using Script = EcsScript;
22
23struct parsed_script {
24 explicit parsed_script(ecs_script_t *script = nullptr)
25 : script_(script) { }
26
27 parsed_script(const parsed_script&) = delete;
28 parsed_script& operator=(const parsed_script&) = delete;
29
30 parsed_script(parsed_script&& other) noexcept
31 : script_(other.script_)
32 {
33 other.script_ = nullptr;
34 }
35
36 parsed_script& operator=(parsed_script&& other) noexcept {
37 if (this != &other) {
38 if (script_) {
39 ecs_script_free(script_);
40 }
41 script_ = other.script_;
42 other.script_ = nullptr;
43 }
44 return *this;
45 }
46
47 ~parsed_script() {
48 if (script_) {
49 ecs_script_free(script_);
50 }
51 }
52
53 explicit operator bool() const {
54 return script_ != nullptr;
55 }
56
57 int eval(const ecs_script_eval_desc_t *desc = nullptr,
58 ecs_script_eval_result_t *result = nullptr) const
59 {
60 if (!script_) {
61 return -1;
62 }
63 return ecs_script_eval(script_, desc, result);
64 }
65
66private:
67 ecs_script_t *script_;
68};
69
70namespace script {
71namespace _ {
72
73void init(flecs::world& world);
74
75} // namespace _
76}
77
78/** @} */
79
80}
FLECS_API int ecs_script_eval(const ecs_script_t *script, const ecs_script_eval_desc_t *desc, ecs_script_eval_result_t *result)
Evaluate script.
struct EcsScript EcsScript
Script component.
FLECS_API void ecs_script_free(ecs_script_t *script)
Free script.
Script builder.
Int to enum.
Definition component.hpp:18
Used with ecs_script_parse() and ecs_script_eval().
Definition script.h:164
Used to capture error output from script evaluation.
Definition script.h:197
Script object.
Definition script.h:110
Script builder interface.
Definition builder.hpp:92
The world.
Definition world.hpp:129