Add iterators for various iterables
We want to support the following API.
vtkProxyManager
vtkSMProxyManager* pxm = ...
/// iterate over all registered proxies
for (const auto& el : pxm->GetRegisteredProxies())
{
const std::string registrationName = el.GetName();
const std::string registrationGroup = el.GetGroup();
vtkSmartPointer<vtkSMProxy> proxy = el.GetProxy();
...
}
/// iterate over one registration group
for (const auto& el : pxm->GetRegisteredProxies(groupName))
{
const std::string registrationName = el.GetName();
const std::string registrationGroup = el.GetGroup();
vtkSmartPointer<vtkSMProxy> proxy = el.GetProxy();
...
}
/// iterate over all prototype proxies
for (const auto& el : pxm->GetPrototypeProxies())
{
const std::string xmlname = el.GetName();
const std::string xmlgroup = el.GetGroup();
vtkSmartPointer<vtkSMProxy> proxy = el.GetProxy();
...
}
/// iterate over one group of prototype proxies
/// here the group name is the definition group of the prototypes
for (const auto& el : pxm->GetPrototypeProxies(groupName))
{
const std::string xmlname = el.GetName();
const std::string xmlgroup = el.GetGroup();
vtkSmartPointer<vtkSMProxy> proxy = el.GetProxy();
...
}
vtkSMProxy
vtkSMProxy* proxy = ...
// iterate over all properties
for (const auto& el : proxy->GetProperties())
{
auto name = el.GetName();
auto property = el.GetProperty();
...
}
// iterate over all properties in order of definitions
for (const auto& el : proxy->GetOrderedProperties())
{
auto name = el.GetName();
auto property = el.GetProperty();
...
}
vtkSMProperty
vtkSMProperty* property = ...
for (const auto& el : property->GetDomains())
{
auto name = el.GetName();
auto domain = el.GetDomain();
}