Класс std_type_t

#include <types_impl.hpp>

Граф наследования:std_type_t:

type_t Полный список членов класса

Подробное описание

Стандартная реализация интерфейса type_t.


Открытые типы

typedef std::deque< ref_base_t > ref_base_deque_t
 Тип списка базовых типов.
typedef std::map< std::string,
const base_t *, std::less<
std::string > > 
bases_map_t
 Словарь имен базовых типов.
typedef std::deque< ref_attr_t > ref_attr_deque_t
 Тип списка атрибутов.
typedef std::deque< ref_attr_deque_tattr_extension_deque_t
 Тип списка атрибутов, распределенных по расширениям.
typedef std::map< std::string,
const attr_t *, std::less<
std::string > > 
attrs_map_t
 Словарь имен атрибутов.

Открытые члены

 std_type_t (const std::string &name, bool is_builtin=false)
std_cpp_mapping_t & query_cpp_mapping ()
 Доступ к отображению типа в C++ для редактирования.
void start_extension ()
 Увеличить глубину расширений типа.
Реализация унаследованных методов.
virtual const std::string & query_name () const
 Имя типа.
virtual bool is_defined () const
 Является ли тип полностью определенным.
void make_defined ()
 Сделать тип полностью опеределенным.
virtual bool is_builtin () const
 Является ли тип встроенным типом ObjESSty?
virtual bool is_abstract () const
 Является ли тип абстрактным?
void make_abstract ()
 Сделать тип абстрактным.
virtual bool is_extensible () const
 Является ли тип расширяемым?
void make_extensible ()
 Сделать тип расширяемым.
virtual bool is_subclassing_by_extension () const
 Поддерживает ли тип subclassing_by_extension?
void turn_subclassing_by_extension_on ()
 Указать, что тип поддерживает subclassing_by_extension.
virtual bool is_derived_as_extension () const
 Произведен ли тип как раширение базового?
void add_base (const ref_base_t &ref_base)
 Добавление еще одного базового типа.
void add_base_as_extension (const ref_base_t &base)
 subclassing_by_extension.
virtual size_t query_base_count () const
 Определение общего количества базовых типов.
virtual const base_tquery_base (size_t index) const
 Доступ к базовому типу по номеру.
virtual const base_tfind_base (const std::string &name) const
 Найти базовый тип по имени.
void add_attr (const ref_attr_t &ref_attr, unsigned int extension_level)
 Добавление еще одного атрибута.
virtual size_t query_attr_count () const
 Определение общего количества атрибутов.
virtual const attr_tquery_attr (size_t index) const
 Доступ к атрибуту по номеру.
virtual const attr_tfind_attr (const std::string &name) const
 Найти атрибут по имени.
virtual const cpp_mapping_tquery_cpp_mapping () const
 Доступ к отображению типа в C++.
virtual unsigned int extension_deep () const
 Глубина определенных в типе расширений.
virtual unsigned int extension_attr_count (unsigned int extension) const
 Количество атрибутов в указанном расширении.
virtual const attr_textension_attr (unsigned int extension, unsigned int attr_index) const
 Получить атрибут по порядковому номеру в расширении.

Открытые атрибуты

std::string m_name
 Имя типа.
bool m_is_defined
 Определен ли тип?
bool m_is_builtin
 Встроенный ли тип?
bool m_is_abstract
 По-умолчанию: не абстрактный.
bool m_is_extensible
 Является ли тип расширяемым?
bool m_is_subclassing_by_extension
 Поддерживает ли тип subclassing_by_extension?
ref_base_deque_t m_bases
 Список базовый типов.
bases_map_t m_bases_map
 Для быстрой проверки наличия базового типа.
ref_attr_deque_t m_attrs
 Список атрибутов.
attr_extension_deque_t m_attr_extensions
 Список атрибутов по расширениям.
attrs_map_t m_attrs_map
 Для быстрой проверки наличия атрибута.
std_cpp_mapping_t m_cpp_mapping
 Отображение в C++.
bool m_is_derived_as_extension
 Признак того, что subclassing_by_extension уже был использован.


Определения типов

typedef std::deque< ref_attr_deque_t > attr_extension_deque_t

Тип списка атрибутов, распределенных по расширениям.

Начиная с:
v.1.2.0
Элемент с индексом 0 содержит список атрибутов, не принадлежащих ни одному из расширений.


Методы

void add_attr ( const ref_attr_t &  ref_attr,
unsigned int  extension_level 
)

Добавление еще одного атрибута.

В случае невозможности добавить атрибут в список порождается исключение.

