ttypeBase.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include "meta/rtti.hpp"
5#include "meta/type/type.hpp"
6
7namespace by {
8
18 template <typename T, typename S = typename tmetaTypeDef<T>::is> class ttypeBase: public S {
19 typedef ttypeBase<T, S> _T;
20 BY_ME(_T, S)
21
22 public:
23 ttypeBase();
24
25 public:
26 nbool isTemplate() const override;
27 nbool isAbstract() const override;
28 void* make() const override;
29 ncnt size() const override;
30 const type& getSuper() const override;
31 const nbool& isInit() const override;
32 static const me& get();
33
34 protected:
35 types& _getSupers() override;
36 types& _getSubs() override;
37 type& _getStatic() const override;
38 types** _onGetLeafs() const override;
39 void _onAddSubClass(const type& subClass) override;
40 const std::string& _getNativeName() const override;
41
42 private:
43 ttypeBase(nbool); // for skipping recursive static variable init.
44 };
45
46 template <> class ttypeBase<void, type>: public type {
48 BY_ME(_T, type)
49
50 public:
51 ttypeBase();
52
53 public:
54 nbool isTemplate() const override;
55 nbool isAbstract() const override;
56
57 void* make() const override;
58 ncnt size() const override;
59 const type& getSuper() const override;
60
61 const nbool& isInit() const override;
62
63 static const me& get();
64
65 protected:
66 types& _getSupers() override;
67 types& _getSubs() override;
68 type& _getStatic() const override;
69 types** _onGetLeafs() const override;
70 void _onAddSubClass(const type& subClass) override;
71 const std::string& _getNativeName() const override;
72
73 private:
74 ttypeBase(nbool);
75 };
76} // namespace by
Definition: ttypeBase.hpp:46
void * make() const override
create an instance to be refered this type.
Base class for template type metadata.
Definition: ttypeBase.hpp:18
Base class for runtime type information in byeol language.
Definition: type.hpp:12