CrystalSpace

Public API Reference

Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

csutil/scf.h File Reference

Crystal Space Shared Class Facility (SCF). More...

#include "csextern.h"
#include "ref.h"
#include "array.h"
#include "csutil/reftrackeraccess.h"

Go to the source code of this file.

Compounds

struct  iBase
 This is the basic interface: all other interfaces should be derived from this one, this will allow us to always use at least some minimal functionality given any interface pointer. More...

struct  iFactory
 iFactory is an interface that is used to create instances of shared classes. More...

class  scfInterface
 Interface query class. More...

struct  iSCF
 iSCF is the interface that allows using SCF functions from shared classes. More...


Defines

#define SCF_TRACE(x)
 Macro for typing debug strings: Add define SCF_DEBUG at the top of modules you want to track miscelaneous SCF activity and recompile.

#define SCF_PRINT_CALL_ADDRESS
 Macro for getting the address we were called from (stack backtracing).

#define SCF_CONSTRUCT_VERSION(Major, Minor, Micro)   ((Major << 24) | (Minor << 16) | Micro)
 Use this macro to construct interface version numbers.

#define SCF_DECLARE_IBASE
 This macro should be embedded into any SCF-capable class definition to declare the minimal functionality required by iBase interface.

#define SCF_DECLARE_EMBEDDED_IBASE(OuterClass)
 SCF_DECLARE_EMBEDDED_IBASE is used to declare the methods of iBase inside an embedded class that is exposed via QueryInterface...

#define SCF_CONSTRUCT_IBASE(Parent)
 The SCF_CONSTRUCT_IBASE macro should be invoked inside the constructor of a class (not inside an embedded interface).

#define SCF_CONSTRUCT_EMBEDDED_IBASE(Interface)
 The SCF_CONSTRUCT_EMBEDDED_IBASE macro should be invoked inside the constructor of a class that has an embedded interface (not inside the constructor of the embedded interface).

#define SCF_DESTRUCT_IBASE()
 The SCF_DESTRUCT_IBASE macro should be invoked inside the destructor of a class (not inside an embedded interface).

#define SCF_DESTRUCT_EMBEDDED_IBASE(Interface)
 The SCF_DESTRUCT_EMBEDDED_IBASE macro should be invoked inside the destructor of a class that has an embedded interface (not inside the destructor of the embedded interface).

#define SCF_IMPLEMENT_IBASE_INCREF(Class)
 The SCF_IMPLEMENT_IBASE_INCREF() macro implements the IncRef() method for a class in a C++ source module.

#define SCF_IMPLEMENT_IBASE_DECREF(Class)
 The SCF_IMPLEMENT_IBASE_DECREF() macro implements the DecRef() method for a class in a C++ source module.

#define SCF_IMPLEMENT_IBASE_REMOVE_REF_OWNERS(Class)
 The SCF_IMPLEMENT_IBASE_REMOVE_REF_OWNERS() macro implements the scfRemoveRefOwners() method for a class in a C++ source module.

#define SCF_IMPLEMENT_IBASE_REFOWNER(Class)
 The SCF_IMPLEMENT_IBASE_REFOWNER() macro implements the AddRefOwner() and RemoveRefOwner() for a weak reference.

#define SCF_IMPLEMENT_IBASE_GETREFCOUNT(Class)
 The SCF_IMPLEMENT_IBASE_GETREFCOUNT() macro implements GetRefCount() for a class in a C++ source module.

#define SCF_IMPLEMENT_IBASE_QUERY(Class)
 The SCF_IMPLEMENT_IBASE_QUERY() macro implements the opening boilerplate for the QueryInterface() method for a class in a C++ source module.

#define SCF_IMPLEMENT_IBASE_QUERY_END
 The SCF_IMPLEMENT_IBASE_QUERY_END macro implements the closing boilerplate for the QueryInterface() method for a class in a C++ source module.

