소스 검색

* added some new functions to zorba headers
* added an example

git-svn-id: trunk@13993 -

ivost 15 년 전
부모
커밋
4e35433504
4개의 변경된 파일427개의 추가작업 그리고 38개의 파일을 삭제
  1. 2 0
      .gitattributes
  2. 260 0
      packages/zorba/examples/simple/simple.lpi
  3. 120 0
      packages/zorba/examples/simple/simple.lpr
  4. 45 38
      packages/zorba/src/zorba.inc

+ 2 - 0
.gitattributes

@@ -5416,6 +5416,8 @@ packages/zlib/src/zlib.pp svneol=native#text/plain
 packages/zorba/Makefile svneol=native#text/plain
 packages/zorba/Makefile.fpc svneol=native#text/plain
 packages/zorba/Package.fpc svneol=native#text/plain
+packages/zorba/examples/simple/simple.lpi svneol=native#text/plain
+packages/zorba/examples/simple/simple.lpr svneol=native#text/plain
 packages/zorba/fpmake.pp svneol=native#text/plain
 packages/zorba/src/zorba.inc svneol=native#text/plain
 packages/zorba/src/zorba.pas svneol=native#text/plain

+ 260 - 0
packages/zorba/examples/simple/simple.lpi

@@ -0,0 +1,260 @@
+<?xml version="1.0"?>
+<CONFIG>
+  <ProjectOptions>
+    <Version Value="7"/>
+    <General>
+      <Flags>
+        <MainUnitHasCreateFormStatements Value="False"/>
+        <MainUnitHasTitleStatement Value="False"/>
+      </Flags>
+      <MainUnit Value="0"/>
+      <TargetFileExt Value=""/>
+      <Icon Value="0"/>
+      <UseXPManifest Value="True"/>
+      <ActiveEditorIndexAtStart Value="0"/>
+    </General>
+    <VersionInfo>
+      <ProjectVersion Value=""/>
+      <Language Value=""/>
+      <CharSet Value=""/>
+    </VersionInfo>
+    <PublishOptions>
+      <Version Value="2"/>
+      <IgnoreBinaries Value="False"/>
+      <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
+      <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
+    </PublishOptions>
+    <RunParams>
+      <local>
+        <FormatVersion Value="1"/>
+        <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+      </local>
+    </RunParams>
+    <Units Count="9">
+      <Unit0>
+        <Filename Value="simple.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <UnitName Value="simple"/>
+        <CursorPos X="4" Y="69"/>
+        <TopLine Value="60"/>
+        <EditorIndex Value="0"/>
+        <UsageCount Value="20"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="../../src/zorba.pas"/>
+        <UnitName Value="zorba"/>
+        <CursorPos X="7" Y="3"/>
+        <TopLine Value="1"/>
+        <EditorIndex Value="4"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="../../src/zorba.inc"/>
+        <CursorPos X="5" Y="937"/>
+        <TopLine Value="915"/>
+        <EditorIndex Value="5"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
+      </Unit2>
+      <Unit3>
+        <Filename Value="../../../../../zorba/zorba/include/simplestore/simplestorec.h"/>
+        <CursorPos X="1" Y="25"/>
+        <TopLine Value="1"/>
+        <UsageCount Value="10"/>
+        <SyntaxHighlighter Value="C++"/>
+      </Unit3>
+      <Unit4>
+        <Filename Value="../../src/zorba_error.inc"/>
+        <CursorPos X="5" Y="28"/>
+        <TopLine Value="6"/>
+        <EditorIndex Value="3"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
+      </Unit4>
+      <Unit5>
+        <Filename Value="../../../../../zorba/zorba/include/zorba/zorbac.h"/>
+        <CursorPos X="17" Y="262"/>
+        <TopLine Value="312"/>
+        <EditorIndex Value="7"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
+        <SyntaxHighlighter Value="C++"/>
+      </Unit5>
+      <Unit6>
+        <Filename Value="../../src/zorba_options.inc"/>
+        <CursorPos X="3" Y="104"/>
+        <TopLine Value="82"/>
+        <EditorIndex Value="6"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
+      </Unit6>
+      <Unit7>
+        <Filename Value="../../../../rtl/inc/strings.pp"/>
+        <UnitName Value="strings"/>
+        <CursorPos X="1" Y="1"/>
+        <TopLine Value="1"/>
+        <EditorIndex Value="2"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
+      </Unit7>
+      <Unit8>
+        <Filename Value="../../../../rtl/inc/systemh.inc"/>
+        <CursorPos X="11" Y="513"/>
+        <TopLine Value="491"/>
+        <EditorIndex Value="1"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
+      </Unit8>
+    </Units>
+    <JumpHistory Count="30" HistoryIndex="29">
+      <Position1>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="13" Column="53" TopLine="1"/>
+      </Position1>
+      <Position2>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="81" Column="39" TopLine="59"/>
+      </Position2>
+      <Position3>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="322" Column="45" TopLine="300"/>
+      </Position3>
+      <Position4>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="327" Column="39" TopLine="300"/>
+      </Position4>
+      <Position5>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="333" Column="111" TopLine="300"/>
+      </Position5>
+      <Position6>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1953" Column="26" TopLine="1931"/>
+      </Position6>
+      <Position7>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1956" Column="19" TopLine="1931"/>
+      </Position7>
+      <Position8>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1961" Column="42" TopLine="1931"/>
+      </Position8>
+      <Position9>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1965" Column="46" TopLine="1931"/>
+      </Position9>
+      <Position10>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1969" Column="73" TopLine="1931"/>
+      </Position10>
+      <Position11>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1972" Column="42" TopLine="1943"/>
+      </Position11>
+      <Position12>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="6" Column="1" TopLine="1"/>
+      </Position12>
+      <Position13>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="81" Column="39" TopLine="59"/>
+      </Position13>
+      <Position14>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="322" Column="45" TopLine="300"/>
+      </Position14>
+      <Position15>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="327" Column="39" TopLine="300"/>
+      </Position15>
+      <Position16>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="333" Column="111" TopLine="300"/>
+      </Position16>
+      <Position17>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1953" Column="26" TopLine="1931"/>
+      </Position17>
+      <Position18>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1956" Column="19" TopLine="1931"/>
+      </Position18>
+      <Position19>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1961" Column="42" TopLine="1931"/>
+      </Position19>
+      <Position20>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1965" Column="46" TopLine="1931"/>
+      </Position20>
+      <Position21>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1969" Column="73" TopLine="1931"/>
+      </Position21>
+      <Position22>
+        <Filename Value="../../src/zorba.inc"/>
+        <Caret Line="1972" Column="42" TopLine="1931"/>
+      </Position22>
+      <Position23>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="16" Column="23" TopLine="2"/>
+      </Position23>
+      <Position24>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="22" Column="11" TopLine="1"/>
+      </Position24>
+      <Position25>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="21" Column="20" TopLine="1"/>
+      </Position25>
+      <Position26>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="20" Column="4" TopLine="1"/>
+      </Position26>
+      <Position27>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="79" Column="30" TopLine="52"/>
+      </Position27>
+      <Position28>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="92" Column="5" TopLine="59"/>
+      </Position28>
+      <Position29>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="83" Column="18" TopLine="59"/>
+      </Position29>
+      <Position30>
+        <Filename Value="simple.lpr"/>
+        <Caret Line="62" Column="1" TopLine="25"/>
+      </Position30>
+    </JumpHistory>
+  </ProjectOptions>
+  <CompilerOptions>
+    <Version Value="8"/>
+    <Target>
+      <Filename Value="simple"/>
+    </Target>
+    <SearchPaths>
+      <IncludeFiles Value="$(ProjOutDir)/"/>
+      <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
+    </SearchPaths>
+    <Other>
+      <CompilerPath Value="$(CompPath)"/>
+    </Other>
+  </CompilerOptions>
+  <Debugging>
+    <Exceptions Count="3">
+      <Item1>
+        <Name Value="EAbort"/>
+      </Item1>
+      <Item2>
+        <Name Value="ECodetoolError"/>
+      </Item2>
+      <Item3>
+        <Name Value="EFOpenError"/>
+      </Item3>
+    </Exceptions>
+  </Debugging>
+</CONFIG>

