Matthias Brantner has proposed merging 
lp:~zorba-coders/zorba/feature-uri_module into lp:zorba.

Requested reviews:
  Chris Hillery (ceejatec)
  Matthias Brantner (matthias-brantner)

For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/feature-uri_module/+merge/96005

A new module that provides URL-related functions. Currently, it provides 
functions to do URL-decoding but other URL-related functions (e.g. to retrieve 
the scheme or path) will be added later.
-- 
https://code.launchpad.net/~zorba-coders/zorba/feature-uri_module/+merge/96005
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'ChangeLog'
--- ChangeLog	2012-03-01 21:22:16 +0000
+++ ChangeLog	2012-03-05 21:32:53 +0000
@@ -13,6 +13,7 @@
   * Fixed bug 917923 (bug in copying outer var values into the eval dynamic context)
   * Fixed bug 867509 (Can not handle largest xs:unsignedLong values)
   * Fixed bug 924063 (sentence is incorrectly incremented when token characters end without sentence terminator)
+  * New URI module providing percent-decoding functions.
   * Optimization: change the implementation of the free-vars annotation and got rid
     of the annotations map in expressions.
   * Fixed bug 909126 (bug in cloning of var_expr)

=== modified file 'modules/com/zorba-xquery/www/modules/CMakeLists.txt'
--- modules/com/zorba-xquery/www/modules/CMakeLists.txt	2012-02-16 14:11:02 +0000
+++ modules/com/zorba-xquery/www/modules/CMakeLists.txt	2012-03-05 21:32:53 +0000
@@ -63,6 +63,8 @@
   URI "http://www.zorba-xquery.com/modules/schema";)
 DECLARE_ZORBA_MODULE(FILE string.xq VERSION 2.1
   URI "http://www.zorba-xquery.com/modules/string";)
