IReferenceManager

Functions

SET_CID

RED_RC

RegisterReference

Object *

GetReference

RED_RC

RegisterToReferencesSolver

RED_RC

SolvePendingReferences

bool

IsReferenced

RED_RC

GetCurrentDataContext

Detailed Description

class IReferenceManager : public RED::IREDObject

This class manages references as they are loaded through a .red file.

@related class RED::IREDFile, class RED::IReferenceSolving

Loading a .red file is a two steps process. First, the content of the file is loaded and interpreted (a list of dependencies between loaded data is built). Second, the dependencies between the loaded data are solved. That’s the purpose of the ReferenceManager. Every loaded data that acts as a reference must register itself to the ReferenceManager. Every data that points on references must record itself too to be later solved.

Public Functions

SET_CID(CID_class_REDIReferenceManager)
virtual RED_RC RegisterReference(RED::uint64 iReferenceID, RED::Object *iReference) = 0

Registers a reference to be used by the pending references solver.

If the reference is already registered, RED_OK is returned.

Parameters
  • iReferenceID – ID of the reference.

  • iReference – pointer to the reference.

Returns

RED_OK on success,

RED_BAD_PARAM if ‘iReference’ is an invalid pointer, RED_ALLOC_FAILURE on a memory allocation error,

RED_FAIL otherwise.

virtual RED::Object *GetReference(RED::uint64 iReferenceID) = 0

Gets a reference pointer by its ID.

Parameters

iReferenceID – ID of the reference to retrieve.

Returns

A pointer to the requested reference on success,

RED_FAIL otherwise.

virtual RED_RC RegisterToReferencesSolver(RED::IReferenceSolving *iClient) = 0

Registers an object implementing RED::IReferenceSolving to the references solver.

The registered objects will be automatically called on a call to ResolvePendingReferences.

Parameters

iClient – Pointer to an object implementing the RED::IReferenceSolving interface.

Returns

RED_OK on success,

RED_BAD_PARAM if ‘iClient’ is an invalid pointer,

RED_ALLOC_FAILURE on a memory allocation error,

RED_FAIL otherwise.

virtual RED_RC SolvePendingReferences(const RED::State &iState) = 0

Solves the pending references made between chunks.

The SolveReferences method of the registered objects implementing the RED::IReferenceSolving interface is call. If any of these objects return a RED_RC other than RED_OK, the RED_RC is returned by the method.

Parameters

iState – Current transaction.

Returns

RED_OK on success,

RED_ALLOC_FAILURE on a memory allocation error,

RED_FAIL otherwise.

virtual bool IsReferenced(RED::IReferenceSolving *iClient) const = 0

Is the solvable object already referenced?

Parameters

iClientObject to test.

Returns

true if the object is already registered in the reference solver, false otherwise.

virtual RED_RC GetCurrentDataContext(unsigned int &oDataContext) = 0

Gets the current data context ID.

When solving the references, a user may need to create new data in the current context (Event registration for example).

Parameters

oDataContext – reference to the current data context.

Returns

RED_OK on success,

RED_BAD_PARAM if ‘iClient’ is an invalid pointer,

RED_ALLOC_FAILURE on a memory allocation error,

RED_FAIL otherwise.