Hitachi

VisiBroker Version 5 Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド


11.4.2 IDLコンパイラが生成するクラステンプレート

POA_exampleクラスに加えて,IDLコンパイラは_tie_exampleという名前のクラステンプレートを生成します。このテンプレートは,クラスをPOA_exampleから派生させたくない場合に使用します。テンプレートは,新しいクラスを継承するために変更できない既存のアプリケーションのオブジェクトラッパークラスを提供する場合に役立ちます。コードサンプル11-12に,exampleクラス用にIDLコンパイラが生成したテンプレートクラスを示します。

コードサンプル11-12 exampleクラス用に生成したテンプレートクラス(C++)
template <class T>
class POA_example_tie : public POA_example {
   public:
      POA_example_tie (T& t): _ptr(&t), _poa(NULL), 
                           _rel((CORBA::Boolean)0) {}
      POA_example_tie (T& t, PortableServer::POA_ptr poa): 
                           _ptr(&t),
         _poa(PortableServer::_duplicate(poa)), 
                           _rel((CORBA::Boolean)0) {}
      POA_example_tie (T *p, CORBA::Boolean release= 1)
         : _ptr(p), _poa(NULL), _rel(release) {}
      POA_example_tie (T *p, PortableServer::POA_ptr poa, 
                           CORBA::Boolean release =1)
         : _ptr(p), _poa(PortableServer::_duplicate(poa)), 
                           _rel(release) {}
      virtual ~POA_example_tie() { /* . . . */ }
      T* _tied_object() { /* . . . */ }
      void _tied_object(T& t) { /* . . . */ }
      void _tied_object(T *p, CORBA::Boolean release=1)
                           { /* . . . */ }
      CORBA::Boolean _is_owner() { /* . . . */ }
      void _is_owner(CORBA::Boolean b) { /* . . . */ }
      CORBA::Long op1(CORBA::Char _x, CORBA::Short_out _y) 
                           { /* . . . */ }
      PortableServer::POA_ptr _default_POA() { /* . . . */ }
};

_tieテンプレートクラスの使用については,「9. tie機能の使用」を参照してください。

オブジェクトデータベースとユーザのサーバを統合するために,_ptieテンプレートを生成することもできます。