nany
classdef-table-view.h
1 #pragma once
2 #include "classdef-table.h"
3 #include "details/atom/atom-map.h"
4 
5 
6 namespace ny {
7 
8 
9 struct ClassdefTableView final {
11  ClassdefTableView(ClassdefTableView&);
12  ClassdefTableView(ClassdefTableView&, uint32_t atomid, uint count);
13  ~ClassdefTableView();
14 
15  const Classdef& classdef(const CLID&) const;
16  const Classdef& classdefFollowClassMember(const CLID&) const;
17  const Classdef& rawclassdef(const CLID&) const;
18  bool hasClassdef(const CLID& clid) const;
19 
20  Atom* findClassdefAtom(const Classdef& classdef) const;
21  Atom* findRawClassdefAtom(const Classdef&) const;
22 
27  AnyString keyword(const Atom&) const;
28 
29 
31  bool hasSubstitute(const CLID&) const;
33  Classdef& substitute(uint32_t);
35  Classdef& addSubstitute(nytype_t kind, Atom* atom, const Qualifiers& qualifiers);
36 
38  uint32_t substituteAtomID() const;
39 
41  void substituteResize(uint count);
42 
43  void mergeSubstitutes();
44 
46 
47  const AtomMap& atoms() const;
48  AtomMap& atoms();
50 
51 
53 
54  void print(Yuni::String& out, bool clearBefore = true) const;
57  void printClassdef(Yuni::String& out, const CLID&, const Classdef&) const;
59 
60 
62  const ClassdefTable& originalTable() const;
65 
66 
67 private:
68  ClassdefTable& table;
69  ClassdefTable::LayerItem previous;
70  bool canSwap = false;
71 };
72 
73 
74 } // namespace ny
75 
76 #include "classdef-table-view.hxx"
void print(Yuni::String &out, bool clearBefore=true) const
Print all types.
Definition: classdef-table-view.cpp:39
Definition: clid.h:11
Class definition.
Definition: classdef.h:24
Definition: ast.cpp:6
Definition: classdef-table.h:19
Classdef & addSubstitute(nytype_t kind, Atom *atom, const Qualifiers &qualifiers)
Append a new substitute.
Definition: classdef-table-view.hxx:84
Atoms.
Definition: atom-map.h:17
Definition of a single class or function.
Definition: atom.h:37
uint32_t substituteAtomID() const
Get the atom id of the current layer.
Definition: classdef-table-view.hxx:89
void substituteResize(uint count)
Resize the substitutes for the current layer.
Definition: classdef-table-view.hxx:94
Classdef & substitute(uint32_t)
Create a new substiture in the current layer.
Definition: classdef-table-view.hxx:78
AnyString keyword(const Atom &) const
Get the keyword associated to an atom (class, func, var, cref, namespace...)
Definition: classdef-table-view.hxx:40
bool hasSubstitute(const CLID &) const
Get if the current view has a substitute for a given CLID.
Definition: classdef-table-view.hxx:73
Definition: qualifiers.h:9
void printClassdef(Yuni::String &out, const CLID &, const Classdef &) const
Print a single type.
Definition: classdef-table-view.cpp:14
Definition: classdef-table-view.h:9
const ClassdefTable & originalTable() const
The original table (const)
Definition: classdef-table-view.hxx:113