Spinnaker C++
2.6.0.0
Classes | Public Member Functions | Static Public Member Functions | List of all members
CNodeMapFactory Class Reference

The node map factory is used for creating node maps from camera description files. More...

Classes

struct  NodeStatistics_t
 

Public Member Functions

 CNodeMapFactory ()
 Creates an empty node map factory for assigning a non-empty node map factory later. More...
 
virtual ~CNodeMapFactory ()
 Destroys the node map factory data if all references to the data have been released. More...
 
 CNodeMapFactory (const CNodeMapFactory &)
 Creates another reference to the node map factory data. More...
 
CNodeMapFactoryoperator= (const CNodeMapFactory &)
 Creates another reference to the assigned node map factory data. More...
 
 CNodeMapFactory (EContentType_t FileType, const GenICam::gcstring &FileName, ECacheUsage_t CacheUsage=CacheUsage_Automatic, bool SuppressStringsOnLoad=false)
 Creates the node map factory and simply stores the full path to the provided camera description file data. More...
 
 CNodeMapFactory (EContentType_t ContentType, const void *pData, size_t DataSize, ECacheUsage_t CacheUsage=CacheUsage_Automatic, bool SuppressStringsOnLoad=false)
 Creates the node map factory and simply stores the pointer and the size of the provided camera description file data. More...
 
 CNodeMapFactory (const GenICam::gcstring &XmlData, ECacheUsage_t CacheUsage=CacheUsage_Automatic, bool SuppressStringsOnLoad=false)
 Creates the node map factory and copies the provided camera description file string. More...
 
bool IsEmpty () const
 Returns true if nothing is loaded (IsLoaded()) and no source data is available, e.g. More...
 
void AddInjectionData (CNodeMapFactory &injectionData)
 Adds a node map factory representing a camera description file to inject. More...
 
void LoadAndInject ()
 Advanced: Loads, Parses, and Injects the camera description files recursively. More...
 
bool IsLoaded () const
 Can be used to check whether the LoadAndInject() processing step has been performed. More...
 
CNodeMapFactory ExtractSubtree (const GenICam::gcstring &SubTreeRootNodeName, bool doRenameToRoot=false)
 The name of the node that represents the root of the subtree that shall be extracted. More...
 
void Preprocess ()
 Advanced: Creates the preprocessed memory internal representation of the camera description file(s), the CNodeDataMap (not part of the public interface). More...
 
bool IsPreprocessed () const
 Can be used to check whether the Preprocess() processing step has been performed. More...
 
void ReleaseCameraDescriptionFileData ()
 Advanced: Releases any in constructors provided camera description file data buffers or files. More...
 
bool IsCameraDescriptionFileDataReleased () const
 Can be used to check whether the ReleaseCameraDescriptionFileData() processing step has been performed. More...
 
INodeMapCreateNodeMap (const GenICam::gcstring &DeviceName="Device", bool DoReleaseCameraDescriptionFileData=true)
 Creates a node map from the preprocessed memory internal representation of the camera description file(s). More...
 
INodeMapCreateNodeMap (CLock &UserProvidedLock, const GenICam::gcstring &DeviceName="Device", bool DoReleaseCameraDescriptionFileData=true)
 Creates a node map from the preprocessed memory internal representation of the camera description file(s). More...
 
void GetSupportedSchemaVersions (GenICam::gcstring_vector &SchemaVersions) const
 
GenICam::gcstring ToString () const
 Outputs the pre-processed node map in string form (for debug purpose) More...
 
GenICam::gcstring ToXml () const
 Outputs the pre-processed node map in XML form (mainly for debug purpose) More...
 
void GetNodeStatistics (NodeStatistics_t &NodeStatistics)
 
const GenICam::gcstring ApplyStyleSheet (const GenICam::gcstring &StyleSheetFileName)
 Applies a style sheet to the pre-processed node map. More...
 

Static Public Member Functions

static INodeMapCreateEmptyNodeMap ()
 Creates an empty node map usable as placeholder, e.g. More...
 
static bool ClearCache ()
 Deletes all preprocessed camera description files from the cache. More...
 
static CNodeDataMap * CreateNodeDataFromNodeMap (INodeMap *pNodeMap)
 

Detailed Description

The node map factory is used for creating node maps from camera description files.

