19
19
#include "../types/base_types.h"
20
20
#include "../types/collation.h"
21
21
#include "../util/hashmap.h"
22
#include "../util/list.h"
22
23
#include "../util/rchandle.h"
23
24
#include "../util/xqp_exception.h"
24
25
#include "../values/qname_value.h"
26
#include "../values/node_values.h"
141
143
** supported, in-scope schema types also include all type definitions
142
144
** found in imported schemas. ]
144
//vector<QName> in_scope_schema_types;
146
list<QName> in_scope_schema_types;
147
149
** [Definition: In-scope element declarations. Each element declaration
163
165
** Feature is supported, in-scope attribute declarations include all
164
166
** attribute declarations found in imported schemas.]
166
//vector<QName> in_scope_attr_decls;
168
list<QName> in_scope_attr_decls;
169
171
** [Definition: In-scope variables. This is a set of (expanded QName,
201
203
** extension, ordered. For a more complete definition of collation, see
202
204
** [XQuery 1.0 and XPath 2.0 Functions and Operators].]
204
//vector<collation_h_t> collations;
206
list<collation_h_t> collations;
207
209
** [Definition: Default collation. This identifies one of the collations
326
328
name_space get_default_function_ns() const
327
329
{ return default_function_ns; }
330
vector<name_space> const& get_namespaces() const
331
{ return namespaces; }
332
vector<QName> const& get_in_scope_schema_types() const
333
{ return in_scope_schema_types; }
334
vector<QName> const& get_in_scope_elem_decls() const
335
{ return in_scope_elem_decls; }
336
vector<QName> const& get_in_scope_attr_decls() const
337
{ return in_scope_attr_decls; }
338
vector<var_binding> const& get_in_scope_vars() const
339
{ return in_scope_vars; }
340
vector<collation_h_t> const& get_collations() const
341
{ return collations; }
331
list_iterator<name_space> namespaces_begin() const
332
{ return namespaces.begin(); }
333
list_iterator<name_space> namespaces_end() const
334
{ return namespaces.end(); }
336
list_iterator<QName> in_scope_schema_types_begin() const
337
{ return in_scope_schema_types.begin(); }
338
list_iterator<QName> in_scope_schema_types_end() const
339
{ return in_scope_schema_types.end(); }
341
list_iterator<QName> in_scope_elem_decls_begin() const
342
{ return in_scope_elem_decls.begin(); }
343
list_iterator<QName> in_scope_elem_decls_end() const
344
{ return in_scope_elem_decls.end(); }
346
list_iterator<QName> in_scope_attr_decls_begin() const
347
{ return in_scope_attr_decls.begin(); }
348
list_iterator<QName> in_scope_attr_decls_end() const
349
{ return in_scope_attr_decls.end(); }
351
list_iterator<var_binding> in_scope_vars_begin() const
352
{ return in_scope_vars.begin(); }
353
list_iterator<var_binding> in_scope_vars_end() const
354
{ return in_scope_vars.end(); }
356
list_iterator<collation_h_t> collations_begin() const
357
{ return collations.begin(); }
358
list_iterator<collation_h_t> collations_end() const
359
{ return collations.end(); }
344
362
item_type get_context_item_type() const
345
363
{ return context_item_type; }
358
376
std::string get_base_uri() const
359
377
{ return base_uri; }
361
380
std::string get_function_type(QName const&, uint32_t arity)
362
381
const throw (xqp_exception);
363
382
item_type get_document_type(std::string const&)
376
395
** item in the sequence obtained by evaluating E1 becomes the context
377
396
** item in the inner focus for an evaluation of E2.
379
item_iterator context_item;
398
rchandle<item> context_item_h;
382
401
** [Definition: The context position is the position of the context item
471
490
std::string default_collection;
493
** Persistent nodeid counter
495
fxarray<uint32_t> nodeid_counter;
475
symbol_table symtab; // string storage
499
fxcharheap string_store;
502
nodeid next_nodeid();
503
nodeid context_nodeid();
476
506
void push_var(rchandle<var_binding>);
477
507
rchandle<item_iterator> get_var_value(
478
508
rchandle<QName>) const throw (xqp_exception);
511
rchandle<item> get_context_item() const { return context_item_h; }
480
512
uint32_t get_context_position() const { return context_position; }
481
513
uint32_t get_context_size() const { return context_size; }
482
516
time_t get_currtime() const { return currtime; }
483
517
int get_timezone() const { return timezone; }
485
item_iterator get_context_item() const { return context_item; }
519
// default doc/collection
486
520
item_iterator get_document(std::string const&) const throw (xqp_exception);
487
521
item_iterator get_collection(std::string const&) const throw (xqp_exception);
488
522
item_iterator get_default_collection() const throw (xqp_exception);
490
525
function_impl const* get_function(signature const&) const
491
526
throw (xqp_exception);
493
public: // diagnostic flags
494
529
enum diagnostic_flag_t {
495
530
trace_functions = 1,
496
531
trace_timing = 2,