+ 120 - 0
packages/zorba/examples/simple/simple.lpr

@@ -0,0 +1,120 @@
+program simple;
+
+{$mode objfpc}{$H+}
+
+uses
+  {$IFDEF UNIX}{$IFDEF UseCThreads}
+  cthreads,
+  {$ENDIF}{$ENDIF}
+  Classes,
+  zorba,
+  ctypes;
+
+{$IFDEF WINDOWS}{$R simple.rc}{$ENDIF}
+
+procedure stream_write(stream: XQC_OutputStream; const buf: pchar; length: cuint); cdecl;
+var
+  S: String;
+begin
+  SetLength(S, length);
+  Move(buf^, S[1], length);
+  WriteLn(S);
+end;
+
+procedure stream_free(stream: XQC_OutputStream); cdecl;
+begin
+end;
+
+const
+  streamdef: XQC_OutputStream_s = (
+    write:@stream_write;
+    free:@stream_free;
+    data:nil
+  );
+
+var
+  stream: XQC_OutputStream = @streamdef;
+
+
+
+
+(**
+ * A simple C API example
+ * Compile a query and print the result.  No error checking is done.
+ *)
+function example_1(impl: XQC_Implementation): boolean;
+var
+  lXQuery: XQC_Query;
+begin
+  // compile the query
+  impl^.prepare(impl, '(1+2, 3, 4)', nil, nil, lXQuery);
+
+  // execute it and print the result on standard out
+  lXQuery^.serialize_stream(lXQuery, nil, stream);
+
+  // release the query
+  lXQuery^.free(lXQuery);
+
+  Result := True;
+end;
+
+
+
+(**
+ * A simple C API example
+ * Compile a query, iterate over the item sequence, and print the string value for each item.
+ * No error checking is done.
+ *)
+function example_2(impl: XQC_Implementation): boolean;
+var
+  lXQuery      : XQC_Query;
+  lItem        : XQC_Item;
+  lResult      : XQC_Sequence;
+  lStringValue : pchar;
+begin
+  impl^.create_item(impl, lItem);
+
+  // compile the query and get the result as a sequence
+  impl^.prepare(impl, 'for $i in 1 to 10 return $i', nil, nil, lXQuery);
+
+  lXQuery^.sequence(lXQuery, lResult);
+
+  while lResult^.next(lResult, lItem) = XQ_NO_ERROR do
+  begin
+    lItem^.string_value(lItem, &lStringValue);
+    write(lStringValue, ' ');
+  end;
+  writeln;
+
+  // release all aquired resources
+  lItem^.free(lItem);
+  lResult^.free(lResult);
+  lXQuery^.free(lXQuery);
+
+  Result := True;
+end;
+
+
+
+var
+  impl: XQC_Implementation;
+  store: Pointer;
+begin
+  store := create_simple_store();
+  if zorba_implementation(impl, store) <> XQ_NO_ERROR then
+    Exit;
+
+  writeln('executing PASCAL example 1');
+  if not example_1(impl) then
+    Exit;
+  writeln;
+
+  writeln('executing PASCAL example 2');
+  if not example_2(impl) then
+    Exit;
+  writeln;
+
+  impl^.free(impl);
+  shutdown_simple_store(store);
+end.
+