Аргументы:
extension_level  Глубина расширения, в котором описывается атрибут. Должна совпадать с текущим значением m_extension_deep.

void add_base ( const ref_base_t &  ref_base  ) 

Добавление еще одного базового типа.

В случае невозможности добавить тип в список порождается исключение.

void add_base_as_extension ( const ref_base_t &  base  ) 

subclassing_by_extension.

Начиная с:
v.1.2.0
Допускается наличие только одного базового типа, который наследуется через расширение.

Исключения:
oess_1::ex_t в случае невозможности добавления типа.

const attr_t & extension_attr ( unsigned int  extension,
unsigned int  attr_index 
) const [virtual]

Получить атрибут по порядковому номеру в расширении.

Начиная с:
v.1.2.0
Если extension == 0, то возвращается атрибут, который не входит ни в одно из расширений.

Замещает type_t.

unsigned int extension_attr_count ( unsigned int  extension  )  const [virtual]

Количество атрибутов в указанном расширении.

Начиная с:
v.1.2.0
Если extension == 0, то возвращается количество атрибутов, которые не входят в расширения.

Замещает type_t.

unsigned int extension_deep (  )  const [virtual]

Глубина определенных в типе расширений.

Начиная с:
v.1.2.0
Возвращает:
0, если у типа нет расширений. 1, если у типа только одно расширение. 2, если у типа два вложенных друг в друга расширения и т.д.

Замещает type_t.

const attr_t * find_attr ( const std::string &  name  )  const [virtual]

Найти атрибут по имени.

Если атрибут не найден, то возвращается 0.

Замещает type_t.

const base_t * find_base ( const std::string &  name  )  const [virtual]

Найти базовый тип по имени.

Если тип не найден, то возвращается 0.

Замещает type_t.

bool is_derived_as_extension (  )  const [virtual]

Произведен ли тип как раширение базового?

Начиная с:
v.1.2.0
Возвращает:
true, если используется механизм subclassing_by_extension и данный тип произведен как расширение от своего базового.

Замещает type_t.

bool is_extensible (  )  const [virtual]

Является ли тип расширяемым?

Начиная с:
v.1.2.0

Замещает type_t.

bool is_subclassing_by_extension (  )  const [virtual]

Поддерживает ли тип subclassing_by_extension?

Начиная с:
v.1.2.0

Замещает type_t.

void make_extensible (  ) 

Сделать тип расширяемым.

Начиная с:
v.1.2.0

const attr_t & query_attr ( size_t  index  )  const [virtual]

Доступ к атрибуту по номеру.

Нумерация начинается с нуля.

Заметки:
Данная функция дает доступ к общему списку атрибутов, в который входят и все атрибуты из всех расширений. Для доступа к атрибутам из конкретного расширения нужно использовать функции extension_attr_count(), extension_attr().

Замещает type_t.

size_t query_attr_count (  )  const [virtual]

Определение общего количества атрибутов.

Заметки:
Учитываются и все атрибуты во всех расширениях.
См. также:
extension_attr_count(), extension_attr().

Замещает type_t.

const base_t & query_base ( size_t  index  )  const [virtual]

Доступ к базовому типу по номеру.

Нумерация начинается с 0.

Замещает type_t.

void start_extension (  ) 

Увеличить глубину расширений типа.

Начиная с:
v.1.2.0
После вызова данной функции все добавляемые атрибуты будут размещатся в очередное расширение.

void turn_subclassing_by_extension_on (  ) 

Указать, что тип поддерживает subclassing_by_extension.

Начиная с:
v.1.2.0


Данные класса

attr_extension_deque_t m_attr_extensions

Список атрибутов по расширениям.

Начиная с:
v.1.2.0
Элемент с индексом 0 содержит список атрибутов, не принадлежащих ни одному из расширений.

ref_attr_deque_t m_attrs

Список атрибутов.

Содержит все атрибуты, включая все атрибуты из всех расширений.

bool m_is_derived_as_extension

Признак того, что subclassing_by_extension уже был использован.

Начиная с:
v.1.2.0
Если используется subclassing_by_extension, то множественное наследование запрещено.

bool m_is_extensible

Является ли тип расширяемым?

Начиная с:
v.1.2.0
По-умолчанию не является.

bool m_is_subclassing_by_extension

Поддерживает ли тип subclassing_by_extension?

Начиная с:
v.1.2.0
Равен true, если поддерживает.

По-умолчанию не поддерживает.


Объявления и описания членов классов находятся в файлах:
Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:40 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz