1 #ifndef TEMPLATE_HPP
2 #define TEMPLATE_HPP
3 #include <sngcm/cmparser/ParserApi.hpp>
4 #include <sngcm/ast/Template.hpp>
5 #include <sngcm/cmparser/Identifier.hpp>
6 #include <sngcm/cmparser/TypeExpr.hpp>
7 #include <sngcm/cmparser/ParsingContext.hpp>
8 #include <soulng/lexer/Token.hpp>
9 #include <soulng/parser/Match.hpp>
10 #include <soulng/parser/Value.hpp>
11
12
13
14 class CmajorLexer;
15
16 struct TemplateParser
17 {
18 static soulng::parser::Match TemplateId(CmajorLexer& lexer, boost::uuids::uuid* moduleId, ParsingContext* ctx);
19 static soulng::parser::Match TemplateParameter(CmajorLexer& lexer, boost::uuids::uuid* moduleId, ParsingContext* ctx);
20 static soulng::parser::Match TemplateParameterList(CmajorLexer& lexer, boost::uuids::uuid* moduleId, ParsingContext* ctx, sngcm::ast::Node* owner);
21 static soulng::parser::Match InstantiationRequest(CmajorLexer& lexer, boost::uuids::uuid* moduleId, ParsingContext* ctx);
22 };
23
24 #endif // TEMPLATE_HPP