Класс so_4::rt::impl::std_class_relation_handler_t

Граф наследования:so_4::rt::impl::std_class_relation_handler_t:

so_4::rt::impl::class_relation_handler_t

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


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

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

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

enum  state_t { state_not_processed, state_invalid, state_valid }
 Состояние класса. Подробнее...
typedef std::map< std::string,
class_info_t
class_info_map_t
 Тип словаря описаний классов.
typedef std::map< std::string,
const msg_handler_impl_t * > 
msg_handler_map_t
 Тип словаря описаний сообщений.
typedef std::map< std::string,
const evt_handler_impl_t * > 
evt_handler_map_t
 Тип словаря описаний событий.
typedef std::map< std::string,
state_handler_impl_t * > 
state_handler_map_t
 Тип словаря описаний состояний.

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

virtual void changed ()
 Установить признак того, что системный словарь изменился.
virtual bool check (const class_map_t &map_to_rebuild, const std::string &class_name, std::string &reason_desc)

Закрытые члены

void update (const class_map_t &map_to_rebuild)
 Реакция на изменение списка классов.
void process_content (const class_map_t &map_to_rebuild)
 Полная обработка текущего содержимого.
int try_merge_states (const class_handler_impl_t &class_handler, const class_map_t &all_classes, std::string &error_desc)
 Попытка слияния описаний состояний.
int calc_bases_state (const class_handler_impl_t &class_handler, const class_map_t &all_classes, std::string &invalid_base_name, std::string &error_desc)
 Вычисление общего состояния базовых классов.
void calc_class_state (class_handler_impl_t &class_handler, const class_map_t &all_classes, class_info_t &class_info)
 Вычисление состояние класса.
int build_all_msg_list (class_handler_impl_t &class_handler, const class_map_t &all_classes, std::string &reason_desc)
 Построение полного списка сообщений.
int build_all_evt_list (class_handler_impl_t &class_handler, const class_map_t &all_classes, std::string &reason_desc)
 Построение полного списка событий.
int build_all_state_list (class_handler_impl_t &class_handler, const class_map_t &all_classes, std::string &reason_desc)
 Построение полного списка состояний.
int detect_initial_state (class_handler_impl_t &class_handler, const class_map_t &all_classes, std::string &reason_desc)
 Определение начального состояния.
bool query_full_evt_map (const class_handler_impl_t &class_handler, const class_map_t &all_classes, evt_handler_map_t &result, std::string &conflict_evt_name)
 Получение словаря всех событий класса, включая унаследованные.
bool query_full_state_map (const class_handler_impl_t &class_handler, const class_map_t &all_classes, state_handler_map_t &result, std::string &conflict_state_name)
 Получение словаря всех состояний класса, включая унаследованные.
int check_all_state_events (const state_handler_map_t &states, const evt_handler_impl_ptr_vector_t &, std::string &reason_desc)
 Проверка того, что в всех состояниях агента описаны только известные события.

Закрытые статические члены

static void msg_vect_to_msg_map (const msg_handler_impl_ptr_vector_t &v, msg_handler_map_t &m)
 Вспомогательный метод.
static void msg_map_to_msg_vect (const msg_handler_map_t &m, msg_handler_impl_ptr_vector_t &v)
 Вспомогательный метод.
static void evt_vect_to_evt_map (const evt_handler_impl_ptr_vector_t &v, evt_handler_map_t &m)
 Вспомогательный метод.
static void evt_map_to_evt_vect (const evt_handler_map_t &m, evt_handler_impl_ptr_vector_t &v)
 Вспомогательный метод.
static void state_vect_to_state_map (const state_handler_impl_ptr_vector_t &v, state_handler_map_t &m)
 Вспомогательный метод.
static void state_map_to_state_vect (const state_handler_map_t &m, state_handler_impl_ptr_vector_t &v)
 Вспомогательный метод.

Закрытые данные

class_info_map_t m_classes
 Описания существующих в словаре системы классов.
bool m_is_correct
 Признак того, что мы содержим корректную информацию.

Классы

struct  class_info_t
 Описание одного класса. Подробнее...

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

Тип словаря описаний классов.

В качестве ключа используется имя класса.

Тип словаря описаний сообщений.

Необходим для формирования полного списка сообщений.

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

Тип словаря описаний событий.

Необходим для формирования полного списка событий.

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

Тип словаря описаний состояний.

Необходим для формирования полного списка состояний.

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


Перечисления

Состояние класса.

Элементы перечислений:
state_not_processed  Класс еще не обработан.
state_invalid  Класс обработан и признан некорректным.
state_valid  Класс обработан и признан корректным.


Методы

bool so_4::rt::impl::std_class_relation_handler_t::check ( const class_map_t &  map_to_rebuild,
const std::string &  class_name,
std::string &  reason_desc 
) [virtual]

Если мы содержим не корректную информацию, то информация перестраивается.

Замещает so_4::rt::impl::class_relation_handler_t.

Перекрестные ссылки m_classes, m_is_correct, state_valid и update().