Examples
// Simple node map creation from buffer, downloaded from a device for instance.
CNodeMapFactory cameraNodeMapFactory( ContentType_ZippedXml, buffer, bufferSize);
// Create the node map. The node map can be destroyed using the IDestroy interface later.
INodeMap* pNodeMap = cameraNodeMapFactory.CreateNodeMap();
// The next step is attaching the device port (not shown).
// Node map creation with injecting additional xml fragments.
CNodeMapFactory cameraNodeMapFactory( ContentType_Xml, buffer, bufferSize);
cameraParameters.AddInjectionData( CNodeMapFactory(ContentType_Xml, filename1));
cameraParameters.AddInjectionData( CNodeMapFactory(ContentType_Xml, filename2));
// Create the node map. The node map can be destroyed using the IDestroy interface later.
INodeMap* pNodeMap = cameraNodeMapFactory.CreateNodeMap();
// The next step is attaching the device port (not shown).
// Node map creation and additional extraction of a category subtree.
CNodeMapFactory cameraNodeMapFactory( ContentType_Xml, buffer, bufferSize);
// Extract a subtree for later chunk parsing.
CNodeMapFactory chunkDataNodeMapFactory = cameraParameters.ExtractSubtree("ChunkData");
// Create the node map. The node map can be destroyed using the IDestroy interface later.
INodeMap* pNodeMap = cameraParameters.CreateNodeMap();
// The next step is attaching the device port (not shown).
// Node map creation with injecting additional xml fragments and additional extraction of a category subtree.
CNodeMapFactory cameraNodeMapFactory( ContentType_Xml, buffer, bufferSize);
cameraParameters.AddInjectionData( CNodeMapFactory(ContentType_Xml, filename1));
cameraParameters.AddInjectionData( CNodeMapFactory(ContentType_Xml, filename2));
CNodeMapFactory chunkDataNodeMapFactory = cameraNodeMapFactory.ExtractSubtree("ChunkData");
// Create the node map. The node map can be destroyed using the IDestroy interface later.
INodeMap* pNodeMap = cameraNodeMapFactory.CreateNodeMap();
// The next step is attaching the device port (not shown).
// A node map factory can create multiple node maps from the provided camera description file(s).
for(int i = 0; i < 20; ++i)
{
INodeMap* pNodeMapChunks = chunkDataNodeMapFactory.CreateNodeMap();
//...
}
Attention
The is CNodeMapFactory not thread-safe.
You need to take care when camera description file data can be actually be freed, see method documentation of the node map factory for more detail.

Constructor & Destructor Documentation

Creates an empty node map factory for assigning a non-empty node map factory later.

virtual ~CNodeMapFactory ( )
virtual

Destroys the node map factory data if all references to the data have been released.

Creates another reference to the node map factory data.

No data is copied.

CNodeMapFactory ( EContentType_t  FileType,
const GenICam::gcstring FileName,
ECacheUsage_t  CacheUsage = CacheUsage_Automatic,
bool  SuppressStringsOnLoad = false 
)

Creates the node map factory and simply stores the full path to the provided camera description file data.

Parameters
[in]FileTypeDefines how the camera description file is stored, e.g. as zipped XML text.
[in]FileNameThe full path of the camera description file to process.
[in]CacheUsageDefines if and how to use the cache for preprocessed camera description files.
[in]SuppressStringsOnLoadSuppresses loading strings that are not needed for most use cases, e.g. node tooltip or description, for reducing the memory footprint.

Throws an invalid argument exception if FileName is empty. Throws if environment variables in FileName cannot be resolved.

Attention
The given file must be readable until the camera description file data has been released. The IsCameraDescriptionFileDataReleased() method can be used to check if releasing has been done.
CNodeMapFactory ( EContentType_t  ContentType,
const void *  pData,
size_t  DataSize,
ECacheUsage_t  CacheUsage = CacheUsage_Automatic,
bool  SuppressStringsOnLoad = false 
)

Creates the node map factory and simply stores the pointer and the size of the provided camera description file data.

Parameters
[in]ContentTypeDefines how the camera description file is stored, e.g. as zipped XML text.
[in]pDataThe pointer to the camera description file data.
[in]DataSizeThe size of the camera description file data.
[in]CacheUsageDefines if and how to use the cache for preprocessed camera description files.
[in]SuppressStringsOnLoadSuppresses loading strings that are not needed for most use cases, e.g. node tooltip or description, for reducing the memory footprint.

Throws an invalid argument exception if pData is NULL or DataSize is 0.

Attention
The given buffer must not be freed or changed until the camera description file data has been released. The IsCameraDescriptionFileDataReleased() method can be used to check if releasing has been done.
CNodeMapFactory ( const GenICam::gcstring XmlData,
ECacheUsage_t  CacheUsage = CacheUsage_Automatic,
bool  SuppressStringsOnLoad = false 
)

Creates the node map factory and copies the provided camera description file string.

Parameters
[in]XmlDataThe camera description file data as XML text. The provided text is copied. You can use the overloaded constructor accepting a buffer to avoid that.
gcstring cdfData;
* //... fill cdfData ...
* CNodeMapFactory factory(ContentType_Xml, cfdData.c_str(), cfdData.size());
* // Create the node map. The node map can be destroyed using the IDestroy interface
* later. INodeMap* pNodeMap = factory.CreateNodeMap();
* // The next step is attaching the device port (not shown).
*
[in]CacheUsageDefines if and how to use the cache for preprocessed camera description files.
[in]SuppressStringsOnLoadSuppresses loading strings that are not needed for most use cases, e.g. node tooltip or description, for reducing the memory footprint.

Throws an invalid argument exception if XmlData is empty.

Member Function Documentation

void AddInjectionData ( CNodeMapFactory injectionData)

Adds a node map factory representing a camera description file to inject.

