13
inline double walker_process_node(VTDNav *vn, AutoPilot *ap, char *xml) {
19
// printf("%i %i %i\n", getCurrentIndex(vn), i, getAttrCount(vn));
21
res = parseDouble(vn, i);
22
if ((res)&&(!isnan(res))) {
28
int e_idx = getCurrentIndex(vn);
29
int attrs = getAttrCount(vn);
32
for (i=0,idx=e_idx+1; i<attrs;i++) {
33
while (getTokenType(vn,idx) !=2) idx++; // skipping to attribute
35
if (getTokenType(vn,idx+1)==4) { // if attribute value
37
len = getTokenLength(vn, idx);
38
offset = getTokenOffset(vn, idx);
39
res = parseDouble(vn, idx);
40
if ((res)&&(!isnan(res))) {
41
// fwrite((char *)(xml+offset),sizeof(UByte),len,stdout);
49
if (selectXPath(ap,L"./@*")) {
50
while (evalXPath(ap)) {
51
if (getCurrentIndex(vn)==e_idx) return 0;
52
idx = getCurrentIndex(vn);
53
len = getTokenLength(vn, idx+1);
54
offset = getTokenOffset(vn, idx+1);
55
fwrite((char *)(xml+offset),sizeof(UByte),len,stdout);
57
printf(" - %i %i\n", getCurrentIndex(vn), getTokenType(vn, getCurrentIndex(vn)+1));
65
double walker(VTDNav *vn, AutoPilot *ap, char *xml) {
71
for (ok = 1; ok; ok = toElement(vn, NEXT_SIBLING)) {
78
for (ok = 1; ok; ok = toElement(vn, NEXT_SIBLING)) {
80
res += walker_process_node(vn,ap,xml);
84
if (toElement(vn, FIRST_CHILD)) {
85
res+=walker(vn,ap,xml);
12
94
struct exception_context the_exception_context[1];
150
AutoPilot *ap = NULL;//createAutoPilot2();
154
toElement(vn, FIRST_CHILD);
155
res = walker(vn,ap,td->xml);
156
// freeAutoPilot(ap);
157
printf("Sum: %lf\n", res);
68
161
//clear(vg); // done by getNav