void so_4::rt::impl::std_class_relation_handler_t::update ( const class_map_t &  map_to_rebuild  )  [private]

Реакция на изменение списка классов.

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

Аргументы:
map_to_rebuild  Полный список классов в словаре.

Перекрестные ссылки m_classes, m_is_correct и process_content().

Используется в check().

void so_4::rt::impl::std_class_relation_handler_t::process_content ( const class_map_t &  map_to_rebuild  )  [private]

Полная обработка текущего содержимого.

Содержимое m_classes должно точно соответствовать содержимому map_to_rebuild.

Аргументы:
map_to_rebuild  Полный список классов в словаре.

Перекрестные ссылки calc_bases_state(), calc_class_state(), so_4::rt::impl::invalid_class_to_stderr_dumper(), m_classes, so_4::rt::impl::std_class_relation_handler_t::class_info_t::m_reason_desc, so_4::rt::impl::std_class_relation_handler_t::class_info_t::m_state, state_invalid, state_valid и try_merge_states().

Используется в update().

int so_4::rt::impl::std_class_relation_handler_t::try_merge_states ( const class_handler_impl_t class_handler,
const class_map_t &  all_classes,
std::string &  error_desc 
) [private]

Попытка слияния описаний состояний.

Начиная с:
v.4.2.7 Если в описании класса есть состояния, требующие слияния своего содержимого, то осуществляется попытка выполнить это слияние.
Возвращает:
Следующие значения:
  • state_valid, если слияний не потребовалось или все слияния успешно выполнены;
  • state_invalid, если слияние не возможно (из-за ссылки на неизвестный класс или на класс, который находится в состоянии state_invalid);
  • state_not_processed, если требуется слияние с состояниями класса, который сам находится в состоянии state_not_processed.
Аргументы:
class_handler  Тип, состояния которого нужно проверять.
all_classes  Все классы словаря.
error_desc  Приемник описания причины, по которой класс был признан некорректным.

Перекрестные ссылки m_classes, state_invalid, state_not_processed, state_valid и so_4::rt::impl::class_handler_impl_t::states_for_merge().

Используется в process_content().

int so_4::rt::impl::std_class_relation_handler_t::calc_bases_state ( const class_handler_impl_t class_handler,
const class_map_t &  all_classes,
std::string &  invalid_base_name,
std::string &  error_desc 
) [private]

Вычисление общего состояния базовых классов.

Возвращает:
Следующие значения:
  • state_valid, если все базовые типы находятся в состоянии state_valid;
  • state_invalid, если хотя бы один базовый тип не существует или находится в состоянии state_invalid;
  • state_not_processed в остальных случаях.
Аргументы:
class_handler  Тип, состояние базовых типов которого нужно проверить.
all_classes  Все классы словаря.
invalid_base_name  Приемник имени некорректного базового класса.
error_desc  Приемник описания причины, по которой базовый класс был признан некорректным.

Перекрестные ссылки m_classes, so_4::rt::impl::class_handler_impl_t::query_bases(), state_invalid, state_not_processed и state_valid.

Используется в process_content().

void so_4::rt::impl::std_class_relation_handler_t::calc_class_state ( class_handler_impl_t class_handler,
const class_map_t &  all_classes,
class_info_t class_info 
) [private]

Вычисление состояние класса.

Определяются полные списки сообщений, событий и состояний. На основании результата определяется состояние класса.

Аргументы:
class_handler  Тип, описание которого нужно обработать.
all_classes  Все классы словаря.
class_info  Приемник вычисленного состояния.

Перекрестные ссылки build_all_evt_list(), build_all_msg_list(), build_all_state_list(), detect_initial_state(), so_4::rt::impl::std_class_relation_handler_t::class_info_t::m_reason_desc, so_4::rt::impl::std_class_relation_handler_t::class_info_t::m_state и state_valid.

Используется в process_content().

int so_4::rt::impl::std_class_relation_handler_t::build_all_msg_list ( class_handler_impl_t class_handler,
const class_map_t &  all_classes,
std::string &  reason_desc 
) [private]

Построение полного списка сообщений.

Возвращает:
state_valid, если полный список сообщений построен успешно. state_invalid, если найден конфликт наследования сообщений.
Аргументы:
class_handler  Класс для обработки.
all_classes  Все классы словаря.
reason_desc  Приемник описания ошибки.

Перекрестные ссылки msg_map_to_msg_vect(), msg_vect_to_msg_map(), so_4::rt::impl::class_handler_impl_t::query_bases(), so_4::rt::impl::class_handler_impl_t::query_msg_handlers(), so_4::rt::impl::class_handler_impl_t::query_self_msg_handlers(), so_4::rt::impl::class_handler_impl_t::set_all_msg_handlers(), state_invalid и state_valid.

Используется в calc_class_state().

int so_4::rt::impl::std_class_relation_handler_t::build_all_evt_list ( class_handler_impl_t class_handler,
const class_map_t &  all_classes,
std::string &  reason_desc 
) [private]

Построение полного списка событий.

