LeviLamina
Loading...
Searching...
No Matches
OverloadData.h
1#pragma once
2
3#include <string>
4#include <string_view>
5#include <utility>
6#include <vector>
7
8#include "ll/api/base/Macro.h"
9#include "ll/api/base/StdInt.h"
10#include "ll/api/mod/NativeMod.h"
11
12#include "mc/deps/core/utility/typeid_t.h"
13#include "mc/server/commands/CommandParameterData.h"
14#include "mc/server/commands/CommandParameterDataType.h"
15#include "mc/server/commands/CommandRegistry.h"
16
17namespace ll::command {
18class CommandHandle;
19class CommandRegistrar;
21 friend CommandHandle;
22 friend CommandRegistrar;
23
24 enum class Placeholder : uint64 {};
25
26 struct Impl;
27 std::unique_ptr<Impl> impl;
28
29protected:
30 LLNDAPI CommandRegistry::Overload::AllocFunction const& getFactory();
31 LLNDAPI std::vector<CommandParameterData>& getParams();
32 LLNDAPI CommandHandle& getHandle();
33 LLNDAPI std::weak_ptr<mod::Mod>& getMod();
34 LLNDAPI std::lock_guard<std::recursive_mutex> lock();
35
36 LLNDAPI char const* storeStr(std::string_view);
37
38 LLNDAPI explicit OverloadData(CommandHandle& handle, std::weak_ptr<mod::Mod> mod);
39
40 LLNDAPI CommandParameterData& back();
41
42 LLAPI CommandParameterData& addParamImpl(
44 CommandRegistry::ParseFunction parser,
45 std::string_view name,
46 CommandParameterDataType type,
47 std::string_view enumNameOrPostfix,
48 std::string_view subChain,
49 int offset,
50 int flagOffset,
51 bool optional,
52 CommandParameterOption options
53 );
54
55 LLAPI CommandParameterData& addTextImpl(std::string_view text, int offset);
56
57 LLAPI void setFactory(CommandRegistry::Overload::AllocFunction&& fn);
58
59public:
60 LLAPI ~OverloadData();
61 LLAPI OverloadData& operator=(OverloadData&&);
62 LLNDAPI OverloadData(OverloadData&&);
63};
64} // namespace ll::command
Definition typeid_t.h:25
Definition CommandParameterData.h:17
Definition copyable_function.h:8
Definition CommandHandle.h:13
Definition CommandRegistrar.h:32
Definition OverloadData.h:20