librime 1.2
Rime Input Method Engine, the core library
config_compiler_impl.h
Go to the documentation of this file.
1//
2// Copyright RIME Developers
3// Distributed under the BSD License
4//
5#ifndef RIME_CONFIG_COMPILER_IMPL_H_
6#define RIME_CONFIG_COMPILER_IMPL_H_
7
8#include <ostream>
9#include <rime/common.h>
12
13namespace rime {
14
18 kPatch = 2,
19};
20
21struct Dependency {
23
24 virtual DependencyPriority priority() const = 0;
25 bool blocking() const { return priority() > kPendingChild; }
26 virtual string repr() const = 0;
28 this->target = target;
29 return *this;
30 }
31 virtual bool Resolve(ConfigCompiler* compiler) = 0;
32};
33
34std::ostream& operator<<(std::ostream& stream, const Dependency& dependency);
35
37 string child_path;
39
40 PendingChild(const string& path, const an<ConfigItemRef>& ref)
41 : child_path(path), child_ref(ref) {}
42 DependencyPriority priority() const override { return kPendingChild; }
43 string repr() const override { return "PendingChild(" + child_path + ")"; }
44 bool Resolve(ConfigCompiler* compiler) override;
45};
46
49
51 DependencyPriority priority() const override { return kInclude; }
52 string repr() const override { return "Include(" + reference.repr() + ")"; }
53 bool Resolve(ConfigCompiler* compiler) override;
54};
55
58
60 DependencyPriority priority() const override { return kPatch; }
61 string repr() const override { return "Patch(" + reference.repr() + ")"; }
62 bool Resolve(ConfigCompiler* compiler) override;
63};
64
67
69 DependencyPriority priority() const override { return kPatch; }
70 string repr() const override { return "Patch(<literal>)"; }
71 bool Resolve(ConfigCompiler* compiler) override;
72};
73
74} // namespace rime
75
76#endif // RIME_CONFIG_COMPILER_IMPL_H_
Definition algebra.cc:12
std::shared_ptr< T > an
Definition common.h:60
DependencyPriority
Definition config_compiler_impl.h:15
@ kInclude
Definition config_compiler_impl.h:17
@ kPendingChild
Definition config_compiler_impl.h:16
@ kPatch
Definition config_compiler_impl.h:18
std::ostream & operator<<(std::ostream &stream, const Reference &reference)
Definition config_compiler.cc:12
Definition common.h:84
Definition config_compiler.h:26
string repr() const
Definition config_compiler.cc:49
Definition config_compiler.h:41
Definition config_compiler_impl.h:21
Dependency & TargetedAt(an< ConfigItemRef > target)
Definition config_compiler_impl.h:27
an< ConfigItemRef > target
Definition config_compiler_impl.h:22
virtual DependencyPriority priority() const =0
virtual string repr() const =0
virtual bool Resolve(ConfigCompiler *compiler)=0
bool blocking() const
Definition config_compiler_impl.h:25
string child_path
Definition config_compiler_impl.h:37
bool Resolve(ConfigCompiler *compiler) override
Definition config_compiler.cc:53
PendingChild(const string &path, const an< ConfigItemRef > &ref)
Definition config_compiler_impl.h:40
an< ConfigItemRef > child_ref
Definition config_compiler_impl.h:38
DependencyPriority priority() const override
Definition config_compiler_impl.h:42
string repr() const override
Definition config_compiler_impl.h:43
string repr() const override
Definition config_compiler_impl.h:52
bool Resolve(ConfigCompiler *compiler) override
Definition config_compiler.cc:62
IncludeReference(const Reference &r)
Definition config_compiler_impl.h:50
Reference reference
Definition config_compiler_impl.h:48
DependencyPriority priority() const override
Definition config_compiler_impl.h:51
PatchReference(const Reference &r)
Definition config_compiler_impl.h:59
bool Resolve(ConfigCompiler *compiler) override
Definition config_compiler.cc:78
DependencyPriority priority() const override
Definition config_compiler_impl.h:60
Reference reference
Definition config_compiler_impl.h:57
string repr() const override
Definition config_compiler_impl.h:61
an< ConfigMap > patch
Definition config_compiler_impl.h:66
PatchLiteral(an< ConfigMap > map)
Definition config_compiler_impl.h:68
string repr() const override
Definition config_compiler_impl.h:70
DependencyPriority priority() const override
Definition config_compiler_impl.h:69
bool Resolve(ConfigCompiler *compiler) override
Definition config_compiler.cc:208