Возвращает:
state_valid, если полный список событий построен успешно. state_invalid, если найден конфликт наследования событий.
Аргументы:
class_handler  Класс для обработки.
all_classes  Все классы словаря.
reason_desc  Приемник описания ошибки.

Перекрестные ссылки evt_map_to_evt_vect(), query_full_evt_map(), so_4::rt::impl::class_handler_impl_t::set_all_evt_handlers(), state_invalid и state_valid.

Используется в calc_class_state().

int so_4::rt::impl::std_class_relation_handler_t::build_all_state_list ( class_handler_impl_t class_handler,
const class_map_t &  all_classes,
std::string &  reason_desc 
) [private]

Построение полного списка состояний.

v.4.2.7
Обязательно должен вызываться после метода build_all_evt_list(), т.к. выполняет проверку имен событий во всех состояниях. Для этого в классе агента уже должен быть определен полный список событий.
Возвращает:
state_valid, если полный список состояний построен успешно. state_invalid, если найден конфликт наследования состояний.
Аргументы:
class_handler  Класс для обработки.
all_classes  Все классы словаря.
reason_desc  Приемник описания ошибки.

Перекрестные ссылки check_all_state_events(), so_4::rt::impl::exclude_disabled_events_caller(), so_4::rt::impl::class_handler_impl_t::query_evt_handlers(), query_full_state_map(), so_4::rt::impl::class_handler_impl_t::query_self_state_handlers(), so_4::rt::impl::class_handler_impl_t::set_all_state_handlers(), state_invalid, state_map_to_state_vect() и state_valid.

Используется в calc_class_state().

int so_4::rt::impl::std_class_relation_handler_t::detect_initial_state ( class_handler_impl_t class_handler,
const class_map_t &  all_classes,
std::string &  reason_desc 
) [private]

Определение начального состояния.

Внимание:
Должен вызываться после успешного завершения метода build_all_state_list().
Возвращает:
state_valid, если начальное состояние успешно определено. state_invalid, если найден конфликт в определении начального состояния.
Аргументы:
class_handler  Класс для обработки.
all_classes  Все классы словаря.
reason_desc  Приемник описания ошибки.

Перекрестные ссылки so_4::rt::impl::class_handler_impl_t::query_bases(), so_4::rt::impl::class_handler_impl_t::query_initial_state(), so_4::rt::impl::class_handler_impl_t::query_initial_state_name(), so_4::rt::impl::class_handler_impl_t::query_self_state_handlers(), so_4::rt::impl::class_handler_impl_t::query_state_handlers(), so_4::rt::impl::class_handler_impl_t::set_initial_state(), state_invalid и state_valid.

Используется в calc_class_state().

bool so_4::rt::impl::std_class_relation_handler_t::query_full_evt_map ( const class_handler_impl_t class_handler,
const class_map_t &  all_classes,
evt_handler_map_t result,
std::string &  conflict_evt_name 
) [private]

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

Возвращает:
true, если конфликтов не выявлено. false при наличии конфликтов.
Аргументы:
class_handler  Класс, карту событий которого необходимо получить.
all_classes  Все классы словаря.
result  Приемник результирующего словаря. Новое содержимое дополняется к уже существующему.
conflict_evt_name  Приемник имени конфликтного события. Заполняется только при обнаружении конфликта.

Перекрестные ссылки evt_vect_to_evt_map(), so_4::rt::impl::class_handler_impl_t::query_bases() и so_4::rt::impl::class_handler_impl_t::query_self_evt_handlers().

Используется в build_all_evt_list().

bool so_4::rt::impl::std_class_relation_handler_t::query_full_state_map ( const class_handler_impl_t class_handler,
const class_map_t &  all_classes,
state_handler_map_t result,
std::string &  conflict_state_name 
) [private]

Получение словаря всех состояний класса, включая унаследованные.

Возвращает:
true, если конфликтов не выявлено. false при наличии конфликтов.
Аргументы:
class_handler  Класс, карту состояний которого необходимо получить.
all_classes  Все классы словаря.
result  Приемник результирующего словаря. Новое содержимое дополняется к уже существующему.
conflict_state_name  Приемник имени конфликтного состояния. Заполняется только при обнаружении конфликта.

Перекрестные ссылки so_4::rt::impl::class_handler_impl_t::query_bases(), so_4::rt::impl::class_handler_impl_t::query_self_state_handlers() и state_vect_to_state_map().

Используется в build_all_state_list().

int so_4::rt::impl::std_class_relation_handler_t::check_all_state_events ( const state_handler_map_t states,
const evt_handler_impl_ptr_vector_t &  event_vector,
std::string &  reason_desc 
) [private]

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

Начиная с:
v.4.2.7
Возвращает:
state_valid, если все нормально. state_invalid, если в описании какого-нибудь состояния найдено неопределенное событие.
Аргументы:
states  Все состояния класса.
event_vector  Все события класса.
reason_desc  Приемник описания ошибки.

Перекрестные ссылки evt_vect_to_evt_map(), state_invalid и state_valid.

Используется в build_all_state_list().


Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:49 2008. Создано системой  doxygen1.5.6 Intervale SourceForge.net Logo