Uno/Cpp/Spec/FreeReference
From Apache OpenOffice Wiki
Type: Specification State: Evolving Availability: URE 1.3 (SRC680_m212)
Feature
A free reference, ensuring that the managing environment has always been entered when calling an object.
API
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: