1#ifndef TEXTMATELIB_GRAMMAR_DEPENDENCIES_H
2#define TEXTMATELIB_GRAMMAR_DEPENDENCIES_H
16enum class IncludeReferenceKind {
21 TopLevelRepositoryReference
25struct IncludeReference {
26 IncludeReferenceKind kind;
27 std::string scopeName;
30 IncludeReference() : kind(IncludeReferenceKind::Base) {}
31 IncludeReference(IncludeReferenceKind k,
const std::string& scope =
"",
const std::string& rule =
"")
32 : kind(k), scopeName(scope), ruleName(rule) {}
36IncludeReference parseInclude(
const std::string& include);
39struct AbsoluteRuleReference {
40 std::string scopeName;
43 AbsoluteRuleReference() {}
44 AbsoluteRuleReference(
const std::string& scope,
const std::string& rule)
45 : scopeName(scope), ruleName(rule) {}
49class ScopeDependencyProcessor {
51 std::queue<AbsoluteRuleReference> Q;
55 std::string _initialScopeName;
56 std::set<std::string> _seenScopes;
59 ScopeDependencyProcessor(SyncRegistry* repo,
const std::string& initialScopeName);
Core type definitions and interfaces for TextMateLib.