+ 45 - 38
packages/zorba/src/zorba.inc

@@ -134,7 +134,7 @@ type
     * \retval ::XQP0019_INTERNAL_ERROR
     * \retval An XQuery static or type error (e.g. XPST*, XPTY* )
     *)
-    prepare: function(impl: XQC_Implementation; query_string: pcchar; context: XQC_StaticContext;
+    prepare: function(impl: XQC_Implementation; query_string: pchar; context: XQC_StaticContext;
       handler: XQC_ErrorHandler; out query: XQC_Query): XQUERY_ERROR; extdecl;
 
     (**
@@ -436,7 +436,7 @@ type
     * \retval ::XQC_NO_ERROR
     * \retval ::XQC_INTERNAL_ERROR
     *)
-    declare_ns: function(context: XQC_StaticContext; const prefix: pcchar; const uri: ppchar): XQUERY_ERROR; extdecl;
+    declare_ns: function(context: XQC_StaticContext; const prefix: pchar; const uri: ppchar): XQUERY_ERROR; extdecl;
 
 
    (**
@@ -449,7 +449,7 @@ type
     * \retval ::XQC_NO_ERROR
     * \retval ::XQC_INTERNAL_ERROR
     *)
-    get_ns_by_prefix: function(context: XQC_StaticContext; const prefix: pcchar; out result_ns: ppchar): XQUERY_ERROR; extdecl;
+    get_ns_by_prefix: function(context: XQC_StaticContext; const prefix: pchar; out result_ns: ppchar): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -461,7 +461,7 @@ type
   	 * \retval ::XQC_NO_ERROR
   	 * \retval ::XQC_INTERNAL_ERROR
      *)
