Difference between revisions of "Uno/Cpp/Spec/FreeReference"

From Apache OpenOffice Wiki
< Uno‎ | Cpp‎ | Spec
Jump to: navigation, search
m (wording.)
m (Updated state.)
Line 1: Line 1:
Type: specification State: draft
Type: Specification State: Evolving  Availability: URE 1.3 (SRC680_m212)
Line 43: Line 43:

Revision as of 10:11, 23 May 2007

Type: Specification State: Evolving Availability: URE 1.3 (SRC680_m212)


A free reference, ensuring that the managing environment has always been entered when calling an object.


[cpp] cppu/FreeReference.hxx

 template<class T> FreeReference
   FreeReference() {}
   FreeReference(cssuno::Reference<T> const & xRef)
   FreeReference(EnvAwareReference<T> const & rOther)
   cssuno::Reference<T> get() const throw (cssuno::RuntimeException)
   operator cssuno::Reference<T> () const throw (cssuno::RuntimeException)
   T * operator -> () const throw (cssuno::RuntimeException)
   bool is() const throw (cssuno::RuntimeException)
   void clear()
   FreeReference<T> & operator = (FreeReference<T> const & rOther)
   void set(cssuno::Reference<T> const & xRef)
   bool operator == (FreeReference const & rOther) const
   bool operator != (FreeReference const & rOther) const

Usage Example

#include <cppu/EnvGuards.hxx>
  com::sun::star::uno::Reference<XFoo> ref(...)
  cppu::FreeReference<XFoo> free_xFoo(xFoo);
  cppu::EnvGuard otherEnv(cppu::Environment("just another env"));
  free_xFoo->doSomething(); // the free reference ensures that the correct environment etc. gets activated before invokation

More Examples:


Personal tools