36 |
uint8_t *strandPtr = (uint8_t *)args->inState; |
uint8_t *strandPtr = (uint8_t *)args->inState; |
37 |
for (int i = 0; i < args->numStrands; i++, strandPtr += args->outputSzb) { |
for (int i = 0; i < args->numStrands; i++, strandPtr += args->outputSzb) { |
38 |
|
|
39 |
if ((args->isStatusInt && (args->status[i * 4] == DIDEROT_STABLE)) |
if (args->status[i] == DIDEROT_STABLE) { |
|
|| (args->status[i] == DIDEROT_STABLE)) { |
|
|
/*if (args->status[i] == DIDEROT_STABLE) {*/ |
|
40 |
Diderot_Strands[0]->print (outS, strandPtr); |
Diderot_Strands[0]->print (outS, strandPtr); |
41 |
} |
} |
42 |
} |
} |
62 |
// allocate the correct amount of space for output |
// allocate the correct amount of space for output |
63 |
int numStabilized = 0; |
int numStabilized = 0; |
64 |
for (int i = 0; i < args->numStrands; i++) { |
for (int i = 0; i < args->numStrands; i++) { |
65 |
// FIXME: this conditional is not portable because of endianess issues. |
if (args->status[i] == DIDEROT_STABLE) |
|
if ((args->isStatusInt && (args->status[i * 4] == DIDEROT_STABLE)) |
|
|
|| (args->status[i] == DIDEROT_STABLE)) |
|
66 |
numStabilized++; |
numStabilized++; |
67 |
} |
} |
68 |
void *outData = CheckedAlloc(numStabilized * args->outputSzb); |
void *outData = CheckedAlloc(numStabilized * args->outputSzb); |
72 |
// copy data into outData |
// copy data into outData |
73 |
void *outPos = outData; |
void *outPos = outData; |
74 |
for (int i = 0; i < args->numStrands; i++) { |
for (int i = 0; i < args->numStrands; i++) { |
75 |
if ((args->isStatusInt && (args->status[i * 4] == DIDEROT_STABLE)) |
if (args->status[i] == DIDEROT_STABLE) { |
|
|| (args->status[i] == DIDEROT_STABLE)) { |
|
76 |
Diderot_Strands[0]->output (outPos, &args->inState[i]); |
Diderot_Strands[0]->output (outPos, &args->inState[i]); |
77 |
outPos += args->outputSzb; |
outPos += args->outputSzb; |
78 |
} |
} |