Образовательный портал Claw.ru
Всё для учебы, работы и отдыха
» Шпаргалки, рефераты, курсовые
» Сочинения и изложения
» Конспекты и лекции
» Энциклопедии

Ключевым является вложенный шаблон Proxy, именно он наследует прокси-функцию ProxyFun из CFunProxynImpl. Класс CFunProxynImpl необходим из-за невозможности вернуть тип void при помощи оператора return в Visual C++ 6.0. В качестве обходного маневра используется специализация реализации прокси по типу возвращаемого значения – отдельно для типа void и отдельно для всех остальных типов.

Прокси-функция ProxyFun будет использована в CDynFunction для первоначальной инициализации адреса указателя на функцию:

static typename proxy_type::fun_type &GetProxy()

{

 static typename proxy_type::fun_type proxy = proxy_type::template Proxy<type>::ProxyFun;

 return proxy;

}

Для обеспечения возможности реакции на ошибку нахождения функции в модуле используется соответствующая стратегия. Стратегия состоит из класса, вложенного в него шаблона, принимающего в качестве параметра тип ячейки таблицы импортируемых функций и имеющего статическую функцию MakeReturn, которая и вызывается при ошибке поиска адреса функции или при ошибке загрузки библиотеки. На данный момент реализованы 2 стратегии. Одна (CFunProxyThrowPolicy) – выбрасывает исключение (по умолчанию CDynFunException) при ошибке поиска функциизагрузки библиотеки, другая (CFunProxyValuePolicy) – возвращает определенное пользователем значение:

template <class R>

struct CFunProxyThrowRetTypeTrait

{

 template <class F>

 struct FunctionTraitImpl

 {

 static R MakeReturn()

 {

 F::MakeReturnImpl();

 return R();

 }


Рекомендуем скачать другие рефераты по теме: реферат великая, рецензия на дипломную работу образец.


Категории:




Предыдущая страница реферата | 5  6  7  8  9  10  11  12  13  14  15 |


Поделитесь этой записью или добавьте в закладки

   



Рефераты от А до Я


Полезные заметки

  •