#define SCF_IMPLEMENT_IBASE(Class)
 The SCF_IMPLEMENT_IBASE() macro should be used within the C++ source module that implements a interface derived from iBase.

#define SCF_IMPLEMENT_IBASE_END   SCF_IMPLEMENT_IBASE_QUERY_END
 The SCF_IMPLEMENT_IBASE_END macro is used to finish an SCF_IMPLEMENT_IBASE definition.

#define SCF_IMPLEMENT_EMBEDDED_IBASE_INCREF(Class)
 The SCF_IMPLEMENT_EMBEDDED_IBASE_INCREF() macro implements the IncRef() method for an embedded class in a C++ source module.

#define SCF_IMPLEMENT_EMBEDDED_IBASE_DECREF(Class)
 The SCF_IMPLEMENT_EMBEDDED_IBASE_DECREF() macro implements the DecRef() method for an embedded class in a C++ source module.

#define SCF_IMPLEMENT_EMBEDDED_IBASE_GETREFCOUNT(Class)
 The SCF_IMPLEMENT_EMBEDDED_IBASE_GETREFCOUNT() macro implements the GetRefCount() method for an embedded class in a C++ source module.

#define SCF_IMPLEMENT_EMBEDDED_IBASE_REFOWNER(Class)
 The SCF_IMPLEMENT_EMBEDDED_IBASE_REFOWNER() macro implements the AddRefOwner() and RemoveRefOwner() for a weak reference.

#define SCF_IMPLEMENT_EMBEDDED_IBASE_QUERY(Class)
 The SCF_IMPLEMENT_EMBEDDED_IBASE_QUERY() macro implements the opening boilerplate for the QueryInterface() method for an embedded class in a C++ source module.

#define SCF_IMPLEMENT_EMBEDDED_IBASE_QUERY_END
 The SCF_IMPLEMENT_EMBEDDED_IBASE_QUERY_END macro implements the closing boilerplate for the QueryInterface() method for a class in an embedded C++ source module.

#define SCF_IMPLEMENT_EMBEDDED_IBASE(Class)
 SCF_IMPLEMENT_EMBEDDED_IBASE should be used to implement embedded interfaces derived from iBase.

#define SCF_IMPLEMENT_EMBEDDED_IBASE_END   SCF_IMPLEMENT_EMBEDDED_IBASE_QUERY_END
 The SCF_IMPLEMENT_EMBEDDED_IBASE_END macro is used to finish an SCF_IMPLEMENT_EMBEDDED_IBASE definition.

#define SCF_IMPLEMENTS_INTERFACE(Interface)
 The IMPLEMENT_INTERFACE macro is used inside QueryInterface function to check if user requested a specific interface, whenever requested version of the interface correspond to the version we have and to return a pointer to that interface if everything is correct.

#define SCF_IMPLEMENTS_EMBEDDED_INTERFACE(Interface)   SCF_IMPLEMENTS_INTERFACE_COMMON (Interface, (&scf##Interface))
 IMPLEMENT_EMBEDDED_INTERFACE is same as IMPLEMENT_INTERFACE but is used when class implements the interface as an embedded member.

#define SCF_IMPLEMENTS_INTERFACE_COMMON(Interface, Object)
 This is a common macro used in all IMPLEMENTS_XXX_INTERFACE macros.

#define SCF_DECLARE_IBASE_EXT(ParentClass)
 The following macro is used in "expansion SCF classes".

#define SCF_IMPLEMENT_IBASE_EXT_INCREF(Class)
 The SCF_IMPLEMENT_IBASE_EXT_INCREF() macro implements the IncRef() method for a class extending another SCF class in a C++ source module.

#define SCF_IMPLEMENT_IBASE_EXT_DECREF(Class)
 The SCF_IMPLEMENT_IBASE_EXT_DECREF() macro implements the DecRef() method for a class extending another SCF class in a C++ source module.

