MCPcopy Create free account
hub / github.com/Kitware/VTK / getStepControllers

Function getStepControllers

ThirdParty/xdmf3/vtkxdmf3/XdmfTemplate.cpp:45–180  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43#include <stdio.h>
44
45std::vector<shared_ptr<XdmfHeavyDataController> >
46getStepControllers(unsigned int stepId,
47 std::vector<unsigned int> stepDims,
48 std::vector<shared_ptr<XdmfHeavyDataController> > datasetControllers)
49{
50 std::vector<shared_ptr<XdmfHeavyDataController> > returnVector;
51 if (datasetControllers.size() > 0)
52 {
53 unsigned int sizePerStep = 1;
54 for (unsigned int i = 0; i < stepDims.size(); ++i)
55 {
56 sizePerStep *= stepDims[i];
57 }
58// unsigned int offset = (sizePerStep * stepId);
59// unsigned int offsetStepsRemaining = 0;
60 unsigned int offset = 0;
61 unsigned int offsetStepsRemaining = stepId;
62 // grabbing the subset is a little different for each type
63 // Right now we assume controllers are of the same type
64 unsigned int controllerIndex = 0;
65 unsigned int sizeRemaining = sizePerStep;
66 unsigned int arrayoffset = 0;
67 while (sizeRemaining > 0)
68 {
69//printf("sizeRemaining = %u\n", sizeRemaining);
70 // We don't reset the controller index between runs of the while loop
71 // On iterations after the first it should only execute the loop once
72 // because offset is set to 0
73 while (controllerIndex < datasetControllers.size())
74 {
75//printf("offset = %u\n", offset);
76//printf("%u >= %u\n", offset, datasetControllers[controllerIndex]->getSize());
77 //Iterate until we find the controller that the step starts in
78 if (offset >= datasetControllers[controllerIndex]->getSize())
79 {
80 offset -= datasetControllers[controllerIndex]->getSize();
81 ++controllerIndex;
82 }
83 else
84 {
85 if (offsetStepsRemaining == 0)
86 {
87 // offset is within the current controller
88 break;
89 }
90 else
91 {
92 // There are steps left to offset
93//printf("accounting for step %d\n", offsetStepsRemaining);
94 offset += sizePerStep;
95 --offsetStepsRemaining;
96 }
97 }
98 }
99//printf("final offset = %u\n", offset);
100 std::vector<unsigned int> newDimVector;
101 std::vector<unsigned int> newStarts;
102//printf("after creating dim vector but before filling it\n");

Callers 2

addStepMethod · 0.85
setStepMethod · 0.85

Calls 13

getEndianMethod · 0.80
getDataSetPathMethod · 0.80
setArrayOffsetMethod · 0.80
getSizeMethod · 0.65
NewFunction · 0.50
sizeMethod · 0.45
push_backMethod · 0.45
getStartMethod · 0.45
compareMethod · 0.45
getNameMethod · 0.45
getFilePathMethod · 0.45

Tested by

no test coverage detected