Accessing to Loaded Data
------------------------

Here is an example of access to all the viewpoints loaded from a file:

.. code:: cpp 

    // iresmgr is a pointer to the RED::IResourceManager interface.
    // context is the vector of loaded contexts.

    RED::IDataManager* idatamgr = iresmgr->GetDataManager()->As< RED::IDataManager >();

    for( unsigned int c = 0; c < context.size(); ++c )
    {
        // Get the number of viewpoints in the current context.
        unsigned int vcount;
        RC_TEST( idatamgr->GetViewpointsCount( vcount, context[c] ) );

        for( unsigned int v = 0; v < vcount; ++v )
        {
            RED::Object* viewpoint;
            RC_TEST( idatamgr->GetViewpoint( viewpoint, context[c], v, iresmgr->GetState() ) );
        }
    }

Data stored in the RED data manager are not managed by the RED resource manager. Therefore, to destroy loaded data, you need to call a dedicated method in ``RED::IDataManager``. The example below illustrates the destruction of an image, a full context or the whole stored data:

.. code:: cpp 
        
    // image is a pointer to a loaded image.
    // image_context is the context of the loaded image.

    // Delete the image.
    RC_TEST( idatamgr->ReleaseData( image_context, image, iresmgr->GetState() ) );

    // Delete all the other image context data.
    RC_TEST( idatamgr->ReleaseContext( image_context, false, iresmgr->GetState() ) );

    // Delete all the contexts.
    RC_TEST( idatamgr->Release( iresmgr->GetState() ) ); 