#define SCF_IMPLEMENT_IBASE_EXT_GETREFCOUNT(Class)
 The SCF_IMPLEMENT_IBASE_EXT_GETREFCOUNT() macro implements the GetRefCount() method for a class extending another SCF class in a C++ source module.

#define SCF_IMPLEMENT_IBASE_EXT_REFOWNER(Class)
 The SCF_IMPLEMENT_IBASE_EXT_REFOWNER() macro implements the AddRefOwner() and RemoveRefOwner() for a weak reference.

#define SCF_IMPLEMENT_IBASE_EXT_QUERY(Class)
 The SCF_IMPLEMENT_IBASE_EXT_QUERY() macro implements the opening boilerplate for the QueryInterface() method for a class extending another SCF class in a C++ source module.

#define SCF_IMPLEMENT_IBASE_EXT_QUERY_END
 The SCF_IMPLEMENT_IBASE_EXT_QUERY_END macro implements the closing boilerplate for the QueryInterface() method for a class extending another SCF class in a C++ source module.

#define SCF_IMPLEMENT_IBASE_EXT(Class)
 This macro implements same functionality as SCF_IMPLEMENT_IBASE except that it should be used for expansion SCF classes.

#define SCF_IMPLEMENT_IBASE_EXT_END   SCF_IMPLEMENT_IBASE_EXT_QUERY_END
 This macro implements same functionality as SCF_IMPLEMENT_IBASE_END except that it is used for expansion SCF classes.

#define SCF_IMPLEMENT_FACTORY_INIT(Class)
 The SCF_IMPLEMENT_FACTORY_INIT macro defines initialization code for a plugin module.

#define SCF_IMPLEMENT_FACTORY_FINIS(Class)
 The SCF_IMPLEMENT_FACTORY_FINIS macro defines finalization code for a plugin module.

#define SCF_IMPLEMENT_FACTORY_CREATE(Class)
 The SCF_IMPLEMENT_FACTORY_CREATE macro is used to define a factory for one of exported classes.

#define SCF_IMPLEMENT_FACTORY(Class)
 The SCF_IMPLEMENT_FACTORY macro is used to define a factory for one of exported classes.

#define SCF_REGISTER_STATIC_CLASS(Class, Ident, Desc, Dep)
 Automatically register a built-in class with SCF during startup.

#define SCF_REGISTER_STATIC_LIBRARY(Module, MetaInfo)
 Automatically register a static library with SCF during startup.

#define SCF_REGISTER_FACTORY_FUNC(Class)
 Used in conjunction with SCF_REGISTER_STATIC_LIBRARY to ensure that a reference to the class(s) registered via SCF_REGISTER_STATIC_LIBRARY are actually linked into the application.

#define SCF_CREATE_INSTANCE(ClassID, Interface)
 Handy macro to create an instance of a shared class.

#define SCF_VERSION(Name, Major, Minor, Micro)
 SCF_VERSION can be used to define an interface's version number; you should specify interface name and major, minor and micro version components.

#define SCF_QUERY_INTERFACE(Object, Interface)
 Shortcut macro to query given interface from given object.

#define SCF_QUERY_INTERFACE_SAFE(Object, Interface)
 Shortcut macro to query given interface from given object.


Typedefs

typedef unsigned long scfInterfaceID
 Type of registered interface handle used by iBase::QueryInterface().

typedef void *(* scfFactoryFunc )(iBase *)
 Type of factory function which creates an instance of an SCF class.


Functions

void scfInitialize (csPluginPaths *pluginPaths)
 This function should be called to initialize client SCF library.

void scfInitialize (int argc, const char *const argv[])
 This function should be called to initialize client SCF library.

bool scfCompatibleVersion (int iVersion, int iItfVersion)
 This function checks whenever an interface is compatible with given version.


Detailed Description

Crystal Space Shared Class Facility (SCF).

Definition in file scf.h.


Generated for Crystal Space by doxygen 1.2.18