1 // =================================
 2 // Copyright (c) 2020 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 #include <sngcm/cmparser/ParsingContext.hpp>
 7 
 8 ParsingContext::ParsingContext() :
 9     parsingExpressionStatement(false)parsingLvalue(false)parsingArguments(false)parsingIsOrAs(false)parsingTypeExpr(false)parsingConcept(false)parsingTemplateId(false)
10 {
11 }
12 
13 void ParsingContext::PushParsingExpressionStatement(bool enable)
14 {
15     parsingExpressionStatementStack.push(parsingExpressionStatement);
16     parsingExpressionStatement = enable;
17 }
18 
19 void ParsingContext::PopParsingExpressionStatement()
20 {
21     parsingExpressionStatement = parsingExpressionStatementStack.top();
22     parsingExpressionStatementStack.pop();
23 }
24 
25 void ParsingContext::PushParsingLvalue(bool enable)
26 {
27     parsingLvalueStack.push(parsingLvalue);
28     parsingLvalue = enable;
29 }
30 
31 void ParsingContext::PopParsingLvalue()
32 {
33     parsingLvalue = parsingLvalueStack.top();
34     parsingLvalueStack.pop();
35 }
36 
37 void ParsingContext::BeginParsingArguments()
38 {
39     parsingArgumentsStack.push(parsingArguments);
40     parsingArguments = true;
41 }
42 
43 void ParsingContext::EndParsingArguments()
44 {
45     parsingArguments = parsingArgumentsStack.top();
46     parsingArgumentsStack.pop();
47 }
48 
49 void ParsingContext::PushParsingIsOrAs(bool enable)
50 {
51     parsingIsOrAsStack.push(parsingIsOrAs);
52     parsingIsOrAs = enable;
53 }
54 
55 void ParsingContext::PopParsingIsOrAs()
56 {
57     parsingIsOrAs = parsingIsOrAsStack.top();
58     parsingIsOrAsStack.pop();
59 }
60 
61 void ParsingContext::BeginParsingTypeExpr()
62 {
63     parsingTypeExprStack.push(parsingTypeExpr);
64     parsingTypeExpr = true;
65 }
66 
67 void ParsingContext::EndParsingTypeExpr()
68 {
69     parsingTypeExpr = parsingTypeExprStack.top();
70     parsingTypeExprStack.pop();
71 }
72 
73 void ParsingContext::BeginParsingConcept()
74 {
75     parsingConceptStack.push(parsingConcept);
76     parsingConcept = true;
77 }
78 
79 void ParsingContext::EndParsingConcept()
80 {
81     parsingConcept = parsingConceptStack.top();
82     parsingConceptStack.pop();
83 }
84 
85 void ParsingContext::BeginParsingTemplateId()
86 {
87     parsingTemplateIdStack.push(parsingTemplateId);
88     parsingTemplateId = true;
89 }
90 
91 void ParsingContext::EndParsingTemplateId()
92 {
93     parsingTemplateId = parsingTemplateIdStack.top();
94     parsingTemplateIdStack.pop();
95 }