Титульная страница | Пространства имен | Алфавитный указатель | Классы | Файлы | Члены пространства имен | Члены классов | Члены файла | Описания

Файл smart_ref_3/h/smart_ref.hpp


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

Основные классы и макросы.

#include <smart_ref_3/h/declspec.hpp>

Пространства имен

namespace  smart_ref_3

Макросы

#define _SMART_REF_3__SMART_REF_HPP_
#define SMART_REF_3_DECL_REF_FULL(type, ref_type, ref_type_decl_start)
#define SMART_REF_3_DECL_DERIVED_REF_FULL(type, base_ref_type, ref_type, ref_type_decl_start)
#define SMART_REF_3_IMPL_REF_FULL(type, ref_type)
#define SMART_REF_3_IMPL_DERIVED_REF_FULL(type, base_ref_type, ref_type)
#define SMART_REF_3_DECL_REF(type, ref_type_decl_start)   SMART_REF_3_DECL_REF_FULL(type, ref_##type, ref_type_decl_start)
 Декларация класса умной ссылки.

#define SMART_REF_3_IMPL_REF(type)   SMART_REF_3_IMPL_REF_FULL(type, ref_##type)
 Реализация типа, описанного с помощью макроса SMART_REF_3_DECL_REF().

#define SMART_REF_3_DECL_DERIVED_REF(type, base_type, ref_type_decl_start)
 Декларация класса умной ссылки, производного от другого класса умной ссылки.

#define SMART_REF_3_IMPL_DERIVED_REF(type, base_type)   SMART_REF_3_IMPL_DERIVED_REF_FULL(type, ref_##base_type, ref_##type)
 Реализация типа, построенного с имспользованием макроса SMART_REF_3_DECL_DERIVED_REF().


Макросы

#define SMART_REF_3_DECL_DERIVED_REF type,
base_type,
ref_type_decl_start   ) 
 

Макроопределение:

SMART_REF_3_DECL_DERIVED_REF_FULL( \ type, ref_##base_type, ref_##type, ref_type_decl_start)
Декларация класса умной ссылки, производного от другого класса умной ссылки.

Предназначен для случаев, когда есть иерархия типов для которой нужно построить аналогичную иерархию ссылочных типов. Тогда производные ссылки можно передавать в функции, ожидающие ссылки на базовые типы. Например:

class A { ... }; SMART_REF_3_DECL_REF( A, class ) SMART_REF_3_IMPL_REF( A ) void f( const ref_A & a ) { ... } class B : public A { ... }; SMART_REF_3_DECL_DERIVED_REF( B, A, class ) SMART_REF_3_IMPL_DERIVED_REF( B, A ) void g() { ref_B b( new B() ); f( b ); }

Для типа с именем B и базовым типом A строит следующее описание:

class ref_B: public ref_A { public : ref_B( B * ptr = 0 ); ref_B( const ref_B & o ); ~ref_B(); ref_B & operator=( const ref_B & o ); B * query(); const B * query() const; B & operator*(); const B & operator*() const; B * operator->(); const B * operator->() const; };

Аргументы:
type имя типа, для которого строится умная ссылка.
base_type имя базового типа.
ref_type_decl_start квалификатор типа (class, struct) который нужно использовать для построения описания класса. Так же можен содержать атрибуты экспорта/импорта:
SMART_REF_3_DECL_DERIVED_REF( some_type_t, some_base_type_t, class __declspec(dllexport) )

#define SMART_REF_3_DECL_DERIVED_REF_FULL type,
base_ref_type,
ref_type,
ref_type_decl_start   ) 
 

Макроопределение:

ref_type_decl_start ref_type: public base_ref_type {\ public :\ ref_type( type * ptr = 0 );\ ref_type( const ref_type & o );\ ~ref_type();\ \ ref_type &\ operator=( const ref_type & o );\ \ type *\ query();\ \ const type *\ query() const;\ \ type &\ operator*();\ const type &\ operator*() const;\ \ type *\ operator->();\ const type *\ operator->() const;\ };

#define SMART_REF_3_DECL_REF type,
ref_type_decl_start   )     SMART_REF_3_DECL_REF_FULL(type, ref_##type, ref_type_decl_start)
 

Декларация класса умной ссылки.

Для типа с именем A строит следующее описание:

class ref_A: public smart_ref_3::ref_t { public : ref_A( A * ptr = 0 ); ref_A( const ref_A & o ); ~ref_A(); ref_A & operator=( const ref_A & o ); A * query(); const A * query() const; A & operator*(); const A & operator*() const; A * operator->(); const A * operator->() const; protected : static void destroyer( A * obj ); };

Аргументы:
type имя типа, для которого строится умная ссылка.
ref_type_decl_start квалификатор типа (class, struct) который нужно использовать для построения описания класса. Так же можен содержать атрибуты экспорта/импорта:
SMART_REF_3_DECL_REF( some_type_t, class __declspec(dllexport) )

#define SMART_REF_3_DECL_REF_FULL type,
ref_type,
ref_type_decl_start   ) 
 

Макроопределение:

ref_type_decl_start ref_type: public smart_ref_3::ref_t {\ public :\ ref_type( type * ptr = 0 );\ ref_type( const ref_type & o );\ ~ref_type();\ \ ref_type &\ operator=( const ref_type & o );\ \ type *\ query();\ \ const type *\ query() const;\ \ type &\ operator*();\ const type &\ operator*() const;\ \ type *\ operator->();\ const type *\ operator->() const;\ protected :\ static void\ destroyer( type * obj );\ };


Документация по Smart Reference library. Последние изменения: Wed Aug 4 06:16:48 2004. Создано системой doxygen 1.3.7
Hosted by uCoz