source: src/AST/Fwd.hpp @ 956b389

Last change on this file since 956b389 was fca78f1, checked in by Andrew Beach <ajbeach@…>, 3 months ago

Added ForeachStmt? (felt better than ForEachStmt?). This new node is a bit optimistic in that currently it is covering a very narrow case, but with improvements to it and RangeExpr?, it could handle many more kind of loops.

  • Property mode set to 100644
File size: 3.3 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// Fwd.hpp -- Forward declarations of AST Types.
8//
9// Author           : Andrew Beach
10// Created On       : Wed May  8 16:05:00 2019
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Tue Feb  1 09:08:33 2022
13// Update Count     : 5
14//
15
16#pragma once
17
18template<typename> struct bitfield;
19
20#include "AST/Node.hpp"
21
22namespace ast {
23
24class ParseNode;
25
26class Decl;
27class DeclWithType;
28class ObjectDecl;
29class FunctionDecl;
30class AggregateDecl;
31class StructDecl;
32class UnionDecl;
33class EnumDecl;
34class TraitDecl;
35class NamedTypeDecl;
36class TypeDecl;
37class TypedefDecl;
38class AsmDecl;
39class DirectiveDecl;
40class StaticAssertDecl;
41class InlineMemberDecl;
42
43class Stmt;
44class CompoundStmt;
45class ExprStmt;
46class AsmStmt;
47class DirectiveStmt;
48class IfStmt;
49class WhileDoStmt;
50class ForStmt;
51class ForeachStmt;
52class SwitchStmt;
53class CaseClause;
54class BranchStmt;
55class ReturnStmt;
56class ThrowStmt;
57class TryStmt;
58class CatchClause;
59class FinallyClause;
60class SuspendStmt;
61class WhenClause;
62class WaitForStmt;
63class WaitForClause;
64class WaitUntilStmt;
65class WithStmt;
66class DeclStmt;
67class NullStmt;
68class ImplicitCtorDtorStmt;
69class MutexStmt;
70class CorunStmt;
71class CoforStmt;
72
73class Expr;
74class ApplicationExpr;
75class UntypedExpr;
76class NameExpr;
77class QualifiedNameExpr;
78class AddressExpr;
79class LabelAddressExpr;
80class CastExpr;
81class KeywordCastExpr;
82class VirtualCastExpr;
83class MemberExpr;
84class UntypedMemberExpr;
85class VariableExpr;
86class ConstantExpr;
87class SizeofExpr;
88class CountExpr;
89class AlignofExpr;
90class UntypedOffsetofExpr;
91class OffsetofExpr;
92class OffsetPackExpr;
93class LogicalExpr;
94class ConditionalExpr;
95class CommaExpr;
96class TypeExpr;
97class DimensionExpr;
98class AsmExpr;
99class ImplicitCopyCtorExpr;
100class ConstructorExpr;
101class CompoundLiteralExpr;
102class RangeExpr;
103class UntypedTupleExpr;
104class TupleExpr;
105class TupleIndexExpr;
106class TupleAssignExpr;
107class StmtExpr;
108class UniqueExpr;
109class UntypedInitExpr;
110class InitExpr;
111class DeletedExpr;
112class DefaultArgExpr;
113class GenericExpr;
114
115class Type;
116class VoidType;
117class BasicType;
118class PointerType;
119class ArrayType;
120class ReferenceType;
121class QualifiedType;
122class FunctionType;
123class BaseInstType;
124template<typename decl_t> class SueInstType;
125using StructInstType = SueInstType<StructDecl>;
126using UnionInstType = SueInstType<UnionDecl>;
127using EnumInstType = SueInstType<EnumDecl>;
128class TraitInstType;
129class TypeInstType;
130class TupleType;
131class TypeofType;
132class VTableType;
133class VarArgsType;
134class ZeroType;
135class OneType;
136class GlobalScopeType;
137
138class Designation;
139class Init;
140class SingleInit;
141class ListInit;
142class ConstructorInit;
143
144class Label;
145
146class Attribute;
147
148class SymbolTable;
149class TypeEnvironment;
150class TypeSubstitution;
151
152typedef unsigned int UniqueId;
153
154class TranslationUnit;
155class TranslationGlobal;
156
157// For the following types, only use the using type.
158namespace CV {
159        struct qualifier_flags;
160        using Qualifiers = bitfield<qualifier_flags>;
161}
162namespace Function {
163        struct spec_flags;
164        using Specs = bitfield<spec_flags>;
165}
166namespace Storage {
167        struct class_flags;
168        using Classes = bitfield<class_flags>;
169}
170namespace Linkage {
171        struct spec_flags;
172        using Spec = bitfield<spec_flags>;
173}
174
175}
Note: See TracBrowser for help on using the repository browser.