42
52
cout << __FUNCTION__ << endl;
45
case lit_string: return new singleton_iterator(ctx,ctx.symtab.get(sref));
56
return new singleton_iterator(ctx,ctx.string_storage.get(sref));
46
58
case lit_integer: return new singleton_iterator(ctx,ival);
47
59
case lit_decimal: return new singleton_iterator(ctx,decval);
48
60
case lit_double: return new singleton_iterator(ctx,dval);
253
/*...........................................
255
:.........................................:
206
258
rchandle<item_iterator> text_expr::eval(
209
261
Assert<null_pointer>(text_expr_h!=NULL);
210
262
rchandle<item_iterator> it_h = text_expr_h->eval(ctx);
211
item_iterator* it_p = &*it_h;
212
Assert<null_pointer>(it_p!=NULL);
214
while (!it_p->done()) {
215
rchandle<item> i_h = it_p->next();
217
Assert<null_pointer>(i_p!=NULL);
220
rchandle<text_node> tnode_h = new text_node(rand(),oss.str(),NULL);
263
string content = it_h->string_value(ctx);
265
rchandle<text_node> tnode_h =
266
new text_node(ctx.next_nodeid(),content,ctx.context_nodeid());
221
268
return new singleton_iterator(ctx, &*tnode_h);
272
/*...........................................
274
:.........................................:
225
277
rchandle<item_iterator> comment_expr::eval(
286
/*...........................................
288
:.........................................:
291
rchandle<item_iterator> doc_expr::eval(
294
Assert<null_pointer>(docuri_h!=NULL);
295
return docuri_h->eval(ctx);
300
/*...........................................
302
:.........................................:
305
rchandle<item_iterator> elem_expr::eval(
308
Assert<bad_arg>(qname_h!=NULL || qname_expr_h!=NULL);
310
qname_h->put(os,ctx) << ">\n";
313
qname_expr_h->put(os,ctx) << ">\n";
315
vector<nsbinding>::const_iterator it = begin();
316
vector<nsbinding>::const_iterator en = end();
317
for (; it!=en; ++it) {
319
string ncname = nsb.first;
320
string nsuri = nsb.second;
321
os << INDENT << "xmlns:" << ncname << "=\"" << nsuri << "\"\n"; UNDENT;
323
Assert<null_pointer>(content_expr_h!=NULL);
324
content_expr_h->put(os,ctx);
329
/*...........................................
331
:.........................................:
334
rchandle<item_iterator> attr_expr::eval(
337
Assert<bad_arg>(qname_h!=NULL || qname_expr_h!=NULL);
339
qname_h->put(os,ctx);
342
qname_expr_h->put(os,ctx);
345
Assert<null_pointer>(val_expr_h!=NULL);
346
rchandle<item_iterator> val_h = val_expr_h->eval(ctx);
349
rchandle<item> i_h = ctx.get_context_item();
350
elem_node* n_p = dynamic_cast<elem_node*>(&*i_h);
352
throw xqp_exception(__FUNCTION__,"expecting element node parent");
355
rchandle<attr_node> anode_h =
356
new attr_node(rand(), name_h, value, n_p->get_nodeid());
358
return new singleton_iterator(ctx, &*anode_h);