source: src/AST/Type.hpp @ 881f590

ADTarm-ehast-experimentalcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since 881f590 was e0115286, checked in by Thierry Delisle <tdelisle@…>, 6 years ago

Fix a cyclic dependency with ptr and nodes

  • Property mode set to 100644
File size: 5.2 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// Type.hpp --
8//
9// Author           : Aaron B. Moss
10// Created On       : Thu May 9 10:00:00 2019
11// Last Modified By : Aaron B. Moss
12// Last Modified On : Thu May 9 10:00:00 2019
13// Update Count     : 1
14//
15
16#pragma once
17
18#include "Node.hpp"
19
20namespace ast {
21
22class Type : public Node {
23
24};
25
26
27
28//=================================================================================================
29/// This disgusting and giant piece of boiler-plate is here to solve a cyclic dependency
30/// remove only if there is a better solution
31/// The problem is that ast::ptr< ... > uses increment/decrement which won't work well with
32/// forward declarations
33inline void increment( const class Type * node, Node::ref_type ref ) { node->increment( ref ); }
34inline void decrement( const class Type * node, Node::ref_type ref ) { node->decrement( ref ); }
35inline void increment( const class VoidType * node, Node::ref_type ref ) { node->increment( ref ); }
36inline void decrement( const class VoidType * node, Node::ref_type ref ) { node->decrement( ref ); }
37inline void increment( const class BasicType * node, Node::ref_type ref ) { node->increment( ref ); }
38inline void decrement( const class BasicType * node, Node::ref_type ref ) { node->decrement( ref ); }
39inline void increment( const class PointerType * node, Node::ref_type ref ) { node->increment( ref ); }
40inline void decrement( const class PointerType * node, Node::ref_type ref ) { node->decrement( ref ); }
41inline void increment( const class ArrayType * node, Node::ref_type ref ) { node->increment( ref ); }
42inline void decrement( const class ArrayType * node, Node::ref_type ref ) { node->decrement( ref ); }
43inline void increment( const class ReferenceType * node, Node::ref_type ref ) { node->increment( ref ); }
44inline void decrement( const class ReferenceType * node, Node::ref_type ref ) { node->decrement( ref ); }
45inline void increment( const class QualifiedType * node, Node::ref_type ref ) { node->increment( ref ); }
46inline void decrement( const class QualifiedType * node, Node::ref_type ref ) { node->decrement( ref ); }
47inline void increment( const class FunctionType * node, Node::ref_type ref ) { node->increment( ref ); }
48inline void decrement( const class FunctionType * node, Node::ref_type ref ) { node->decrement( ref ); }
49inline void increment( const class ReferenceToType * node, Node::ref_type ref ) { node->increment( ref ); }
50inline void decrement( const class ReferenceToType * node, Node::ref_type ref ) { node->decrement( ref ); }
51inline void increment( const class StructInstType * node, Node::ref_type ref ) { node->increment( ref ); }
52inline void decrement( const class StructInstType * node, Node::ref_type ref ) { node->decrement( ref ); }
53inline void increment( const class UnionInstType * node, Node::ref_type ref ) { node->increment( ref ); }
54inline void decrement( const class UnionInstType * node, Node::ref_type ref ) { node->decrement( ref ); }
55inline void increment( const class EnumInstType * node, Node::ref_type ref ) { node->increment( ref ); }
56inline void decrement( const class EnumInstType * node, Node::ref_type ref ) { node->decrement( ref ); }
57inline void increment( const class TraitInstType * node, Node::ref_type ref ) { node->increment( ref ); }
58inline void decrement( const class TraitInstType * node, Node::ref_type ref ) { node->decrement( ref ); }
59inline void increment( const class TypeInstType * node, Node::ref_type ref ) { node->increment( ref ); }
60inline void decrement( const class TypeInstType * node, Node::ref_type ref ) { node->decrement( ref ); }
61inline void increment( const class TupleType * node, Node::ref_type ref ) { node->increment( ref ); }
62inline void decrement( const class TupleType * node, Node::ref_type ref ) { node->decrement( ref ); }
63inline void increment( const class TypeofType * node, Node::ref_type ref ) { node->increment( ref ); }
64inline void decrement( const class TypeofType * node, Node::ref_type ref ) { node->decrement( ref ); }
65inline void increment( const class AttrType * node, Node::ref_type ref ) { node->increment( ref ); }
66inline void decrement( const class AttrType * node, Node::ref_type ref ) { node->decrement( ref ); }
67inline void increment( const class VarArgsType * node, Node::ref_type ref ) { node->increment( ref ); }
68inline void decrement( const class VarArgsType * node, Node::ref_type ref ) { node->decrement( ref ); }
69inline void increment( const class ZeroType * node, Node::ref_type ref ) { node->increment( ref ); }
70inline void decrement( const class ZeroType * node, Node::ref_type ref ) { node->decrement( ref ); }
71inline void increment( const class OneType * node, Node::ref_type ref ) { node->increment( ref ); }
72inline void decrement( const class OneType * node, Node::ref_type ref ) { node->decrement( ref ); }
73inline void increment( const class GlobalScopeType * node, Node::ref_type ref ) { node->increment( ref ); }
74inline void decrement( const class GlobalScopeType * node, Node::ref_type ref ) { node->decrement( ref ); }
75
76}
77
78// Local Variables: //
79// tab-width: 4 //
80// mode: c++ //
81// compile-command: "make install" //
82// End: //
Note: See TracBrowser for help on using the repository browser.