+DECLARE_ZORBA_MODULE(FILE uri.xq VERSION 1.0
+  URI "http://www.zorba-xquery.com/modules/uri";)
 DECLARE_ZORBA_MODULE(FILE xml.xq VERSION 2.0
   URI "http://www.zorba-xquery.com/modules/xml";)
 DECLARE_ZORBA_MODULE(FILE xqdoc.xq VERSION 2.0

=== added file 'modules/com/zorba-xquery/www/modules/uri.xq'
--- modules/com/zorba-xquery/www/modules/uri.xq	1970-01-01 00:00:00 +0000
+++ modules/com/zorba-xquery/www/modules/uri.xq	2012-03-05 21:32:53 +0000
@@ -0,0 +1,108 @@
+xquery version "1.0";
+
+(:
+ : Copyright 2006-2012 The FLWOR Foundation.
+ :
+ : Licensed under the Apache License, Version 2.0 (the "License");
+ : you may not use this file except in compliance with the License.
+ : You may obtain a copy of the License at
+ :
+ : http://www.apache.org/licenses/LICENSE-2.0
+ :
+ : Unless required by applicable law or agreed to in writing, software
+ : distributed under the License is distributed on an "AS IS" BASIS,
+ : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ : See the License for the specific language governing permissions and
+ : limitations under the License.
+:)
+
+(:~
+ : This module provides string related functions.
+ :
+ : @author Matthias Brantner
+ : @project XDM/atomic
+ :
+ :)
+module namespace uri = "http://www.zorba-xquery.com/modules/uri";;
+
+declare namespace zerr = "http://www.zorba-xquery.com/errors";;
+
+declare namespace ver = "http://www.zorba-xquery.com/options/versioning";;
+declare option ver:module-version "1.0";
+
+(:~
+ : Percent-decodes (aka URL decoding) the given string.
+ :
+ : All percent encoded octets will be translated into their
+ : decoded UTF-8 representation.
+ :
+ : Please note that the percent encoding guarantees that a string
+ : consists of ASCII characters only. Passing a string that contains
+ : non-ASCII characeters results in undefined behavior.
+ :
+ : @param $s the string to decode
+ :
+ : @return the percent decoded string
+ :)
+declare function uri:decode($u as xs:string) as xs:string
+{
+  uri:decode($u, fn:false())
+};
+
+(:~
+ : Percent-decodes (aka URL decoding) the given string.
+ :
+ : All percent encoded octets will be translated into their
+ : decoded UTF-8 representation.
+ :
+ : If $decode-plus is specified all occurrences of the char '+'
+ : will be replaced with a space ' ' before the percent decoding
+ : happens.
+ :
+ : Please note that the percent encoding guarantees that a string
+ : consists of ASCII characters only. Passing a string that contains
+ : non-ASCII characeters results in undefined behavior.
+ :
+ : @param $s the string to decode
+ : @param $decode-plus whether '+' chars will be replaced with spaces
+ :
+ : @return the percent decoded string
+ :)
+declare function uri:decode(
+  $u as xs:string,
+  $decode-plus as xs:boolean) as xs:string
+{
+  uri:decode($u, $decode-plus, "UTF-8")
+};
+
+(:~
+ : Percent-decodes (aka URL decoding) the given string.
+ :
+ : All percent encoded octets will be translated into their
+ : decoded UTF-8 representation.
+ :
+ : If $decode-plus is specified all occurrences of the char '+'
+ : will be replaced with a space ' ' before the percent decoding
+ : happens.
+ :
+ : The $charset parameter specifies the source charset after precent
+ : decoding. It is used to convert the decoded string into UTF-8.
+ :
+ : Please note that the percent encoding guarantees that a string
+ : consists of ASCII characters only. Passing a string that contains
+ : non-ASCII characeters results in undefined behavior.
+ :
+ : @param $s the string to decode
+ : @param $decode-plus whether '+' chars will be replaced with spaces
+ : @param $charset the source charset of the string after percent decoding
+ :
+ : @return the percent decoded string
+ :
+ : @error zerr:ZXQP0006 if the given charset is unknown or not supported
+ :
+ : @error zerr:ZOSE0006 if there is an error transcoding the string
+ :)
+declare function uri:decode(
+  $s as xs:string,
+  $decode-plus as xs:boolean,
+  $charset as xs:string) as xs:string external;

=== modified file 'src/context/static_context.cpp'
--- src/context/static_context.cpp	2012-02-16 14:11:02 +0000
+++ src/context/static_context.cpp	2012-03-05 21:32:53 +0000
@@ -366,6 +366,10 @@
 "http://www.zorba-xquery.com/modules/string";;
 
 const char*
+static_context::ZORBA_URI_FN_NS = 
+"http://www.zorba-xquery.com/modules/uri";;
+
+const char*
 static_context::ZORBA_FETCH_FN_NS = 
 "http://www.zorba-xquery.com/modules/fetch";;
 
@@ -441,6 +445,7 @@
             ns == ZORBA_REFLECTION_FN_NS ||
             ns == ZORBA_SCRIPTING_FN_NS ||
             ns == ZORBA_STRING_FN_NS ||
+            ns == ZORBA_URI_FN_NS ||
             ns == ZORBA_JSON_FN_NS ||
             ns == ZORBA_FETCH_FN_NS ||
             ns == ZORBA_NODE_FN_NS ||
@@ -488,6 +493,7 @@
   {
     return (ns == ZORBA_MATH_FN_NS ||
             ns == ZORBA_INTROSP_SCTX_FN_NS ||
+            ns == ZORBA_STRING_FN_NS ||
             ns == ZORBA_JSON_FN_NS ||
             ns == ZORBA_RANDOM_FN_NS);
   }

=== modified file 'src/context/static_context.h'
--- src/context/static_context.h	2012-02-16 14:11:02 +0000
+++ src/context/static_context.h	2012-03-05 21:32:53 +0000
@@ -465,6 +465,7 @@
   static const char* ZORBA_INTROSP_SCTX_FN_NS;
   static const char* ZORBA_REFLECTION_FN_NS;
   static const char* ZORBA_STRING_FN_NS;
+  static const char* ZORBA_URI_FN_NS;
   static const char* ZORBA_FETCH_FN_NS;
   static const char* ZORBA_NODE_FN_NS;
   static const char* ZORBA_XML_FN_NS;

=== modified file 'src/functions/library.cpp'
--- src/functions/library.cpp	2012-02-16 14:11:02 +0000
+++ src/functions/library.cpp	2012-03-05 21:32:53 +0000
@@ -57,6 +57,7 @@
 #include "functions/func_sequences.h"
 #include "functions/func_sequences_impl.h"
 #include "functions/func_strings.h"
+#include "functions/func_uris.h"
 #include "functions/func_json.h"
 #include "functions/func_var_decl.h"
 #include "functions/func_xqdoc.h"
@@ -121,6 +122,7 @@
   populate_context_schema(sctx);
   populate_context_sctx(sctx);
   populate_context_strings(sctx);
+  populate_context_uris(sctx);
   populate_context_sequences(sctx);
   populate_context_sequences_impl(sctx);
   populate_context_xqdoc(sctx);

=== added file 'src/functions/pregenerated/func_uris.cpp'
--- src/functions/pregenerated/func_uris.cpp	1970-01-01 00:00:00 +0000
+++ src/functions/pregenerated/func_uris.cpp	2012-03-05 21:32:53 +0000
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2006-2008 The FLWOR Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+// ******************************************
+// *                                        *
+// * THIS IS A GENERATED FILE. DO NOT EDIT! *
+// * SEE .xml FILE WITH SAME NAME           *
+// *                                        *
+// ******************************************
+
+
+#include "stdafx.h"
+#include "runtime/uris/uris.h"
+#include "functions/func_uris.h"
+
+
+namespace zorba{
+
+
+
+PlanIter_t fn_zorba_uri_decode::codegen(
+  CompilerCB*,
+  static_context* sctx,
+  const QueryLoc& loc,
+  std::vector<PlanIter_t>& argv,
+  expr& ann) const
+{
+  return new DecodeURIIterator(sctx, loc, argv);
+}
+
+void populate_context_uris(static_context* sctx)
+{
+  {
+    
+
+    DECL_WITH_KIND(sctx, fn_zorba_uri_decode,
+        (createQName("http://www.zorba-xquery.com/modules/uri","","decode";), 
+        GENV_TYPESYSTEM.STRING_TYPE_ONE, 
+        GENV_TYPESYSTEM.BOOLEAN_TYPE_ONE, 
+        GENV_TYPESYSTEM.STRING_TYPE_ONE, 
+        GENV_TYPESYSTEM.STRING_TYPE_ONE),
+        FunctionConsts::FN_ZORBA_URI_DECODE_3);
+
+  }
+
+}
+
+
+}
+
+
+

=== added file 'src/functions/pregenerated/func_uris.h'
--- src/functions/pregenerated/func_uris.h	1970-01-01 00:00:00 +0000
+++ src/functions/pregenerated/func_uris.h	2012-03-05 21:32:53 +0000
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2006-2008 The FLWOR Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+// ******************************************
+// *                                        *
+// * THIS IS A GENERATED FILE. DO NOT EDIT! *
+// * SEE .xml FILE WITH SAME NAME           *
+// *                                        *
+// ******************************************
+
+
+#ifndef ZORBA_FUNCTIONS_URIS_H
+#define ZORBA_FUNCTIONS_URIS_H
+
+
+#include "common/shared_types.h"
+#include "functions/function_impl.h"
+
+
+namespace zorba {
+
+
+void populate_context_uris(static_context* sctx);
+
+
+
+
+//fn-zorba-uri:decode
+class fn_zorba_uri_decode : public function
+{
+public:
+  fn_zorba_uri_decode(const signature& sig, FunctionConsts::FunctionKind kind)
+    : 
+    function(sig, kind)
+  {
+
+  }
+
+  CODEGEN_DECL();
+};
+
+
+} //namespace zorba
+
+
+#endif
+/*
+ * Local variables:
+ * mode: c++
+ * End:
+ */ 

=== modified file 'src/functions/pregenerated/function_enum.h'
--- src/functions/pregenerated/function_enum.h	2012-02-16 14:11:02 +0000
+++ src/functions/pregenerated/function_enum.h	2012-03-05 21:32:53 +0000
@@ -374,6 +374,7 @@
   FN_ZORBA_STRING_MATERIALIZE_1,
   FN_ZORBA_STRING_IS_STREAMABLE_1,
   FN_ZORBA_STRING_SPLIT_2,
+  FN_ZORBA_URI_DECODE_3,
   FN_ZORBA_XQDOC_XQDOC_1,
   FN_ZORBA_XQDOC_XQDOC_CONTENT_1,
 

=== modified file 'src/runtime/spec/mappings.xml'
--- src/runtime/spec/mappings.xml	2012-02-16 14:11:02 +0000
+++ src/runtime/spec/mappings.xml	2012-03-05 21:32:53 +0000
@@ -106,6 +106,10 @@
                      define="ZORBA_STRING_FN_NS" 
                      prefix="fn-zorba-string"/>
 
+		<zorba:namespace uri="http://www.zorba-xquery.com/modules/uri";
+                     define="ZORBA_URI_FN_NS" 
+                     prefix="fn-zorba-uri"/>
+
     <zorba:namespace uri="http://www.zorba-xquery.com/modules/converters/json";
                      define="ZORBA_JSON_FN_NS" 
                      prefix="fn-zorba-json"/>

=== added directory 'src/runtime/spec/uris'
=== added file 'src/runtime/spec/uris/uris.xml'
--- src/runtime/spec/uris/uris.xml	1970-01-01 00:00:00 +0000
+++ src/runtime/spec/uris/uris.xml	2012-03-05 21:32:53 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+/////////////////////////////////////////////////////////////////////////////////
+//                                                                             //
+// 7.2 Functions to Assemble and Disassemble Strings
+//                                                                             //
+/////////////////////////////////////////////////////////////////////////////////
+-->
+<zorba:iterators
+  xmlns:zorba="http://www.zorba-xquery.com";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://www.zorba-xquery.com ../runtime.xsd">
+
+<zorba:header>
+    <zorba:include form="Quoted">zorbautils/checked_vector.h</zorba:include>
+    <zorba:include form="Quoted">zorbatypes/schema_types.h</zorba:include>
+</zorba:header>
+
+<!--
+/*******************************************************************************
+********************************************************************************/
+-->
+<zorba:iterator  name="DecodeURIIterator">
+
+  <zorba:description author="Zorba Team">
+    uri:decode
+  </zorba:description>
+
+  <zorba:function>
+    <zorba:signature localname="decode" prefix="fn-zorba-uri">
+      <zorba:param>xs:string</zorba:param>
+      <zorba:param>xs:boolean</zorba:param>
+      <zorba:param>xs:string</zorba:param>
+      <zorba:output>xs:string</zorba:output>
+    </zorba:signature>
+  </zorba:function>
+</zorba:iterator>
+
+</zorba:iterators>

=== added directory 'src/runtime/uris'
=== added directory 'src/runtime/uris/pregenerated'
=== added file 'src/runtime/uris/pregenerated/uris.cpp'
--- src/runtime/uris/pregenerated/uris.cpp	1970-01-01 00:00:00 +0000
+++ src/runtime/uris/pregenerated/uris.cpp	2012-03-05 21:32:53 +0000
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2006-2008 The FLWOR Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+// ******************************************
+// *                                        *
+// * THIS IS A GENERATED FILE. DO NOT EDIT! *
+// * SEE .xml FILE WITH SAME NAME           *
+// *                                        *
+// ******************************************
+
+#include "stdafx.h"
+#include "zorbatypes/rchandle.h"
+#include "zorbatypes/zstring.h"
+#include "runtime/visitors/planiter_visitor.h"
+#include "runtime/uris/uris.h"
+#include "system/globalenv.h"
+
+
+
+namespace zorba {
+
+// <DecodeURIIterator>
+const char* DecodeURIIterator::class_name_str = "DecodeURIIterator";
+DecodeURIIterator::class_factory<DecodeURIIterator>
+DecodeURIIterator::g_class_factory;
+
+const serialization::ClassVersion 
+DecodeURIIterator::class_versions[] ={{ 1, 0x000905, false}};
+
+const int DecodeURIIterator::class_versions_count =
+sizeof(DecodeURIIterator::class_versions)/sizeof(struct serialization::ClassVersion);
+
+void DecodeURIIterator::accept(PlanIterVisitor& v) const {
+  v.beginVisit(*this);
+
+  std::vector<PlanIter_t>::const_iterator lIter = theChildren.begin();
+  std::vector<PlanIter_t>::const_iterator lEnd = theChildren.end();
+  for ( ; lIter != lEnd; ++lIter ){
+    (*lIter)->accept(v);
+  }
+
+  v.endVisit(*this);
+}
+
+DecodeURIIterator::~DecodeURIIterator() {}
+
+// </DecodeURIIterator>
+
+
+
+}
+
+

=== added file 'src/runtime/uris/pregenerated/uris.h'
--- src/runtime/uris/pregenerated/uris.h	1970-01-01 00:00:00 +0000
+++ src/runtime/uris/pregenerated/uris.h	2012-03-05 21:32:53 +0000
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2006-2008 The FLWOR Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+// ******************************************
+// *                                        *
+// * THIS IS A GENERATED FILE. DO NOT EDIT! *
+// * SEE .xml FILE WITH SAME NAME           *
+// *                                        *
+// ******************************************
+#ifndef ZORBA_RUNTIME_URIS_URIS_H
+#define ZORBA_RUNTIME_URIS_URIS_H
+
+
+#include "common/shared_types.h"
+
+
+
+#include "runtime/base/narybase.h"
+#include "zorbautils/checked_vector.h"
+#include "zorbatypes/schema_types.h"
+
+
+namespace zorba {
+
+/**
+ * 
+ *    uri:decode
+ *  
+ * Author: Zorba Team
+ */
+class DecodeURIIterator : public NaryBaseIterator<DecodeURIIterator, PlanIteratorState>
+{ 
+public:
+  SERIALIZABLE_CLASS(DecodeURIIterator);
+
+  SERIALIZABLE_CLASS_CONSTRUCTOR2T(DecodeURIIterator,
+    NaryBaseIterator<DecodeURIIterator, PlanIteratorState>);
+
+  void serialize( ::zorba::serialization::Archiver& ar)
+  {
+    serialize_baseclass(ar,
+    (NaryBaseIterator<DecodeURIIterator, PlanIteratorState>*)this);
+  }
+
+  DecodeURIIterator(
+    static_context* sctx,
+    const QueryLoc& loc,
+    std::vector<PlanIter_t>& children)
+    : 
+    NaryBaseIterator<DecodeURIIterator, PlanIteratorState>(sctx, loc, children)
+  {}
+
+  virtual ~DecodeURIIterator();
+
+  void accept(PlanIterVisitor& v) const;
+
+  bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
+};
+
+
+}
+#endif
+/*
+ * Local variables:
+ * mode: c++
+ * End:
+ */ 

=== added file 'src/runtime/uris/uris_impl.cpp'
--- src/runtime/uris/uris_impl.cpp	1970-01-01 00:00:00 +0000
+++ src/runtime/uris/uris_impl.cpp	2012-03-05 21:32:53 +0000
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2006-2012 The FLWOR Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "stdafx.h"
+
+#include <algorithm>
+
+#include "common/common.h"
+
+#include "diagnostics/assert.h"
+#include "diagnostics/xquery_diagnostics.h"
+#include "diagnostics/util_macros.h"
+
+#include "runtime/uris/uris.h"
+
+#include "system/globalenv.h"
+#include "store/api/item_factory.h"
+
+#include "zorba/transcode_stream.h"
+
+#include "util/uri_util.h"
+
+using namespace std;
+
+namespace zorba {
+
+/******************************************************************************
+*******************************************************************************/
+bool
+DecodeURIIterator::nextImpl(store::Item_t& result, PlanState& planState) const
+{
+  store::Item_t lString, lDecodePlus, lEncoding;
+  zstring       lDecodedString, lCharset;
+
+  PlanIteratorState* state;
+  DEFAULT_STACK_INIT(PlanIteratorState, state, planState);
+
+  consumeNext(lString, theChildren[0].getp(), planState);
+  consumeNext(lDecodePlus, theChildren[1].getp(), planState);
+  consumeNext(lEncoding, theChildren[2].getp(), planState);
+
+  lString->getStringValue2(lDecodedString);
+  lEncoding->getStringValue2(lCharset);
+
+  if (lDecodePlus->getBooleanValue())
+  {
+    std::replace( lDecodedString.begin(), lDecodedString.end(), '+', ' ' );
+  }
+
+  uri::decode(lDecodedString);
+
+  if (transcode::is_necessary(lCharset.c_str()))
+  {
+    if (!transcode::is_supported(lCharset.c_str()))
+    {
+      throw XQUERY_EXCEPTION(
+        zerr::ZXQP0006_UNKNOWN_ENCODING,
+        ERROR_PARAMS( lCharset ),
+        ERROR_LOC( loc )
+      );
+    }
+
+    try
+    {
+      transcode::stream<istringstream> lTranscoder(
+          lCharset.c_str(),
+          lDecodedString.c_str()
+        );
+
+      lDecodedString.clear();
+      char buf[1024];
+      while (lTranscoder.good())
+      {
+        lTranscoder.read(buf, 1024);
+        lDecodedString.append(buf, lTranscoder.gcount());
+      }
+    }
+    catch (ZorbaException& e)
+    {
+      throw XQUERY_EXCEPTION(
+        zerr::ZOSE0006_TRANSCODING_ERROR,
+        ERROR_PARAMS( e.what() ),
+        ERROR_LOC( loc )
+      );
+    }
+  }
+
+  STACK_PUSH(GENV_ITEMFACTORY->createString(result, lDecodedString), state );
+
+  STACK_END (state);
+}
+} // namespace zorba
+/* vim:set et sw=2 ts=2: */

=== modified file 'src/runtime/visitors/pregenerated/planiter_visitor.h'
--- src/runtime/visitors/pregenerated/planiter_visitor.h	2012-02-16 14:11:02 +0000
+++ src/runtime/visitors/pregenerated/planiter_visitor.h	2012-03-05 21:32:53 +0000
@@ -588,6 +588,8 @@
 
     class StringSplitIterator;
 
+    class DecodeURIIterator;
+
     class XQDocIterator;
 
     class XQDocContentIterator;
@@ -1438,6 +1440,9 @@
     virtual void beginVisit ( const StringSplitIterator& ) = 0;
     virtual void endVisit   ( const StringSplitIterator& ) = 0;
 
+    virtual void beginVisit ( const DecodeURIIterator& ) = 0;
+    virtual void endVisit   ( const DecodeURIIterator& ) = 0;
+
     virtual void beginVisit ( const XQDocIterator& ) = 0;
     virtual void endVisit   ( const XQDocIterator& ) = 0;
 

=== modified file 'src/runtime/visitors/pregenerated/printer_visitor.cpp'
--- src/runtime/visitors/pregenerated/printer_visitor.cpp	2012-02-16 14:11:02 +0000
+++ src/runtime/visitors/pregenerated/printer_visitor.cpp	2012-03-05 21:32:53 +0000
@@ -64,6 +64,7 @@
 #include "runtime/store/documents.h"
 #include "runtime/store/maps.h"
 #include "runtime/strings/strings.h"
+#include "runtime/uris/uris.h"
 #include "runtime/xqdoc/xqdoc.h"
 
 namespace zorba{
@@ -4004,6 +4005,20 @@
 // </StringSplitIterator>
 
 
+// <DecodeURIIterator>
+void PrinterVisitor::beginVisit ( const DecodeURIIterator& a) {
+  thePrinter.startBeginVisit("DecodeURIIterator", ++theId);
+  printCommons( &a, theId );
+  thePrinter.endBeginVisit( theId );
+}
+
+void PrinterVisitor::endVisit ( const DecodeURIIterator& ) {
+  thePrinter.startEndVisit();
+  thePrinter.endEndVisit();
+}
+// </DecodeURIIterator>
+
+
 // <XQDocIterator>
 void PrinterVisitor::beginVisit ( const XQDocIterator& a) {
   thePrinter.startBeginVisit("XQDocIterator", ++theId);

=== modified file 'src/runtime/visitors/pregenerated/printer_visitor.h'
--- src/runtime/visitors/pregenerated/printer_visitor.h	2012-02-16 14:11:02 +0000
+++ src/runtime/visitors/pregenerated/printer_visitor.h	2012-03-05 21:32:53 +0000
@@ -885,6 +885,9 @@
     void beginVisit( const StringSplitIterator& );
     void endVisit  ( const StringSplitIterator& );
 
+    void beginVisit( const DecodeURIIterator& );
+    void endVisit  ( const DecodeURIIterator& );
+
     void beginVisit( const XQDocIterator& );
     void endVisit  ( const XQDocIterator& );
 

=== added directory 'test/rbkt/ExpQueryResults/zorba/uris'
=== added file 'test/rbkt/ExpQueryResults/zorba/uris/decode_01.xml.res'
--- test/rbkt/ExpQueryResults/zorba/uris/decode_01.xml.res	1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/uris/decode_01.xml.res	2012-03-05 21:32:53 +0000
@@ -0,0 +1,1 @@
+foo=ä¥FÅõ

=== added file 'test/rbkt/ExpQueryResults/zorba/uris/decode_03.xml.res'
--- test/rbkt/ExpQueryResults/zorba/uris/decode_03.xml.res	1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/uris/decode_03.xml.res	2012-03-05 21:32:53 +0000
@@ -0,0 +1,1 @@
+ä¨bcö

=== added file 'test/rbkt/ExpQueryResults/zorba/uris/decode_04.xml.res'
--- test/rbkt/ExpQueryResults/zorba/uris/decode_04.xml.res	1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/uris/decode_04.xml.res	2012-03-05 21:32:53 +0000
@@ -0,0 +1,1 @@
+äö ü

=== added directory 'test/rbkt/Queries/zorba/uris'
=== added file 'test/rbkt/Queries/zorba/uris/decode_01.xq'
--- test/rbkt/Queries/zorba/uris/decode_01.xq	1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/uris/decode_01.xq	2012-03-05 21:32:53 +0000
@@ -0,0 +1,3 @@
+import module namespace u = "http://www.zorba-xquery.com/modules/uri";;
+
+u:decode("foo=%E4%A5F%C5%F5", fn:false(), "ISO-8859-1")

=== added file 'test/rbkt/Queries/zorba/uris/decode_02.spec'
--- test/rbkt/Queries/zorba/uris/decode_02.spec	1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/uris/decode_02.spec	2012-03-05 21:32:53 +0000
@@ -0,0 +1,1 @@
+Error: http://www.zorba-xquery.com/errors:ZXQP0006

=== added file 'test/rbkt/Queries/zorba/uris/decode_02.xq'
--- test/rbkt/Queries/zorba/uris/decode_02.xq	1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/uris/decode_02.xq	2012-03-05 21:32:53 +0000
@@ -0,0 +1,3 @@
+import module namespace u = "http://www.zorba-xquery.com/modules/uri";;
+
+u:decode("foo=%E4%A5F%C5%F5", fn:false(), "foo")

=== added file 'test/rbkt/Queries/zorba/uris/decode_03.xq'
--- test/rbkt/Queries/zorba/uris/decode_03.xq	1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/uris/decode_03.xq	2012-03-05 21:32:53 +0000
@@ -0,0 +1,4 @@
+import module namespace u = "http://www.zorba-xquery.com/modules/uri";;
+
+u:decode("%C3%A4%C2%A8bc%C3%B6", fn:false())
+

=== added file 'test/rbkt/Queries/zorba/uris/decode_04.xq'
--- test/rbkt/Queries/zorba/uris/decode_04.xq	1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/uris/decode_04.xq	2012-03-05 21:32:53 +0000
@@ -0,0 +1,3 @@
+import module namespace u = "http://www.zorba-xquery.com/modules/uri";;
+
+u:decode("%C3%A4%C3%B6+%C3%BC", fn:true())

-- 
Mailing list: https://launchpad.net/~zorba-coders
Post to     : zorba-coders@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zorba-coders
More help   : https://help.launchpad.net/ListHelp

Reply via email to