Parameters
[in]injectionDataA node map factory representing a camera description file to inject.

The injected files are injected in the order they are added. InjectionData must not be preprocessed. The IsPreprocessed() method can be used to check if preprocessing has been done before. The cache usage of injection data is ignored.

const GenICam::gcstring ApplyStyleSheet ( const GenICam::gcstring StyleSheetFileName)

Applies a style sheet to the pre-processed node map.

static bool ClearCache ( )
static

Deletes all preprocessed camera description files from the cache.

static INodeMap* CreateEmptyNodeMap ( )
static

Creates an empty node map usable as placeholder, e.g.

if certain features are not supported by a module.

static CNodeDataMap* CreateNodeDataFromNodeMap ( INodeMap pNodeMap)
static
INodeMap* CreateNodeMap ( const GenICam::gcstring DeviceName = "Device",
bool  DoReleaseCameraDescriptionFileData = true 
)

Creates a node map from the preprocessed memory internal representation of the camera description file(s).

Preprocess() is automatically called if needed. The preprocess step can be omitted by the factory depending on the cache mode setting when a cache file is available, then the cache file is read and converted directly into a node map. ReleaseCameraDescriptionFileData() is called if DoReleaseCameraDescriptionFileData is true. This method can be called multiple times to create multiple instances of a node map.

INodeMap* CreateNodeMap ( CLock UserProvidedLock,
const GenICam::gcstring DeviceName = "Device",
bool  DoReleaseCameraDescriptionFileData = true 
)

Creates a node map from the preprocessed memory internal representation of the camera description file(s).

Preprocess() is automatically called if needed. The preprocess step can be omitted by the factory depending on the cache mode setting when a cache file is available, then the cache file is read and converted directly into a node map. ReleaseCameraDescriptionFileData() is called if DoReleaseCameraDescriptionFileData is true. This method can be called multiple times to create multiple instances of a node map. This method allows to provide an external lock to avoid using too many locks in an application.

Attention
The provided lock must not be destroyed before the created node map.
CNodeMapFactory ExtractSubtree ( const GenICam::gcstring SubTreeRootNodeName,
bool  doRenameToRoot = false 
)

The name of the node that represents the root of the subtree that shall be extracted.

Parameters
[in]SubTreeRootNodeNameThe root of the branch to extract, e.g. "ChunkData".
[in]doRenameToRootRenames the extracted subtree root node SubTreeRootNodeName to "Root", sets the IsFeature property. Preprocess() is automatically called if needed to create the memory internal representation of the camera description file(s). The preprocessed result can be read from the cache or written to the cache in this step. This depends on the availability of a cache and the used CacheUsage setting.
void GetNodeStatistics ( NodeStatistics_t NodeStatistics)
void GetSupportedSchemaVersions ( GenICam::gcstring_vector &  SchemaVersions) const
Each list entry is a string with the format "{Major}.{Minor}" were {Major} and {Minor} are integers

Example: {"1.1", "1.2"} indicates that the schema v1.1 and v1.2 are supported. The SubMinor version number is not given since it is for fully compatible bug fixes only

bool IsCameraDescriptionFileDataReleased ( ) const

Can be used to check whether the ReleaseCameraDescriptionFileData() processing step has been performed.

bool IsEmpty ( ) const

Returns true if nothing is loaded (IsLoaded()) and no source data is available, e.g.

when the node map factory has been created with the default constructor.

bool IsLoaded ( ) const

Can be used to check whether the LoadAndInject() processing step has been performed.

Returns true if IsPreprocessed() returns true (Preprocessed Data has been loaded from cache).

bool IsPreprocessed ( ) const

Can be used to check whether the Preprocess() processing step has been performed.

void LoadAndInject ( )

Advanced: Loads, Parses, and Injects the camera description files recursively.

The result is a memory internal representation of the camera description file(s), the CNodeDataMap (not part of the public interface).

This step is usually done automatically. Prevents cache read if called manually.

CNodeMapFactory& operator= ( const CNodeMapFactory )

Creates another reference to the assigned node map factory data.

Destroys the "overwritten" node map factory data if all references to the data have been released.

void Preprocess ( )

Advanced: Creates the preprocessed memory internal representation of the camera description file(s), the CNodeDataMap (not part of the public interface).

This step is usually done automatically. Preprocessed data can be read from the cache or written to the cache in this step. This depends on the availability of a cache and the used CacheUsage setting. By calling this method directly direct cache load is suppressed, see CreateNodeMap() for more information.

void ReleaseCameraDescriptionFileData ( )

Advanced: Releases any in constructors provided camera description file data buffers or files.

This step is usually done automatically. All references to added injection data are dropped in this step to free the data. After this step any in constructors provided buffers can be freed or any in constructors given files can be deleted.

GenICam::gcstring ToString ( ) const

Outputs the pre-processed node map in string form (for debug purpose)

GenICam::gcstring ToXml ( ) const

Outputs the pre-processed node map in XML form (mainly for debug purpose)


The documentation for this class was generated from the following file:
Contact Support Spinnaker® SDK Programmer's Guide and API Reference