Merge lp:~zorba-coders/zorba/xqjdoc into lp:zorba

Proposed by Rodolfo Ochoa
Status: Merged
Approved by: Matthias Brantner
Approved revision: 10829
Merged at revision: 10840
Proposed branch: lp:~zorba-coders/zorba/xqjdoc
Merge into: lp:zorba
Diff against target: 9088 lines (+5054/-597)
21 files modified
doc/xqj/doxy.config.in (+1118/-557)
doc/xqj/examples/Test_Zorba.java (+317/-0)
src/functions/func_ft_module_impl.cpp (+1/-0)
src/runtime/full_text/ft_module_impl.cpp (+1/-0)
swig/xqj/XQCollection.java (+128/-1)
swig/xqj/XQCollectionManager.java (+61/-0)
swig/xqj/XQConnection.java (+675/-4)
swig/xqj/XQDataSource.java (+90/-3)
swig/xqj/XQExpression.java (+299/-5)
swig/xqj/XQItem.java (+214/-0)
swig/xqj/XQItemType.java (+118/-7)
swig/xqj/XQMetaData.java (+143/-1)
swig/xqj/XQPreparedExpression.java (+302/-4)
swig/xqj/XQResultItem.java (+37/-1)
swig/xqj/XQResultSequence.java (+403/-3)
swig/xqj/XQResultSequenceScrollable.java (+400/-0)
swig/xqj/XQSequence.java (+390/-1)
swig/xqj/XQSequenceType.java (+56/-4)
swig/xqj/XQStaticCollectionManager.java (+35/-0)
swig/xqj/XQStaticContext.java (+226/-1)
swig/xqj/XQXmlDataManager.java (+40/-5)
To merge this branch: bzr merge lp:~zorba-coders/zorba/xqjdoc
Reviewer Review Type Date Requested Status
Matthias Brantner Approve
Cezar Andrei Approve
Review via email: mp+105700@code.launchpad.net

Commit message

Complete XQJ Documentation

Description of the change

Complete XQJ Documentation

To post a comment you must log in.
Revision history for this message
William Candillon (wcandillon) wrote :

Why PROJECT_NAME = "Zorba CXX-API" ?

Revision history for this message
Cezar Andrei (cezar-andrei) :
review: Approve
Revision history for this message
Cezar Andrei (cezar-andrei) wrote :

William is right, need to change the title, maybe add a short description.

review: Needs Fixing
Revision history for this message
Rodolfo Ochoa (rodolfo-ochoa) wrote :

Sorry, I took the CXX Configuration file, now is fixed...

Revision history for this message
Cezar Andrei (cezar-andrei) :
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job xqjdoc-2012-05-14T23-02-26.014Z is finished. The final status was:

All tests succeeded!

Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Voting does not meet specified criteria. Required: Approve > 1, Disapprove < 1, Needs Fixing < 1, Pending < 1. Got: 1 Approve, 1 Pending.

Revision history for this message
Matthias Brantner (matthias-brantner) wrote :

Looks pretty good. I'm only missing the Test_Zorba.java example. It doesn't show me the code if I click on the "Examples" link in the menu. I assume that this is not on purpose.

review: Needs Fixing
Revision history for this message
Rodolfo Ochoa (rodolfo-ochoa) wrote :

Example fixed
Also fixed all Doxygen warnings.

lp:~zorba-coders/zorba/xqjdoc updated
10829. By Rodolfo Ochoa

Fixes for warnings and examples

Revision history for this message
Matthias Brantner (matthias-brantner) :
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job xqjdoc-2012-05-15T20-33-06.579Z is finished. The final status was:

All tests succeeded!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'doc/xqj/doxy.config.in'
2--- doc/xqj/doxy.config.in 2012-04-03 21:33:33 +0000
3+++ doc/xqj/doxy.config.in 2012-05-15 20:01:25 +0000
4@@ -1,442 +1,623 @@
5-# Doxyfile 1.4.5
6+# Doxyfile 1.7.5
7
8 # This file describes the settings to be used by the documentation system
9-# doxygen (www.doxygen.org) for a project
10+# doxygen (www.doxygen.org) for a project.
11 #
12-# All text after a hash (#) is considered a comment and will be ignored
13+# All text after a hash (#) is considered a comment and will be ignored.
14 # The format is:
15 # TAG = value [value, ...]
16 # For lists items can also be appended using:
17 # TAG += value [value, ...]
18-# Values that contain spaces should be placed between quotes (" ")
19+# Values that contain spaces should be placed between quotes (" ").
20
21 #---------------------------------------------------------------------------
22 # Project related configuration options
23 #---------------------------------------------------------------------------
24
25-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
26-# by quotes) that should identify the project.
27+# This tag specifies the encoding used for all characters in the config file
28+# that follow. The default is UTF-8 which is also the encoding used for all
29+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
30+# iconv built into libc) for the transcoding. See
31+# http://www.gnu.org/software/libiconv for the list of possible encodings.
32+
33+DOXYFILE_ENCODING = UTF-8
34+
35+# The PROJECT_NAME tag is a single word (or sequence of words) that should
36+# identify the project. Note that if you do not use Doxywizard you need
37+# to put quotes around the project name if it contains spaces.
38
39 PROJECT_NAME = "Zorba XQJ-API"
40
41-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
42-# This could be handy for archiving the generated documentation or
43+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
44+# This could be handy for archiving the generated documentation or
45 # if some version control system is used.
46
47 PROJECT_NUMBER = @ZORBA_MAJOR_NUMBER@.@ZORBA_MINOR_NUMBER@.@ZORBA_PATCH_NUMBER@
48
49-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
50-# base path where the generated documentation will be put.
51-# If a relative path is entered, it will be relative to the location
52+# Using the PROJECT_BRIEF tag one can provide an optional one line description
53+# for a project that appears at the top of each page and should give viewer
54+# a quick idea about the purpose of the project. Keep the description short.
55+
56+PROJECT_BRIEF = Zorba's XQJ-API Implementation
57+
58+# With the PROJECT_LOGO tag one can specify an logo or icon that is
59+# included in the documentation. The maximum height of the logo should not
60+# exceed 55 pixels and the maximum width should not exceed 200 pixels.
61+# Doxygen will copy the logo to the output directory.
62+
63+PROJECT_LOGO =
64+
65+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
66+# base path where the generated documentation will be put.
67+# If a relative path is entered, it will be relative to the location
68 # where doxygen was started. If left blank the current directory will be used.
69
70 OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@
71
72-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
73-# 4096 sub-directories (in 2 levels) under the output directory of each output
74-# format and will distribute the generated files over these directories.
75-# Enabling this option can be useful when feeding doxygen a huge amount of
76-# source files, where putting all generated files in the same directory would
77+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
78+# 4096 sub-directories (in 2 levels) under the output directory of each output
79+# format and will distribute the generated files over these directories.
80+# Enabling this option can be useful when feeding doxygen a huge amount of
81+# source files, where putting all generated files in the same directory would
82 # otherwise cause performance problems for the file system.
83
84 CREATE_SUBDIRS = NO
85
86-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
87-# documentation generated by doxygen is written. Doxygen will use this
88-# information to generate all constant output in the proper language.
89-# The default language is English, other supported languages are:
90-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
91-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
92-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
93-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
94-# Swedish, and Ukrainian.
95+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
96+# documentation generated by doxygen is written. Doxygen will use this
97+# information to generate all constant output in the proper language.
98+# The default language is English, other supported languages are:
99+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
100+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
101+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
102+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
103+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
104+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
105
106 OUTPUT_LANGUAGE = English
107
108-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
109-# include brief member descriptions after the members that are listed in
110-# the file and class documentation (similar to JavaDoc).
111+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
112+# include brief member descriptions after the members that are listed in
113+# the file and class documentation (similar to JavaDoc).
114 # Set to NO to disable this.
115
116 BRIEF_MEMBER_DESC = YES
117
118-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
119-# the brief description of a member or function before the detailed description.
120-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
121+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
122+# the brief description of a member or function before the detailed description.
123+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
124 # brief descriptions will be completely suppressed.
125
126 REPEAT_BRIEF = YES
127
128-# This tag implements a quasi-intelligent brief description abbreviator
129-# that is used to form the text in various listings. Each string
130-# in this list, if found as the leading text of the brief description, will be
131-# stripped from the text and the result after processing the whole list, is
132-# used as the annotated text. Otherwise, the brief description is used as-is.
133-# If left blank, the following values are used ("$name" is automatically
134-# replaced with the name of the entity): "The $name class" "The $name widget"
135-# "The $name file" "is" "provides" "specifies" "contains"
136+# This tag implements a quasi-intelligent brief description abbreviator
137+# that is used to form the text in various listings. Each string
138+# in this list, if found as the leading text of the brief description, will be
139+# stripped from the text and the result after processing the whole list, is
140+# used as the annotated text. Otherwise, the brief description is used as-is.
141+# If left blank, the following values are used ("$name" is automatically
142+# replaced with the name of the entity): "The $name class" "The $name widget"
143+# "The $name file" "is" "provides" "specifies" "contains"
144 # "represents" "a" "an" "the"
145
146-ABBREVIATE_BRIEF =
147+ABBREVIATE_BRIEF =
148
149-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
150-# Doxygen will generate a detailed section even if there is only a brief
151+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
152+# Doxygen will generate a detailed section even if there is only a brief
153 # description.
154
155 ALWAYS_DETAILED_SEC = NO
156
157-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
158-# inherited members of a class in the documentation of that class as if those
159-# members were ordinary class members. Constructors, destructors and assignment
160+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
161+# inherited members of a class in the documentation of that class as if those
162+# members were ordinary class members. Constructors, destructors and assignment
163 # operators of the base classes will not be shown.
164
165 INLINE_INHERITED_MEMB = YES
166
167-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
168-# path before files name in the file list and in the header files. If set
169+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
170+# path before files name in the file list and in the header files. If set
171 # to NO the shortest path that makes the file name unique will be used.
172
173 FULL_PATH_NAMES = NO
174
175-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
176-# can be used to strip a user-defined part of the path. Stripping is
177-# only done if one of the specified strings matches the left-hand part of
178-# the path. The tag can be used to show relative paths in the file list.
179-# If left blank the directory from which doxygen is run is used as the
180+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
181+# can be used to strip a user-defined part of the path. Stripping is
182+# only done if one of the specified strings matches the left-hand part of
183+# the path. The tag can be used to show relative paths in the file list.
184+# If left blank the directory from which doxygen is run is used as the
185 # path to strip.
186
187-STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@/src @CMAKE_BINARY_DIR@/src
188-
189-
190-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
191-# the path mentioned in the documentation of a class, which tells
192-# the reader which header file to include in order to use a class.
193-# If left blank only the name of the header file containing the class
194-# definition is used. Otherwise one should specify the include paths that
195+STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@/src \
196+ @CMAKE_BINARY_DIR@/src
197+
198+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
199+# the path mentioned in the documentation of a class, which tells
200+# the reader which header file to include in order to use a class.
201+# If left blank only the name of the header file containing the class
202+# definition is used. Otherwise one should specify the include paths that
203 # are normally passed to the compiler using the -I flag.
204
205-STRIP_FROM_INC_PATH = @CMAKE_SOURCE_DIR@/include @CMAKE_BINARY_DIR@/include
206+STRIP_FROM_INC_PATH = @CMAKE_SOURCE_DIR@/include \
207+ @CMAKE_BINARY_DIR@/include
208
209-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
210-# (but less readable) file names. This can be useful is your file systems
211+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
212+# (but less readable) file names. This can be useful if your file system
213 # doesn't support long names like on DOS, Mac, or CD-ROM.
214
215 SHORT_NAMES = NO
216
217-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
218-# will interpret the first line (until the first dot) of a JavaDoc-style
219-# comment as the brief description. If set to NO, the JavaDoc
220-# comments will behave just like the Qt-style comments (thus requiring an
221-# explicit @brief command for a brief description.
222+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
223+# will interpret the first line (until the first dot) of a JavaDoc-style
224+# comment as the brief description. If set to NO, the JavaDoc
225+# comments will behave just like regular Qt-style comments
226+# (thus requiring an explicit @brief command for a brief description.)
227
228 JAVADOC_AUTOBRIEF = YES
229
230-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
231-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
232-# comments) as a brief description. This used to be the default behaviour.
233-# The new default is to treat a multi-line C++ comment block as a detailed
234+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
235+# interpret the first line (until the first dot) of a Qt-style
236+# comment as the brief description. If set to NO, the comments
237+# will behave just like regular Qt-style comments (thus requiring
238+# an explicit \brief command for a brief description.)
239+
240+QT_AUTOBRIEF = NO
241+
242+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
243+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
244+# comments) as a brief description. This used to be the default behaviour.
245+# The new default is to treat a multi-line C++ comment block as a detailed
246 # description. Set this tag to YES if you prefer the old behaviour instead.
247
248 MULTILINE_CPP_IS_BRIEF = NO
249
250-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
251-# will output the detailed description near the top, like JavaDoc.
252-# If set to NO, the detailed description appears after the member
253-# documentation.
254-
255-DETAILS_AT_TOP = NO
256-
257-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
258-# member inherits the documentation from any documented member that it
259+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
260+# member inherits the documentation from any documented member that it
261 # re-implements.
262
263 INHERIT_DOCS = YES
264
265-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
266-# a new page for each member. If set to NO, the documentation of a member will
267+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
268+# a new page for each member. If set to NO, the documentation of a member will
269 # be part of the file/class/namespace that contains it.
270
271 SEPARATE_MEMBER_PAGES = NO
272
273-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
274+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
275 # Doxygen uses this value to replace tabs by spaces in code fragments.
276
277 TAB_SIZE = 2
278
279-# This tag can be used to specify a number of aliases that acts
280-# as commands in the documentation. An alias has the form "name=value".
281-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
282-# put the command \sideeffect (or @sideeffect) in the documentation, which
283-# will result in a user-defined paragraph with heading "Side Effects:".
284+# This tag can be used to specify a number of aliases that acts
285+# as commands in the documentation. An alias has the form "name=value".
286+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
287+# put the command \sideeffect (or @sideeffect) in the documentation, which
288+# will result in a user-defined paragraph with heading "Side Effects:".
289 # You can put \n's in the value part of an alias to insert newlines.
290
291-ALIASES =
292+ALIASES =
293
294-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
295-# sources only. Doxygen will then generate output that is more tailored for C.
296-# For instance, some of the names that are used will be different. The list
297+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
298+# sources only. Doxygen will then generate output that is more tailored for C.
299+# For instance, some of the names that are used will be different. The list
300 # of all members will be omitted, etc.
301
302-OPTIMIZE_OUTPUT_FOR_C = YES
303+OPTIMIZE_OUTPUT_FOR_C = NO
304
305-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
306-# sources only. Doxygen will then generate output that is more tailored for Java.
307-# For instance, namespaces will be presented as packages, qualified scopes
308-# will look different, etc.
309+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
310+# sources only. Doxygen will then generate output that is more tailored for
311+# Java. For instance, namespaces will be presented as packages, qualified
312+# scopes will look different, etc.
313
314 OPTIMIZE_OUTPUT_JAVA = NO
315
316-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
317-# include (a tag file for) the STL sources as input, then you should
318-# set this tag to YES in order to let doxygen match functions declarations and
319-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
320-# func(std::string) {}). This also make the inheritance and collaboration
321+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
322+# sources only. Doxygen will then generate output that is more tailored for
323+# Fortran.
324+
325+OPTIMIZE_FOR_FORTRAN = NO
326+
327+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
328+# sources. Doxygen will then generate output that is tailored for
329+# VHDL.
330+
331+OPTIMIZE_OUTPUT_VHDL = NO
332+
333+# Doxygen selects the parser to use depending on the extension of the files it
334+# parses. With this tag you can assign which parser to use for a given extension.
335+# Doxygen has a built-in mapping, but you can override or extend it using this
336+# tag. The format is ext=language, where ext is a file extension, and language
337+# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
338+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
339+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
340+# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
341+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
342+
343+EXTENSION_MAPPING =
344+
345+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
346+# to include (a tag file for) the STL sources as input, then you should
347+# set this tag to YES in order to let doxygen match functions declarations and
348+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
349+# func(std::string) {}). This also makes the inheritance and collaboration
350 # diagrams that involve STL classes more complete and accurate.
351
352-# BUILTIN_STL_SUPPORT = NO
353-
354-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
355-# tag is set to YES, then doxygen will reuse the documentation of the first
356-# member in the group (if any) for the other members of the group. By default
357+BUILTIN_STL_SUPPORT = NO
358+
359+# If you use Microsoft's C++/CLI language, you should set this option to YES to
360+# enable parsing support.
361+
362+CPP_CLI_SUPPORT = NO
363+
364+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
365+# Doxygen will parse them like normal C++ but will assume all classes use public
366+# instead of private inheritance when no explicit protection keyword is present.
367+
368+SIP_SUPPORT = NO
369+
370+# For Microsoft's IDL there are propget and propput attributes to indicate getter
371+# and setter methods for a property. Setting this option to YES (the default)
372+# will make doxygen replace the get and set methods by a property in the
373+# documentation. This will only work if the methods are indeed getting or
374+# setting a simple type. If this is not the case, or you want to show the
375+# methods anyway, you should set this option to NO.
376+
377+IDL_PROPERTY_SUPPORT = YES
378+
379+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
380+# tag is set to YES, then doxygen will reuse the documentation of the first
381+# member in the group (if any) for the other members of the group. By default
382 # all members of a group must be documented explicitly.
383
384 DISTRIBUTE_GROUP_DOC = NO
385
386-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
387-# the same type (for instance a group of public functions) to be put as a
388-# subgroup of that type (e.g. under the Public Functions section). Set it to
389-# NO to prevent subgrouping. Alternatively, this can be done per class using
390+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
391+# the same type (for instance a group of public functions) to be put as a
392+# subgroup of that type (e.g. under the Public Functions section). Set it to
393+# NO to prevent subgrouping. Alternatively, this can be done per class using
394 # the \nosubgrouping command.
395
396 SUBGROUPING = YES
397
398+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
399+# unions are shown inside the group in which they are included (e.g. using
400+# @ingroup) instead of on a separate page (for HTML and Man pages) or
401+# section (for LaTeX and RTF).
402+
403+INLINE_GROUPED_CLASSES = NO
404+
405+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
406+# unions with only public data fields will be shown inline in the documentation
407+# of the scope in which they are defined (i.e. file, namespace, or group
408+# documentation), provided this scope is documented. If set to NO (the default),
409+# structs, classes, and unions are shown on a separate page (for HTML and Man
410+# pages) or section (for LaTeX and RTF).
411+
412+INLINE_SIMPLE_STRUCTS = NO
413+
414+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
415+# is documented as struct, union, or enum with the name of the typedef. So
416+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
417+# with name TypeT. When disabled the typedef will appear as a member of a file,
418+# namespace, or class. And the struct will be named TypeS. This can typically
419+# be useful for C code in case the coding convention dictates that all compound
420+# types are typedef'ed and only the typedef is referenced, never the tag name.
421+
422+TYPEDEF_HIDES_STRUCT = NO
423+
424+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
425+# determine which symbols to keep in memory and which to flush to disk.
426+# When the cache is full, less often used symbols will be written to disk.
427+# For small to medium size projects (<1000 input files) the default value is
428+# probably good enough. For larger projects a too small cache size can cause
429+# doxygen to be busy swapping symbols to and from disk most of the time
430+# causing a significant performance penalty.
431+# If the system has enough physical memory increasing the cache will improve the
432+# performance by keeping more symbols in memory. Note that the value works on
433+# a logarithmic scale so increasing the size by one will roughly double the
434+# memory usage. The cache size is given by this formula:
435+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
436+# corresponding to a cache size of 2^16 = 65536 symbols
437+
438+SYMBOL_CACHE_SIZE = 0
439+
440 #---------------------------------------------------------------------------
441 # Build related configuration options
442 #---------------------------------------------------------------------------
443
444-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
445-# documentation are documented, even if no documentation was available.
446-# Private class members and static file members will be hidden unless
447+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
448+# documentation are documented, even if no documentation was available.
449+# Private class members and static file members will be hidden unless
450 # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
451
452 EXTRACT_ALL = YES
453
454-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
455+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
456 # will be included in the documentation.
457
458 EXTRACT_PRIVATE = NO
459
460-# If the EXTRACT_STATIC tag is set to YES all static members of a file
461+# If the EXTRACT_STATIC tag is set to YES all static members of a file
462 # will be included in the documentation.
463
464 EXTRACT_STATIC = NO
465
466-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
467-# defined locally in source files will be included in the documentation.
468+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
469+# defined locally in source files will be included in the documentation.
470 # If set to NO only classes defined in header files are included.
471
472 EXTRACT_LOCAL_CLASSES = YES
473
474-# This flag is only useful for Objective-C code. When set to YES local
475-# methods, which are defined in the implementation section but not in
476-# the interface are included in the documentation.
477+# This flag is only useful for Objective-C code. When set to YES local
478+# methods, which are defined in the implementation section but not in
479+# the interface are included in the documentation.
480 # If set to NO (the default) only methods in the interface are included.
481
482 EXTRACT_LOCAL_METHODS = NO
483
484-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
485-# undocumented members of documented classes, files or namespaces.
486-# If set to NO (the default) these members will be included in the
487-# various overviews, but no documentation section is generated.
488+# If this flag is set to YES, the members of anonymous namespaces will be
489+# extracted and appear in the documentation as a namespace called
490+# 'anonymous_namespace{file}', where file will be replaced with the base
491+# name of the file that contains the anonymous namespace. By default
492+# anonymous namespaces are hidden.
493+
494+EXTRACT_ANON_NSPACES = NO
495+
496+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
497+# undocumented members of documented classes, files or namespaces.
498+# If set to NO (the default) these members will be included in the
499+# various overviews, but no documentation section is generated.
500 # This option has no effect if EXTRACT_ALL is enabled.
501
502 HIDE_UNDOC_MEMBERS = YES
503
504-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
505-# undocumented classes that are normally visible in the class hierarchy.
506-# If set to NO (the default) these classes will be included in the various
507+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
508+# undocumented classes that are normally visible in the class hierarchy.
509+# If set to NO (the default) these classes will be included in the various
510 # overviews. This option has no effect if EXTRACT_ALL is enabled.
511
512 HIDE_UNDOC_CLASSES = YES
513
514-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
515-# friend (class|struct|union) declarations.
516-# If set to NO (the default) these declarations will be included in the
517+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
518+# friend (class|struct|union) declarations.
519+# If set to NO (the default) these declarations will be included in the
520 # documentation.
521
522 HIDE_FRIEND_COMPOUNDS = NO
523
524-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
525-# documentation blocks found inside the body of a function.
526-# If set to NO (the default) these blocks will be appended to the
527+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
528+# documentation blocks found inside the body of a function.
529+# If set to NO (the default) these blocks will be appended to the
530 # function's detailed documentation block.
531
532 HIDE_IN_BODY_DOCS = NO
533
534-# The INTERNAL_DOCS tag determines if documentation
535-# that is typed after a \internal command is included. If the tag is set
536-# to NO (the default) then the documentation will be excluded.
537+# The INTERNAL_DOCS tag determines if documentation
538+# that is typed after a \internal command is included. If the tag is set
539+# to NO (the default) then the documentation will be excluded.
540 # Set it to YES to include the internal documentation.
541
542 INTERNAL_DOCS = NO
543
544-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
545-# file names in lower-case letters. If set to YES upper-case letters are also
546-# allowed. This is useful if you have classes or files whose names only differ
547-# in case and if your file system supports case sensitive file names. Windows
548+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
549+# file names in lower-case letters. If set to YES upper-case letters are also
550+# allowed. This is useful if you have classes or files whose names only differ
551+# in case and if your file system supports case sensitive file names. Windows
552 # and Mac users are advised to set this option to NO.
553
554 CASE_SENSE_NAMES = YES
555
556-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
557-# will show members with their full class and namespace scopes in the
558+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
559+# will show members with their full class and namespace scopes in the
560 # documentation. If set to YES the scope will be hidden.
561
562 HIDE_SCOPE_NAMES = NO
563
564-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
565-# will put a list of the files that are included by a file in the documentation
566+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
567+# will put a list of the files that are included by a file in the documentation
568 # of that file.
569
570 SHOW_INCLUDE_FILES = YES
571
572-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
573+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
574+# will list include files with double quotes in the documentation
575+# rather than with sharp brackets.
576+
577+FORCE_LOCAL_INCLUDES = NO
578+
579+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
580 # is inserted in the documentation for inline members.
581
582 INLINE_INFO = YES
583
584-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
585-# will sort the (detailed) documentation of file and class members
586-# alphabetically by member name. If set to NO the members will appear in
587+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
588+# will sort the (detailed) documentation of file and class members
589+# alphabetically by member name. If set to NO the members will appear in
590 # declaration order.
591
592 SORT_MEMBER_DOCS = YES
593
594-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
595-# brief documentation of file, namespace and class members alphabetically
596-# by member name. If set to NO (the default) the members will appear in
597+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
598+# brief documentation of file, namespace and class members alphabetically
599+# by member name. If set to NO (the default) the members will appear in
600 # declaration order.
601
602 SORT_BRIEF_DOCS = YES
603
604-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
605-# sorted by fully-qualified names, including namespaces. If set to
606-# NO (the default), the class list will be sorted only by class name,
607-# not including the namespace part.
608+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
609+# will sort the (brief and detailed) documentation of class members so that
610+# constructors and destructors are listed first. If set to NO (the default)
611+# the constructors will appear in the respective orders defined by
612+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
613+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
614+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
615+
616+SORT_MEMBERS_CTORS_1ST = NO
617+
618+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
619+# hierarchy of group names into alphabetical order. If set to NO (the default)
620+# the group names will appear in their defined order.
621+
622+SORT_GROUP_NAMES = NO
623+
624+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
625+# sorted by fully-qualified names, including namespaces. If set to
626+# NO (the default), the class list will be sorted only by class name,
627+# not including the namespace part.
628 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
629-# Note: This option applies only to the class list, not to the
630+# Note: This option applies only to the class list, not to the
631 # alphabetical list.
632
633 SORT_BY_SCOPE_NAME = NO
634
635-# The GENERATE_TODOLIST tag can be used to enable (YES) or
636-# disable (NO) the todo list. This list is created by putting \todo
637+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
638+# do proper type resolution of all parameters of a function it will reject a
639+# match between the prototype and the implementation of a member function even
640+# if there is only one candidate or it is obvious which candidate to choose
641+# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
642+# will still accept a match between prototype and implementation in such cases.
643+
644+STRICT_PROTO_MATCHING = NO
645+
646+# The GENERATE_TODOLIST tag can be used to enable (YES) or
647+# disable (NO) the todo list. This list is created by putting \todo
648 # commands in the documentation.
649
650 GENERATE_TODOLIST = YES
651
652-# The GENERATE_TESTLIST tag can be used to enable (YES) or
653-# disable (NO) the test list. This list is created by putting \test
654+# The GENERATE_TESTLIST tag can be used to enable (YES) or
655+# disable (NO) the test list. This list is created by putting \test
656 # commands in the documentation.
657
658 GENERATE_TESTLIST = YES
659
660-# The GENERATE_BUGLIST tag can be used to enable (YES) or
661-# disable (NO) the bug list. This list is created by putting \bug
662+# The GENERATE_BUGLIST tag can be used to enable (YES) or
663+# disable (NO) the bug list. This list is created by putting \bug
664 # commands in the documentation.
665
666 GENERATE_BUGLIST = YES
667
668-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
669-# disable (NO) the deprecated list. This list is created by putting
670+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
671+# disable (NO) the deprecated list. This list is created by putting
672 # \deprecated commands in the documentation.
673
674 GENERATE_DEPRECATEDLIST= YES
675
676-# The ENABLED_SECTIONS tag can be used to enable conditional
677+# The ENABLED_SECTIONS tag can be used to enable conditional
678 # documentation sections, marked by \if sectionname ... \endif.
679
680 ENABLED_SECTIONS =
681
682-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
683-# the initial value of a variable or define consists of for it to appear in
684-# the documentation. If the initializer consists of more lines than specified
685-# here it will be hidden. Use a value of 0 to hide initializers completely.
686-# The appearance of the initializer of individual variables and defines in the
687-# documentation can be controlled using \showinitializer or \hideinitializer
688+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
689+# the initial value of a variable or macro consists of for it to appear in
690+# the documentation. If the initializer consists of more lines than specified
691+# here it will be hidden. Use a value of 0 to hide initializers completely.
692+# The appearance of the initializer of individual variables and macros in the
693+# documentation can be controlled using \showinitializer or \hideinitializer
694 # command in the documentation regardless of this setting.
695
696 MAX_INITIALIZER_LINES = 30
697
698-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
699-# at the bottom of the documentation of classes and structs. If set to YES the
700+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
701+# at the bottom of the documentation of classes and structs. If set to YES the
702 # list will mention the files that were used to generate the documentation.
703
704 SHOW_USED_FILES = YES
705
706-# If the sources in your project are distributed over multiple directories
707-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
708-# in the documentation. The default is YES.
709+# If the sources in your project are distributed over multiple directories
710+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
711+# in the documentation. The default is NO.
712
713 SHOW_DIRECTORIES = YES
714
715-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
716-# doxygen should invoke to get the current version for each file (typically from the
717-# version control system). Doxygen will invoke the program by executing (via
718-# popen()) the command <command> <input-file>, where <command> is the value of
719-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
720-# provided by doxygen. Whatever the program writes to standard output
721+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
722+# This will remove the Files entry from the Quick Index and from the
723+# Folder Tree View (if specified). The default is YES.
724+
725+SHOW_FILES = YES
726+
727+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
728+# Namespaces page.
729+# This will remove the Namespaces entry from the Quick Index
730+# and from the Folder Tree View (if specified). The default is YES.
731+
732+SHOW_NAMESPACES = YES
733+
734+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
735+# doxygen should invoke to get the current version for each file (typically from
736+# the version control system). Doxygen will invoke the program by executing (via
737+# popen()) the command <command> <input-file>, where <command> is the value of
738+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
739+# provided by doxygen. Whatever the program writes to standard output
740 # is used as the file version. See the manual for examples.
741
742-FILE_VERSION_FILTER =
743+FILE_VERSION_FILTER =
744+
745+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
746+# by doxygen. The layout file controls the global structure of the generated
747+# output files in an output format independent way. The create the layout file
748+# that represents doxygen's defaults, run doxygen with the -l option.
749+# You can optionally specify a file name after the option, if omitted
750+# DoxygenLayout.xml will be used as the name of the layout file.
751+
752+LAYOUT_FILE =
753+
754+# The CITE_BIB_FILES tag can be used to specify one or more bib files
755+# containing the references data. This must be a list of .bib files. The
756+# .bib extension is automatically appended if omitted. Using this command
757+# requires the bibtex tool to be installed. See also
758+# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
759+# of the bibliography can be controlled using LATEX_BIB_STYLE.
760+
761+CITE_BIB_FILES =
762
763 #---------------------------------------------------------------------------
764 # configuration options related to warning and progress messages
765 #---------------------------------------------------------------------------
766
767-# The QUIET tag can be used to turn on/off the messages that are generated
768+# The QUIET tag can be used to turn on/off the messages that are generated
769 # by doxygen. Possible values are YES and NO. If left blank NO is used.
770
771 QUIET = NO
772
773-# The WARNINGS tag can be used to turn on/off the warning messages that are
774-# generated by doxygen. Possible values are YES and NO. If left blank
775+# The WARNINGS tag can be used to turn on/off the warning messages that are
776+# generated by doxygen. Possible values are YES and NO. If left blank
777 # NO is used.
778
779 WARNINGS = YES
780
781-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
782-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
783+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
784+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
785 # automatically be disabled.
786
787 WARN_IF_UNDOCUMENTED = YES
788
789-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
790-# potential errors in the documentation, such as not documenting some
791-# parameters in a documented function, or documenting parameters that
792+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
793+# potential errors in the documentation, such as not documenting some
794+# parameters in a documented function, or documenting parameters that
795 # don't exist or using markup commands wrongly.
796
797 WARN_IF_DOC_ERROR = YES
798
799-# This WARN_NO_PARAMDOC option can be abled to get warnings for
800-# functions that are documented, but have no documentation for their parameters
801-# or return value. If set to NO (the default) doxygen will only warn about
802-# wrong or incomplete parameter documentation, but not about the absence of
803+# The WARN_NO_PARAMDOC option can be enabled to get warnings for
804+# functions that are documented, but have no documentation for their parameters
805+# or return value. If set to NO (the default) doxygen will only warn about
806+# wrong or incomplete parameter documentation, but not about the absence of
807 # documentation.
808
809 WARN_NO_PARAMDOC = NO
810
811-# The WARN_FORMAT tag determines the format of the warning messages that
812-# doxygen can produce. The string should contain the $file, $line, and $text
813-# tags, which will be replaced by the file and line number from which the
814-# warning originated and the warning text. Optionally the format may contain
815-# $version, which will be replaced by the version of the file (if it could
816+# The WARN_FORMAT tag determines the format of the warning messages that
817+# doxygen can produce. The string should contain the $file, $line, and $text
818+# tags, which will be replaced by the file and line number from which the
819+# warning originated and the warning text. Optionally the format may contain
820+# $version, which will be replaced by the version of the file (if it could
821 # be obtained via FILE_VERSION_FILTER)
822
823 WARN_FORMAT = @DOXY_WARN_FORMAT@
824
825-# The WARN_LOGFILE tag can be used to specify a file to which warning
826-# and error messages should be written. If left blank the output is written
827+# The WARN_LOGFILE tag can be used to specify a file to which warning
828+# and error messages should be written. If left blank the output is written
829 # to stderr.
830
831 WARN_LOGFILE = Doc/doxy.log
832@@ -445,145 +626,185 @@
833 # configuration options related to the input files
834 #---------------------------------------------------------------------------
835
836-# The INPUT tag can be used to specify the files and/or directories that contain
837-# documented source files. You may enter file names like "myfile.cpp" or
838-# directories like "/usr/src/myproject". Separate the files or directories
839+# The INPUT tag can be used to specify the files and/or directories that contain
840+# documented source files. You may enter file names like "myfile.cpp" or
841+# directories like "/usr/src/myproject". Separate the files or directories
842 # with spaces.
843
844-INPUT = @CMAKE_CURRENT_SOURCE_DIR@/manual
845-
846-# If the value of the INPUT tag contains directories, you can use the
847-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
848-# and *.h) to filter out the source-files in the directories. If left
849-# blank the following patterns are tested:
850-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
851-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
852-
853-FILE_PATTERNS = *.java *.dox
854-
855-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
856-# should be searched for input files as well. Possible values are YES and NO.
857+INPUT = @CMAKE_SOURCE_DIR@/swig/xqj \
858+ @CMAKE_CURRENT_SOURCE_DIR@/manual
859+
860+# This tag can be used to specify the character encoding of the source files
861+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
862+# also the default input encoding. Doxygen uses libiconv (or the iconv built
863+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
864+# the list of possible encodings.
865+
866+INPUT_ENCODING = UTF-8
867+
868+# If the value of the INPUT tag contains directories, you can use the
869+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
870+# and *.h) to filter out the source-files in the directories. If left
871+# blank the following patterns are tested:
872+# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
873+# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
874+# *.f90 *.f *.for *.vhd *.vhdl
875+
876+FILE_PATTERNS = *.java \
877+ *.dox
878+
879+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
880+# should be searched for input files as well. Possible values are YES and NO.
881 # If left blank NO is used.
882
883 RECURSIVE = YES
884
885-# The EXCLUDE tag can be used to specify files and/or directories that should
886-# excluded from the INPUT source files. This way you can easily exclude a
887+# The EXCLUDE tag can be used to specify files and/or directories that should
888+# excluded from the INPUT source files. This way you can easily exclude a
889 # subdirectory from a directory tree whose root is specified with the INPUT tag.
890-
891-EXCLUDE =
892-
893-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
894-# directories that are symbolic links (a Unix filesystem feature) are excluded
895+# Note that relative paths are relative to directory from which doxygen is run.
896+
897+EXCLUDE =
898+
899+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
900+# directories that are symbolic links (a Unix file system feature) are excluded
901 # from the input.
902
903 EXCLUDE_SYMLINKS = NO
904
905-# If the value of the INPUT tag contains directories, you can use the
906-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
907-# certain files from those directories. Note that the wildcards are matched
908-# against the file with absolute path, so to exclude all test directories
909+# If the value of the INPUT tag contains directories, you can use the
910+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
911+# certain files from those directories. Note that the wildcards are matched
912+# against the file with absolute path, so to exclude all test directories
913 # for example use the pattern */test/*
914
915 EXCLUDE_PATTERNS = */.svn \
916- */.svn/*
917-
918-# The EXAMPLE_PATH tag can be used to specify one or more files or
919-# directories that contain example code fragments that are included (see
920+ */.svn/* \
921+ */zorba/zorbac.h
922+
923+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
924+# (namespaces, classes, functions, etc.) that should be excluded from the
925+# output. The symbol name can be a fully qualified name, a word, or if the
926+# wildcard * is used, a substring. Examples: ANamespace, AClass,
927+# AClass::ANamespace, ANamespace::*Test
928+
929+EXCLUDE_SYMBOLS =
930+
931+# The EXAMPLE_PATH tag can be used to specify one or more files or
932+# directories that contain example code fragments that are included (see
933 # the \include command).
934
935-EXAMPLE_PATH = @CMAKE_CURRENT_BINARY_DIR@/examples
936+EXAMPLE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/examples
937
938-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
939-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
940-# and *.h) to filter out the source-files in the directories. If left
941+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
942+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
943+# and *.h) to filter out the source-files in the directories. If left
944 # blank all files are included.
945
946-EXAMPLE_PATTERNS = *.java
947+EXAMPLE_PATTERNS = *.java \
948+ *.xq
949
950-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
951-# searched for input files to be used with the \include or \dontinclude
952-# commands irrespective of the value of the RECURSIVE tag.
953+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
954+# searched for input files to be used with the \include or \dontinclude
955+# commands irrespective of the value of the RECURSIVE tag.
956 # Possible values are YES and NO. If left blank NO is used.
957
958 EXAMPLE_RECURSIVE = YES
959
960-# The IMAGE_PATH tag can be used to specify one or more files or
961-# directories that contain image that are included in the documentation (see
962+# The IMAGE_PATH tag can be used to specify one or more files or
963+# directories that contain image that are included in the documentation (see
964 # the \image command).
965
966 IMAGE_PATH = @CMAKE_CURRENT_SOURCE_DIR@
967
968-
969-# The INPUT_FILTER tag can be used to specify a program that doxygen should
970-# invoke to filter for each input file. Doxygen will invoke the filter program
971-# by executing (via popen()) the command <filter> <input-file>, where <filter>
972-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
973-# input file. Doxygen will then use the output that the filter program writes
974-# to standard output. If FILTER_PATTERNS is specified, this tag will be
975+# The INPUT_FILTER tag can be used to specify a program that doxygen should
976+# invoke to filter for each input file. Doxygen will invoke the filter program
977+# by executing (via popen()) the command <filter> <input-file>, where <filter>
978+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
979+# input file. Doxygen will then use the output that the filter program writes
980+# to standard output.
981+# If FILTER_PATTERNS is specified, this tag will be
982 # ignored.
983
984-INPUT_FILTER =
985-
986-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
987-# basis. Doxygen will compare the file name with each pattern and apply the
988-# filter if there is a match. The filters are a list of the form:
989-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
990-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
991-# is applied to all files.
992-
993-FILTER_PATTERNS =
994-
995-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
996-# INPUT_FILTER) will be used to filter the input files when producing source
997+INPUT_FILTER =
998+
999+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
1000+# basis.
1001+# Doxygen will compare the file name with each pattern and apply the
1002+# filter if there is a match.
1003+# The filters are a list of the form:
1004+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
1005+# info on how filters are used. If FILTER_PATTERNS is empty or if
1006+# non of the patterns match the file name, INPUT_FILTER is applied.
1007+
1008+FILTER_PATTERNS =
1009+
1010+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
1011+# INPUT_FILTER) will be used to filter the input files when producing source
1012 # files to browse (i.e. when SOURCE_BROWSER is set to YES).
1013
1014 FILTER_SOURCE_FILES = NO
1015
1016+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
1017+# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
1018+# and it is also possible to disable source filtering for a specific pattern
1019+# using *.ext= (so without naming a filter). This option only has effect when
1020+# FILTER_SOURCE_FILES is enabled.
1021+
1022+FILTER_SOURCE_PATTERNS =
1023+
1024 #---------------------------------------------------------------------------
1025 # configuration options related to source browsing
1026 #---------------------------------------------------------------------------
1027
1028-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
1029-# be generated. Documented entities will be cross-referenced with these sources.
1030-# Note: To get rid of all source code in the generated output, make sure also
1031+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
1032+# be generated. Documented entities will be cross-referenced with these sources.
1033+# Note: To get rid of all source code in the generated output, make sure also
1034 # VERBATIM_HEADERS is set to NO.
1035
1036 SOURCE_BROWSER = YES
1037
1038-# Setting the INLINE_SOURCES tag to YES will include the body
1039+# Setting the INLINE_SOURCES tag to YES will include the body
1040 # of functions and classes directly in the documentation.
1041
1042 INLINE_SOURCES = NO
1043
1044-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
1045-# doxygen to hide any special comment blocks from generated source code
1046+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
1047+# doxygen to hide any special comment blocks from generated source code
1048 # fragments. Normal C and C++ comments will always remain visible.
1049
1050 STRIP_CODE_COMMENTS = NO
1051
1052-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
1053-# then for each documented function all documented
1054+# If the REFERENCED_BY_RELATION tag is set to YES
1055+# then for each documented function all documented
1056 # functions referencing it will be listed.
1057
1058 REFERENCED_BY_RELATION = YES
1059
1060-# If the REFERENCES_RELATION tag is set to YES (the default)
1061-# then for each documented function all documented entities
1062+# If the REFERENCES_RELATION tag is set to YES
1063+# then for each documented function all documented entities
1064 # called/used by that function will be listed.
1065
1066 REFERENCES_RELATION = YES
1067
1068-# If the USE_HTAGS tag is set to YES then the references to source code
1069-# will point to the HTML generated by the htags(1) tool instead of doxygen
1070-# built-in source browser. The htags tool is part of GNU's global source
1071-# tagging system (see http://www.gnu.org/software/global/global.html). You
1072+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
1073+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
1074+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
1075+# link to the source code.
1076+# Otherwise they will link to the documentation.
1077+
1078+REFERENCES_LINK_SOURCE = YES
1079+
1080+# If the USE_HTAGS tag is set to YES then the references to source code
1081+# will point to the HTML generated by the htags(1) tool instead of doxygen
1082+# built-in source browser. The htags tool is part of GNU's global source
1083+# tagging system (see http://www.gnu.org/software/global/global.html). You
1084 # will need version 4.8.6 or higher.
1085
1086 USE_HTAGS = NO
1087
1088-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
1089-# will generate a verbatim copy of the header file for each class for
1090+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
1091+# will generate a verbatim copy of the header file for each class for
1092 # which an include is specified. Set to NO to disable this.
1093
1094 VERBATIM_HEADERS = YES
1095@@ -592,281 +813,548 @@
1096 # configuration options related to the alphabetical class index
1097 #---------------------------------------------------------------------------
1098
1099-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
1100-# of all compounds will be generated. Enable this if the project
1101+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
1102+# of all compounds will be generated. Enable this if the project
1103 # contains a lot of classes, structs, unions or interfaces.
1104
1105 ALPHABETICAL_INDEX = YES
1106
1107-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
1108-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
1109+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
1110+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
1111 # in which this list will be split (can be a number in the range [1..20])
1112
1113 COLS_IN_ALPHA_INDEX = 2
1114
1115-# In case all classes in a project start with a common prefix, all
1116-# classes will be put under the same header in the alphabetical index.
1117-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
1118+# In case all classes in a project start with a common prefix, all
1119+# classes will be put under the same header in the alphabetical index.
1120+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
1121 # should be ignored while generating the index headers.
1122
1123-IGNORE_PREFIX =
1124+IGNORE_PREFIX =
1125
1126 #---------------------------------------------------------------------------
1127 # configuration options related to the HTML output
1128 #---------------------------------------------------------------------------
1129
1130-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
1131+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
1132 # generate HTML output.
1133
1134 GENERATE_HTML = YES
1135
1136-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
1137-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1138+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
1139+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1140 # put in front of it. If left blank `html' will be used as the default path.
1141
1142 HTML_OUTPUT = html
1143
1144-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
1145-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
1146+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
1147+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
1148 # doxygen will generate files with .html extension.
1149
1150 HTML_FILE_EXTENSION = .html
1151
1152-# The HTML_HEADER tag can be used to specify a personal HTML header for
1153-# each generated HTML page. If it is left blank doxygen will generate a
1154-# standard header.
1155+# The HTML_HEADER tag can be used to specify a personal HTML header for
1156+# each generated HTML page. If it is left blank doxygen will generate a
1157+# standard header. Note that when using a custom header you are responsible
1158+# for the proper inclusion of any scripts and style sheets that doxygen
1159+# needs, which is dependent on the configuration options used.
1160+# It is adviced to generate a default header using "doxygen -w html
1161+# header.html footer.html stylesheet.css YourConfigFile" and then modify
1162+# that header. Note that the header is subject to change so you typically
1163+# have to redo this when upgrading to a newer version of doxygen or when
1164+# changing the value of configuration settings such as GENERATE_TREEVIEW!
1165+
1166 HTML_HEADER = @CMAKE_CURRENT_SOURCE_DIR@/../style/header.html
1167
1168-
1169-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
1170-# each generated HTML page. If it is left blank doxygen will generate a
1171+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
1172+# each generated HTML page. If it is left blank doxygen will generate a
1173 # standard footer.
1174
1175 HTML_FOOTER = @CMAKE_CURRENT_SOURCE_DIR@/../style/footer.html
1176
1177-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
1178-# style sheet that is used by each HTML page. It can be used to
1179-# fine-tune the look of the HTML output. If the tag is left blank doxygen
1180-# will generate a default style sheet. Note that doxygen will try to copy
1181-# the style sheet file to the HTML output directory, so don't put your own
1182+# If the HTML_TIMESTAMP tag is set to YES then the generated HTML documentation will contain the timesstamp.
1183+
1184+HTML_TIMESTAMP = NO
1185+
1186+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
1187+# style sheet that is used by each HTML page. It can be used to
1188+# fine-tune the look of the HTML output. If the tag is left blank doxygen
1189+# will generate a default style sheet. Note that doxygen will try to copy
1190+# the style sheet file to the HTML output directory, so don't put your own
1191 # stylesheet in the HTML output directory as well, or it will be erased!
1192
1193 HTML_STYLESHEET = @CMAKE_CURRENT_SOURCE_DIR@/../style/stylesheet.css
1194
1195-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
1196-# files or namespaces will be aligned in HTML using tables. If set to
1197+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
1198+# other source files which should be copied to the HTML output directory. Note
1199+# that these files will be copied to the base HTML output directory. Use the
1200+# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
1201+# files. In the HTML_STYLESHEET file, use the file name only. Also note that
1202+# the files will be copied as-is; there are no commands or markers available.
1203+
1204+HTML_EXTRA_FILES =
1205+
1206+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
1207+# Doxygen will adjust the colors in the stylesheet and background images
1208+# according to this color. Hue is specified as an angle on a colorwheel,
1209+# see http://en.wikipedia.org/wiki/Hue for more information.
1210+# For instance the value 0 represents red, 60 is yellow, 120 is green,
1211+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
1212+# The allowed range is 0 to 359.
1213+
1214+HTML_COLORSTYLE_HUE = 220
1215+
1216+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
1217+# the colors in the HTML output. For a value of 0 the output will use
1218+# grayscales only. A value of 255 will produce the most vivid colors.
1219+
1220+HTML_COLORSTYLE_SAT = 100
1221+
1222+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
1223+# the luminance component of the colors in the HTML output. Values below
1224+# 100 gradually make the output lighter, whereas values above 100 make
1225+# the output darker. The value divided by 100 is the actual gamma applied,
1226+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
1227+# and 100 does not change the gamma.
1228+
1229+HTML_COLORSTYLE_GAMMA = 80
1230+
1231+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
1232+# page will contain the date and time when the page was generated. Setting
1233+# this to NO can help when comparing the output of multiple runs.
1234+
1235+HTML_TIMESTAMP = YES
1236+
1237+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
1238+# files or namespaces will be aligned in HTML using tables. If set to
1239 # NO a bullet list will be used.
1240
1241 HTML_ALIGN_MEMBERS = YES
1242
1243-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
1244-# will be generated that can be used as input for tools like the
1245-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
1246+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1247+# documentation will contain sections that can be hidden and shown after the
1248+# page has loaded. For this to work a browser that supports
1249+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
1250+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
1251+
1252+HTML_DYNAMIC_SECTIONS = NO
1253+
1254+# If the GENERATE_DOCSET tag is set to YES, additional index files
1255+# will be generated that can be used as input for Apple's Xcode 3
1256+# integrated development environment, introduced with OSX 10.5 (Leopard).
1257+# To create a documentation set, doxygen will generate a Makefile in the
1258+# HTML output directory. Running make will produce the docset in that
1259+# directory and running "make install" will install the docset in
1260+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
1261+# it at startup.
1262+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
1263+# for more information.
1264+
1265+GENERATE_DOCSET = NO
1266+
1267+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
1268+# feed. A documentation feed provides an umbrella under which multiple
1269+# documentation sets from a single provider (such as a company or product suite)
1270+# can be grouped.
1271+
1272+DOCSET_FEEDNAME = "Doxygen generated docs"
1273+
1274+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
1275+# should uniquely identify the documentation set bundle. This should be a
1276+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
1277+# will append .docset to the name.
1278+
1279+DOCSET_BUNDLE_ID = org.doxygen.Project
1280+
1281+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
1282+# the documentation publisher. This should be a reverse domain-name style
1283+# string, e.g. com.mycompany.MyDocSet.documentation.
1284+
1285+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
1286+
1287+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
1288+
1289+DOCSET_PUBLISHER_NAME = Publisher
1290+
1291+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
1292+# will be generated that can be used as input for tools like the
1293+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
1294 # of the generated HTML documentation.
1295
1296 GENERATE_HTMLHELP = YES
1297
1298-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
1299-# be used to specify the file name of the resulting .chm file. You
1300-# can add a path in front of the file if the result should not be
1301+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
1302+# be used to specify the file name of the resulting .chm file. You
1303+# can add a path in front of the file if the result should not be
1304 # written to the html output directory.
1305
1306-CHM_FILE =
1307+CHM_FILE =
1308
1309-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
1310-# be used to specify the location (absolute path including file name) of
1311-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
1312+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
1313+# be used to specify the location (absolute path including file name) of
1314+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
1315 # the HTML help compiler on the generated index.hhp.
1316
1317-HHC_LOCATION =
1318+HHC_LOCATION =
1319
1320-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
1321-# controls if a separate .chi index file is generated (YES) or that
1322+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
1323+# controls if a separate .chi index file is generated (YES) or that
1324 # it should be included in the master .chm file (NO).
1325
1326 GENERATE_CHI = NO
1327
1328-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
1329-# controls whether a binary table of contents is generated (YES) or a
1330+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
1331+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
1332+# content.
1333+
1334+CHM_INDEX_ENCODING =
1335+
1336+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
1337+# controls whether a binary table of contents is generated (YES) or a
1338 # normal table of contents (NO) in the .chm file.
1339
1340 BINARY_TOC = NO
1341
1342-# The TOC_EXPAND flag can be set to YES to add extra items for group members
1343+# The TOC_EXPAND flag can be set to YES to add extra items for group members
1344 # to the contents of the HTML help documentation and to the tree view.
1345
1346 TOC_EXPAND = NO
1347
1348-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
1349-# top of each HTML page. The value NO (the default) enables the index and
1350+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
1351+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
1352+# that can be used as input for Qt's qhelpgenerator to generate a
1353+# Qt Compressed Help (.qch) of the generated HTML documentation.
1354+
1355+GENERATE_QHP = NO
1356+
1357+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
1358+# be used to specify the file name of the resulting .qch file.
1359+# The path specified is relative to the HTML output folder.
1360+
1361+QCH_FILE =
1362+
1363+# The QHP_NAMESPACE tag specifies the namespace to use when generating
1364+# Qt Help Project output. For more information please see
1365+# http://doc.trolltech.com/qthelpproject.html#namespace
1366+
1367+QHP_NAMESPACE = org.doxygen.Project
1368+
1369+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
1370+# Qt Help Project output. For more information please see
1371+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
1372+
1373+QHP_VIRTUAL_FOLDER = doc
1374+
1375+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
1376+# add. For more information please see
1377+# http://doc.trolltech.com/qthelpproject.html#custom-filters
1378+
1379+QHP_CUST_FILTER_NAME =
1380+
1381+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
1382+# custom filter to add. For more information please see
1383+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
1384+# Qt Help Project / Custom Filters</a>.
1385+
1386+QHP_CUST_FILTER_ATTRS =
1387+
1388+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1389+# project's
1390+# filter section matches.
1391+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
1392+# Qt Help Project / Filter Attributes</a>.
1393+
1394+QHP_SECT_FILTER_ATTRS =
1395+
1396+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
1397+# be used to specify the location of Qt's qhelpgenerator.
1398+# If non-empty doxygen will try to run qhelpgenerator on the generated
1399+# .qhp file.
1400+
1401+QHG_LOCATION =
1402+
1403+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
1404+# will be generated, which together with the HTML files, form an Eclipse help
1405+# plugin. To install this plugin and make it available under the help contents
1406+# menu in Eclipse, the contents of the directory containing the HTML and XML
1407+# files needs to be copied into the plugins directory of eclipse. The name of
1408+# the directory within the plugins directory should be the same as
1409+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
1410+# the help appears.
1411+
1412+GENERATE_ECLIPSEHELP = NO
1413+
1414+# A unique identifier for the eclipse help plugin. When installing the plugin
1415+# the directory name containing the HTML and XML files should also have
1416+# this name.
1417+
1418+ECLIPSE_DOC_ID = org.doxygen.Project
1419+
1420+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
1421+# top of each HTML page. The value NO (the default) enables the index and
1422 # the value YES disables it.
1423
1424 DISABLE_INDEX = NO
1425
1426-# This tag can be used to set the number of enum values (range [1..20])
1427-# that doxygen will group on one line in the generated HTML documentation.
1428+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
1429+# (range [0,1..20]) that doxygen will group on one line in the generated HTML
1430+# documentation. Note that a value of 0 will completely suppress the enum
1431+# values from appearing in the overview section.
1432
1433 ENUM_VALUES_PER_LINE = 4
1434
1435-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
1436-# generated containing a tree-like index structure (just like the one that
1437-# is generated for HTML Help). For this to work a browser that supports
1438-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
1439-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
1440-# probably better off using the HTML help feature.
1441+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
1442+# structure should be generated to display hierarchical information.
1443+# If the tag value is set to YES, a side panel will be generated
1444+# containing a tree-like index structure (just like the one that
1445+# is generated for HTML Help). For this to work a browser that supports
1446+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
1447+# Windows users are probably better off using the HTML help feature.
1448
1449 GENERATE_TREEVIEW = NO
1450
1451-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
1452-# used to set the initial width (in pixels) of the frame in which the tree
1453+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
1454+# and Class Hierarchy pages using a tree view instead of an ordered list.
1455+
1456+USE_INLINE_TREES = NO
1457+
1458+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
1459+# used to set the initial width (in pixels) of the frame in which the tree
1460 # is shown.
1461
1462 TREEVIEW_WIDTH = 250
1463
1464+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
1465+# links to external symbols imported via tag files in a separate window.
1466+
1467+EXT_LINKS_IN_WINDOW = NO
1468+
1469+# Use this tag to change the font size of Latex formulas included
1470+# as images in the HTML documentation. The default is 10. Note that
1471+# when you change the font size after a successful doxygen run you need
1472+# to manually remove any form_*.png images from the HTML output directory
1473+# to force them to be regenerated.
1474+
1475+FORMULA_FONTSIZE = 10
1476+
1477+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
1478+# generated for formulas are transparent PNGs. Transparent PNGs are
1479+# not supported properly for IE 6.0, but are supported on all modern browsers.
1480+# Note that when changing this option you need to delete any form_*.png files
1481+# in the HTML output before the changes have effect.
1482+
1483+FORMULA_TRANSPARENT = YES
1484+
1485+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
1486+# (see http://www.mathjax.org) which uses client side Javascript for the
1487+# rendering instead of using prerendered bitmaps. Use this if you do not
1488+# have LaTeX installed or if you want to formulas look prettier in the HTML
1489+# output. When enabled you also need to install MathJax separately and
1490+# configure the path to it using the MATHJAX_RELPATH option.
1491+
1492+USE_MATHJAX = NO
1493+
1494+# When MathJax is enabled you need to specify the location relative to the
1495+# HTML output directory using the MATHJAX_RELPATH option. The destination
1496+# directory should contain the MathJax.js script. For instance, if the mathjax
1497+# directory is located at the same level as the HTML output directory, then
1498+# MATHJAX_RELPATH should be ../mathjax. The default value points to the
1499+# mathjax.org site, so you can quickly see the result without installing
1500+# MathJax, but it is strongly recommended to install a local copy of MathJax
1501+# before deployment.
1502+
1503+MATHJAX_RELPATH = http://www.mathjax.org/mathjax
1504+
1505+# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
1506+# names that should be enabled during MathJax rendering.
1507+
1508+MATHJAX_EXTENSIONS =
1509+
1510+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
1511+# for the HTML output. The underlying search engine uses javascript
1512+# and DHTML and should work on any modern browser. Note that when using
1513+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
1514+# (GENERATE_DOCSET) there is already a search function so this one should
1515+# typically be disabled. For large projects the javascript based search engine
1516+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
1517+
1518+SEARCHENGINE = YES
1519+
1520+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1521+# implemented using a PHP enabled web server instead of at the web client
1522+# using Javascript. Doxygen will generate the search PHP script and index
1523+# file to put on the web server. The advantage of the server
1524+# based approach is that it scales better to large projects and allows
1525+# full text search. The disadvantages are that it is more difficult to setup
1526+# and does not have live searching capabilities.
1527+
1528+SERVER_BASED_SEARCH = NO
1529+
1530 #---------------------------------------------------------------------------
1531 # configuration options related to the LaTeX output
1532 #---------------------------------------------------------------------------
1533
1534-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
1535+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
1536 # generate Latex output.
1537
1538 GENERATE_LATEX = NO
1539
1540-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
1541-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1542+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
1543+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1544 # put in front of it. If left blank `latex' will be used as the default path.
1545
1546 LATEX_OUTPUT = latex
1547
1548-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1549+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1550 # invoked. If left blank `latex' will be used as the default command name.
1551-
1552-#LATEX_CMD_NAME = latex
1553-LATEX_CMD_NAME = @LATEX_COMPILER@
1554-
1555-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
1556-# generate index for LaTeX. If left blank `makeindex' will be used as the
1557+# Note that when enabling USE_PDFLATEX this option is only used for
1558+# generating bitmaps for formulas in the HTML output, but not in the
1559+# Makefile that is written to the output directory.
1560+
1561+LATEX_CMD_NAME = @LATEX_COMPILER@
1562+
1563+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
1564+# generate index for LaTeX. If left blank `makeindex' will be used as the
1565 # default command name.
1566
1567-#MAKEINDEX_CMD_NAME = makeindex
1568 MAKEINDEX_CMD_NAME = @MAKEINDEX_COMPILER@
1569
1570-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
1571-# LaTeX documents. This may be useful for small projects and may help to
1572+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
1573+# LaTeX documents. This may be useful for small projects and may help to
1574 # save some trees in general.
1575
1576 COMPACT_LATEX = NO
1577
1578-# The PAPER_TYPE tag can be used to set the paper type that is used
1579-# by the printer. Possible values are: a4, a4wide, letter, legal and
1580+# The PAPER_TYPE tag can be used to set the paper type that is used
1581+# by the printer. Possible values are: a4, letter, legal and
1582 # executive. If left blank a4wide will be used.
1583
1584 PAPER_TYPE = a4
1585
1586-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
1587+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
1588 # packages that should be included in the LaTeX output.
1589
1590-EXTRA_PACKAGES =
1591+EXTRA_PACKAGES =
1592
1593-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
1594-# the generated latex document. The header should contain everything until
1595-# the first chapter. If it is left blank doxygen will generate a
1596+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
1597+# the generated latex document. The header should contain everything until
1598+# the first chapter. If it is left blank doxygen will generate a
1599 # standard header. Notice: only use this tag if you know what you are doing!
1600
1601-LATEX_HEADER =
1602-
1603-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
1604-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
1605-# contain links (just like the HTML output) instead of page references
1606+LATEX_HEADER =
1607+
1608+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
1609+# the generated latex document. The footer should contain everything after
1610+# the last chapter. If it is left blank doxygen will generate a
1611+# standard footer. Notice: only use this tag if you know what you are doing!
1612+
1613+LATEX_FOOTER =
1614+
1615+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
1616+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
1617+# contain links (just like the HTML output) instead of page references
1618 # This makes the output suitable for online browsing using a pdf viewer.
1619
1620 PDF_HYPERLINKS = YES
1621
1622-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
1623-# plain latex in the generated Makefile. Set this option to YES to get a
1624+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
1625+# plain latex in the generated Makefile. Set this option to YES to get a
1626 # higher quality PDF documentation.
1627
1628 USE_PDFLATEX = YES
1629
1630-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
1631-# command to the generated LaTeX files. This will instruct LaTeX to keep
1632-# running if errors occur, instead of asking the user for help.
1633+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
1634+# command to the generated LaTeX files. This will instruct LaTeX to keep
1635+# running if errors occur, instead of asking the user for help.
1636 # This option is also used when generating formulas in HTML.
1637
1638 LATEX_BATCHMODE = YES
1639
1640-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
1641-# include the index chapters (such as File Index, Compound Index, etc.)
1642+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
1643+# include the index chapters (such as File Index, Compound Index, etc.)
1644 # in the output.
1645
1646 LATEX_HIDE_INDICES = NO
1647
1648+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
1649+# source code with syntax highlighting in the LaTeX output.
1650+# Note that which sources are shown also depends on other settings
1651+# such as SOURCE_BROWSER.
1652+
1653+LATEX_SOURCE_CODE = NO
1654+
1655+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1656+# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
1657+# http://en.wikipedia.org/wiki/BibTeX for more info.
1658+
1659+LATEX_BIB_STYLE = plain
1660+
1661 #---------------------------------------------------------------------------
1662 # configuration options related to the RTF output
1663 #---------------------------------------------------------------------------
1664
1665-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
1666-# The RTF output is optimized for Word 97 and may not look very pretty with
1667+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
1668+# The RTF output is optimized for Word 97 and may not look very pretty with
1669 # other RTF readers or editors.
1670
1671 GENERATE_RTF = NO
1672
1673-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
1674-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1675+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
1676+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1677 # put in front of it. If left blank `rtf' will be used as the default path.
1678
1679 RTF_OUTPUT = rtf
1680
1681-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
1682-# RTF documents. This may be useful for small projects and may help to
1683+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
1684+# RTF documents. This may be useful for small projects and may help to
1685 # save some trees in general.
1686
1687 COMPACT_RTF = NO
1688
1689-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
1690-# will contain hyperlink fields. The RTF file will
1691-# contain links (just like the HTML output) instead of page references.
1692-# This makes the output suitable for online browsing using WORD or other
1693-# programs which support those fields.
1694+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
1695+# will contain hyperlink fields. The RTF file will
1696+# contain links (just like the HTML output) instead of page references.
1697+# This makes the output suitable for online browsing using WORD or other
1698+# programs which support those fields.
1699 # Note: wordpad (write) and others do not support links.
1700
1701 RTF_HYPERLINKS = NO
1702
1703-# Load stylesheet definitions from file. Syntax is similar to doxygen's
1704-# config file, i.e. a series of assignments. You only have to provide
1705+# Load stylesheet definitions from file. Syntax is similar to doxygen's
1706+# config file, i.e. a series of assignments. You only have to provide
1707 # replacements, missing definitions are set to their default value.
1708
1709-RTF_STYLESHEET_FILE =
1710+RTF_STYLESHEET_FILE =
1711
1712-# Set optional variables used in the generation of an rtf document.
1713+# Set optional variables used in the generation of an rtf document.
1714 # Syntax is similar to doxygen's config file.
1715
1716-RTF_EXTENSIONS_FILE =
1717+RTF_EXTENSIONS_FILE =
1718
1719 #---------------------------------------------------------------------------
1720 # configuration options related to the man page output
1721 #---------------------------------------------------------------------------
1722
1723-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
1724+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
1725 # generate man pages
1726
1727 GENERATE_MAN = NO
1728
1729-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
1730-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1731+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
1732+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1733 # put in front of it. If left blank `man' will be used as the default path.
1734
1735 MAN_OUTPUT = man
1736
1737-# The MAN_EXTENSION tag determines the extension that is added to
1738+# The MAN_EXTENSION tag determines the extension that is added to
1739 # the generated man pages (default is the subroutine's section .3)
1740
1741 MAN_EXTENSION = .3
1742
1743-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
1744-# then it will generate one additional man file for each entity
1745-# documented in the real man page(s). These additional files
1746-# only source the real man page, but without them the man command
1747+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
1748+# then it will generate one additional man file for each entity
1749+# documented in the real man page(s). These additional files
1750+# only source the real man page, but without them the man command
1751 # would be unable to find the correct page. The default is NO.
1752
1753 MAN_LINKS = NO
1754@@ -875,33 +1363,33 @@
1755 # configuration options related to the XML output
1756 #---------------------------------------------------------------------------
1757
1758-# If the GENERATE_XML tag is set to YES Doxygen will
1759-# generate an XML file that captures the structure of
1760+# If the GENERATE_XML tag is set to YES Doxygen will
1761+# generate an XML file that captures the structure of
1762 # the code including all documentation.
1763
1764 GENERATE_XML = NO
1765
1766-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
1767-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1768+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
1769+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1770 # put in front of it. If left blank `xml' will be used as the default path.
1771
1772 XML_OUTPUT = xml
1773
1774-# The XML_SCHEMA tag can be used to specify an XML schema,
1775-# which can be used by a validating XML parser to check the
1776-# syntax of the XML files.
1777-
1778-XML_SCHEMA =
1779-
1780-# The XML_DTD tag can be used to specify an XML DTD,
1781-# which can be used by a validating XML parser to check the
1782-# syntax of the XML files.
1783-
1784-XML_DTD =
1785-
1786-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
1787-# dump the program listings (including syntax highlighting
1788-# and cross-referencing information) to the XML output. Note that
1789+# The XML_SCHEMA tag can be used to specify an XML schema,
1790+# which can be used by a validating XML parser to check the
1791+# syntax of the XML files.
1792+
1793+XML_SCHEMA =
1794+
1795+# The XML_DTD tag can be used to specify an XML DTD,
1796+# which can be used by a validating XML parser to check the
1797+# syntax of the XML files.
1798+
1799+XML_DTD =
1800+
1801+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
1802+# dump the program listings (including syntax highlighting
1803+# and cross-referencing information) to the XML output. Note that
1804 # enabling this will significantly increase the size of the XML output.
1805
1806 XML_PROGRAMLISTING = YES
1807@@ -910,10 +1398,10 @@
1808 # configuration options for the AutoGen Definitions output
1809 #---------------------------------------------------------------------------
1810
1811-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
1812-# generate an AutoGen Definitions (see autogen.sf.net) file
1813-# that captures the structure of the code including all
1814-# documentation. Note that this feature is still experimental
1815+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
1816+# generate an AutoGen Definitions (see autogen.sf.net) file
1817+# that captures the structure of the code including all
1818+# documentation. Note that this feature is still experimental
1819 # and incomplete at the moment.
1820
1821 GENERATE_AUTOGEN_DEF = NO
1822@@ -922,286 +1410,359 @@
1823 # configuration options related to the Perl module output
1824 #---------------------------------------------------------------------------
1825
1826-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
1827-# generate a Perl module file that captures the structure of
1828-# the code including all documentation. Note that this
1829-# feature is still experimental and incomplete at the
1830+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
1831+# generate a Perl module file that captures the structure of
1832+# the code including all documentation. Note that this
1833+# feature is still experimental and incomplete at the
1834 # moment.
1835
1836 GENERATE_PERLMOD = NO
1837
1838-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
1839-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
1840+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
1841+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
1842 # to generate PDF and DVI output from the Perl module output.
1843
1844 PERLMOD_LATEX = NO
1845
1846-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
1847-# nicely formatted so it can be parsed by a human reader. This is useful
1848-# if you want to understand what is going on. On the other hand, if this
1849-# tag is set to NO the size of the Perl module output will be much smaller
1850+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
1851+# nicely formatted so it can be parsed by a human reader.
1852+# This is useful
1853+# if you want to understand what is going on.
1854+# On the other hand, if this
1855+# tag is set to NO the size of the Perl module output will be much smaller
1856 # and Perl will parse it just the same.
1857
1858 PERLMOD_PRETTY = YES
1859
1860-# The names of the make variables in the generated doxyrules.make file
1861-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
1862-# This is useful so different doxyrules.make files included by the same
1863+# The names of the make variables in the generated doxyrules.make file
1864+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
1865+# This is useful so different doxyrules.make files included by the same
1866 # Makefile don't overwrite each other's variables.
1867
1868-PERLMOD_MAKEVAR_PREFIX =
1869-
1870-#---------------------------------------------------------------------------
1871-# Configuration options related to the preprocessor
1872-#---------------------------------------------------------------------------
1873-
1874-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
1875-# evaluate all C-preprocessor directives found in the sources and include
1876+PERLMOD_MAKEVAR_PREFIX =
1877+
1878+#---------------------------------------------------------------------------
1879+# Configuration options related to the preprocessor
1880+#---------------------------------------------------------------------------
1881+
1882+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
1883+# evaluate all C-preprocessor directives found in the sources and include
1884 # files.
1885
1886 ENABLE_PREPROCESSING = YES
1887
1888-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
1889-# names in the source code. If set to NO (the default) only conditional
1890-# compilation will be performed. Macro expansion can be done in a controlled
1891+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
1892+# names in the source code. If set to NO (the default) only conditional
1893+# compilation will be performed. Macro expansion can be done in a controlled
1894 # way by setting EXPAND_ONLY_PREDEF to YES.
1895
1896 MACRO_EXPANSION = YES
1897
1898-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
1899-# then the macro expansion is limited to the macros specified with the
1900+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
1901+# then the macro expansion is limited to the macros specified with the
1902 # PREDEFINED and EXPAND_AS_DEFINED tags.
1903
1904 EXPAND_ONLY_PREDEF = YES
1905
1906-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
1907-# in the INCLUDE_PATH (see below) will be search if a #include is found.
1908+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
1909+# pointed to by INCLUDE_PATH will be searched when a #include is found.
1910
1911 SEARCH_INCLUDES = YES
1912
1913-# The INCLUDE_PATH tag can be used to specify one or more directories that
1914-# contain include files that are not input files but should be processed by
1915+# The INCLUDE_PATH tag can be used to specify one or more directories that
1916+# contain include files that are not input files but should be processed by
1917 # the preprocessor.
1918
1919-INCLUDE_PATH =
1920+INCLUDE_PATH =
1921
1922-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1923-# patterns (like *.h and *.hpp) to filter out the header-files in the
1924-# directories. If left blank, the patterns specified with FILE_PATTERNS will
1925+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1926+# patterns (like *.h and *.hpp) to filter out the header-files in the
1927+# directories. If left blank, the patterns specified with FILE_PATTERNS will
1928 # be used.
1929
1930-INCLUDE_FILE_PATTERNS =
1931+INCLUDE_FILE_PATTERNS =
1932
1933-# The PREDEFINED tag can be used to specify one or more macro names that
1934-# are defined before the preprocessor is started (similar to the -D option of
1935-# gcc). The argument of the tag is a list of macros of the form: name
1936-# or name=definition (no spaces). If the definition and the = are
1937-# omitted =1 is assumed. To prevent a macro definition from being
1938-# undefined via #undef or recursively expanded use the := operator
1939+# The PREDEFINED tag can be used to specify one or more macro names that
1940+# are defined before the preprocessor is started (similar to the -D option of
1941+# gcc). The argument of the tag is a list of macros of the form: name
1942+# or name=definition (no spaces). If the definition and the = are
1943+# omitted =1 is assumed. To prevent a macro definition from being
1944+# undefined via #undef or recursively expanded use the := operator
1945 # instead of the = operator.
1946
1947-PREDEFINED =
1948-
1949-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
1950-# this tag can be used to specify a list of macro names that should be expanded.
1951-# The macro definition that is found in the sources will be used.
1952-# Use the PREDEFINED tag if you want to use a different macro definition.
1953-
1954-EXPAND_AS_DEFINED =
1955-
1956-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
1957-# doxygen's preprocessor will remove all function-like macros that are alone
1958-# on a line, have an all uppercase name, and do not end with a semicolon. Such
1959-# function macros are typically used for boiler-plate code, and will confuse
1960-# the parser if not removed.
1961+PREDEFINED =
1962+
1963+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
1964+# this tag can be used to specify a list of macro names that should be expanded.
1965+# The macro definition that is found in the sources will be used.
1966+# Use the PREDEFINED tag if you want to use a different macro definition that
1967+# overrules the definition found in the source code.
1968+
1969+EXPAND_AS_DEFINED =
1970+
1971+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
1972+# doxygen's preprocessor will remove all references to function-like macros
1973+# that are alone on a line, have an all uppercase name, and do not end with a
1974+# semicolon, because these will confuse the parser if not removed.
1975
1976 SKIP_FUNCTION_MACROS = YES
1977
1978 #---------------------------------------------------------------------------
1979-# Configuration::additions related to external references
1980+# Configuration::additions related to external references
1981 #---------------------------------------------------------------------------
1982
1983-# The TAGFILES option can be used to specify one or more tagfiles.
1984-# Optionally an initial location of the external documentation
1985-# can be added for each tagfile. The format of a tag file without
1986-# this location is as follows:
1987-# TAGFILES = file1 file2 ...
1988-# Adding location for the tag files is done as follows:
1989-# TAGFILES = file1=loc1 "file2 = loc2" ...
1990-# where "loc1" and "loc2" can be relative or absolute paths or
1991-# URLs. If a location is present for each tag, the installdox tool
1992+# The TAGFILES option can be used to specify one or more tagfiles.
1993+# Optionally an initial location of the external documentation
1994+# can be added for each tagfile. The format of a tag file without
1995+# this location is as follows:
1996+#
1997+# TAGFILES = file1 file2 ...
1998+# Adding location for the tag files is done as follows:
1999+#
2000+# TAGFILES = file1=loc1 "file2 = loc2" ...
2001+# where "loc1" and "loc2" can be relative or absolute paths or
2002+# URLs. If a location is present for each tag, the installdox tool
2003 # does not have to be run to correct the links.
2004 # Note that each tag file must have a unique name
2005 # (where the name does NOT include the path)
2006-# If a tag file is not located in the directory in which doxygen
2007+# If a tag file is not located in the directory in which doxygen
2008 # is run, you must also specify the path to the tagfile here.
2009
2010-TAGFILES =
2011+TAGFILES =
2012
2013-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
2014+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
2015 # a tag file that is based on the input files it reads.
2016
2017 GENERATE_TAGFILE = html/@PROJECT_NAME@.TAGFILE
2018
2019-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
2020-# in the class index. If set to NO only the inherited external classes
2021+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
2022+# in the class index. If set to NO only the inherited external classes
2023 # will be listed.
2024
2025 ALLEXTERNALS = YES
2026
2027-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
2028-# in the modules index. If set to NO, only the current project's groups will
2029+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
2030+# in the modules index. If set to NO, only the current project's groups will
2031 # be listed.
2032
2033 EXTERNAL_GROUPS = YES
2034
2035-# The PERL_PATH should be the absolute path and name of the perl script
2036+# The PERL_PATH should be the absolute path and name of the perl script
2037 # interpreter (i.e. the result of `which perl').
2038
2039 PERL_PATH = /usr/bin/perl
2040
2041 #---------------------------------------------------------------------------
2042-# Configuration options related to the dot tool
2043+# Configuration options related to the dot tool
2044 #---------------------------------------------------------------------------
2045
2046-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
2047-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
2048-# or super classes. Setting the tag to NO turns the diagrams off. Note that
2049-# this option is superseded by the HAVE_DOT option below. This is only a
2050-# fallback. It is recommended to install and use dot, since it yields more
2051-# powerful graphs.
2052+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
2053+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
2054+# or super classes. Setting the tag to NO turns the diagrams off. Note that
2055+# this option also works with HAVE_DOT disabled, but it is recommended to
2056+# install and use dot, since it yields more powerful graphs.
2057
2058 CLASS_DIAGRAMS = YES
2059
2060-# If set to YES, the inheritance and collaboration graphs will hide
2061-# inheritance and usage relations if the target is undocumented
2062+# You can define message sequence charts within doxygen comments using the \msc
2063+# command. Doxygen will then run the mscgen tool (see
2064+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
2065+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
2066+# the mscgen tool resides. If left empty the tool is assumed to be found in the
2067+# default search path.
2068+
2069+MSCGEN_PATH =
2070+
2071+# If set to YES, the inheritance and collaboration graphs will hide
2072+# inheritance and usage relations if the target is undocumented
2073 # or is not a class.
2074
2075 HIDE_UNDOC_RELATIONS = YES
2076
2077-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
2078-# available from the path. This tool is part of Graphviz, a graph visualization
2079-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
2080+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
2081+# available from the path. This tool is part of Graphviz, a graph visualization
2082+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
2083 # have no effect if this option is set to NO (the default)
2084
2085 HAVE_DOT = @DOXYGEN_DOT_FOUND@
2086
2087-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
2088-# will generate a graph for each documented class showing the direct and
2089-# indirect inheritance relations. Setting this tag to YES will force the
2090+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
2091+# allowed to run in parallel. When set to 0 (the default) doxygen will
2092+# base this on the number of processors available in the system. You can set it
2093+# explicitly to a value larger than 0 to get control over the balance
2094+# between CPU load and processing speed.
2095+
2096+DOT_NUM_THREADS = 0
2097+
2098+# By default doxygen will use the Helvetica font for all dot files that
2099+# doxygen generates. When you want a differently looking font you can specify
2100+# the font name using DOT_FONTNAME. You need to make sure dot is able to find
2101+# the font, which can be done by putting it in a standard location or by setting
2102+# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
2103+# directory containing the font.
2104+
2105+DOT_FONTNAME = Helvetica
2106+
2107+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
2108+# The default size is 10pt.
2109+
2110+DOT_FONTSIZE = 10
2111+
2112+# By default doxygen will tell dot to use the Helvetica font.
2113+# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
2114+# set the path where dot can find it.
2115+
2116+DOT_FONTPATH =
2117+
2118+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
2119+# will generate a graph for each documented class showing the direct and
2120+# indirect inheritance relations. Setting this tag to YES will force the
2121 # the CLASS_DIAGRAMS tag to NO.
2122
2123 CLASS_GRAPH = YES
2124
2125-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
2126-# will generate a graph for each documented class showing the direct and
2127-# indirect implementation dependencies (inheritance, containment, and
2128+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
2129+# will generate a graph for each documented class showing the direct and
2130+# indirect implementation dependencies (inheritance, containment, and
2131 # class references variables) of the class with other documented classes.
2132
2133 COLLABORATION_GRAPH = YES
2134
2135-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
2136+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
2137 # will generate a graph for groups, showing the direct groups dependencies
2138
2139 GROUP_GRAPHS = YES
2140
2141-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
2142-# collaboration diagrams in a style similar to the OMG's Unified Modeling
2143+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
2144+# collaboration diagrams in a style similar to the OMG's Unified Modeling
2145 # Language.
2146
2147 UML_LOOK = NO
2148-# UML_LOOK = YES
2149
2150-# If set to YES, the inheritance and collaboration graphs will show the
2151+# If set to YES, the inheritance and collaboration graphs will show the
2152 # relations between templates and their instances.
2153
2154 TEMPLATE_RELATIONS = YES
2155
2156-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
2157-# tags are set to YES then doxygen will generate a graph for each documented
2158-# file showing the direct and indirect include dependencies of the file with
2159+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
2160+# tags are set to YES then doxygen will generate a graph for each documented
2161+# file showing the direct and indirect include dependencies of the file with
2162 # other documented files.
2163
2164 INCLUDE_GRAPH = YES
2165
2166-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
2167-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
2168-# documented header file showing the documented files that directly or
2169+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
2170+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
2171+# documented header file showing the documented files that directly or
2172 # indirectly include this file.
2173
2174 INCLUDED_BY_GRAPH = YES
2175
2176-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
2177-# generate a call dependency graph for every global function or class method.
2178-# Note that enabling this option will significantly increase the time of a run.
2179-# So in most cases it will be better to enable call graphs for selected
2180-# functions only using the \callgraph command.
2181+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
2182+# doxygen will generate a call dependency graph for every global function
2183+# or class method. Note that enabling this option will significantly increase
2184+# the time of a run. So in most cases it will be better to enable call graphs
2185+# for selected functions only using the \callgraph command.
2186
2187 CALL_GRAPH = NO
2188
2189-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
2190-# will graphical hierarchy of all classes instead of a textual one.
2191+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
2192+# doxygen will generate a caller dependency graph for every global function
2193+# or class method. Note that enabling this option will significantly increase
2194+# the time of a run. So in most cases it will be better to enable caller
2195+# graphs for selected functions only using the \callergraph command.
2196+
2197+CALLER_GRAPH = NO
2198+
2199+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
2200+# will generate a graphical hierarchy of all classes instead of a textual one.
2201
2202 GRAPHICAL_HIERARCHY = YES
2203
2204-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
2205-# then doxygen will show the dependencies a directory has on other directories
2206+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
2207+# then doxygen will show the dependencies a directory has on other directories
2208 # in a graphical way. The dependency relations are determined by the #include
2209 # relations between the files in the directories.
2210
2211 DIRECTORY_GRAPH = YES
2212
2213-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
2214-# generated by dot. Possible values are png, jpg, or gif
2215-# If left blank png will be used.
2216+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
2217+# generated by dot. Possible values are svg, png, jpg, or gif.
2218+# If left blank png will be used. If you choose svg you need to set
2219+# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
2220+# visible in IE 9+ (other browsers do not have this requirement).
2221
2222 DOT_IMAGE_FORMAT = png
2223
2224-# The tag DOT_PATH can be used to specify the path where the dot tool can be
2225+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
2226+# enable generation of interactive SVG images that allow zooming and panning.
2227+# Note that this requires a modern browser other than Internet Explorer.
2228+# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
2229+# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
2230+# visible. Older versions of IE do not have SVG support.
2231+
2232+INTERACTIVE_SVG = NO
2233+
2234+# The tag DOT_PATH can be used to specify the path where the dot tool can be
2235 # found. If left blank, it is assumed the dot tool can be found in the path.
2236
2237 DOT_PATH = @DOXYGEN_DOT_EXECUTABLE_PATH@
2238
2239-# The DOTFILE_DIRS tag can be used to specify one or more directories that
2240-# contain dot files that are included in the documentation (see the
2241+# The DOTFILE_DIRS tag can be used to specify one or more directories that
2242+# contain dot files that are included in the documentation (see the
2243 # \dotfile command).
2244
2245-DOTFILE_DIRS =
2246-
2247-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
2248-# background. This is disabled by default, which results in a white background.
2249-# Warning: Depending on the platform used, enabling this option may lead to
2250-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
2251-# read).
2252+DOTFILE_DIRS =
2253+
2254+# The MSCFILE_DIRS tag can be used to specify one or more directories that
2255+# contain msc files that are included in the documentation (see the
2256+# \mscfile command).
2257+
2258+MSCFILE_DIRS =
2259+
2260+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
2261+# nodes that will be shown in the graph. If the number of nodes in a graph
2262+# becomes larger than this value, doxygen will truncate the graph, which is
2263+# visualized by representing a node as a red box. Note that doxygen if the
2264+# number of direct children of the root node in a graph is already larger than
2265+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
2266+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
2267+
2268+DOT_GRAPH_MAX_NODES = 50
2269+
2270+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
2271+# graphs generated by dot. A depth value of 3 means that only nodes reachable
2272+# from the root by following a path via at most 3 edges will be shown. Nodes
2273+# that lay further from the root node will be omitted. Note that setting this
2274+# option to 1 or 2 may greatly reduce the computation time needed for large
2275+# code bases. Also note that the size of a graph can be further restricted by
2276+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
2277+
2278+MAX_DOT_GRAPH_DEPTH = 0
2279+
2280+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
2281+# background. This is disabled by default, because dot on Windows does not
2282+# seem to support this out of the box. Warning: Depending on the platform used,
2283+# enabling this option may lead to badly anti-aliased labels on the edges of
2284+# a graph (i.e. they become hard to read).
2285
2286 DOT_TRANSPARENT = NO
2287
2288-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
2289-# files in one run (i.e. multiple -o and -T options on the command line). This
2290-# makes dot run faster, but since only newer versions of dot (>1.8.10)
2291+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
2292+# files in one run (i.e. multiple -o and -T options on the command line). This
2293+# makes dot run faster, but since only newer versions of dot (>1.8.10)
2294 # support this, this feature is disabled by default.
2295-# JW
2296-# DOT_MULTI_TARGETS = NO
2297+
2298 DOT_MULTI_TARGETS = YES
2299
2300-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
2301-# generate a legend page explaining the meaning of the various boxes and
2302+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
2303+# generate a legend page explaining the meaning of the various boxes and
2304 # arrows in the dot generated graphs.
2305
2306 GENERATE_LEGEND = YES
2307
2308-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
2309-# remove the intermediate dot files that are used to generate
2310+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
2311+# remove the intermediate dot files that are used to generate
2312 # the various graphs.
2313
2314 DOT_CLEANUP = YES
2315-
2316-#---------------------------------------------------------------------------
2317-# Configuration::additions related to the search engine
2318-#---------------------------------------------------------------------------
2319-
2320-# The SEARCHENGINE tag specifies whether or not a search engine should be
2321-# used. If set to NO the values of all tags below this one will be ignored.
2322-
2323-# JW SEARCHENGINE = NO
2324-SEARCHENGINE = YES
2325
2326=== added directory 'doc/xqj/examples'
2327=== added file 'doc/xqj/examples/Test_Zorba.java'
2328--- doc/xqj/examples/Test_Zorba.java 1970-01-01 00:00:00 +0000
2329+++ doc/xqj/examples/Test_Zorba.java 2012-05-15 20:01:25 +0000
2330@@ -0,0 +1,317 @@
2331+/*
2332+ * Copyright 2006-2012 The FLWOR Foundation.
2333+ *
2334+ * Licensed under the Apache License, Version 2.0 (the "License");
2335+ * you may not use this file except in compliance with the License.
2336+ * You may obtain a copy of the License at
2337+ *
2338+ * http://www.apache.org/licenses/LICENSE-2.0
2339+ *
2340+ * Unless required by applicable law or agreed to in writing, software
2341+ * distributed under the License is distributed on an "AS IS" BASIS,
2342+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2343+ * See the License for the specific language governing permissions and
2344+ * limitations under the License.
2345+ */
2346+
2347+package api_test;
2348+
2349+import java.io.BufferedReader;
2350+import java.io.FileReader;
2351+import java.net.URI;
2352+import java.net.URISyntaxException;
2353+import javax.xml.namespace.QName;
2354+import javax.xml.xquery.XQConnection;
2355+import javax.xml.xquery.XQException;
2356+import javax.xml.xquery.XQExpression;
2357+import javax.xml.xquery.XQItem;
2358+import javax.xml.xquery.XQItemType;
2359+import javax.xml.xquery.XQSequence;
2360+import org.zorbaxquery.api.Collection;
2361+import org.zorbaxquery.api.CollectionManager;
2362+import org.zorbaxquery.api.InMemoryStore;
2363+import org.zorbaxquery.api.Item;
2364+import org.zorbaxquery.api.ItemFactory;
2365+import org.zorbaxquery.api.ItemSequence;
2366+import org.zorbaxquery.api.StaticCollectionManager;
2367+import org.zorbaxquery.api.XQuery;
2368+import org.zorbaxquery.api.XmlDataManager;
2369+import org.zorbaxquery.api.Zorba;
2370+import org.zorbaxquery.api.xqj.XQCollection;
2371+import org.zorbaxquery.api.xqj.XQCollectionManager;
2372+import org.zorbaxquery.api.xqj.XQDataSource;
2373+import org.zorbaxquery.api.xqj.XQStaticCollectionManager;
2374+import org.zorbaxquery.api.xqj.XQXmlDataManager;
2375+
2376+public class Test_Zorba {
2377+
2378+ static
2379+ {
2380+ System.loadLibrary ( "zorba_api" );
2381+ }
2382+
2383+ static boolean example_1() throws XQException
2384+ {
2385+ XQDataSource xqds = new XQDataSource();
2386+ XQConnection xqc = xqds.getConnection();
2387+ XQExpression xqe = xqc.createExpression();
2388+ org.zorbaxquery.api.xqj.XQResultSequence xqs = (org.zorbaxquery.api.xqj.XQResultSequence) xqe.executeQuery("1,2,3");
2389+ XQStaticCollectionManager colManager = xqs.getStaticCollectionManager();
2390+ xqc.close();
2391+ xqc.close();
2392+ return true;
2393+ }
2394+
2395+ static boolean example_2 () throws XQException
2396+ {
2397+ StringBuilder strBuilder = new StringBuilder();
2398+ try {
2399+ BufferedReader in = new BufferedReader(new FileReader("module1.xq"));
2400+ String str;
2401+ while ((str = in.readLine()) != null) {
2402+ strBuilder.append(str);
2403+ }
2404+ in.close();
2405+ } catch (Exception e) {
2406+ throw new XQException("Error reading file for test: " + e.getLocalizedMessage());
2407+ }
2408+ XQDataSource xqds = new XQDataSource();
2409+ XQConnection xqc = xqds.getConnection();
2410+ XQExpression xqe = xqc.createExpression();
2411+ org.zorbaxquery.api.xqj.XQResultSequence xqs = (org.zorbaxquery.api.xqj.XQResultSequence) xqe.executeQuery(strBuilder.toString());
2412+ XQStaticCollectionManager colManager = xqs.getStaticCollectionManager();
2413+ boolean resultAdding = false;
2414+ boolean resultDeleting = true;
2415+ URI uri;
2416+ QName qname;
2417+ XQItemType type = null;
2418+ try {
2419+ uri = new URI("http://www.mod2.com/");
2420+ qname = new QName("http://www.mod2.com/", "coll");
2421+ type = xqc.createAtomicType( XQItemType.XQBASETYPE_QNAME, qname, uri);
2422+ } catch (URISyntaxException e) {
2423+ throw new XQException("Error creating QName: " + e.getLocalizedMessage());
2424+ }
2425+ XQItem colName = xqc.createItemFromString("coll", type);
2426+ colManager.createCollection(colName);
2427+ resultAdding = colManager.isAvailableCollection(colName);
2428+ colManager.deleteCollection(colName);
2429+ resultDeleting = !colManager.isAvailableCollection(colName);
2430+ xqc.close();
2431+ return resultAdding && resultDeleting;
2432+ }
2433+
2434+ static boolean example_3a() throws XQException
2435+ {
2436+ StringBuilder strBuilder = new StringBuilder();
2437+ try {
2438+ BufferedReader in = new BufferedReader(new FileReader("module1.xq"));
2439+ String str;
2440+ while ((str = in.readLine()) != null) {
2441+ strBuilder.append(str);
2442+ }
2443+ in.close();
2444+ } catch (Exception e) {
2445+ throw new XQException("Error reading file for test: " + e.getLocalizedMessage());
2446+ }
2447+ XQDataSource xqds = new XQDataSource();
2448+ org.zorbaxquery.api.xqj.XQConnection xqc = (org.zorbaxquery.api.xqj.XQConnection) xqds.getConnection();
2449+ XQExpression xqe = xqc.createExpression();
2450+ org.zorbaxquery.api.xqj.XQResultSequence xqs = (org.zorbaxquery.api.xqj.XQResultSequence) xqe.executeQuery(strBuilder.toString());
2451+ XQStaticCollectionManager colManager = xqs.getStaticCollectionManager();
2452+ URI uri;
2453+ QName qname;
2454+ XQItemType type = null;
2455+ try {
2456+ uri = new URI("http://www.mod2.com/");
2457+ qname = new QName("http://www.mod2.com/", "coll");
2458+ type = xqc.createAtomicType( XQItemType.XQBASETYPE_QNAME, qname, uri);
2459+ } catch (URISyntaxException e) {
2460+ throw new XQException("Error creating QName: " + e.getLocalizedMessage());
2461+ }
2462+ XQItem colName = xqc.createItemFromString("coll", type);
2463+ colManager.createCollection(colName);
2464+ XQCollection collection = colManager.getCollection(colName);
2465+
2466+ XQXmlDataManager manager = xqc.getXmlDataManager();
2467+ XQSequence data = manager.parseXML("<books><book>Book 1</book><book>Book 2</book></books>");
2468+ collection.insertNodesFirst(data);
2469+
2470+ colManager.deleteCollection(colName);
2471+ boolean resultDeleting = !colManager.isAvailableCollection(colName);
2472+ xqc.close();
2473+ return resultDeleting;
2474+ }
2475+
2476+ static boolean example_3b() throws XQException
2477+ {
2478+ StringBuilder strBuilder = new StringBuilder();
2479+ try {
2480+ BufferedReader in = new BufferedReader(new FileReader("module1.xq"));
2481+ String str;
2482+ while ((str = in.readLine()) != null) {
2483+ strBuilder.append(str);
2484+ }
2485+ in.close();
2486+ } catch (Exception e) {
2487+ throw new XQException("Error reading file for test: " + e.getLocalizedMessage());
2488+ }
2489+ InMemoryStore store = InMemoryStore.getInstance();
2490+ Zorba zorba = Zorba.getInstance ( store );
2491+ XQuery query = zorba.compileQuery(strBuilder.toString());
2492+ StaticCollectionManager manager = query.getStaticCollectionManager();
2493+
2494+
2495+ ItemFactory factory = zorba.getItemFactory();
2496+ Item name = factory.createQName("http://www.mod2.com/", "coll");
2497+
2498+ manager.createCollection(name);
2499+ Collection collection = manager.getCollection(name);
2500+
2501+ XmlDataManager xmlManager = zorba.getXmlDataManager();
2502+ Item data = xmlManager.parseXMLtoItem("<books><book>Book 1</book><book>Book 2</book></books>");
2503+ ItemSequence sequence = new ItemSequence(data);
2504+ collection.insertNodesLast(sequence);
2505+
2506+ zorba.shutdown();
2507+ InMemoryStore.shutdown ( store );
2508+
2509+ return true;
2510+ }
2511+
2512+ static boolean example_4() throws XQException
2513+ {
2514+ XQDataSource xqds = new XQDataSource();
2515+ org.zorbaxquery.api.xqj.XQConnection xqc = (org.zorbaxquery.api.xqj.XQConnection) xqds.getConnection();
2516+ XQExpression xqe = xqc.createExpression();
2517+ XQXmlDataManager xmlManager = xqc.getXmlDataManager();
2518+ XQCollectionManager colManager = xmlManager.getCollectionManager();
2519+ xqc.close();
2520+ xqc.close();
2521+ return true;
2522+ }
2523+
2524+ static boolean example_5() throws XQException
2525+ {
2526+ XQDataSource xqds = new XQDataSource();
2527+ org.zorbaxquery.api.xqj.XQConnection xqc = (org.zorbaxquery.api.xqj.XQConnection) xqds.getConnection();
2528+ XQXmlDataManager xmlManager = xqc.getXmlDataManager();
2529+ XQCollectionManager colManager = xmlManager.getCollectionManager();
2530+ boolean resultAdding = false;
2531+ boolean resultDeleting = true;
2532+ URI uri;
2533+ QName qname;
2534+ XQItemType type = null;
2535+ try {
2536+ uri = new URI("http://www.mod2.com/");
2537+ qname = new QName("http://www.mod2.com/", "col2");
2538+ type = xqc.createAtomicType( XQItemType.XQBASETYPE_QNAME, qname, uri);
2539+ } catch (URISyntaxException e) {
2540+ throw new XQException("Error creating QName: " + e.getLocalizedMessage());
2541+ }
2542+ XQItem colName = xqc.createItemFromString("col2", type);
2543+ colManager.createCollection(colName);
2544+ resultAdding = colManager.isAvailableCollection(colName);
2545+ colManager.deleteCollection(colName);
2546+ resultDeleting = !colManager.isAvailableCollection(colName);
2547+ xqc.close();
2548+ return resultAdding && resultDeleting;
2549+ }
2550+ static boolean example_6a() throws XQException
2551+ {
2552+ InMemoryStore store = InMemoryStore.getInstance();
2553+ Zorba zorba = Zorba.getInstance ( store );
2554+ XmlDataManager xmlManager = new XmlDataManager(zorba.getXmlDataManager());
2555+ CollectionManager manager = new CollectionManager(xmlManager.getCollectionManager());
2556+
2557+ ItemFactory factory = zorba.getItemFactory();
2558+ Item name = factory.createQName("http://www.zorba-xquery.com/", "aaa");
2559+ manager.createCollection(name);
2560+ boolean resultAdding = manager.isAvailableCollection(name);
2561+ Collection collection = null;
2562+ //Item data = new Item();
2563+ if (resultAdding) {
2564+ collection = manager.getCollection(name);
2565+ Item data = xmlManager.parseXMLtoItem("<books><book>Book 1</book><book>Book 2</book></books>");
2566+ collection.insertNodesLast(new ItemSequence(data));
2567+ }
2568+ collection.delete();
2569+
2570+ zorba.shutdown();
2571+ InMemoryStore.shutdown ( store );
2572+ return true;
2573+ }
2574+
2575+ static boolean example_6b() throws XQException
2576+ {
2577+ XQDataSource xqds = new XQDataSource();
2578+ org.zorbaxquery.api.xqj.XQConnection xqc = (org.zorbaxquery.api.xqj.XQConnection) xqds.getConnection();
2579+ XQXmlDataManager xmlManager = xqc.getXmlDataManager();
2580+ XQCollectionManager colManager = xmlManager.getCollectionManager();
2581+ URI uri;
2582+ QName qname;
2583+ XQItemType type = null;
2584+ try {
2585+ uri = new URI("http://www.mod2.com/");
2586+ qname = new QName("http://www.mod2.com/", "col2");
2587+ type = xqc.createAtomicType( XQItemType.XQBASETYPE_QNAME, qname, uri);
2588+ } catch (URISyntaxException e) {
2589+ throw new XQException("Error creating QName: " + e.getLocalizedMessage());
2590+ }
2591+ XQItem colName = xqc.createItemFromString("col2", type);
2592+ colManager.createCollection(colName);
2593+ XQCollection collection = colManager.getCollection(colName);
2594+ colName.close();
2595+ XQSequence data = xmlManager.parseXML("<books><book>Book 1</book><book>Book 2</book></books>");
2596+ collection.insertNodesLast(data);
2597+ xqc.close();
2598+ return true;
2599+ }
2600+
2601+ public static void main ( String argv[] ) throws XQException
2602+ {
2603+ boolean res = false;
2604+
2605+ System.out.println ("executing example 1" );
2606+ res = example_1( );
2607+ if ( !res )
2608+ System.exit ( 1 );
2609+
2610+ System.out.println ( "\nexecuting example 2" );
2611+ res = example_2 ( );
2612+ if (!res)
2613+ System.exit ( 1 );
2614+
2615+ System.out.println ( "executing example 3a" );
2616+ res = example_3a ( );
2617+ if (!res)
2618+ System.exit ( 1 );
2619+
2620+ System.out.println ( "executing example 3b" );
2621+ res = example_3b ( );
2622+ if (!res)
2623+ System.exit ( 1 );
2624+
2625+ System.out.println ( "executing example 4" );
2626+ res = example_4 ( );
2627+ if (!res)
2628+ System.exit ( 1 );
2629+
2630+ System.out.println ( "executing example 5" );
2631+ res = example_5 ( );
2632+ if (!res)
2633+ System.exit ( 1 );
2634+ System.out.println ( "executing example 6a" );
2635+ res = example_6a ( );
2636+ if (!res)
2637+ System.exit ( 1 );
2638+
2639+ System.out.println ( "executing example 6b" );
2640+ res = example_6b ( );
2641+ if (!res)
2642+ System.exit ( 1 );
2643+
2644+ } // main
2645+
2646+} // class Test_Zorba
2647+
2648
2649=== modified file 'src/functions/func_ft_module_impl.cpp'
2650--- src/functions/func_ft_module_impl.cpp 2012-05-09 20:40:03 +0000
2651+++ src/functions/func_ft_module_impl.cpp 2012-05-15 20:01:25 +0000
2652@@ -13,6 +13,7 @@
2653 * See the License for the specific language governing permissions and
2654 * limitations under the License.
2655 */
2656+#include "stdafx.h"
2657 #include "functions/func_ft_module_impl.h"
2658
2659 #include "runtime/full_text/ft_module.h"
2660
2661=== modified file 'src/runtime/full_text/ft_module_impl.cpp'
2662--- src/runtime/full_text/ft_module_impl.cpp 2012-05-09 16:35:09 +0000
2663+++ src/runtime/full_text/ft_module_impl.cpp 2012-05-15 20:01:25 +0000
2664@@ -14,6 +14,7 @@
2665 * limitations under the License.
2666 */
2667
2668+#include "stdafx.h"
2669 #include <zorba/config.h>
2670
2671 //
2672
2673=== modified file 'swig/xqj/XQCollection.java'
2674--- swig/xqj/XQCollection.java 2012-04-28 05:52:32 +0000
2675+++ swig/xqj/XQCollection.java 2012-05-15 20:01:25 +0000
2676@@ -22,6 +22,12 @@
2677 import javax.xml.xquery.XQSequence;
2678 import org.zorbaxquery.api.ItemSequence;
2679
2680+/** \brief A Collection is a persistent sequence of node items.
2681+ *
2682+ * Instances of this class can be used to modify or retrieve the contents
2683+ * of a collection.
2684+ *
2685+ */
2686 public class XQCollection {
2687
2688 private boolean closed = false;
2689@@ -31,7 +37,13 @@
2690 protected XQCollection(Collection col) {
2691 collection = col;
2692 }
2693-
2694+
2695+ /** \brief Closes the collection.
2696+ *
2697+ * Once the collection is closed, no method other than close or the isClosed method may be called on the collection object. Calling close on an XQCollection object that is already closed has no effect.
2698+ *
2699+ * @throw XQException - if there is an error during closing the collection.
2700+ */
2701 public void close() throws XQException {
2702 for (XQSequence exp : sequences ){
2703 exp.close(); // Notify the dependents objects to close
2704@@ -42,10 +54,20 @@
2705 closed = true;
2706 }
2707
2708+ /** \brief Checks if the collection is closed.
2709+ *
2710+ * @return true if the collection is in a closed state, false otherwise
2711+ */
2712 public boolean isClosed() {
2713 return closed;
2714 }
2715
2716+ /**
2717+ * \brief This function returns the sequence of nodes of the collection.
2718+ *
2719+ * @return The sequence contained in the given collection.
2720+ *
2721+ */
2722 public XQSequence contents() throws XQException {
2723 isClosedXQException();
2724 XQSequence result = new org.zorbaxquery.api.xqj.XQSequence(collection.contents().getIterator());
2725@@ -53,16 +75,37 @@
2726 return result;
2727 }
2728
2729+ /**
2730+ * \brief This function deletes the first node from a collection.
2731+ *
2732+ * @throw XQException if the collection doesn't contain any node.
2733+ *
2734+ */
2735 public void deleteNodeFirst() throws XQException {
2736 isClosedXQException();
2737 collection.deleteNodeFirst();
2738 }
2739
2740+ /**
2741+ * \brief This function deletes the last node from a collection.
2742+ *
2743+ * @throw XQException if the collection doesn't contain any node.
2744+ *
2745+ */
2746 public void deleteNodeLast() throws XQException {
2747 isClosedXQException();
2748 collection.deleteNodeLast();
2749 }
2750
2751+ /**
2752+ * \brief This function deletes zero of more nodes from a collection.
2753+ *
2754+ * @param aNodes the nodes in the collection that should be deleted.
2755+ *
2756+ * @throw XQException if any nodes in the given sequence is not a member of a collection
2757+ * or not all nodes of the sequence belong to the same collection.
2758+ *
2759+ */
2760 public void deleteNodes(XQSequence aNodes ) throws XQException {
2761 isClosedXQException();
2762 try {
2763@@ -73,31 +116,80 @@
2764 }
2765 }
2766
2767+ /**
2768+ * \brief This function deletes the n first nodes from a collection.
2769+ *
2770+ * @throw XQException if the collection doesn't contain any node.
2771+ *
2772+ */
2773 public void deleteNodesFirst(long aNumNodes ) throws XQException {
2774 isClosedXQException();
2775 collection.deleteNodesFirst(aNumNodes);
2776 }
2777
2778+ /**
2779+ * \brief This function deletes the n last nodes from a collection.
2780+ *
2781+ * @throw XQException if the collection doesn't contain any node.
2782+ *
2783+ */
2784 public void deleteNodesLast(long aNumNodes ) throws XQException {
2785 isClosedXQException();
2786 collection.deleteNodesLast(aNumNodes);
2787 }
2788
2789+ /**
2790+ * \brief Get the name of the collection.
2791+ *
2792+ * @return The name of the collection.
2793+ */
2794 public String getName() throws XQException {
2795 isClosedXQException();
2796 return collection.getName().getStringValue();
2797 }
2798
2799+ /**
2800+ * \brief Retrieves the sequence type for this (static declared) collection.
2801+ *
2802+ * @return the sequence type for the said collection, or 0
2803+ * if this collection is not statically declared.
2804+ *
2805+ * @see isStatic()
2806+ */
2807 public XQItemType getType() throws XQException {
2808 isClosedXQException();
2809 return new XQItemType(collection.getType());
2810 }
2811
2812+ /**
2813+ * \brief This function returns the index of the given node in the collection.
2814+ *
2815+ * @param aNode The node to retrieve the index from.
2816+ *
2817+ * @return Returns the position of the given node in the collection.
2818+ *
2819+ * @throw XQException if node is not contained in any collection.
2820+ *
2821+ */
2822 public long indexOf(XQItem aNode ) throws XQException {
2823 isClosedXQException();
2824 return collection.indexOf(((org.zorbaxquery.api.xqj.XQItem)aNode).getZorbaItem());
2825 }
2826
2827+ /**
2828+ * This function inserts copies of the given
2829+ * nodes into a collection at the position directly following the
2830+ * given target node.
2831+ *
2832+ * @param aTarget the node in the collection after which the
2833+ * sequence should be inserted.
2834+ * @param aNodes The sequences of nodes whose copies should
2835+ * be added to the collection.
2836+ *
2837+ * @throw XQException if any nodes in the sequence is not a member of a collection
2838+ * or not all nodes of the sequence belong to the same collection.
2839+ *
2840+ */
2841 public void insertNodesAfter(XQItem aTarget, XQSequence aNodes ) throws XQException {
2842 isClosedXQException();
2843 try {
2844@@ -108,6 +200,20 @@
2845 }
2846 }
2847
2848+ /**
2849+ * This function inserts copies of the given
2850+ * nodes into a collection at the position directly preceding the
2851+ * given target node.
2852+ *
2853+ * @param aTarget the node in the collection before which the
2854+ * sequence should be inserted.
2855+ * @param aNodes The sequences of nodes whose copies should
2856+ * be added to the collection.
2857+ *
2858+ * @throw XQException if any nodes in the sequence is not a member of a collection
2859+ * or not all nodes of the sequence belong to the same collection.
2860+ *
2861+ */
2862 public void insertNodesBefore(XQItem aTarget, XQSequence aNodes ) throws XQException {
2863 isClosedXQException();
2864 try {
2865@@ -118,6 +224,14 @@
2866 }
2867 }
2868
2869+ /**
2870+ * This function inserts copies of the
2871+ * given nodes at the beginning of the collection.
2872+ *
2873+ * @param aNodes The sequences of nodes whose copies
2874+ * should be added to the collection.
2875+ *
2876+ */
2877 public void insertNodesFirst(XQSequence aNodes ) throws XQException {
2878 isClosedXQException();
2879 try {
2880@@ -128,6 +242,14 @@
2881 }
2882 }
2883
2884+ /**
2885+ * This function inserts copies of the
2886+ * given nodes at the end of the collection.
2887+ *
2888+ * @param aNodes The sequences of nodes whose copies
2889+ * should be added to the collection.
2890+ *
2891+ */
2892 public void insertNodesLast(XQSequence aNodes ) throws XQException {
2893 isClosedXQException();
2894 try {
2895@@ -138,6 +260,11 @@
2896 }
2897 }
2898
2899+ /**
2900+ * The function checks if this collection has been statically declared.
2901+ *
2902+ * @return true if the collection is a static collection, false otherwise.
2903+ */
2904 public boolean isStatic() throws XQException {
2905 isClosedXQException();
2906 return collection.isStatic();
2907
2908=== modified file 'swig/xqj/XQCollectionManager.java'
2909--- swig/xqj/XQCollectionManager.java 2012-04-28 05:52:32 +0000
2910+++ swig/xqj/XQCollectionManager.java 2012-05-15 20:01:25 +0000
2911@@ -23,6 +23,10 @@
2912 import javax.xml.xquery.XQItem;
2913
2914
2915+ /** \brief This class defines a set of functions for managing persistent
2916+ * collections.
2917+ *
2918+ */
2919 public class XQCollectionManager {
2920
2921 private boolean closed = false;
2922@@ -34,6 +38,12 @@
2923 collectionManager = cm;
2924 }
2925
2926+ /** \brief Closes the collection manager.
2927+ *
2928+ * Once the collection manager is closed, no method other than close or the isClosed method may be called on the collection manager object. Calling close on an XQCollectionManager object that is already closed has no effect.
2929+ *
2930+ * @throw XQException - if there is an error during closing the collection.
2931+ */
2932 public void close() throws XQException {
2933 for (XQSequence exp : sequences ){
2934 exp.close(); // Notify the dependents objects to close
2935@@ -47,10 +57,25 @@
2936 closed = true;
2937 }
2938
2939+ /** \brief Checks if the collection manager is closed.
2940+ *
2941+ * @return true if the collection manager is in a closed state, false otherwise
2942+ */
2943 public boolean isClosed() {
2944 return closed;
2945 }
2946
2947+ /**
2948+ * This function returns a sequence of names of the collections
2949+ * that are available. If this is an instance of the StaticCollectionManager
2950+ * class (i.e. returned by any of the getStaticCollectionManager methods),
2951+ * the collections returned by this function are also
2952+ * statically declared.
2953+ *
2954+ * @return The list of names of the available collections.
2955+ * @throw XQException if any error occurs retreiving the collections
2956+ *
2957+ */
2958 public XQSequence availableCollections() throws XQException {
2959 isClosedXQException();
2960 XQSequence result = new org.zorbaxquery.api.xqj.XQSequence(collectionManager.availableCollections());
2961@@ -58,16 +83,40 @@
2962 return result;
2963 }
2964
2965+ /**
2966+ * This function creates the collection with the given name.
2967+ *
2968+ * @param aName The name of the collection to create.
2969+ *
2970+ * @throw XQException if a collection with the given name already exists.
2971+ *
2972+ */
2973 public void createCollection(XQItem aName ) throws XQException {
2974 isClosedXQException();
2975 collectionManager.createCollection(((org.zorbaxquery.api.xqj.XQItem)aName).getZorbaItem());
2976 }
2977
2978+ /**
2979+ * This function removes the collection with the given name.
2980+ *
2981+ * @param aName The name of the collection to delete.
2982+ *
2983+ * @throw XQException if the collection does not exist.
2984+ */
2985 public void deleteCollection(XQItem aName ) throws XQException {
2986 isClosedXQException();
2987 collectionManager.deleteCollection(((org.zorbaxquery.api.xqj.XQItem)aName).getZorbaItem());
2988 }
2989
2990+ /**
2991+ * Returns a instance of the Collection class which can
2992+ * be used to modify and retrieve the contents of the collection
2993+ * identified by the given name.
2994+ *
2995+ * @param aName The name of the collection to retrieve.
2996+ *
2997+ * @throw XQException if the collection does not exist.
2998+ */
2999 public XQCollection getCollection(XQItem aName ) throws XQException {
3000 isClosedXQException();
3001 XQCollection result = new XQCollection ( collectionManager.getCollection(((org.zorbaxquery.api.xqj.XQItem)aName).getZorbaItem()) );
3002@@ -75,6 +124,18 @@
3003 return result;
3004 }
3005
3006+ /**
3007+ * This function returns true if a collection with the given name is available.
3008+ * If this is an instance of the StaticCollectionManager class (i.e.
3009+ * returned by any of the getStaticCollectionManager() methods),
3010+ * the collection also needs to be statically declared.
3011+ *
3012+ * @param aName The name of the collection that is being checked.
3013+ *
3014+ * @return true if the collection is available and false otherwise.
3015+ * @throw XQException if any error occurs verifying the collection
3016+ *
3017+ */
3018 public boolean isAvailableCollection(XQItem aName ) throws XQException {
3019 isClosedXQException();
3020 return collectionManager.isAvailableCollection( ((org.zorbaxquery.api.xqj.XQItem)aName).getZorbaItem() );
3021
3022=== modified file 'swig/xqj/XQConnection.java'
3023--- swig/xqj/XQConnection.java 2012-05-03 12:31:51 +0000
3024+++ swig/xqj/XQConnection.java 2012-05-15 20:01:25 +0000
3025@@ -70,6 +70,36 @@
3026 import org.zorbaxquery.api.XmlDataManager;
3027 import org.zorbaxquery.api.Zorba;
3028
3029+ /**
3030+ *
3031+ * A connection (session) with a specific XQuery engine. Connections are obtained through an XQDataSource object.
3032+ *
3033+ * XQuery expressions are executed and results are returned within the context of a connection. They are either executed through XQExpression or XQPreparedExpression objects.
3034+ *
3035+ * XQDataSource ds;// obtain the XQuery datasource
3036+ * ...
3037+ * XQConnection conn = ds.getConnection();
3038+ *
3039+ * XQPreparedExpression expr = conn.prepareExpression("for $i in ...");
3040+ * XQResultSequence result = expr.executeQuery();
3041+ * // - or -
3042+ * XQExpression expr = conn.createExpression();
3043+ * XQSequence result = expr.executeQuery("for $i in..");
3044+ *
3045+ * // The sequence can now be iterated
3046+ * while (result.next())
3047+ * {
3048+ * String str = result.getItemAsString();
3049+ * System.out.println(" output "+ str);
3050+ * }
3051+ * result.close();
3052+ * expr.close();
3053+ * conn.close(); // close the connection and free all resources..
3054+ *
3055+ *
3056+ * A connection holds also default values for XQExpression and XQPreparedExpression properties. An application can override these defaults by passing an XQStaticContext object to the setStaticContext() method.
3057+ *
3058+ */
3059 public class XQConnection implements javax.xml.xquery.XQConnection {
3060 private InMemoryStore store;
3061 private Zorba zorba;
3062@@ -144,7 +174,12 @@
3063
3064 }
3065
3066-
3067+ /** \brief Closes the connection.
3068+ *
3069+ * Closes the connection. This also closes any XQExpression and XQPreparedExpression obtained from this connection. Once the connection is closed, no method other than close or the isClosed method may be called on the connection object. Calling close on an XQConnection object that is already closed has no effect. Note that an XQJ driver is not required to provide finalizer methods for the connection and other objects. Hence it is strongly recommended that users call this method explicitly to free any resources. It is also recommended that they do so under a final block to ensure that the object is closed even when there are exceptions.
3070+ *
3071+ * @throw XQException - if there is an error during closing the connection.
3072+ */
3073 @Override
3074 public void close() throws XQException {
3075 if (closed) return; // already closed
3076@@ -183,18 +218,36 @@
3077 autocommit = bln;
3078 }
3079
3080+ /** \brief Gets the auto-commit attribute of this connection
3081+ *
3082+ * @return the auto-commit attribute of this connection. true if the connection operates in auto-commit mode; otherwise false
3083+ * @throw XQException - if the connection is in a closed state
3084+ */
3085 @Override
3086 public boolean getAutoCommit() throws XQException {
3087 isClosedXQException();
3088 return autocommit;
3089 }
3090
3091+ /** \brief Makes all changes made in the current transaction permanent and releases any locks held by the datasource.
3092+ *
3093+ * This method should be used only when auto-commit mode is disabled. Any XQResultSequence, or XQResultItem may be implicitly closed upon commit, if the holdability property of the sequence is set to XQConstants.HOLDTYPE_CLOSE_CURSORS_AT_COMMIT.
3094+ *
3095+ * @throw XQException - if the connection is in a closed state or this connection is operating in auto-commit mode
3096+ */
3097 @Override
3098 public void commit() throws XQException {
3099 isClosedXQException();
3100 throw new UnsupportedOperationException("Zorba does not support transactions... yet...");
3101 }
3102
3103+ /** \brief Creates a new XQExpression object that can be used to perform execute immediate operations with XQuery expressions.
3104+ *
3105+ * The properties of the connection's default XQStaticContext are copied to the returned XQExpression.
3106+ *
3107+ * @return XQExpression that can be used to execute multiple expressions
3108+ * @throw XQException - if the connection is in a closed state
3109+ */
3110 @Override
3111 public XQExpression createExpression() throws XQException {
3112 isClosedXQException();
3113@@ -208,6 +261,14 @@
3114 return expression;
3115 }
3116
3117+ /** \brief Creates a new XQExpression object that can be used to perform execute immediate operations with XQuery expressions.
3118+ *
3119+ * The properties of the specified XQStaticContext values are copied to the returned XQExpression.
3120+ *
3121+ * @param value - XQStaticContext containing values of expression properties
3122+ * @return XQExpression that can be used to execute multiple expressions
3123+ * @throw XQException - if (1) the connection is in a closed state, or (2) the specified argument is null
3124+ */
3125 @Override
3126 public XQExpression createExpression(XQStaticContext value) throws XQException {
3127 isClosedXQException();
3128@@ -217,17 +278,34 @@
3129 return expression;
3130 }
3131
3132+ /** \brief Gets the metadata for this connection.
3133+ *
3134+ * @return XQMetadata representing the metadata of this connection
3135+ * @throw XQException - if the connection is in a closed state
3136+ */
3137 @Override
3138 public XQMetaData getMetaData() throws XQException {
3139 isClosedXQException();
3140 return new org.zorbaxquery.api.xqj.XQMetaData(this);
3141 }
3142
3143+ /** \brief Checks if the connection is closed.
3144+ *
3145+ * @return true if the connection is in a closed state, false otherwise
3146+ */
3147 @Override
3148 public boolean isClosed() {
3149 return closed;
3150 }
3151
3152+ /** \brief Prepares an expression for execution.
3153+ *
3154+ * The properties of the connection's default XQStaticContext are copied to the returned XQPreparedExpression.
3155+ *
3156+ * @param value - the XQuery expression as a String. Cannot be null
3157+ * @return the prepared XQuery expression
3158+ * @throw XQException - if (1) the connection is in a closed state, (2) there are errors preparing the expression, or (3) the xquery parameter is null
3159+ */
3160 @Override
3161 public XQPreparedExpression prepareExpression(String value) throws XQException {
3162 isClosedXQException();
3163@@ -246,6 +324,15 @@
3164 return expression;
3165 }
3166
3167+ /** \brief Prepares an expression for execution.
3168+ *
3169+ * The properties of the connection's default XQStaticContext are copied to the returned XQPreparedExpression.
3170+ *
3171+ * @param string - the XQuery expression as a String. Cannot be null
3172+ * @param xqsc - XQStaticContext containing values of expression properties.
3173+ * @return the prepared XQuery expression
3174+ * @throw XQException - if (1) the connection is in a closed state, (2) there are errors preparing the expression, or (3) the xquery parameter is null
3175+ */
3176 @Override
3177 public XQPreparedExpression prepareExpression(String string, XQStaticContext xqsc) throws XQException {
3178 isClosedXQException();
3179@@ -261,6 +348,14 @@
3180 return expression;
3181 }
3182
3183+ /** \brief Prepares an expression for execution.
3184+ *
3185+ * The properties of the connection's default XQStaticContext are copied to the returned XQPreparedExpression.
3186+ *
3187+ * @param reader - the XQuery expression as a Reader. Cannot be null
3188+ * @return the prepared XQuery expression
3189+ * @throw XQException - if (1) the connection is in a closed state, (2) there are errors preparing the expression, or (3) the xquery parameter is null
3190+ */
3191 @Override
3192 public XQPreparedExpression prepareExpression(Reader reader) throws XQException {
3193 isClosedXQException();
3194@@ -291,6 +386,15 @@
3195 return expression;
3196 }
3197
3198+ /** \brief Prepares an expression for execution.
3199+ *
3200+ * The properties of the connection's default XQStaticContext are copied to the returned XQPreparedExpression.
3201+ *
3202+ * @param reader - the XQuery expression as a Reader. Cannot be null
3203+ * @param xqsc - XQStaticContext containing values of expression properties
3204+ * @return the prepared XQuery expression
3205+ * @throw XQException - if (1) the connection is in a closed state, (2) there are errors preparing the expression, or (3) the xquery parameter is null
3206+ */
3207 @Override
3208 public XQPreparedExpression prepareExpression(Reader reader, XQStaticContext xqsc) throws XQException {
3209 isClosedXQException();
3210@@ -316,6 +420,14 @@
3211 return expression;
3212 }
3213
3214+ /** \brief Prepares an expression for execution.
3215+ *
3216+ * The properties of the connection's default XQStaticContext are copied to the returned XQPreparedExpression.
3217+ *
3218+ * @param in - the XQuery expression as an InputStream. Cannot be null
3219+ * @return the prepared XQuery expression
3220+ * @throw XQException - if (1) the connection is in a closed state, (2) there are errors preparing the expression, or (3) the xquery parameter is null
3221+ */
3222 @Override
3223 public XQPreparedExpression prepareExpression(InputStream in) throws XQException {
3224 isClosedXQException();
3225@@ -345,6 +457,15 @@
3226 return expression;
3227 }
3228
3229+ /** \brief Prepares an expression for execution.
3230+ *
3231+ * The properties of the connection's default XQStaticContext are copied to the returned XQPreparedExpression.
3232+ *
3233+ * @param in - the XQuery expression as an InputStream. Cannot be null
3234+ * @param xqsc - XQStaticContext containing values of expression properties
3235+ * @return the prepared XQuery expression
3236+ * @throw XQException - if (1) the connection is in a closed state, (2) there are errors preparing the expression, or (3) the xquery parameter is null
3237+ */
3238 @Override
3239 public XQPreparedExpression prepareExpression(InputStream in, XQStaticContext xqsc) throws XQException {
3240 isClosedXQException();
3241@@ -370,11 +491,24 @@
3242 return expression;
3243 }
3244
3245+ /** \brief Undoes all changes made in the current transaction and releases any locks held by the datasource.
3246+ *
3247+ * This method should be used only when auto-commit mode is disabled.
3248+ *
3249+ * @throw XQException - if the connection is in a closed state or this connection is operating in auto-commit mode
3250+ */
3251 @Override
3252 public void rollback() throws XQException {
3253 throw new UnsupportedOperationException("Zorba does not support transactions... yet...");
3254 }
3255
3256+ /** \brief Gets an XQStaticContext representing the default values for all expression properties.
3257+ *
3258+ * In order to modify the defaults, it is not sufficient to modify the values in the returned XQStaticContext object; in addition setStaticContext should be called to make those new values effective.
3259+ *
3260+ * @return XQStaticContext representing the default values for all expression properties
3261+ * @throw XQException - if the connection is in a closed state
3262+ */
3263 @Override
3264 public XQStaticContext getStaticContext() throws XQException {
3265 isClosedXQException();
3266@@ -391,6 +525,13 @@
3267 return lStaticContext;
3268 }
3269
3270+ /** \brief Sets the default values for all expression properties.
3271+ *
3272+ * The implementation will read out all expression properties from the specified XQStaticContext and update its private copy.
3273+ *
3274+ * @param xqsc - XQStaticContext containing values of expression properties
3275+ * @throw XQException - if the connection is in a closed state
3276+ */
3277 @Override
3278 public void setStaticContext(XQStaticContext xqsc) throws XQException {
3279 isClosedXQException();
3280@@ -401,6 +542,15 @@
3281 lStaticContext = xqsc;
3282 }
3283
3284+ /** \brief Creates an item from a given value.
3285+ *
3286+ * The value is converted into an instance of the specified type according to the casting from xs:string rules outlined in 17.1.1 Casting from xs:string and xs:untypedAtomic, XQuery 1.0 and XPath 2.0 Functions and Operators. If the cast fails an XQException is thrown.
3287+ *
3288+ * @param value - the lexical string value of the type
3289+ * @param type - the item type
3290+ * @return XQItem representing the resulting item
3291+ * @throw XQException - if (1) any of the arguments are null, (2) given type is not an atomic type, (3) the conversion of the value to an XDM instance failed, or (4) the underlying object implementing the interface is closed
3292+ */
3293 @Override
3294 public XQItem createItemFromAtomicValue(String value, XQItemType type) throws XQException {
3295 isClosedXQException();
3296@@ -418,6 +568,16 @@
3297 return item;
3298 }
3299
3300+ /** \brief Creates an item from a given value.
3301+ *
3302+ * The value is converted into an instance of the specified type, which must represent an xs:string or a type derived by restriction from xs:string. If the specified type is null, it defaults to xs:string.
3303+ * Subsequently the value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, an XQException will be thrown.
3304+ *
3305+ * @param value - the value to be converted, cannot be null
3306+ * @param type - the type of the value to be bound to the external variable. The default type, xs:string, is used in case null is specified
3307+ * @return XQItem representing the resulting item
3308+ * @throw XQException - if (1) the value argument is null, (2) the conversion of the value to an XDM instance failed, or (3) the underlying object implementing the interface is closed
3309+ */
3310 @Override
3311 public XQItem createItemFromString(String value, XQItemType type) throws XQException {
3312 isClosedXQException();
3313@@ -562,6 +722,20 @@
3314 return item;
3315 }
3316
3317+ /** \brief Creates an item from the given value.
3318+ *
3319+ * If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.
3320+ *
3321+ * The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.
3322+ *
3323+ * If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.
3324+ *
3325+ * @param value - the value to be converted, cannot be null
3326+ * @param baseURI - an optional base URI, can be null. It can be used, for example, to resolve relative URIs and to include in error messages.
3327+ * @param type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
3328+ * @return XQItem representing the resulting item
3329+ * @throw XQException - if (1) the value argument is null, (2) the conversion of the value to an XDM instance failed, or (3) the underlying object implementing the interface is closed
3330+ */
3331 @Override
3332 public XQItem createItemFromDocument(String value, String baseURI, XQItemType type) throws XQException {
3333 isClosedXQException();
3334@@ -592,6 +766,20 @@
3335 return item;
3336 }
3337
3338+ /** \brief Creates an item from the given value.
3339+ *
3340+ * If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.
3341+ *
3342+ * The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.
3343+ *
3344+ * If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.
3345+ *
3346+ * @param value - the value to be converted, cannot be null
3347+ * @param baseURI - an optional base URI, can be null. It can be used, for example, to resolve relative URIs and to include in error messages.
3348+ * @param type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
3349+ * @return XQItem representing the resulting item
3350+ * @throw XQException - if (1) the value argument is null, (2) the conversion of the value to an XDM instance failed, or (3) the underlying object implementing the interface is closed
3351+ */
3352 @Override
3353 public XQItem createItemFromDocument(Reader value, String baseURI, XQItemType type) throws XQException {
3354 isClosedXQException();
3355@@ -616,6 +804,20 @@
3356 return item;
3357 }
3358
3359+ /** \brief Creates an item from the given value.
3360+ *
3361+ * If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.
3362+ *
3363+ * The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.
3364+ *
3365+ * If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.
3366+ *
3367+ * @param value - the value to be converted, cannot be null
3368+ * @param baseURI - an optional base URI, can be null. It can be used, for example, to resolve relative URIs and to include in error messages.
3369+ * @param type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
3370+ * @return XQItem representing the resulting item
3371+ * @throw XQException - if (1) the value argument is null, (2) the conversion of the value to an XDM instance failed, or (3) the underlying object implementing the interface is closed
3372+ */
3373 @Override
3374 public XQItem createItemFromDocument(InputStream value, String baseURI, XQItemType type) throws XQException {
3375 isClosedXQException();
3376@@ -634,6 +836,19 @@
3377 return item;
3378 }
3379
3380+ /** \brief Creates an item from the given value.
3381+ *
3382+ * If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.
3383+ *
3384+ * The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.
3385+ *
3386+ * If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.
3387+ *
3388+ * @param value - the value to be converted, cannot be null
3389+ * @param type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
3390+ * @return XQItem representing the resulting item
3391+ * @throw XQException - if (1) the value argument is null, (2) the conversion of the value to an XDM instance failed, or (3) the underlying object implementing the interface is closed
3392+ */
3393 @Override
3394 public XQItem createItemFromDocument(XMLStreamReader value, XQItemType type) throws XQException {
3395 isClosedXQException();
3396@@ -669,6 +884,24 @@
3397 return sw.toString();
3398 }
3399
3400+ /** \brief Creates an item from the given value.
3401+ *
3402+ * An XQJ implementation must at least support the following implementations:
3403+ * - javax.xml.transform.dom.DOMSource
3404+ * - javax.xml.transform.sax.SAXSource
3405+ * - javax.xml.transform.stream.StreamSource
3406+ *
3407+ * If the value represents a well-formed XML document, it will result in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.
3408+ *
3409+ * The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.
3410+ *
3411+ * If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.
3412+ *
3413+ * @param value - the value to be converted, cannot be null
3414+ * @param type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
3415+ * @return XQItem representing the resulting item
3416+ * @throw XQException - if (1) the value argument is null, (2) the conversion of the value to an XDM instance failed, or (3) the underlying object implementing the interface is closed
3417+ */
3418 @Override
3419 public XQItem createItemFromDocument(Source value, XQItemType type) throws XQException {
3420 isClosedXQException();
3421@@ -687,6 +920,15 @@
3422
3423 }
3424
3425+ /** \brief Creates an item from a given value.
3426+ *
3427+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the converstion fails, an XQException will be thrown.
3428+ *
3429+ * @param value - the value to be converted
3430+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
3431+ * @return XQItem representing the resulting item
3432+ * @throw XQException - (1) the conversion of the value to an XDM instance failed, or (2) the underlying object implementing the interface is closed
3433+ */
3434 @Override
3435 public XQItem createItemFromObject(Object value, XQItemType type) throws XQException {
3436 isClosedXQException();
3437@@ -1069,8 +1311,6 @@
3438 return item;
3439 }
3440
3441- // This method works for Decimal and all subtypes,
3442- // verifies that the type is correct and create the Item
3443 private XQItem createDecimal(BigDecimal value, XQItemType type) throws XQException {
3444 XQItem item = null;
3445 try {
3446@@ -1126,7 +1366,16 @@
3447 }
3448 return item;
3449 }
3450-
3451+
3452+ /** \brief Creates an item from a given value.
3453+ *
3454+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the converstion fails, an XQException will be thrown.
3455+ *
3456+ * @param b - the value to be converted
3457+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
3458+ * @return XQItem representing the resulting item
3459+ * @throw XQException - (1) the conversion of the value to an XDM instance failed, or (2) the underlying object implementing the interface is closed
3460+ */
3461 @Override
3462 public XQItem createItemFromByte(byte b, XQItemType type) throws XQException {
3463 isClosedXQException();
3464@@ -1136,6 +1385,15 @@
3465 return createDecimal(new BigDecimal(b), type);
3466 }
3467
3468+ /** \brief Creates an item from a given value.
3469+ *
3470+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the converstion fails, an XQException will be thrown.
3471+ *
3472+ * @param value - the value to be converted
3473+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
3474+ * @return XQItem representing the resulting item
3475+ * @throw XQException - (1) the conversion of the value to an XDM instance failed, or (2) the underlying object implementing the interface is closed
3476+ */
3477 @Override
3478 public XQItem createItemFromDouble(double value, XQItemType type) throws XQException {
3479 isClosedXQException();
3480@@ -1155,6 +1413,15 @@
3481 return item;
3482 }
3483
3484+ /** \brief Creates an item from a given value.
3485+ *
3486+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the converstion fails, an XQException will be thrown.
3487+ *
3488+ * @param value - the value to be converted
3489+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
3490+ * @return XQItem representing the resulting item
3491+ * @throw XQException - (1) the conversion of the value to an XDM instance failed, or (2) the underlying object implementing the interface is closed
3492+ */
3493 @Override
3494 public XQItem createItemFromFloat(float value, XQItemType type) throws XQException {
3495 isClosedXQException();
3496@@ -1174,6 +1441,15 @@
3497 return item;
3498 }
3499
3500+ /** \brief Creates an item from a given value.
3501+ *
3502+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the converstion fails, an XQException will be thrown.
3503+ *
3504+ * @param value - the value to be converted
3505+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
3506+ * @return XQItem representing the resulting item
3507+ * @throw XQException - (1) the conversion of the value to an XDM instance failed, or (2) the underlying object implementing the interface is closed
3508+ */
3509 @Override
3510 public XQItem createItemFromInt(int value, XQItemType type) throws XQException {
3511 isClosedXQException();
3512@@ -1190,6 +1466,15 @@
3513 return createDecimal(new BigDecimal(value), type);
3514 }
3515
3516+ /** \brief Creates an item from a given value.
3517+ *
3518+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the converstion fails, an XQException will be thrown.
3519+ *
3520+ * @param value - the value to be converted
3521+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
3522+ * @return XQItem representing the resulting item
3523+ * @throw XQException - (1) the conversion of the value to an XDM instance failed, or (2) the underlying object implementing the interface is closed
3524+ */
3525 @Override
3526 public XQItem createItemFromLong(long value, XQItemType type) throws XQException {
3527 isClosedXQException();
3528@@ -1207,6 +1492,15 @@
3529 return createDecimal(new BigDecimal(value), type);
3530 }
3531
3532+ /** \brief Creates an item from a given value.
3533+ *
3534+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the converstion fails, an XQException will be thrown.
3535+ *
3536+ * @param value - the value to be converted
3537+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
3538+ * @return XQItem representing the resulting item
3539+ * @throw XQException - (1) the conversion of the value to an XDM instance failed, or (2) the underlying object implementing the interface is closed
3540+ */
3541 @Override
3542 public XQItem createItemFromNode(Node value, XQItemType type) throws XQException {
3543 isClosedXQException();
3544@@ -1221,6 +1515,15 @@
3545 return result;
3546 }
3547
3548+ /** \brief Creates an item from a given value.
3549+ *
3550+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the converstion fails, an XQException will be thrown.
3551+ *
3552+ * @param value - the value to be converted
3553+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
3554+ * @return XQItem representing the resulting item
3555+ * @throw XQException - (1) the conversion of the value to an XDM instance failed, or (2) the underlying object implementing the interface is closed
3556+ */
3557 @Override
3558 public XQItem createItemFromShort(short value, XQItemType type) throws XQException {
3559 isClosedXQException();
3560@@ -1233,6 +1536,14 @@
3561 return createDecimal(new BigDecimal(value), type);
3562 }
3563
3564+ /** \brief Creates a copy of the specified XQItem.
3565+ *
3566+ * This method can be used, for example, to copy an XQResultItem object so that the new item is not dependant on the connection.
3567+ *
3568+ * @param value - the XQItem to copy
3569+ * @return XQItem independent of any underlying XQConnection is created
3570+ * @throw XQException - if (1) the specified item is null, (2) the underlying object implementing the interface is closed, (3) the specified item is closed
3571+ */
3572 @Override
3573 public XQItem createItem(XQItem value) throws XQException {
3574 isClosedXQException();
3575@@ -1244,6 +1555,14 @@
3576 return result;
3577 }
3578
3579+ /** \brief Creates a copy of the specified XQSequence.
3580+ *
3581+ * Creates a copy of the specified XQSequence. The newly created XQSequence is scrollable and independent of any underlying XQConnection. The new XQSequence will contain all items from the specified XQSequence starting from its current position. The copy process will implicitly perform next operations on the specified sequence to read the items. All items are consumed, the current position of the cursor is set to point after the last item.
3582+ *
3583+ * @param value - input sequence
3584+ * @return XQSequence representing a copy of the input sequence
3585+ * @throw XQException - if (1) there are errors accessing the items in the specified sequence, (2) the specified sequence is closed, (3) in the case of a forward only sequence, a get or write method has already been invoked on the current item, (4) the s parameter is null, or (5) the underlying object implementing the interface is closed
3586+ */
3587 @Override
3588 public XQSequence createSequence(XQSequence value) throws XQException {
3589 isClosedXQException();
3590@@ -1260,6 +1579,14 @@
3591 return result;
3592 }
3593
3594+ /** \brief Creates an XQSequence, containing all the items from the iterator.
3595+ *
3596+ * The newly created XQSequence is scrollable and independent of any underlying XQConnection. If the iterator returns an XQItem, it is added to the sequence. If the iterator returns any other object, an item is added to the sequence following the rules from 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the iterator does not return any items, then an empty sequence is created.
3597+ *
3598+ * @param value - input sequence
3599+ * @return XQSequence representing a copy of the input sequence
3600+ * @throw XQException - if (1) there are errors accessing the items in the specified sequence, (2) the specified sequence is closed, (3) in the case of a forward only sequence, a get or write method has already been invoked on the current item, (4) the s parameter is null, or (5) the underlying object implementing the interface is closed
3601+ */
3602 @Override
3603 public XQSequence createSequence(Iterator value) throws XQException {
3604 isClosedXQException();
3605@@ -1273,6 +1600,20 @@
3606 return result;
3607 }
3608
3609+ /** \brief Creates a new XQItemType object representing an XQuery atomic type.
3610+ *
3611+ * The item kind of the item type will be XQItemType.XQITEMKIND_ATOMIC.
3612+ * Example -
3613+ * \code{.java}
3614+ * XQConnection conn = ...;
3615+ *
3616+ * // to create xs:integer item type
3617+ * conn.createAtomicType(XQItemType.XQBASETYPE_INTEGER);
3618+ * \endcode
3619+ * @param basetype - one of the XQItemType.XQBASETYPE_* constants. All basetype constants except the following are valid:<br />XQItemType.XQBASETYPE_UNTYPED<br />XQItemType.XQBASETYPE_ANYTYPE<br />XQItemType.XQBASETYPE_IDREFS<br />XQItemType.XQBASETYPE_NMTOKENS<br />XQItemType.XQBASETYPE_ENTITIES<br />XQItemType.XQBASETYPE_ANYSIMPLETYPE<br />
3620+ * @return a new XQItemType representing the atomic type
3621+ * @throw XQException - if (1) an invalid basetype value is passed in, or (2) the underlying object implementing the interface is closed
3622+ */
3623 @Override
3624 public XQItemType createAtomicType(int basetype) throws XQException {
3625 isClosedXQException();
3626@@ -1288,6 +1629,22 @@
3627 return type;
3628 }
3629
3630+ /** \brief Creates a new XQItemType object representing an XQuery atomic type.
3631+ *
3632+ * The item kind of the item type will be XQItemType.XQITEMKIND_ATOMIC.
3633+ * Example -
3634+ * \code{.java}
3635+ * XQConnection conn = ...;
3636+ *
3637+ * // to create xs:integer item type
3638+ * conn.createAtomicType(XQItemType.XQBASETYPE_INTEGER);
3639+ * \endcode
3640+ * @param basetype - one of the XQItemType.XQBASETYPE_* constants. All basetype constants except the following are valid:<br />XQItemType.XQBASETYPE_UNTYPED<br />XQItemType.XQBASETYPE_ANYTYPE<br />XQItemType.XQBASETYPE_IDREFS<br />XQItemType.XQBASETYPE_NMTOKENS<br />XQItemType.XQBASETYPE_ENTITIES<br />XQItemType.XQBASETYPE_ANYSIMPLETYPE<br />
3641+ * @param qname - the QName of the type. If the QName refers to a predefinied type, it must match the basetype. Can be null
3642+ * @param uri - the URI to the schema. Can be null. This can only be specified if the typename is also specified
3643+ * @return a new XQItemType representing the atomic type
3644+ * @throw XQException - if (1) an invalid basetype value is passed in, or (2) the underlying object implementing the interface is closed
3645+ */
3646 @Override
3647 public XQItemType createAtomicType(int basetype, QName qname, URI uri) throws XQException {
3648 if (closed) {
3649@@ -1305,6 +1662,41 @@
3650 return type;
3651 }
3652
3653+ /** \brief Creates a new XQItemType object representing the XQuery attribute(nodename, basetype) type with the given node name and base type.
3654+ *
3655+ * This method can be used to create item type for attributes with a pre-defined schema type.
3656+ *
3657+ * Example -
3658+ * \code{.java}
3659+ * XQConnection conn = ..; // An XQuery connection
3660+ *
3661+ * - attribute() // no node name, pass null for the node name
3662+ *
3663+ * conn.createAttributeType(null, XQItemType.XQBASETYPE_ANYSIMPLETYPE);
3664+ *
3665+ * - attribute (*) // equivalent to attribute()
3666+ *
3667+ * conn.createAttributeType(null, XQItemType.XQBASETYPE_ANYSIMPLETYPE);
3668+ *
3669+ * - attribute (person) // attribute of name person and any simple type.
3670+ *
3671+ * conn.createAttributeType(new QName("person"), XQItemType.XQBASETYPE_ANYSIMPLETYPE);
3672+ *
3673+ * - attribute(foo:bar) // node name foo:bar, type is any simple type
3674+ *
3675+ * conn.createAttributeType(new QName("http://www.foo.com", "bar","foo"),
3676+ * XQItemType.XQBASETYPE_ANYSIMPLETYPE);
3677+ *
3678+ * - attribute(foo:bar, xs:integer) // node name foo:bar, type is xs:integer
3679+ *
3680+ * conn.createAttributeType(new QName("http://www.foo.com", "bar","foo"),
3681+ * XQItemType.XQBASETYPE_INTEGER);
3682+ * \endcode
3683+ * @param nodename - specifies the name of the node.null indicates a wildcard for the node name
3684+ * @param basetype - the base type of the attribute. One of the XQItemType.XQBASETYPE_* other than XQItemType.XQBASETYPE_UNTYPED or XQItemType.XQBASETYPE_ANYTYPE
3685+ * @return a new XQItemType representing the XQuery attribute(nodename, basetype) type
3686+ * @throw XQException - if (1) the underlying object implementing the interface is closed or (2) if the base type is one of: XQItemType.XQBASETYPE_UNTYPED or XQItemType.XQBASETYPE_ANYTYPE
3687+ */
3688 @Override
3689 public XQItemType createAttributeType(QName nodename, int basetype) throws XQException {
3690 isClosedXQException();
3691@@ -1314,6 +1706,50 @@
3692 return new org.zorbaxquery.api.xqj.XQItemType(XQItemType.XQITEMKIND_ATTRIBUTE, nodename, basetype);
3693 }
3694
3695+ /** \brief Creates a new XQItemType object representing the XQuery attribute(nodename, basetype) type with the given node name and base type.
3696+ *
3697+ * The type name can reference either pre-defined simple types or user-defined simple types.
3698+ *
3699+ * Example -
3700+ * \code{.java}
3701+ * XQConnection conn = ..; // An XQuery connection
3702+ *
3703+ * - attribute (name, employeename) // attribute name of type employeename
3704+ *
3705+ * conn.createAttributeType(new QName("name"), XQItemType.XQBASETYPE_ANYSIMPLETYPE,
3706+ * new QName("employeename"), null);
3707+ *
3708+ * - attribute (foo:bar, po:city)
3709+ * where the prefix foo refers to the namespace http://www.foo.com and the
3710+ * prefix po refers to the namespace "http://www.address.com"
3711+ *
3712+ * conn.createAttributeType(new QName("http://www.foo.com", "bar","foo"),
3713+ * XQItemType.XQBASETYPE_ANYSIMPLETYPE,
3714+ * new QName("http://address.com", "address","po"), null);
3715+ *
3716+ * - attribute (zip, zipcode) // attribute zip of type zipchode which derives from
3717+ * // xs:string
3718+ *
3719+ * conn.createAttributeType(new QName("zip"), XQItemType.XQBASETYPE_STRING,
3720+ * new QName("zipcode"), null);
3721+ *
3722+ * - attribute(foo:bar, po:hatsize)
3723+ * where the prefix foo refers to the namespace http://www.foo.com and the
3724+ * prefix po refers to the namespace "http://www.hatsizes.com"
3725+ * with schema URI "http://hatschema.com"
3726+ *
3727+ * conn.createAttributeType(new QName("http://www.foo.com", "bar","foo"),
3728+ * XQItemType.XQBASETYPE_INTEGER,
3729+ * new QName("http://www.hatsizes.com", "hatsize","po"),
3730+ * new QName("http://hatschema.com"));
3731+ * \endcode
3732+ * @param nodename - specifies the name of the node.null indicates a wildcard for the node name
3733+ * @param basetype - the base type of the attribute. One of the XQItemTyupe.XQBASETYPE_* constants other than XQItemType.XQBASETYPE_UNTYPED or XQItemType.XQBASETYPE_ANYTYPE
3734+ * @param typename - the QName of the type. If the QName refers to a predefinied type, it must match the basetype. Can be null.
3735+ * @param schemaURI - the URI to the schema. Can be null. This can only be specified if the typename is also specified
3736+ * @return a new XQItemType representing the XQuery attribute(nodename,basetype, typename,schemaURI) type.
3737+ * @throw XQException - if (1) the underlying object implementing the interface is closed, (2) if the base type is one of: XQItemType.XQBASETYPE_UNTYPED or XQItemType.XQBASETYPE_ANYTYPE, (3) the schema URI is specified and the typename is not specified, (4) the implementation does not support user-defined XML schema types, or (5) if the typename refers to a predefinied type and does not match basetype
3738+ */
3739 @Override
3740 public XQItemType createAttributeType(QName nodename, int basetype, QName typename, URI schemaURI) throws XQException {
3741 isClosedXQException();
3742@@ -1326,18 +1762,67 @@
3743 return new org.zorbaxquery.api.xqj.XQItemType(XQItemType.XQITEMKIND_ATTRIBUTE, nodename, basetype, typename, schemaURI, true);
3744 }
3745
3746+ /** \brief Creates a new XQItemType object representing the XQuery schema-attribute(nodename,basetype,schemaURI) type, with the given node name, base type, and schema URI.
3747+ *
3748+ * Example -
3749+ * \code{.java}
3750+ * XQConnection conn = ..; // An XQuery connection
3751+ *
3752+ * - schema-attribute (name) // schema-attribute name, found in the schema
3753+ * // available at http://customerschema.com
3754+ *
3755+ * conn.createSchemaAttributeType(new QName("name"),
3756+ * XQItemType.XQBASETYPE_STRING,
3757+ * new URI(http://customerschema.com));
3758+ * \endcode
3759+ *
3760+ * @param nodename - specifies the name of the node
3761+ * @param basetype - the base type of the attribute. One of the XQItemTyupe.XQBASETYPE_* constants other than XQItemType.XQBASETYPE_UNTYPED or XQItemType.XQBASETYPE_ANYTYPE
3762+ * @param uri - the URI to the schema. Can be null
3763+ * @return a new XQItemType representing the XQuery schema-attribute(nodename,basetype, schemaURI) type
3764+ * @throw XQException - if (1) the node name is null, (2) if the base type is one of: XQItemType.XQBASETYPE_UNTYPED or XQItemType.XQBASETYPE_ANYTYPE, (3) the underlying object implementing the interface is closed, or (4) the implementation does not support user-defined XML schema types
3765+ */
3766 @Override
3767 public XQItemType createSchemaAttributeType(QName nodename, int basetype, URI uri) throws XQException {
3768 isClosedXQException();
3769 return new org.zorbaxquery.api.xqj.XQItemType(XQItemType.XQITEMKIND_SCHEMA_ATTRIBUTE, nodename, basetype, uri);
3770 }
3771
3772+ /** \brief Creates a new XQItemType object representing the XQuery comment() type.
3773+ *
3774+ * Creates a new XQItemType object representing the XQuery comment() type. The XQItemType object will have the item kind set to XQItemType.XQITEMKIND_COMMENT.
3775+ *
3776+ * Example -
3777+ * \code{.java}
3778+ * XQConnection conn = ..; // An XQuery connection
3779+ * XQItemType cmttype = conn.createCommentType();
3780+ *
3781+ * int itemkind = cmttype.getItemKind(); // will be XQItemType.XQITEMKIND_COMMENT
3782+ *
3783+ * XQExpression expr = conn.createExpression();
3784+ * XQSequence result = expr.executeQuery("<!-- comments -->");
3785+ *
3786+ * result.next();
3787+ * boolean pi = result.instanceOf(cmttype); // will be true
3788+ * \endcode
3789+ *
3790+ * @return a new XQItemType representing the XQuery comment() type
3791+ * @throw XQException - if the underlying object implementing the interface is closed
3792+ */
3793 @Override
3794 public XQItemType createCommentType() throws XQException {
3795 isClosedXQException();
3796 return new org.zorbaxquery.api.xqj.XQItemType(XQItemType.XQITEMKIND_COMMENT);
3797 }
3798
3799+ /** \brief Creates a new XQItemType object representing the XQuery document-node(elementType) type containing a single element.
3800+ *
3801+ * Creates a new XQItemType object representing the XQuery document-node(elementType) type containing a single element. The XQItemType object will have the item kind set to XQItemType.XQITEMKIND_DOCUMENT_ELEMENT and the base type set to the item type of the input elementType.
3802+ *
3803+ * @param elementType - an XQItemType object representing an XQuery element() type, cannot be null
3804+ * @return a new XQItemType representing the XQuery document-node(elementType) type containing a single element
3805+ * @throw XQException - if (1) the underlying object implementing the interface is closed or (2) the elementType has an item kind different from XQItemType.XQITEMKIND_ELEMENT, (3) the elementType argument is null, or (4) the implementation does not support user-defined XML schema types
3806+ */
3807 @Override
3808 public XQItemType createDocumentElementType(XQItemType elementType) throws XQException {
3809 isClosedXQException();
3810@@ -1348,6 +1833,14 @@
3811 return new org.zorbaxquery.api.xqj.XQItemType(XQItemType.XQITEMKIND_DOCUMENT_ELEMENT, elementType.getNodeName(), elementType.getBaseType(), elementType.getSchemaURI());
3812 }
3813
3814+ /** \brief Creates a new XQItemType object representing the XQuery document-node(elementType) type containing a single schema-element(...).
3815+ *
3816+ * The XQItemType object will have the item kind set to XQItemType.XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT and the base type set to the item type of the input elementType.
3817+ *
3818+ * @param elementType - an XQItemType object representing an XQuery schema-element(...) type, cannot be null
3819+ * @return a new XQItemType representing the XQuery document-node(elementType) type containing a single schema-element(...) element
3820+ * @throw XQException - if (1) the underlying object implementing the interface is closed or (2) the elementType has an item kind different from XQItemType.XQITEMKIND_SCHEMA_ELEMENT, (3) the elementType argument is null, (4) the implementation does not support user-defined XML schema types
3821+ */
3822 @Override
3823 public XQItemType createDocumentSchemaElementType(XQItemType elementType) throws XQException {
3824 isClosedXQException();
3825@@ -1357,12 +1850,53 @@
3826 return new org.zorbaxquery.api.xqj.XQItemType(XQItemType.XQITEMKIND_DOCUMENT_ELEMENT, elementType.getNodeName(), elementType.getBaseType(), elementType.getSchemaURI());
3827 }
3828
3829+ /** \brief Creates a new XQItemType object representing the XQuery document-node() type.
3830+ *
3831+ * The XQItemType object will have the item kind set to XQItemType.XQITEMKIND_DOCUMENT.
3832+ *
3833+ * @return a new XQItemType representing the XQuery document-node() type
3834+ * @throw XQException - if the underlying object implementing the interface is closed
3835+ */
3836 @Override
3837 public XQItemType createDocumentType() throws XQException {
3838 isClosedXQException();
3839 return new org.zorbaxquery.api.xqj.XQItemType(XQItemType.XQITEMKIND_DOCUMENT);
3840 }
3841
3842+ /** \brief Creates a new XQItemType object representing the XQuery element(nodename, basetype) type, with the given node name and base type.
3843+ *
3844+ * This method can be used to create item type for elements with a pre-defined schema type.
3845+ *
3846+ * Example -
3847+ * \code{.java}
3848+ * XQConnection conn = ..; // An XQuery connection
3849+ * - element() // no node name, pass null for the node name
3850+ *
3851+ * conn.createElementType(null, XQItemType.XQBASETYPE_ANYTYPE);
3852+ *
3853+ * - element (*) // equivalent to element()
3854+ *
3855+ * conn.createElementType(null, XQItemType.XQBASETYPE_ANYTYPE);
3856+ *
3857+ * - element(person) // element of name person and any type.
3858+ *
3859+ * conn.createElementType(new QName("person"), XQItemType.XQBASETYPE_ANYTYPE);
3860+ *
3861+ * - element(foo:bar) // node name foo:bar, type is anytype
3862+ *
3863+ * conn.createElementType(new QName("http://www.foo.com", "bar","foo"),
3864+ * XQItemType.XQBASETYPE_ANYTYPE);
3865+ *
3866+ * - element(foo:bar, xs:integer) // node name foo:bar, type is xs:integer
3867+ *
3868+ * conn.createElementType(new QName("http://www.foo.com", "bar","foo"),
3869+ * XQItemType.XQBASETYPE_INTEGER);
3870+ * \endcode
3871+ * @param nodename - specifies the name of the node. null indicates a wildcard for the node name
3872+ * @param baseType - the base type of the item. One of the XQItemType.XQBASETYPE_* constants
3873+ * @return a new XQItemType representing the XQuery element(nodename, basetype) type
3874+ * @throw XQException - if (1) the underlying object implementing the interface is closed
3875+ */
3876 @Override
3877 public XQItemType createElementType(QName nodename, int baseType) throws XQException {
3878 isClosedXQException();
3879@@ -1370,6 +1904,63 @@
3880 return item;
3881 }
3882
3883+ /** \brief Creates a new XQItemType object representing the XQuery element(nodename,basetype,typename,schemaURI, allowNill) type, given the node name, base type, schema type name, schema URI, and nilled check.
3884+ *
3885+ * The type name can reference either pre-defined schema types or user-defined types.
3886+ *
3887+ * Example -
3888+ * \code{.java}
3889+ * XQConnection conn = ..; // An XQuery connection
3890+ *
3891+ * - element (person, employee) // element person of type employee
3892+ *
3893+ * conn.createElementType(new QName("person"), XQItemType.XQBASETYPE_ANYTYPE,
3894+ * new QName("employee"), null ,false);
3895+ *
3896+ * - element(person, employee ? ) // element person of type employee, whose nilled
3897+ * // property may be true or false.
3898+ *
3899+ * conn.createElementType(new QName("person"), XQItemType.XQBASETYPE_ANYTYPE,
3900+ * new QName("employee"), null ,true);
3901+ *
3902+ * - element(foo:bar, po:address)
3903+ * where the prefix foo refers to the namespace http://www.foo.com and the
3904+ * prefix po refers to the namespace "http://www.address.com"
3905+ *
3906+ * conn.createElementType(new QName("http://www.foo.com", "bar","foo"),
3907+ * XQItemType.XQBASETYPE_ANYTYPE,
3908+ * new QName("http://address.com", "address","po"), null, false);
3909+ *
3910+ * - element (zip, zipcode) // element zip of type zipchode which derives from
3911+ * // xs:string
3912+ *
3913+ * conn.createElementType(new QName("zip"), XQItemType.XQBASETYPE_STRING,
3914+ * new QName("zipcode"), null, false);
3915+ *
3916+ * - element (*, xs:anyType ?)
3917+ *
3918+ * conn.createElementType(null, XQItemType.XQBASETYPE_ANYTYPE, null, null, true);
3919+ *
3920+ * - element(foo:bar, po:hatsize)
3921+ * where the prefix foo refers to the namespace http://www.foo.com and the
3922+ * prefix po refers to the namespace "http://www.hatsizes.com"
3923+ * with schema URI "http://hatschema.com"
3924+ *
3925+ * conn.createElementType(new QName("http://www.foo.com", "bar","foo"),
3926+ * XQItemType.XQBASETYPE_INTEGER,
3927+ * new QName("http://www.hatsizes.com", "hatsize","po"),
3928+ * new QName("http://hatschema.com"), false);
3929+ *
3930+ * \endcode
3931+ *
3932+ * @param nodename - specifies the name of the element. null indicates a wildcard for the node name
3933+ * @param baseType - the base type of the item. One of the XQItemType.XQBASETYPE_* constants
3934+ * @param typename - the QName of the type. If the QName refers to a predefinied type, it must match the basetype. Can be null
3935+ * @param schemaURI - the URI to the schema. Can be null. This can only be specified if the typename is also specified
3936+ * @param allowNill - the nilled property of the element
3937+ * @return a new XQItemType representing the XQuery element(nodename,basetype, typename,schemaURI, allowNill) type
3938+ * @throw XQException - if (1) schemaURI is specified but the typename is not specified, (2) the underlying object implementing the interface is closed, (3) the implementation does not support user-defined XML schema types, or (4) if the typename refers to a predefinied type and does not match basetype
3939+ */
3940 @Override
3941 public XQItemType createElementType(QName nodename, int baseType, QName typename, URI schemaURI, boolean allowNill) throws XQException {
3942 isClosedXQException();
3943@@ -1377,6 +1968,24 @@
3944 return item;
3945 }
3946
3947+ /** \brief Creates a new XQItemType object representing the XQuery schema-element(nodename,basetype,schemaURI) type, given the node name, base type, and the schema URI.
3948+ *
3949+ * Example -
3950+ * \code{.java}
3951+ * XQConnection conn = ..; // An XQuery connection
3952+ *
3953+ * - schema-element (customer) // schema-element person, found in
3954+ * // the schema available at http://customerschema.com
3955+ *
3956+ * conn.createElementType(new QName("customer"), XQItemType.XQBASETYPE_ANYTYPE,
3957+ * new URI("http://customerschema.com"));
3958+ * \endcode
3959+ * @param nodename - specifies the name of the element
3960+ * @param baseType - the base type of the item. One of the XQItemType.XQBASETYPE_* constants
3961+ * @param schemaURI - the URI to the schema. Can be null
3962+ * @return a new XQItemType representing the XQuery schema-element(nodename,basetype, schemaURI) type
3963+ * @throw XQException - if (1) the node name is null, (2) the underlying object implementing the interface is closed, or (3) the implementation does not support user-defined XML schema types
3964+ */
3965 @Override
3966 public XQItemType createSchemaElementType(QName nodename, int baseType, URI schemaURI) throws XQException {
3967 isClosedXQException();
3968@@ -1384,6 +1993,18 @@
3969 return item;
3970 }
3971
3972+ /** \brief Creates a new XQItemType object representing the XQuery item type.
3973+ *
3974+ * The XQItemType object will have the item kind set to XQItemType.XQITEMKIND_ITEM.
3975+ *
3976+ * Example -
3977+ * \code{.java}
3978+ * XQConnection conn = ..; // An XQuery connection
3979+ * XQItemType typ = conn.createItemType(); // represents the XQuery item type "item()"
3980+ * \endcode
3981+ * @return a new XQItemType representing the XQuery item type
3982+ * @throw XQException - if the underlying object implementing the interface is closed
3983+ */
3984 @Override
3985 public XQItemType createItemType() throws XQException {
3986 isClosedXQException();
3987@@ -1391,6 +2012,13 @@
3988 return type;
3989 }
3990
3991+ /** \brief Creates a new XQItemType object representing the XQuery node() type.
3992+ *
3993+ * The XQItemType object will have the item kind set to XQItemType.XQITEMKIND_NODE.
3994+ *
3995+ * @return a new XQItemType representing the XQuery node() type
3996+ * @throw XQException - if the underlying object implementing the interface is closed
3997+ */
3998 @Override
3999 public XQItemType createNodeType() throws XQException {
4000 isClosedXQException();
4001@@ -1398,6 +2026,35 @@
4002 return type;
4003 }
4004
4005+ /** \brief Creates a new XQItemType object representing the XQuery processing-instruction(piTarget) type.
4006+ *
4007+ * The XQItemType object will have the item kind set to XQItemType.XQITEMKIND_PI. A string literal can be passed to match the PITarget of the processing instruction as described in 2.5.4.2 Matching an Item Type and an Item, XQuery 1.0: An XML Query Language.
4008+ *
4009+ * Example -
4010+ * \code{.java}
4011+ * XQConnection conn = ..; // An XQuery connection
4012+ * XQItemType anypi = conn.createProcessingInstructionType();
4013+ * XQItemType foopi = conn.createProcessingInstructionType("foo-format");
4014+ *
4015+ * XQExpression expr = conn.createExpression();
4016+ * XQSequence result = expr.executeQuery("<?format role="output" ?>");
4017+ *
4018+ * result.next();
4019+ * boolean pi = result.instanceOf(anypi); // will be true
4020+ * pi = result.instanceOf(foopi); // will be false
4021+ *
4022+ * XQExpression expr = conn.createExpression();
4023+ * XQSequence result = expr.executeQuery("<?foo-format role="output" ?>");
4024+ *
4025+ * result.next();
4026+ * boolean pi = result.instanceOf(anypi); // will be true
4027+ * pi = result.instanceOf(foopi); // will be true
4028+ * \endcode
4029+ *
4030+ * @param piTarget - the string literal to match the processing instruction's PITarget. A null string value will match all processing instruction nodes
4031+ * @return a new XQItemType representing the XQuery processing-instruction(piTarget) type
4032+ * @throw XQException - if the underlying object implementing the interface is closed
4033+ */
4034 @Override
4035 public XQItemType createProcessingInstructionType(String piTarget) throws XQException {
4036 isClosedXQException();
4037@@ -1405,6 +2062,13 @@
4038 return type;
4039 }
4040
4041+ /** \brief Creates a new sequence type from an item type and occurence indicator.
4042+ *
4043+ * @param item - the item type. This parameter must be null if the occurance is XQSequenceType.OCC_EMPTY, and cannot be null for any other occurance indicator
4044+ * @param occurence - The occurence of the item type, must be one of XQSequenceType.OCC_ZERO_OR_ONE, XQSequenceType.OCC_EXACTLY_ONE, XQSequenceType.OCC_ZERO_OR_MORE, XQSequenceType.OCC_ONE_OR_MORE, XQSequenceType.OCC_EMPTY
4045+ * @return a new XQSequenceType representing the type of a sequence
4046+ * @throw XQException - if (1) the item is null and the occurance is not XQSequenceType.OCC_EMPTY, (2) the item is not null and the occurance is XQSequenceType.OCC_EMPTY, (3) the occurence is not one of: XQSequenceType.OCC_ZERO_OR_ONE, XQSequenceType.OCC_EXACTLY_ONE, XQSequenceType.OCC_ZERO_OR_MORE, XQSequenceType.OCC_ONE_OR_MORE, XQSequenceType.OCC_EMPTY or (4) the underlying object implementing the interface is closed
4047+ */
4048 @Override
4049 public XQSequenceType createSequenceType(XQItemType item, int occurence) throws XQException {
4050 isClosedXQException();
4051@@ -1423,6 +2087,13 @@
4052 return result;
4053 }
4054
4055+ /** \brief Creates a new XQItemType object representing the XQuery text() type.
4056+ *
4057+ * The XQItemType object will have the item kind set to XQItemType.XQITEMKIND_TEXT.
4058+ *
4059+ * @return a new XQItemType representing the XQuery text() type
4060+ * @throw XQException - if the underlying object implementing the interface is closed
4061+ */
4062 @Override
4063 public XQItemType createTextType() throws XQException {
4064 isClosedXQException();
4065
4066=== modified file 'swig/xqj/XQDataSource.java'
4067--- swig/xqj/XQDataSource.java 2012-04-19 23:07:13 +0000
4068+++ swig/xqj/XQDataSource.java 2012-05-15 20:01:25 +0000
4069@@ -21,6 +21,9 @@
4070 import java.util.Properties;
4071 import javax.xml.xquery.*;
4072
4073+ /**
4074+ * An XQDataSource is a factory for XQConnection objects.
4075+ */
4076 public class XQDataSource implements javax.xml.xquery.XQDataSource {
4077
4078 static {
4079@@ -37,7 +40,12 @@
4080 public XQDataSource() {
4081 }
4082
4083-
4084+
4085+ /** \brief Attempts to create a connection to an XML datasource.
4086+ *
4087+ * @return a connection to the XML datasource
4088+ * @throw XQException - if a datasource access error occurs
4089+ */
4090 @Override
4091 public XQConnection getConnection() throws XQException {
4092 XQConnection conn;
4093@@ -53,6 +61,14 @@
4094 return conn;
4095 }
4096
4097+ /** \brief Attempts to create a connection to an XML datasource using an existing JDBC connection.
4098+ *
4099+ * An XQJ implementation is not required to support this method. If it is not supported, then an exception (XQException) is thrown. The XQJ and JDBC connections will operate under the same transaction context.
4100+ *
4101+ * @param cnctn - an existing JDBC connection
4102+ * @return a connection to the XML datasource
4103+ * @throw XQException - if (1) a datasource access error occurs, (2) the implementation does not support this method of getting an XQConnection, or (3) if the con parameter is null
4104+ */
4105 @Override
4106 public XQConnection getConnection(Connection cnctn) throws XQException {
4107 /* Attempts to create a connection to an XML datasource using an
4108@@ -64,6 +80,13 @@
4109 throw new XQException("Connection to an XML datasource using an existing JDBC connection is not supported.");
4110 }
4111
4112+ /** \brief Attempts to establish a connection to an XML datasource using the supplied username and password.
4113+ *
4114+ * @param username - the user on whose behalf the connection is being made
4115+ * @param passwd - the user's password
4116+ * @return a connection to the XML datasource
4117+ * @throw XQException - if a datasource access error occurs
4118+ */
4119 @Override
4120 public XQConnection getConnection(String username, String passwd) throws XQException {
4121 XQConnection conn;
4122@@ -79,21 +102,55 @@
4123 return conn;
4124 }
4125
4126+ /** \brief Gets the maximum time in seconds that this datasource can wait while attempting to connect to a database.
4127+ *
4128+ * A value of zero means that the timeout is the default system timeout if there is one; otherwise, it means that there is no timeout. When a XQDataSource object is created, the login timeout is initially zero. It is implementation-defined whether the returned login timeout is actually used by the data source implementation.
4129+ *
4130+ * @return the datasource login time limit
4131+ * @throw XQException - if a datasource access error occurs
4132+ */
4133 @Override
4134 public int getLoginTimeout() throws XQException {
4135 return loginTimeout;
4136 }
4137
4138+ /** \brief Retrieves the log writer for this XQDataSource object.
4139+ *
4140+ * The log writer is a character output stream to which all logging and tracing messages for this datasource will be printed. This includes messages printed by the methods of this object, messages printed by methods of other objects manufactured by this object, and so on. When a XQDataSource object is created, the log writer is initially null; in other words, the default is for logging to be disabled.
4141+ *
4142+ * @return the log writer for this datasource or null if logging is disabled
4143+ * @throw XQException - if a datasource access error occurs
4144+ */
4145 @Override
4146 public PrintWriter getLogWriter() throws XQException {
4147 return logWriter;
4148 }
4149
4150+ /** \brief Returns an array containing the property names supported by this XQDataSource.
4151+ *
4152+ * Implementations that support user name and password must recognize the user name and password properties listed below.
4153+ *
4154+ * user the user name to use for creating a connection
4155+ * password the password to use for creating a connection
4156+ *
4157+ * Any additional properties are implementation-defined.
4158+ *
4159+ * @return String[] an array of property names supported by this implementation
4160+ */
4161 @Override
4162 public String[] getSupportedPropertyNames() {
4163 return propertiesAllowed;
4164 }
4165
4166+ /** \brief Sets the named property to the specified value.
4167+ *
4168+ * If a property with the same name was already set, then this method will override the old value for that property with the new value.
4169+ * If the implementation does not support the given property or if it can determine that the value given for this property is invalid, then an exception is thrown. If an exception is thrown, then no previous value is overwritten.
4170+ *
4171+ * @param name - the name of the property to set
4172+ * @param value - the value of the named property
4173+ * @throw XQException - if (1) the given property is not recognized, (2) the value for the given property is determined to be invalid, or (3) the name parameter is null
4174+ */
4175 @Override
4176 public void setProperty(String name, String value) throws XQException {
4177 if (name==null) {
4178@@ -112,6 +169,14 @@
4179 }
4180 }
4181
4182+ /** \brief Returns the current value of the named property if set, else null.
4183+ *
4184+ * If the implementation does not support the given property then an exception is raised.
4185+ *
4186+ * @param name - the name of the property whose value is needed
4187+ * @return String representing the value of the required property if set, else null
4188+ * @throw XQException - if (1) a given property is not supported, or (2) the name parameter is null
4189+ */
4190 @Override
4191 public String getProperty(String name) throws XQException {
4192 if (name==null) {
4193@@ -129,6 +194,14 @@
4194 return properties.getProperty(name);
4195 }
4196
4197+ /** \brief Sets the data source properties from the specified Properties instance.
4198+ *
4199+ * Properties set before this call will still apply but those with the same name as any of these properties will be replaced. Properties set after this call also apply and may replace properties set during this call.
4200+ * If the implementation does not support one or more of the given property names, or if it can determine that the value given for a specific property is invalid, then an exception is thrown. If an exception is thrown, then no previous value is overwritten. is invalid, then an exception is raised.
4201+ *
4202+ * @param prprts - the list of properties to set
4203+ * @throw XQException - if (1) a given property is not recognized, (2) the value for a given property is determined to be invalid, or (3) the props parameter is null
4204+ */
4205 @Override
4206 public void setProperties(Properties prprts) throws XQException {
4207 if (prprts==null) {
4208@@ -158,11 +231,25 @@
4209
4210 }
4211
4212+ /** \brief Sets the maximum time in seconds that this datasource will wait while attempting to connect to a database.
4213+ *
4214+ * A value of zero specifies that the timeout is the default system timeout if there is one; otherwise, it specifies that there is no timeout. When a XQDataSource object is created, the login timeout is initially zero. It is implementation-defined whether the specified login timeout is actually used by the data source implementation. If the connection is created over an existing JDBC connection, then the login timeout value from the underlying JDBC connection may be used.
4215+ *
4216+ * @param seconds - the datasource login time limit
4217+ * @throw XQException - if a datasource access error occurs
4218+ */
4219 @Override
4220- public void setLoginTimeout(int i) throws XQException {
4221- loginTimeout = i;
4222+ public void setLoginTimeout(int seconds) throws XQException {
4223+ loginTimeout = seconds;
4224 }
4225
4226+ /** \brief Sets the log writer for this XQDataSource object to the given java.io.PrintWriter object.
4227+ *
4228+ * The log writer is a character output stream to which all logging and tracing messages for this datasource will be printed. This includes messages printed by the methods of this object, messages printed by methods of other objects manufactured by this object, and so on. When a XQDataSource object is created the log writer is initially null; in other words, the default is for logging to be disabled.
4229+ *
4230+ * @param writer - the new log writer; to disable logging, set to null
4231+ * @throw XQException - if a datasource access error occurs
4232+ */
4233 @Override
4234 public void setLogWriter(PrintWriter writer) throws XQException {
4235 logWriter = writer;
4236
4237=== modified file 'swig/xqj/XQExpression.java'
4238--- swig/xqj/XQExpression.java 2012-04-19 23:07:13 +0000
4239+++ swig/xqj/XQExpression.java 2012-05-15 20:01:25 +0000
4240@@ -41,6 +41,42 @@
4241 import org.zorbaxquery.api.Item;
4242 import org.zorbaxquery.api.XQuery;
4243
4244+/**
4245+ * This interface describes the execute immediate functionality for expressions. This object can be created from the XQConnection and the execution can be done using the executeQuery() or executeCommand() method, passing in the XQuery expression.
4246+ *
4247+ * All external variables defined in the prolog of the expression to be executed must be set in the dynamic context of this expression using the bind methods. Also, variables bound in this expression but not defined as external in the prolog of the expression to be executed, are simply ignored. For example, if variables $var1 and $var2 are bound, but the query only defines $var1 as external, no error will be reported for the binding of $var2. It will simply be ignored. When the expression is executed using the executeQuery method, if the execution is successful, then an XQResultSequence object is returned. The XQResultSequence object is tied to the XQExpression from which it was prepared and is closed implicitly if that XQExpression is either closed or re-executed.
4248+ *
4249+ * The XQExpression object is dependent on the XQConnection object from which it was created and is only valid for the duration of that object. Thus, if the XQConnection object is closed then this XQExpression object will be implicitly closed and it can no longer be used.
4250+ *
4251+ * An XQJ driver is not required to provide finalizer methods for the connection and other objects. Hence it is strongly recommended that users call close method explicitly to free any resources. It is also recommended that they do so under a final block to ensure that the object is closed even when there are exceptions. Not closing this object implicitly or explicitly might result in serious memory leaks.
4252+ *
4253+ * When the XQExpression is closed any XQResultSequence object obtained from it is also implicitly closed.
4254+ *
4255+ * Example -
4256+ * \code{.java}
4257+ * XQConnection conn = XQDatasource.getConnection();
4258+ * XQExpression expr = conn.createExpression();
4259+ *
4260+ * expr.bindInt(new QName("x"), 21, null);
4261+ *
4262+ * XQSequence result = expr.executeQuery(
4263+ * "declare variable $x as xs:integer external;
4264+ * for $i in $x return $i");
4265+ *
4266+ * while (result.next())
4267+ * {
4268+ * // process results ...
4269+ * }
4270+ *
4271+ * // Execute some other expression on the same object
4272+ * XQSequence result = expr.executeQuery("for $i in doc('foo.xml') return $i");
4273+ * ...
4274+ *
4275+ * result.close(); // close the result
4276+ * expr.close();
4277+ * conn.close();
4278+ * \endcode
4279+ */
4280 public class XQExpression implements javax.xml.xquery.XQExpression {
4281
4282 //private XQuery query;
4283@@ -66,39 +102,75 @@
4284 connection = conn;
4285 staticContext = sc;
4286 }
4287-
4288+
4289+ /** \brief Attempts to cancel the execution if both the XQuery engine and XQJ driver support aborting the execution of an XQExpression.
4290+ *
4291+ * This method can be used by one thread to cancel an XQExpression, that is being executed in another thread. If cancellation is not supported or the attempt to cancel the execution was not successful, the method returns without any error. If the cancellation is successful, an XQException is thrown, to indicate that it has been aborted, by executeQuery, executeCommand or any method accessing the XQResultSequence returned by executeQuery. If applicable, any open XQResultSequence and XQResultItem objects will also be implicitly closed in this case.
4292+ *
4293+ * @throw XQException - if the expression is in a closed state
4294+ */
4295 @Override
4296 public void cancel() throws XQException {
4297 isClosedXQException();
4298 cancel = true;
4299 }
4300
4301+ /** \brief Checks if the expression is in a closed state.
4302+ *
4303+ * @return true if the expression is in a closed state, false otherwise
4304+ */
4305 @Override
4306 public boolean isClosed() {
4307 return closed;
4308 }
4309
4310- @Override
4311+
4312+ /** \brief Closes the expression object and release associated resources.
4313+ *
4314+ * Once the expression is closed, all methods on this object other than the close or isClosed will raise exceptions. This also closes any result sequences obtained from this expression. Calling close on an XQExpression object that is already closed has no effect.
4315+ *
4316+ * @throw XQException - if there are errors when closing the expression
4317+ */
4318+ @Override
4319 public void close() throws XQException {
4320 closed=true;
4321-// if (query!=null) {
4322-// query.destroy();
4323-// }
4324 for (XQResultSequence rs: resultSequences) {
4325 rs.close();
4326 }
4327 }
4328
4329+ /** \brief Executes an implementation-defined command.
4330+ *
4331+ * Calling this method implicitly closes any previous result sequence obtained from this expression.
4332+ *
4333+ * @param string - the input command as a string
4334+ * @throw XQException - if (1) there are errors when executing the command, or (2) the expression is in a closed state
4335+ */
4336 @Override
4337 public void executeCommand(String string) throws XQException {
4338 throw new UnsupportedOperationException("Not supported yet.");
4339 }
4340
4341+ /** \brief Executes an implementation-defined command.
4342+ *
4343+ * Calling this method implicitly closes any previous result sequence obtained from this expression.
4344+ *
4345+ * @param reader - the input command as a reader
4346+ * @throw XQException - if (1) there are errors when executing the command, or (2) the expression is in a closed state
4347+ */
4348 @Override
4349 public void executeCommand(Reader reader) throws XQException {
4350 throw new UnsupportedOperationException("Not supported yet.");
4351 }
4352
4353+ /** \brief Executes a query expression.
4354+ *
4355+ * This implicitly closes any previous result sequences obtained from this expression.
4356+ *
4357+ * @param value - the input query expression string. Cannot be null
4358+ * @return an XQResultSequence object containing the result of the query execution
4359+ * @throw XQException - if (1) there are errors when executing the query, (2) the expression is in a closed state, (3) the execution is cancelled, (4) the query parameter is null
4360+ */
4361 @Override
4362 public XQResultSequence executeQuery(String value) throws XQException {
4363 isClosedXQException();
4364@@ -135,6 +207,14 @@
4365 return result;
4366 }
4367
4368+ /** \brief Executes a query expression.
4369+ *
4370+ * This implicitly closes any previous result sequences obtained from this expression.
4371+ *
4372+ * @param value - the input query expression reader object. Cannot be null
4373+ * @return an XQResultSequence object containing the result of the query execution
4374+ * @throw XQException - if (1) there are errors when executing the query, (2) the expression is in a closed state, (3) the execution is cancelled, (4) the query parameter is null
4375+ */
4376 @Override
4377 public XQResultSequence executeQuery(Reader value) throws XQException {
4378 isClosedXQException();
4379@@ -158,6 +238,14 @@
4380 return executeQuery(writer.toString());
4381 }
4382
4383+ /** \brief Executes a query expression.
4384+ *
4385+ * This implicitly closes any previous result sequences obtained from this expression.
4386+ *
4387+ * @param value - the input query expression inputstream object. Cannot be null
4388+ * @return an XQResultSequence object containing the result of the query execution
4389+ * @throw XQException - if (1) there are errors when executing the query, (2) the expression is in a closed state, (3) the execution is cancelled, (4) the query parameter is null
4390+ */
4391 @Override
4392 public XQResultSequence executeQuery(InputStream value) throws XQException {
4393 isClosedXQException();
4394@@ -174,6 +262,13 @@
4395 return executeQuery(out.toString());
4396 }
4397
4398+ /** \brief Gets an XQStaticContext representing the values for all expression properties.
4399+ *
4400+ * Note that these properties cannot be changed; in order to change, a new XQExpression needs to be created.
4401+ *
4402+ * @return an XQStaticContext representing the values for all expression properties
4403+ * @throw XQException - if the expression is in a closed state
4404+ */
4405 @Override
4406 public XQStaticContext getStaticContext() throws XQException {
4407 isClosedXQException();
4408@@ -184,6 +279,11 @@
4409 }
4410 }
4411
4412+ /** \brief Gets the implicit timezone
4413+ *
4414+ * @return the implicit timezone. This may have been set by an application using the setImplicitTimeZone method or provided by the implementation
4415+ * @throw XQException - if the expression is in a closed state
4416+ */
4417 @Override
4418 public TimeZone getImplicitTimeZone() throws XQException {
4419 isClosedXQException();
4420@@ -197,6 +297,15 @@
4421 return result;
4422 }
4423
4424+ /** \brief Binds a value to the given external variable or the context item.
4425+ *
4426+ * The value is converted into an instance of the specified type according to the casting from xs:string rules outlined in 17.1.1 Casting from xs:string and xs:untypedAtomic, XQuery 1.0 and XPath 2.0 Functions and Operators. If the cast fails, or if there is a mismatch between the static and dynamic types, an XQException is thrown either by this method or during query evaluation.
4427+ *
4428+ * @param varName - the name of the external variable to bind to
4429+ * @param value - the lexical string value of the type
4430+ * @param type - the item type of the bind
4431+ * @throw XQException - if (1) any of the arguments are null, (2) given type is not an atomic type, (3) the conversion of the value to an XDM instance failed, (4) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (5) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (6) the expression is in a closed state
4432+ */
4433 @Override
4434 public void bindAtomicValue(QName varName, String value, XQItemType type) throws XQException {
4435 isClosedXQException();
4436@@ -210,6 +319,16 @@
4437 }
4438 }
4439
4440+ /** \brief Binds a value to the given external variable or the context item.
4441+ *
4442+ * The value is converted into an instance of the specified type, which must represent an xs:string or a type derived by restriction from xs:string. If the specified type is null, it defaults to xs:string.
4443+ * Subsequently the value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0,. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4444+ *
4445+ * @param varName - the name of the external variable to bind to, cannot be null
4446+ * @param value - the value to be converted, cannot be null
4447+ * @param type - the type of the value to be bound to the external variable. The default type, xs:string, is used in case null is specified
4448+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4449+ */
4450 @Override
4451 public void bindString(QName varName, String value, XQItemType type) throws XQException {
4452 isClosedXQException();
4453@@ -223,6 +342,20 @@
4454 }
4455 }
4456
4457+ /** \brief Binds a value to the given external variable or the context item.
4458+ *
4459+ * If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.
4460+ *
4461+ * The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.
4462+ *
4463+ * If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation. If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.
4464+ *
4465+ * @param varName - the name of the external variable to bind to, cannot be null
4466+ * @param value - the value to be converted, cannot be null
4467+ * @param baseURI - an optional base URI, can be null. It can be used, for example, to resolve relative URIs and to include in error messages.
4468+ * @param type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
4469+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4470+ */
4471 @Override
4472 public void bindDocument(QName varName, String value, String baseURI, XQItemType type) throws XQException {
4473 isClosedXQException();
4474@@ -236,6 +369,20 @@
4475 }
4476 }
4477
4478+ /** \brief Binds a value to the given external variable or the context item.
4479+ *
4480+ * If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.
4481+ *
4482+ * The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.
4483+ *
4484+ * If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation. If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.
4485+ *
4486+ * @param varName - the name of the external variable to bind to, cannot be null
4487+ * @param value - the value to be converted, cannot be null
4488+ * @param baseURI - an optional base URI, can be null. It can be used, for example, to resolve relative URIs and to include in error messages.
4489+ * @param type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
4490+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4491+ */
4492 @Override
4493 public void bindDocument(QName varName, Reader value, String baseURI, XQItemType type) throws XQException {
4494 isClosedXQException();
4495@@ -249,6 +396,20 @@
4496 }
4497 }
4498
4499+ /** \brief Binds a value to the given external variable or the context item.
4500+ *
4501+ * If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.
4502+ *
4503+ * The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.
4504+ *
4505+ * If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation. If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.
4506+ *
4507+ * @param varName - the name of the external variable to bind to, cannot be null
4508+ * @param value - the value to be converted, cannot be null
4509+ * @param baseURI - an optional base URI, can be null. It can be used, for example, to resolve relative URIs and to include in error messages.
4510+ * @param type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
4511+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4512+ */
4513 @Override
4514 public void bindDocument(QName varName, InputStream value, String baseURI, XQItemType type) throws XQException {
4515 isClosedXQException();
4516@@ -262,6 +423,19 @@
4517 }
4518 }
4519
4520+ /** \brief Binds a value to the given external variable or the context item.
4521+ *
4522+ * If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.
4523+ *
4524+ * The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.
4525+ *
4526+ * If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation. If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.
4527+ *
4528+ * @param varName - the name of the external variable to bind to, cannot be null
4529+ * @param value - the value to be converted, cannot be null
4530+ * @param type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
4531+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4532+ */
4533 @Override
4534 public void bindDocument(QName varName, XMLStreamReader value, XQItemType type) throws XQException {
4535 isClosedXQException();
4536@@ -275,6 +449,24 @@
4537 }
4538 }
4539
4540+ /** \brief Binds a value to the given external variable or the context item.
4541+ *
4542+ * An XQJ implementation must at least support the following implementations:
4543+ * - javax.xml.transform.dom.DOMSource
4544+ * - javax.xml.transform.sax.SAXSource
4545+ * - javax.xml.transform.stream.StreamSource
4546+ *
4547+ * If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.
4548+ *
4549+ * The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.
4550+ *
4551+ * If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation. If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.
4552+ *
4553+ * @param varName - the name of the external variable to bind to, cannot be null
4554+ * @param value - the value to be converted, cannot be null
4555+ * @param type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
4556+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4557+ */
4558 @Override
4559 public void bindDocument(QName varName, Source value, XQItemType type) throws XQException {
4560 isClosedXQException();
4561@@ -288,6 +480,11 @@
4562 }
4563 }
4564
4565+ /** \brief Sets the implicit timezone
4566+ *
4567+ * @param value - time zone to be set
4568+ * @throw XQException - if the expression is in a closed state
4569+ */
4570 @Override
4571 public void setImplicitTimeZone(TimeZone value) throws XQException {
4572 isClosedXQException();
4573@@ -299,6 +496,14 @@
4574 }
4575 }
4576
4577+ /** \brief Binds a value to the given external variable.
4578+ *
4579+ * The dynamic type of the value is derived from the XQItem. In case of a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4580+ *
4581+ * @param varName - the name of the external variable to bind to, cannot be null
4582+ * @param value - the value to be bound, cannot be null
4583+ * @throw XQException - if (1) any of the arguments are null, (2) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (3) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, (4) the expression is in a closed state, or (5) the specified item is closed
4584+ */
4585 @Override
4586 public void bindItem(QName varName, XQItem value) throws XQException {
4587 isClosedXQException();
4588@@ -311,6 +516,14 @@
4589 }
4590 }
4591
4592+ /** \brief Binds a value to the given external variable.
4593+ *
4594+ * The input sequence is consumed from its current position to the end, after which the input sequence's position will be set to point after the last item. The dynamic type of the value is derived from the items in the sequence. In case of a mismatch between the static and dynamic types, an XQException is be raised either by this method, or during query evaluation.
4595+ *
4596+ * @param varName - the name of the external variable to bind to, cannot be null
4597+ * @param value - the value to be bound, cannot be null
4598+ * @throw XQException - if (1) any of the arguments are null, (2) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (3) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, (4) the expression is in a closed state, or (5) the specified item is closed
4599+ */
4600 @Override
4601 public void bindSequence(QName varName, XQSequence value) throws XQException {
4602 isClosedXQException();
4603@@ -324,6 +537,15 @@
4604 }
4605 }
4606
4607+ /** \brief Binds a value to the given external variable or the context item.
4608+ *
4609+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4610+ *
4611+ * @param varName - the name of the external variable to bind to, cannot be null
4612+ * @param value - the value to be bound, cannot be null
4613+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
4614+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4615+ */
4616 @Override
4617 public void bindObject(QName varName, Object value, XQItemType type) throws XQException {
4618 isClosedXQException();
4619@@ -342,6 +564,15 @@
4620 }
4621 }
4622
4623+ /** \brief Binds a value to the given external variable or the context item.
4624+ *
4625+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4626+ *
4627+ * @param varName - the name of the external variable to bind to, cannot be null
4628+ * @param value - the value to be bound, cannot be null
4629+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
4630+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4631+ */
4632 @Override
4633 public void bindBoolean(QName varName, boolean value, XQItemType type) throws XQException {
4634 isClosedXQException();
4635@@ -354,6 +585,15 @@
4636 }
4637 }
4638
4639+ /** \brief Binds a value to the given external variable or the context item.
4640+ *
4641+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4642+ *
4643+ * @param varName - the name of the external variable to bind to, cannot be null
4644+ * @param value - the value to be bound, cannot be null
4645+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
4646+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4647+ */
4648 @Override
4649 public void bindByte(QName varName, byte value, XQItemType type) throws XQException {
4650 isClosedXQException();
4651@@ -366,6 +606,15 @@
4652 }
4653 }
4654
4655+ /** \brief Binds a value to the given external variable or the context item.
4656+ *
4657+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4658+ *
4659+ * @param varName - the name of the external variable to bind to, cannot be null
4660+ * @param value - the value to be bound, cannot be null
4661+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
4662+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4663+ */
4664 @Override
4665 public void bindDouble(QName varName, double value, XQItemType type) throws XQException {
4666 isClosedXQException();
4667@@ -378,6 +627,15 @@
4668 }
4669 }
4670
4671+ /** \brief Binds a value to the given external variable or the context item.
4672+ *
4673+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4674+ *
4675+ * @param varName - the name of the external variable to bind to, cannot be null
4676+ * @param value - the value to be bound, cannot be null
4677+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
4678+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4679+ */
4680 @Override
4681 public void bindFloat(QName varName, float value, XQItemType type) throws XQException {
4682 isClosedXQException();
4683@@ -390,6 +648,15 @@
4684 }
4685 }
4686
4687+ /** \brief Binds a value to the given external variable or the context item.
4688+ *
4689+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4690+ *
4691+ * @param varName - the name of the external variable to bind to, cannot be null
4692+ * @param value - the value to be bound, cannot be null
4693+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
4694+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4695+ */
4696 @Override
4697 public void bindInt(QName varName, int value, XQItemType type) throws XQException {
4698 isClosedXQException();
4699@@ -402,6 +669,15 @@
4700 }
4701 }
4702
4703+ /** \brief Binds a value to the given external variable or the context item.
4704+ *
4705+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4706+ *
4707+ * @param varName - the name of the external variable to bind to, cannot be null
4708+ * @param value - the value to be bound, cannot be null
4709+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
4710+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4711+ */
4712 @Override
4713 public void bindLong(QName varName, long value, XQItemType type) throws XQException {
4714 isClosedXQException();
4715@@ -414,6 +690,15 @@
4716 }
4717 }
4718
4719+ /** \brief Binds a value to the given external variable or the context item.
4720+ *
4721+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4722+ *
4723+ * @param varName - the name of the external variable to bind to, cannot be null
4724+ * @param value - the value to be bound, cannot be null
4725+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
4726+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4727+ */
4728 @Override
4729 public void bindNode(QName varName, Node value, XQItemType type) throws XQException {
4730 isClosedXQException();
4731@@ -427,6 +712,15 @@
4732 }
4733 }
4734
4735+ /** \brief Binds a value to the given external variable or the context item.
4736+ *
4737+ * The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
4738+ *
4739+ * @param varName - the name of the external variable to bind to, cannot be null
4740+ * @param value - the value to be bound, cannot be null
4741+ * @param type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
4742+ * @throw XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
4743+ */
4744 @Override
4745 public void bindShort(QName varName, short value, XQItemType type) throws XQException {
4746 isClosedXQException();
4747
4748=== modified file 'swig/xqj/XQItem.java'
4749--- swig/xqj/XQItem.java 2012-04-19 23:07:13 +0000
4750+++ swig/xqj/XQItem.java 2012-05-15 20:01:25 +0000
4751@@ -51,6 +51,47 @@
4752 import org.zorbaxquery.api.StringPair;
4753 import org.zorbaxquery.api.StringPairVector;
4754
4755+/**
4756+ * This class represents an item in the XDM.
4757+ * This class also implements the common interface XQItemAccessor for accessing the values of an XQuery item. All the get functions raise an exception if the underlying sequence object is not positioned on an item (e.g. if the sequence is positioned before the first item or after the last item).
4758+ *
4759+ * Example -
4760+ *
4761+ * \code{.java}
4762+ * XQPreparedExpression expr = conn.prepareExpression("for $i ..");
4763+ * XQSequence result = expr.executeQuery();
4764+ *
4765+ * // create the ItemTypes for string and integer
4766+ * XQItemType strType = conn.createAtomicType(XQItemType.XQBASETYPE_STRING);
4767+ * XQItemType intType = conn.createAtomicType(XQItemType.XQBASETYPE_INTEGER);
4768+ *
4769+ * // posititioned before the first item
4770+ * while (result.next())
4771+ * {
4772+ * // If string or any of its subtypes, then get the string value out
4773+ *
4774+ * if (result.instanceOf(strType))
4775+ * String str = result.getAtomicValue();
4776+ * else if (result.instanceOf(intType))
4777+ * // if it is exactly an int
4778+ * int intval = result.getInt();
4779+ * ...
4780+ *
4781+ * // Alternatively, you can get the exact type out.
4782+ * XQItemType type = result.getItemType();
4783+ *
4784+ * // Now perform the comparison..
4785+ * if (type.equals(intType))
4786+ * { ... };
4787+ *
4788+ * }
4789+ * \endcode
4790+ * See also:
4791+ * Table 6 - XQuery Atomic Types and Corresponding Java Object Types, XQuery API for Java (XQJ) 1.0, for mapping of XQuery atomic types to Java object types. For example, if the XQuery value returned is of type xs:unsignedByte, then calling the getObject() method will return a Java object of type java.lang.Short.
4792+ * Table 7 - XQuery Node Types and Corresponding Java Object Types XQuery API for Java (XQJ) 1.0, for the mapping of XQuery node types to the corresponding Java object types. For example, if the XQuery value returned is an element node, then calling the getObject() or getNode() method will return a Java object of type org.w3.dom.Element.
4793+ *
4794+
4795+ */
4796 class XQItem implements javax.xml.xquery.XQItem {
4797
4798 private Item item;
4799@@ -80,6 +121,12 @@
4800 this.itemType = item.getItemType();
4801 }
4802
4803+ /** \brief Close the item and release all the resources associated with this item.
4804+ *
4805+ * No method other than the isClosed or close method may be called once the item is closed. Calling close on an XQItem object that is already closed has no effect.
4806+ *
4807+ * @throw XQException - if there is an error during closing the item
4808+ */
4809 @Override
4810 public void close() throws XQException {
4811 if (!closed) {
4812@@ -89,11 +136,22 @@
4813 }
4814 }
4815
4816+ /** \brief Checks if the item is closed.
4817+ *
4818+ * @return boolean true if the item is in a closed state, false otherwise
4819+ */
4820 @Override
4821 public boolean isClosed() {
4822 return closed;
4823 }
4824
4825+ /** \brief Gets the current item as a boolean.
4826+ *
4827+ * The current item must be an atomic value of type xs:boolean or a subtype.
4828+ *
4829+ * @return a boolean representing the current item
4830+ * @throw XQException - if (1) the conversion of the current item to a boolean fails, (2) if there are errors accessing the current item, (3) if the underlying sequence or item is in a closed state, or (4) in the case of forward only sequences, a get or write method was already invoked on the current item
4831+ */
4832 @Override
4833 public boolean getBoolean() throws XQException {
4834 isClosedXQException();
4835@@ -109,6 +167,13 @@
4836 return result;
4837 }
4838
4839+ /** \brief Gets the current item as a byte.
4840+ *
4841+ * The current item must be an atomic value of type xs:decimal or a subtype, and its value must be in the value space of byte.
4842+ *
4843+ * @return a byte representing the current item
4844+ * @throw XQException - if (1) the conversion of the current item to a byte fails, (2) if there are errors accessing the current item, (3) if the underlying sequence or item is in a closed state, or (4) in the case of forward only sequences, a get or write method was already invoked on the current item
4845+ */
4846 @Override
4847 public byte getByte() throws XQException {
4848 isClosedXQException();
4849@@ -126,6 +191,13 @@
4850 return result;
4851 }
4852
4853+ /** \brief Gets the current item as a double.
4854+ *
4855+ * The current item must be an atomic value of type xs:double or a subtype.
4856+ *
4857+ * @return a double representing the current item
4858+ * @throw XQException - if (1) the conversion of the current item to a double fails, (2) if there are errors accessing the current item, (3) if the underlying sequence or item is in a closed state, or (4) in the case of forward only sequences, a get or write method was already invoked on the current item
4859+ */
4860 @Override
4861 public double getDouble() throws XQException {
4862 isClosedXQException();
4863@@ -143,6 +215,13 @@
4864 return result;
4865 }
4866
4867+ /** \brief Gets the current item as a float.
4868+ *
4869+ * The current item must be an atomic value of type xs:float or a subtype.
4870+ *
4871+ * @return a float representing the current item
4872+ * @throw XQException - if (1) the conversion of the current item to a float fails, (2) if there are errors accessing the current item, (3) if the underlying sequence or item is in a closed state, or (4) in the case of forward only sequences, a get or write method was already invoked on the current item
4873+ */
4874 @Override
4875 public float getFloat() throws XQException {
4876 isClosedXQException();
4877@@ -160,6 +239,13 @@
4878 return result;
4879 }
4880
4881+ /** \brief Gets the current item as an int.
4882+ *
4883+ * Gets the current item as an int. The current item must be an atomic value of type xs:decimal or a subtype, and its value must be in the value space of int.
4884+ *
4885+ * @return an int representing the current item
4886+ * @throw XQException - if (1) the conversion of the current item to a int fails, (2) if there are errors accessing the current item, (3) if the underlying sequence or item is in a closed state, or (4) in the case of forward only sequences, a get or write method was already invoked on the current item
4887+ */
4888 @Override
4889 public int getInt() throws XQException {
4890 isClosedXQException();
4891@@ -177,12 +263,26 @@
4892 return result;
4893 }
4894
4895+ /** \brief Gets the type of the item.
4896+ *
4897+ * On a forward only sequence this method can be called independent of any other get or write method. It will not raise an error if such method has been called already, nor will it affect subsequent invocations of any other get or write method.
4898+ *
4899+ * @return the type of the item
4900+ * @throw XQException - if (1) there are errors accessing the type of the item, or (2) the underlying sequence or item is in a closed state
4901+ */
4902 @Override
4903 public XQItemType getItemType() throws XQException {
4904 isClosedXQException();
4905 return itemType;
4906 }
4907
4908+ /** \brief Gets the current item as a Java String.
4909+ *
4910+ * The current item must be an atomic value. This function casts the current item to an xs:string value according to the casting rules defined in 17.1.2 Casting to xs:string and xs:untypedAtomic, XQuery 1.0 and XPath 2.0 Functions and Operators, and then returns the value as a Java String.
4911+ *
4912+ * @return the string representation of the item
4913+ * @throw XQException - if (1) there are errors accessing the item's value, (2) the item is not an atomic value, (3) there is an error when casting the item to a string representation, (4) the underlying sequence or item is in a closed state, or (5) in the case of forward only sequences, a get or write method was already invoked on the current item
4914+ */
4915 @Override
4916 public String getAtomicValue() throws XQException {
4917 isClosedXQException();
4918@@ -202,6 +302,13 @@
4919 return lItem.getStringValue();
4920 }
4921
4922+ /** \brief Gets the current item as a long.
4923+ *
4924+ * The current item must be an atomic value of type xs:decimal or a subtype, and its value must be in the value space of long.
4925+ *
4926+ * @return a long representing the current item
4927+ * @throw XQException - if (1) the conversion of the current item to a long fails, (2) if there are errors accessing the current item, (3) if the underlying sequence or item is in a closed state, or (4) in the case of forward only sequences, a get or write method was already invoked on the current item
4928+ */
4929 @Override
4930 public long getLong() throws XQException {
4931 isClosedXQException();
4932@@ -219,6 +326,13 @@
4933 return result;
4934 }
4935
4936+ /** \brief Gets the item as a DOM node.
4937+ *
4938+ * The current item must be a node. The type of the returned DOM node is governed by Table 7 - XQuery Node Types and Corresponding Java Object Types XQuery API for Java (XQJ) 1.0 The instance of the returned node is implementation dependent. The node may be a reference or a copy of the internal state of the item. It is advisable to make a copy of the node if the application plans to modify it.
4939+ *
4940+ * @return a DOM node representing the current item
4941+ * @throw XQException - if (1) if there are errors accessing the current item, (2) the current item is not a node, (3) if the underlying sequence or item is in a closed state, or (4) in the case of forward only sequences, a get or write method was already invoked on the current item
4942+ */
4943 @Override
4944 public Node getNode() throws XQException {
4945 isClosedXQException();
4946@@ -269,6 +383,14 @@
4947 return result;
4948 }
4949
4950+ /** \brief Returns the URI for this item.
4951+ *
4952+ * If the item is a document node, then this method returns the absolute URI of the resource from which the document node was constructed. If the document URI is not available, then the empty string is returned. If the document URI is available, the returned value is the same as if fn:document-uri were evaluated on this document node. If the item is of a node kind other than document node, then the returned URI is implementation-defined.
4953+ * On a forward only sequence this method can be called independent of any other get or write method. It will not raise an error if such method has been called already, nor will it affect subsequent invocations of any other get or write method on the current item.
4954+ *
4955+ * @return the document URI for this document node or the empty string if not available. For other node kinds, the result is implementation-defined
4956+ * @throw XQException - if (1) if there are errors accessing the current item, (2) the current item is not a node, (3) if the underlying sequence or item is in a closed state
4957+ */
4958 @Override
4959 public URI getNodeUri() throws XQException {
4960 isClosedXQException();
4961@@ -301,6 +423,13 @@
4962 return result;
4963 }
4964
4965+ /** \brief Gets the current item as an Object.
4966+ *
4967+ * The data type of the returned object will be the Java Object type as specified in 14.4 Mapping an XQuery Atomic Value to a Java Object Type and 14.5 Mapping an XQuery Node to a Java Object Type, XQuery API for Java (XQJ) 1.0.
4968+ *
4969+ * @return an object representing the current item
4970+ * @throw XQException - if (1) if there are errors accessing the current item, (2) if the underlying sequence or item is in a closed state, or (3) in the case of forward only sequences, a get or write method was already invoked on the current item
4971+ */
4972 @Override
4973 public Object getObject() throws XQException {
4974 isClosedXQException();
4975@@ -454,6 +583,13 @@
4976 return result;
4977 }
4978
4979+ /** \brief Read the current item as an XMLStreamReader object.
4980+ *
4981+ * Read the current item as an XMLStreamReader object, as described in Section 12.1 Serializing an XDM instance into a StAX event stream (XMLStreamReader), XQuery API for Java (XQJ) 1.0. Note that the serialization process might fail, in which case a XQException is thrown. While the stream is being read, the application MUST NOT do any other concurrent operations on the underlying item or sequence. The operation on the stream is undefined if the underlying sequence is repositioned or the state of the underlying item or sequence is changed by concurrent operations.
4982+ *
4983+ * @return an XML reader object as XMLStreamReader
4984+ * @throw XQException - if (1) there are errors accessing the current item or the underlying sequence, (2) the underlying sequence or item is in a closed state, (3) in the case of a forward only sequence, a get or write method has already been invoked on the current item, or (4) in case of an error during serialization of the current item into a StAX event stream as defined in Section 12.1 Serializing an XDM instance into a StAX event stream (XMLStreamReader), XQuery API for Java (XQJ) 1.0
4985+ */
4986 @Override
4987 public XMLStreamReader getItemAsStream() throws XQException {
4988 isClosedXQException();
4989@@ -467,6 +603,14 @@
4990 return result;
4991 }
4992
4993+ /** \brief Serializes the current item according to the XSLT 2.0 and XQuery 1.0 serialization.
4994+ *
4995+ * Serialization parameters, which influence how serialization is performed, can be specified. Refer to the XSLT 2.0 and XQuery 1.0 serialization and Section 12 Serialization, XQuery API for Java (XQJ) 1.0 for more information.
4996+ *
4997+ * @param prprts - specifies the serialization parameters, null is considered equivalent to an empty Properties object
4998+ * @return the serialized representation of the item
4999+ * @throw XQException - if (1) there are errors accessing the current item or the underlying sequence, (2) the underlying sequence or item is in a closed state, (3) in the case of a forward only sequence, a get or write method has already been invoked on the current item, or (4) if there are errors during serialization
5000+ */
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches