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