source: src/AST/Fwd.hpp @ 08e0d65

Last change on this file since 08e0d65 was 525f7ad, checked in by JiadaL <j82liang@…>, 5 months ago
  1. Add count_e( enum_name ), a pseudo function that return the number of element in an enum; 2. Implementation of enum range loop.
  • Property mode set to 100644
File size: 3.3 KB
RevLine 
[ee7a29f]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
[2d019af]11// Last Modified By : Peter A. Buhr
[3b0bc16]12// Last Modified On : Tue Feb  1 09:08:33 2022
13// Update Count     : 5
[ee7a29f]14//
15
16#pragma once
17
[257a8f5]18template<typename> struct bitfield;
19
[e0115286]20#include "AST/Node.hpp"
21
[ee7a29f]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;
[2d019af]39class DirectiveDecl;
[ee7a29f]40class StaticAssertDecl;
[71806e0]41class InlineMemberDecl;
[ee7a29f]42
43class Stmt;
44class CompoundStmt;
45class ExprStmt;
46class AsmStmt;
47class DirectiveStmt;
48class IfStmt;
[3b0bc16]49class WhileDoStmt;
[ee7a29f]50class ForStmt;
51class SwitchStmt;
[400b8be]52class CaseClause;
[ee7a29f]53class BranchStmt;
54class ReturnStmt;
55class ThrowStmt;
56class TryStmt;
[400b8be]57class CatchClause;
58class FinallyClause;
[37cdd97]59class SuspendStmt;
[c86b08d]60class WhenClause;
[ee7a29f]61class WaitForStmt;
[f6e6a55]62class WaitForClause;
[c86b08d]63class WaitUntilStmt;
[ee7a29f]64class WithStmt;
65class DeclStmt;
66class NullStmt;
67class ImplicitCtorDtorStmt;
[6cebfef]68class MutexStmt;
[eb779d5]69class CorunStmt;
[3d9d017]70class CoforStmt;
[ee7a29f]71
72class Expr;
73class ApplicationExpr;
74class UntypedExpr;
75class NameExpr;
[b0d9ff7]76class QualifiedNameExpr;
[ee7a29f]77class AddressExpr;
78class LabelAddressExpr;
79class CastExpr;
80class KeywordCastExpr;
81class VirtualCastExpr;
82class MemberExpr;
83class UntypedMemberExpr;
84class VariableExpr;
85class ConstantExpr;
86class SizeofExpr;
[525f7ad]87class CountExpr;
[ee7a29f]88class AlignofExpr;
89class UntypedOffsetofExpr;
90class OffsetofExpr;
91class OffsetPackExpr;
92class LogicalExpr;
93class ConditionalExpr;
94class CommaExpr;
95class TypeExpr;
[4ec9513]96class DimensionExpr;
[ee7a29f]97class AsmExpr;
98class ImplicitCopyCtorExpr;
99class ConstructorExpr;
100class CompoundLiteralExpr;
101class RangeExpr;
102class UntypedTupleExpr;
103class TupleExpr;
104class TupleIndexExpr;
105class TupleAssignExpr;
106class StmtExpr;
107class UniqueExpr;
108class UntypedInitExpr;
109class InitExpr;
110class DeletedExpr;
111class DefaultArgExpr;
112class GenericExpr;
113
114class Type;
115class VoidType;
116class BasicType;
117class PointerType;
118class ArrayType;
119class ReferenceType;
120class QualifiedType;
121class FunctionType;
[98e8b3b]122class BaseInstType;
[923d25a]123template<typename decl_t> class SueInstType;
124using StructInstType = SueInstType<StructDecl>;
125using UnionInstType = SueInstType<UnionDecl>;
126using EnumInstType = SueInstType<EnumDecl>;
[ee7a29f]127class TraitInstType;
128class TypeInstType;
129class TupleType;
130class TypeofType;
[3945abe]131class VTableType;
[ee7a29f]132class VarArgsType;
133class ZeroType;
134class OneType;
135class GlobalScopeType;
136
137class Designation;
138class Init;
139class SingleInit;
140class ListInit;
141class ConstructorInit;
142
143class Label;
144
145class Attribute;
146
[fb2bde4]147class SymbolTable;
148class TypeEnvironment;
[ee7a29f]149class TypeSubstitution;
150
151typedef unsigned int UniqueId;
152
[1f7dc61]153class TranslationUnit;
[39d8950]154class TranslationGlobal;
[490fb92e]155
[257a8f5]156// For the following types, only use the using type.
157namespace CV {
158        struct qualifier_flags;
159        using Qualifiers = bitfield<qualifier_flags>;
160}
161namespace Function {
162        struct spec_flags;
163        using Specs = bitfield<spec_flags>;
164}
165namespace Storage {
166        struct class_flags;
167        using Classes = bitfield<class_flags>;
168}
169namespace Linkage {
170        struct spec_flags;
171        using Spec = bitfield<spec_flags>;
172}
173
[ee7a29f]174}
Note: See TracBrowser for help on using the repository browser.