-    set_default_element_and_type_ns: function(context: XQC_StaticContext; const uri: pcchar): XQUERY_ERROR; extdecl;
+    set_default_element_and_type_ns: function(context: XQC_StaticContext; const uri: pchar): XQUERY_ERROR; extdecl;
 
 
    (**
@@ -473,7 +473,7 @@ type
     * \retval ::XQC_NO_ERROR
     * \retval ::XQC_INTERNAL_ERROR
     *)
-    get_default_element_and_type_ns: function(context: XQC_StaticContext; out uri: pcchar): XQUERY_ERROR; extdecl;
+    get_default_element_and_type_ns: function(context: XQC_StaticContext; out uri: pchar): XQUERY_ERROR; extdecl;
 
 
    (**
@@ -485,7 +485,7 @@ type
     * \retval ::XQC_NO_ERROR
     * \retval ::XQC_INTERNAL_ERROR
     *)
-    set_default_function_ns: function(context: XQC_StaticContext; const uri: pcchar): XQUERY_ERROR; extdecl;
+    set_default_function_ns: function(context: XQC_StaticContext; const uri: pchar): XQUERY_ERROR; extdecl;
 
 
    (**
@@ -497,7 +497,7 @@ type
     * \retval ::XQC_NO_ERROR
     * \retval ::XQC_INTERNAL_ERROR
     *)
-    get_default_function_ns: function(context: XQC_StaticContext; out uri: pcchar): XQUERY_ERROR; extdecl;
+    get_default_function_ns: function(context: XQC_StaticContext; out uri: pchar): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -522,7 +522,7 @@ type
      * \retval ::XQST0038
      * \retval ::XQC_INTERNAL_ERROR
      *)
-    add_collation: function(context: XQC_StaticContext; const uri: pcchar): XQUERY_ERROR; extdecl;
+    add_collation: function(context: XQC_StaticContext; const uri: pchar): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -536,7 +536,7 @@ type
      * \retval ::XQST0038
      * \retval ::XQC_INTERNAL_ERROR
      *)
-    set_default_collation: function(context: XQC_StaticContext; const uri: pcchar): XQUERY_ERROR; extdecl;
+    set_default_collation: function(context: XQC_StaticContext; const uri: pchar): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -546,7 +546,7 @@ type
      * \param context The XQC_StaticContext that this function pointer is a member of
      * \param[out] uri The URI of the default collation that is currently set in the given context.
      *)
-    get_default_collation: function(context: XQC_StaticContext; out uri: pcchar): XQUERY_ERROR; extdecl;
+    get_default_collation: function(context: XQC_StaticContext; out uri: pchar): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -731,7 +731,7 @@ type
     * \retval ::XQC_NO_ERROR
     * \retval ::XQC_INTERNAL_ERROR
     *)
-    set_base_uri: function(context: XQC_StaticContext; const base_uri: pcchar): XQUERY_ERROR; extdecl;
+    set_base_uri: function(context: XQC_StaticContext; const base_uri: pchar): XQUERY_ERROR; extdecl;
 
 
    (**
@@ -745,7 +745,7 @@ type
     * \retval ::XQC_NO_ERROR
     * \retval ::XQC_INTERNAL_ERROR
     *)
-    get_base_uri: function(context: XQC_StaticContext; out base_uri: pcchar): XQUERY_ERROR; extdecl;
+    get_base_uri: function(context: XQC_StaticContext; out base_uri: pchar): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -768,7 +768,7 @@ type
      * \retval ::API0019_FUNCTION_ALREADY_REGISTERED,
      * \retval ::XQC_INTERNAL_ERROR
      *)
