Synopsis - Cross-Reference
File: /Synopsis/Parsers/Cxx/Types.cc1// 2// Copyright (C) 2002 Stephen Davies 3// Copyright (C) 2002 Stefan Seefeld 4// All rights reserved. 5// Licensed to the public under the terms of the GNU LGPL (>= 2), 6// see the file COPYING for details. 7// 8 9#include "Types.hh" 10 11using namespace Types; 12 13// 14// Class Types::Type 15// 16 17Type::Type() 18{} 19Type::~Type() 20{} 21 22void 23Type::accept(Visitor* visitor) 24{ 25 visitor->visit_type(this); 26} 27 28// 29// Class Types::Named 30// 31 32Named::Named(const ScopedName& n) 33 : m_name(n) 34{} 35 36Named::~Named() 37{} 38 39void Named::accept(Visitor* visitor) 40{ 41 visitor->visit_named(this); 42} 43 44// 45// Class Types::Base 46// 47 48Base::Base(const ScopedName& n) 49 : Named(n) 50{} 51 52 53void 54Base::accept(Visitor* visitor) 55{ 56 visitor->visit_base(this); 57} 58 59// 60// Class Types::Unknown 61// 62 63Unknown::Unknown(const ScopedName& n) 64 : Named(n) 65{} 66 67 68void 69Unknown::accept(Visitor* visitor) 70{ 71 visitor->visit_unknown(this); 72} 73 74// 75// Class Types::Dependent 76// 77 78Dependent::Dependent(const ScopedName& n) 79 : Named(n) 80{} 81 82void 83Dependent::accept(Visitor* visitor) 84{ 85 visitor->visit_dependent(this); 86} 87 88// 89// Class Types::Declared 90// 91 92Declared::Declared(const ScopedName& n, ASG::Declaration* decl) 93 : Named(n), m_decl(decl) 94{} 95 96 97void 98Declared::accept(Visitor* visitor) 99{ 100 visitor->visit_declared(this); 101} 102 103// 104// Class Types::Template 105// 106 107Template::Template(const ScopedName& n, ASG::Declaration* decl, const param_vector& params) 108 : Declared(n, decl), m_params(params) 109{} 110 111 112void 113Template::accept(Visitor* visitor) 114{ 115 visitor->visit_template_type(this); 116} 117 118// 119// Class Types::Modifier 120// 121 122Modifier::Modifier(Type* alias, const Mods& pre, const Mods& post) 123 : m_alias(alias), m_pre(pre), m_post(post) 124{} 125 126Modifier::~Modifier() 127{} 128 129void 130Modifier::accept(Visitor* visitor) 131{ 132 visitor->visit_modifier(this); 133} 134 135// 136// Class Types::Array 137// 138 139Array::Array(Type* alias, const Mods& sizes) : m_alias(alias), m_sizes(sizes) 140{} 141 142Array::~Array() 143{} 144 145void 146Array::accept(Visitor* visitor) 147{ 148 visitor->visit_array(this); 149} 150 151// 152// Class Types::Parameterized 153// 154 155Parameterized::Parameterized(Named* t, const Type::vector& params) 156 : m_template(t), m_params(params) 157{} 158 159Parameterized::~Parameterized() 160{} 161 162void 163Parameterized::accept(Visitor* visitor) 164{ 165 visitor->visit_parameterized(this); 166} 167 168// 169// Class Types::FuncPtr 170// 171 172FuncPtr::FuncPtr(Type::Type* ret, const Mods& premods, const Type::vector& params) 173 : m_return(ret), m_premod(premods), m_params(params) 174{} 175 176FuncPtr::~FuncPtr() 177{} 178 179void 180FuncPtr::accept(Visitor* visitor) 181{ 182 visitor->visit_func_ptr(this); 183} 184 185// 186// Type::Visitor 187// 188 189Visitor::~Visitor() 190{} 191void Visitor::visit_type(Type*) 192{} 193void Visitor::visit_unknown(Unknown* t) 194{ 195 visit_type(t); 196} 197void Visitor::visit_base(Base* t) 198{ 199 visit_named(t); 200} 201void Visitor::visit_dependent(Dependent* t) 202{ 203 visit_named(t); 204} 205void Visitor::visit_declared(Declared* t) 206{ 207 visit_named(t); 208} 209void Visitor::visit_modifier(Modifier* t) 210{ 211 visit_type(t); 212} 213void Visitor::visit_array(Array* t) 214{ 215 visit_type(t); 216} 217void Visitor::visit_named(Named* t) 218{ 219 visit_type(t); 220} 221void Visitor::visit_template_type(Template* t) 222{ 223 visit_declared(t); 224} 225void Visitor::visit_parameterized(Parameterized* t) 226{ 227 visit_type(t); 228} 229void Visitor::visit_func_ptr(FuncPtr* t) 230{ 231 visit_type(t); 232} 233 234// exception wrong_type_cast 235const char* wrong_type_cast::what() const throw() 236{ 237 return "Type::wrong_type_cast"; 238} 239// vim: set ts=8 sts=4 sw=4 et: