Рефераты | Рефераты по информатике, программированию | Реализация отложенной загрузки библиотек на С++ | страница реферата 10 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

  • Ключевым является вложенный шаблон 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 |




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

       




    Категории:



    Разделы сайта




    •