-    register_external_function: function(context: XQC_StaticContext; const uri, localname: pcchar; init: external_function_init;
+    register_external_function: function(context: XQC_StaticContext; const uri, localname: pchar; init: external_function_init;
       next: external_function_next; release: external_function_release; global_user_data: pointer): XQUERY_ERROR; extdecl;
 
 
@@ -820,7 +820,7 @@ type
      * \retval ::XQP0017_LOADER_PARSING_ERROR,
      * \retval ::XQC_INTERNAL_ERROR
      *)
-    set_context_document: function(context: XQC_DynamicContext; const doc_uri: pcchar; document: pfile): XQUERY_ERROR; extdecl;
+    set_context_document: function(context: XQC_DynamicContext; const doc_uri: pchar; document: pfile): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -833,7 +833,7 @@ type
      * \retval ::XQC_NO_ERROR
      * \retval ::XQC_INTERNAL_ERROR
      *)
-    set_variable_item: function(context: XQC_DynamicContext; const qname: pcchar; value: XQC_Item): XQUERY_ERROR; extdecl;
+    set_variable_item: function(context: XQC_DynamicContext; const qname: pchar; value: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -846,7 +846,7 @@ type
      * \retval ::XQC_NO_ERROR
      * \retval ::XQC_INTERNAL_ERROR
      *)
-    set_variable_sequence: function(context: XQC_DynamicContext; const qname: pcchar; value: XQC_Sequence): XQUERY_ERROR; extdecl;
+    set_variable_sequence: function(context: XQC_DynamicContext; const qname: pchar; value: XQC_Sequence): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -862,7 +862,7 @@ type
      * \retval ::XQP0017_LOADER_PARSING_ERROR,
      * \retval ::XQC_INTERNAL_ERROR
      *)
-    set_variable_document: function(context: XQC_DynamicContext; const var_qname, doc_uri: pcchar; document: pfile): XQUERY_ERROR; extdecl;
+    set_variable_document: function(context: XQC_DynamicContext; const var_qname, doc_uri: pchar; document: pfile): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -934,7 +934,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0024_FUNCTION_NOT_IMPLEMENTED_FOR_ITEMTYPE
      *)
-    string_value: function(item: XQC_Item; out string_value: pcchar): XQUERY_ERROR; extdecl;
+    string_value: function(item: XQC_Item; out string_value: pchar): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -949,7 +949,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0024_FUNCTION_NOT_IMPLEMENTED_FOR_ITEMTYPE
      *)
-    prefix: function(item: XQC_Item; out prefix: pcchar): XQUERY_ERROR; extdecl;
+    prefix: function(item: XQC_Item; out prefix: pchar): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -964,7 +964,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0024_FUNCTION_NOT_IMPLEMENTED_FOR_ITEMTYPE
      *)
-    ns: function(item: XQC_Item; out ns: pcchar): XQUERY_ERROR; extdecl;
+    ns: function(item: XQC_Item; out ns: pchar): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -979,7 +979,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0024_FUNCTION_NOT_IMPLEMENTED_FOR_ITEMTYPE
      *)
