Uno/Cpp/Spec/FreeReference

From Apache OpenOffice Wiki
< Uno‎ | Cpp‎ | Spec
Jump to: navigation, search

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:

Dependencies

Personal tools