Qtopia library API Documentation

QLibrary Class Reference

The QLibrary class provides a wrapper for handling shared libraries. More...

#include <qlibrary.h>

Collaboration diagram for QLibrary:

Collaboration graph
[legend]
List of all members.

Public Types

enum  Policy { Delayed, Immediately, Manual }

Public Member Functions

 QLibrary (const QString &filename, Policy=Delayed)
 ~QLibrary ()
void * resolve (const char *)
bool unload (bool force=FALSE)
bool isLoaded () const
void setPolicy (Policy pol)
Policy policy () const
QString library () const
QRESULT queryInterface (const QUuid &, QUnknownInterface **)

Static Public Member Functions

void * resolve (const QString &filename, const char *)

Detailed Description

The QLibrary class provides a wrapper for handling shared libraries.

This class is temporarily copied from Qt 3.0.

Definition at line 32 of file qlibrary.h.


Member Enumeration Documentation

enum QLibrary::Policy
 

This enum type defines the various policies a QLibrary can have with respect to loading and unloading the shared library.

The policy can be:

Delayed The library get's loaded as soon as needed and unloaded in the destructor Immediately The library is loaded immediately and unloaded in the destructor Manual Like delayed, and library has to be unloaded manually

Definition at line 35 of file qlibrary.h.

Referenced by policy().


Constructor & Destructor Documentation

QLibrary::QLibrary const QString filename,
Policy  pol = Delayed
 

Creates a QLibrary object for the shared library filename. The library get's loaded if pol is Immediately.

Note that filename does not need to include the (platform specific) file extension, so calling

  QLibrary lib( "mylib" );

would be equivalent to

  QLibrary lib( "mylib.dll" );

on Windows. But "mylib.dll" will obviously not work on other platforms.

See also:
setPolicy(), unload()

Definition at line 154 of file qlibrary.cpp.

QLibrary::~QLibrary  ) 
 

Deletes the QLibrary object. The library will be unloaded if the policy is not Manual.

See also:
unload(), setPolicy()

Definition at line 168 of file qlibrary.cpp.

References unload().


Member Function Documentation

void * QLibrary::resolve const char *  symb  ) 
 

Returns the address of the exported symbol symb. The library gets loaded if necessary. The function returns NULL if the symbol could not be resolved, or if loading the library failed.

  typedef int (*addProc)( int, int );

  addProc add = (addProc) library->resolve( "add" );
  if ( add )
      return add( 5, 8 );
  else
      return 5 + 8;

See also:
queryInterface()

Definition at line 238 of file qlibrary.cpp.

Referenced by resolve().

void * QLibrary::resolve const QString filename,
const char *  symb
[static]
 

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Loads the library filename and returns the address of the exported symbol symb. Note that like for the constructor, filename does not need to include the (platform specific) file extension. The library staying loaded until the process exits.

The function returns a null pointer if the symbol could not be resolved or if loading the library failed.

Definition at line 266 of file qlibrary.cpp.

References resolve().

bool QLibrary::unload bool  force = FALSE  ) 
 

Releases the component and unloads the library when successful. Returns TRUE if the library could be unloaded, otherwise FALSE. If the component implements the QLibraryInterface, the cleanup() function of this interface will be called. The unloading will be cancelled if the subsequent call to canUnload() returns FALSE.

This function gets called automatically in the destructor if the policy is not Manual.

Warning:
If force is set to TRUE, the library gets unloaded at any cost, which is in most cases a segmentation fault, so you should know what you're doing!
See also:
queryInterface(), resolve()

Definition at line 307 of file qlibrary.cpp.

References library().

Referenced by ~QLibrary().

bool QLibrary::isLoaded  )  const
 

Returns whether the library is loaded.

See also:
unload()

Definition at line 277 of file qlibrary.cpp.

void QLibrary::setPolicy Policy  pol  ) 
 

Sets the current policy to pol. The library is loaded if pol is set to Immediately.

Definition at line 373 of file qlibrary.cpp.

QLibrary::Policy QLibrary::policy  )  const
 

Returns the current policy.

See also:
setPolicy()

Definition at line 386 of file qlibrary.cpp.

References Policy.

QString QLibrary::library  )  const
 

Returns the filename of the shared library this QLibrary object handles, including the platform specific file extension.

  QLibrary lib( "mylib" );
  QString str = lib.library();

will set str to "mylib.dll" on Windows, and "libmylib.so" on Linux.

Definition at line 402 of file qlibrary.cpp.

References QString::arg(), QString::find(), and QString::isEmpty().

Referenced by unload().

QRESULT QLibrary::queryInterface const QUuid request,
QUnknownInterface **  iface
 

Forwards the query to the component and returns the result. request and iface are propagated to the component's queryInterface implementation.

The library gets loaded if necessary.

Definition at line 428 of file qlibrary.cpp.

Referenced by FontDatabase::loadRenderers().


The documentation for this class was generated from the following files:
KDE Logo
This file is part of the documentation for OPIE Version 1.5.5.
Documentation copyright © 1997-2003 the KDE developers. 2003 OPIE developers
Generated on Tue Feb 10 20:24:22 2004 by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2001