Enumerating possible production chains

The following code shows how to fine control the enumeration process. It enumerates Production Chains for producing User output, reducing the options using a basic query, and then chooses the first one from all possibilities.

// Build a query object
xn::Query query;
nRetVal = query.SetVendor("MyVendor");
// TODO: check error code
query.AddSupportedCapability(XN_CAPABILITY_SKELETON);
// TODO: check error code
// Enumerate
xn::NodeInfoList possibleChains;
nRetVal = context.EnumerateProductionTrees(XN_NODE_TYPE_USER, &query, possibleChains, NULL);
// TODO: check error code
// No errors so far. This means list has at least one item. Take the first one
xn::NodeInfo selected = *possibleChains.Begin();
// Create it
nRetVal = context.CreateProductionTree(selected);
// TODO: check error code
// Take the node
xn::UserGenerator userGen;
nRetVal = selected.GetInstance(userGen);
// TODO: check error code
// Now we can start to use it
XN_CAPABILITY_SKELETON
#define XN_CAPABILITY_SKELETON
Definition XnTypes.h:318
XN_NODE_TYPE_USER
@ XN_NODE_TYPE_USER
Definition XnTypes.h:118
xn::NodeInfo
Definition XnCppWrapper.h:1803
xn::NodeInfo::GetInstance
XnStatus GetInstance(ProductionNode &node) const
Definition XnCppWrapper.h:9752
xn::NodeInfoList
Definition XnCppWrapper.h:2145
xn::NodeInfoList::Begin
Iterator Begin() const
Definition XnCppWrapper.h:2337
xn::Query
Definition XnCppWrapper.h:1977
xn::Query::SetVendor
XnStatus SetVendor(const XnChar *strVendor)
Sets in the Query object the vendor name to search for.
Definition XnCppWrapper.h:2006
xn::Query::AddSupportedCapability
XnStatus AddSupportedCapability(const XnChar *strNeededCapability)
Sets in the Query object a capability that the Node Alternative must support.
Definition XnCppWrapper.h:2068
xn::UserGenerator
Definition XnCppWrapper.h:7666