-    localname: function(item: XQC_Item; out local_name: pcchar): XQUERY_ERROR; extdecl;
+    localname: function(item: XQC_Item; out local_name: pchar): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1062,7 +1062,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_string: function(factory: XQC_ItemFactory; const str: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_string: function(factory: XQC_ItemFactory; const str: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1077,7 +1077,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_anyuri: function(factory: XQC_ItemFactory; const str: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_anyuri: function(factory: XQC_ItemFactory; const str: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1093,7 +1093,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_qname2: function(factory: XQC_ItemFactory; const uri, localname: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_qname2: function(factory: XQC_ItemFactory; const uri, localname: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1110,7 +1110,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_qname3: function(factory: XQC_ItemFactory; const uri, prefix, localname: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_qname3: function(factory: XQC_ItemFactory; const uri, prefix, localname: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1140,7 +1140,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_ncname: function(factory: XQC_ItemFactory; const ncname: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_ncname: function(factory: XQC_ItemFactory; const ncname: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1156,7 +1156,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_base64binary: function(factory: XQC_ItemFactory; const binary_data: pcchar; length: csize_t; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_base64binary: function(factory: XQC_ItemFactory; const binary_data: pchar; length: csize_t; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1186,7 +1186,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_decimal_char: function(factory: XQC_ItemFactory; const value: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_decimal_char: function(factory: XQC_ItemFactory; const value: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1216,7 +1216,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_integer_char: function(factory: XQC_ItemFactory; const integer_value: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_integer_char: function(factory: XQC_ItemFactory; const integer_value: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1291,7 +1291,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_date_char: function(factory: XQC_ItemFactory; const date_value: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_date_char: function(factory: XQC_ItemFactory; const date_value: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1346,7 +1346,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_datetime_char: function(factory: XQC_ItemFactory; const datetime_value: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_datetime_char: function(factory: XQC_ItemFactory; const datetime_value: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1375,7 +1375,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_double_char: function(factory: XQC_ItemFactory; const value: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_double_char: function(factory: XQC_ItemFactory; const value: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1411,7 +1411,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_float: function(factory: XQC_ItemFactory; const value: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_float: function(factory: XQC_ItemFactory; const value: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1504,7 +1504,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_hexbinary: function(factory: XQC_ItemFactory; const hex_data: pcchar; size: csize_t; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_hexbinary: function(factory: XQC_ItemFactory; const hex_data: pchar; size: csize_t; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -1579,7 +1579,7 @@ type
      * \retval ::XQP0019_INTERNAL_ERROR
      * \retval ::XQP0025_COULD_NOT_CREATE_ITEM
      *)
-    create_time_char: function(factory: XQC_ItemFactory; const value: pcchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
+    create_time_char: function(factory: XQC_ItemFactory; const value: pchar; out item: XQC_Item): XQUERY_ERROR; extdecl;
 
 
     (**
@@ -2046,7 +2046,7 @@ type
      * \param components The column number in the line in the query where the error occured.
      *)
     error: procedure(handler: XQC_ErrorHandler; error: XQUERY_ERROR; const local_name, description,
-      query_uri: pcchar; line, column: cuint); extdecl;
+      query_uri: pchar; line, column: cuint); extdecl;
 
 
     (**
@@ -2069,7 +2069,12 @@ type
  * \retval ::XQC_NO_ERROR
  * \retval ::XQP0019_INTERNAL_ERROR
  *)
-{$IFDEF S}function{$ELSE}var{$ENDIF}zorba_implementation{$IFDEF D}: function{$ENDIF}(impl: XQC_Implementation_Ref; store: Pointer): XQUERY_ERROR; extdecl;{$IFDEF S}external zorbalib;{$ENDIF}
+{$IFDEF S}function{$ELSE}var{$ENDIF}zorba_implementation{$IFDEF D}: function{$ENDIF}(out impl: XQC_Implementation; store: Pointer): XQUERY_ERROR; extdecl;{$IFDEF S}external zorbalib;{$ENDIF}
+
+
+(* simplestorec.h *)
+{$IFDEF S}function{$ELSE}var{$ENDIF}create_simple_store{$IFDEF D}: function{$ENDIF}: Pointer; extdecl;{$IFDEF S}external zorbalib;{$ENDIF}
+{$IFDEF S}procedure{$ELSE}var{$ENDIF}shutdown_simple_store{$IFDEF D}: procedure{$ENDIF}(store: Pointer); extdecl;{$IFDEF S}external zorbalib;{$ENDIF}
 
 
 
@@ -2086,7 +2091,9 @@ implementation
 
 {$IFDEF LOAD_DYNAMICALLY}
 const
-  zorba_symbols: array[0..4] of TLibSymbol = (
+  zorba_symbols: array[0..6] of TLibSymbol = (
+    (pvar:@create_simple_store; name:'create_simple_store'; weak:false),
+    (pvar:@shutdown_simple_store; name:'shutdown_simple_store'; weak:false),
     (pvar:@zorba_implementation; name:'zorba_implementation'; weak:false),
     (pvar:@Zorba_CompilerHints_default; name:'Zorba_CompilerHints_default'; weak:false),
     (pvar:@Zorba_SerializerOptions_default; name:'Zorba_SerializerOptions_default'; weak:false),