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;
20class OverloadData {
21 friend CommandHandle;
22 friend CommandRegistrar;
23
24 enum class Placeholder : uint64 {};
25
26 struct Impl;
27 std::unique_ptr<Impl> impl;
28
29 void disable();
30
31protected:
32 LLNDAPI CommandRegistry::Overload::AllocFunction const& getFactory();
33 LLNDAPI std::vector<CommandParameterData>& getParams();
34 LLNDAPI CommandHandle& getHandle();
35 LLNDAPI CommandRegistrar& getRegistrar();
36 LLNDAPI std::weak_ptr<mod::Mod>& getMod();
37 LLNDAPI std::lock_guard<std::recursive_mutex> lock();
38
39 LLNDAPI char const* storeStr(std::string_view);
40
41 LLNDAPI explicit OverloadData(CommandHandle& handle, std::weak_ptr<mod::Mod> mod);
42
43 LLNDAPI CommandParameterData& back();
44
45 LLAPI CommandParameterData& addParamImpl(
47 CommandRegistry::ParseFunction parser,
48 std::string_view name,
49 CommandParameterDataType type,
50 std::string_view enumNameOrPostfix,
51 std::string_view subChain,
52 int offset,
53 int flagOffset,
54 bool optional,
55 CommandParameterOption options
56 );
57
58 LLAPI CommandParameterData& addTextImpl(std::string_view text, int offset);
59
60 LLAPI void setFactory(CommandRegistry::Overload::AllocFunction&& fn);
61
62public:
63 LLAPI ~OverloadData();
64 LLAPI OverloadData& operator=(OverloadData&&);
65 LLNDAPI OverloadData(OverloadData&&);
66};
67} // namespace ll::command
Definition typeid_t.h:39
Definition CommandParameterData.h:18
Definition CommandHandle.h:13
Definition CommandRegistrar.h:35