libxml-ruby 0.9.2-x86-mswin32-60 → 0.9.3-x86-mswin32-60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +13 -0
 - data/ext/libxml/libxml.c +885 -886
 - data/ext/libxml/ruby_libxml.h +70 -72
 - data/ext/libxml/ruby_xml_attr.c +76 -76
 - data/ext/libxml/ruby_xml_attr.h +8 -8
 - data/ext/libxml/ruby_xml_attributes.c +36 -36
 - data/ext/libxml/ruby_xml_attributes.h +6 -6
 - data/ext/libxml/ruby_xml_document.c +133 -220
 - data/ext/libxml/ruby_xml_document.h +4 -7
 - data/ext/libxml/ruby_xml_dtd.c +30 -109
 - data/ext/libxml/ruby_xml_dtd.h +2 -11
 - data/ext/libxml/ruby_xml_error.c +10 -10
 - data/ext/libxml/ruby_xml_error.h +4 -4
 - data/ext/libxml/ruby_xml_html_parser.c +28 -40
 - data/ext/libxml/ruby_xml_html_parser.h +4 -4
 - data/ext/libxml/ruby_xml_input.c +208 -32
 - data/ext/libxml/ruby_xml_input.h +7 -5
 - data/ext/libxml/ruby_xml_input_cbg.c +3 -3
 - data/ext/libxml/ruby_xml_node.c +217 -217
 - data/ext/libxml/ruby_xml_node.h +5 -5
 - data/ext/libxml/ruby_xml_ns.c +26 -26
 - data/ext/libxml/ruby_xml_ns.h +4 -4
 - data/ext/libxml/ruby_xml_parser.c +151 -164
 - data/ext/libxml/ruby_xml_parser.h +3 -8
 - data/ext/libxml/ruby_xml_parser_context.c +105 -105
 - data/ext/libxml/ruby_xml_parser_context.h +4 -4
 - data/ext/libxml/ruby_xml_reader.c +145 -162
 - data/ext/libxml/ruby_xml_reader.h +4 -4
 - data/ext/libxml/ruby_xml_relaxng.c +30 -43
 - data/ext/libxml/ruby_xml_relaxng.h +2 -7
 - data/ext/libxml/ruby_xml_sax_parser.c +174 -228
 - data/ext/libxml/ruby_xml_sax_parser.h +12 -20
 - data/ext/libxml/ruby_xml_schema.c +31 -44
 - data/ext/libxml/ruby_xml_schema.h +2 -7
 - data/ext/libxml/ruby_xml_state.c +6 -6
 - data/ext/libxml/ruby_xml_state.h +2 -2
 - data/ext/libxml/ruby_xml_xinclude.c +1 -1
 - data/ext/libxml/ruby_xml_xinclude.h +3 -3
 - data/ext/libxml/ruby_xml_xpath.c +1 -1
 - data/ext/libxml/ruby_xml_xpath.h +3 -12
 - data/ext/libxml/ruby_xml_xpath_context.c +293 -294
 - data/ext/libxml/ruby_xml_xpath_context.h +3 -7
 - data/ext/libxml/ruby_xml_xpath_expression.c +11 -11
 - data/ext/libxml/ruby_xml_xpath_expression.h +2 -2
 - data/ext/libxml/ruby_xml_xpath_object.c +52 -66
 - data/ext/libxml/ruby_xml_xpath_object.h +3 -14
 - data/ext/libxml/ruby_xml_xpointer.c +11 -12
 - data/ext/libxml/ruby_xml_xpointer.h +5 -7
 - data/ext/libxml/sax_parser_callbacks.inc +53 -36
 - data/ext/libxml/version.h +2 -2
 - data/ext/mingw/libxml_ruby.dll.a +0 -0
 - data/ext/mingw/libxml_ruby.so +0 -0
 - data/ext/vc/libxml_ruby.vcproj +1 -9
 - data/lib/libxml/html_parser.rb +5 -5
 - data/lib/libxml/parser.rb +4 -4
 - data/lib/libxml/sax_parser.rb +24 -0
 - data/test/tc_document_write.rb +2 -16
 - data/test/tc_html_parser.rb +57 -5
 - data/test/tc_input.rb +13 -0
 - data/test/tc_parser.rb +11 -3
 - data/test/tc_reader.rb +53 -34
 - data/test/tc_sax_parser.rb +30 -8
 - data/test/test.rb +8 -0
 - data/test/test_suite.rb +1 -1
 - metadata +5 -6
 - data/ext/libxml/ruby_xml_encoding.c +0 -164
 - data/ext/libxml/ruby_xml_encoding.h +0 -13
 - data/test/tc_encoding.rb +0 -13
 
| 
         @@ -1,15 +1,11 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /* $Id: ruby_xml_xpath_context.h  
     | 
| 
      
 1 
     | 
    
         
            +
            /* $Id: ruby_xml_xpath_context.h 614 2008-11-22 08:04:39Z cfis $ */
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            /* Please see the LICENSE file for copyright and distribution information */
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            #ifndef  
     | 
| 
       6 
     | 
    
         
            -
            #define  
     | 
| 
      
 5 
     | 
    
         
            +
            #ifndef __rxml_XPATH_CONTEXT__
         
     | 
| 
      
 6 
     | 
    
         
            +
            #define __rxml_XPATH_CONTEXT__
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            extern VALUE cXMLXPathContext;
         
     | 
| 
       9 
9 
     | 
    
         
             
            void ruby_init_xml_xpath_context(void);
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
            VALUE ruby_xml_xpath_context_register_namespaces(VALUE self, VALUE nslist);
         
     | 
| 
       12 
     | 
    
         
            -
            VALUE ruby_xml_xpath_context_register_namespaces_from_node(VALUE self, VALUE node);
         
     | 
| 
       13 
     | 
    
         
            -
            VALUE ruby_xml_xpath_context_find(VALUE self, VALUE xpath_expr);
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
11 
     | 
    
         
             
            #endif
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /* $Id:  
     | 
| 
      
 1 
     | 
    
         
            +
            /* $Id: rxml_xpath.c 461 2008-07-15 21:35:56Z cfis $ */
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            /* Please see the LICENSE file for copyright and distribution information */
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
         @@ -23,16 +23,16 @@ 
     | 
|
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            VALUE cXMLXPathExpression;
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
            void
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
            static void
         
     | 
| 
      
 27 
     | 
    
         
            +
            rxml_xpath_expression_free(xmlXPathCompExprPtr expr) {
         
     | 
| 
       28 
28 
     | 
    
         
             
              xmlXPathFreeCompExpr(expr);
         
     | 
| 
       29 
29 
     | 
    
         
             
            }
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
            VALUE
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 32 
     | 
    
         
            +
            rxml_xpath_expression_alloc(VALUE klass) {
         
     | 
| 
       33 
33 
     | 
    
         
             
              return Data_Wrap_Struct(cXMLXPathExpression,
         
     | 
| 
       34 
34 
     | 
    
         
             
            						  NULL,
         
     | 
| 
       35 
     | 
    
         
            -
            						   
     | 
| 
      
 35 
     | 
    
         
            +
            						  rxml_xpath_expression_free,
         
     | 
| 
       36 
36 
     | 
    
         
             
            						  NULL);
         
     | 
| 
       37 
37 
     | 
    
         
             
            }
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
         @@ -46,13 +46,13 @@ ruby_xml_xpath_expression_alloc(VALUE klass) { 
     | 
|
| 
       46 
46 
     | 
    
         
             
             *  expr = XPath::Expression.new('//first')
         
     | 
| 
       47 
47 
     | 
    
         
             
             *  nodes = doc.find(expr)
         
     | 
| 
       48 
48 
     | 
    
         
             
             */
         
     | 
| 
       49 
     | 
    
         
            -
            VALUE
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 50 
     | 
    
         
            +
            rxml_xpath_expression_initialize(VALUE self, VALUE expression) {
         
     | 
| 
       51 
51 
     | 
    
         
             
              xmlXPathCompExprPtr compexpr = xmlXPathCompile(StringValueCStr(expression));  
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
53 
     | 
    
         
             
              if (compexpr == NULL) {
         
     | 
| 
       54 
54 
     | 
    
         
             
            	  xmlErrorPtr xerror = xmlGetLastError();
         
     | 
| 
       55 
     | 
    
         
            -
            	   
     | 
| 
      
 55 
     | 
    
         
            +
            	  rxml_raise(xerror);
         
     | 
| 
       56 
56 
     | 
    
         
             
              }
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
58 
     | 
    
         
             
              DATA_PTR(self) = compexpr;
         
     | 
| 
         @@ -62,8 +62,8 @@ ruby_xml_xpath_expression_initialize(VALUE self, VALUE expression) { 
     | 
|
| 
       62 
62 
     | 
    
         
             
            void
         
     | 
| 
       63 
63 
     | 
    
         
             
            ruby_init_xml_xpath_expression(void) {
         
     | 
| 
       64 
64 
     | 
    
         
             
              cXMLXPathExpression = rb_define_class_under(mXPath, "Expression", rb_cObject);
         
     | 
| 
       65 
     | 
    
         
            -
              rb_define_alloc_func(cXMLXPathExpression,  
     | 
| 
      
 65 
     | 
    
         
            +
              rb_define_alloc_func(cXMLXPathExpression, rxml_xpath_expression_alloc);
         
     | 
| 
       66 
66 
     | 
    
         
             
              rb_define_singleton_method(rb_cRegexp, "compile", rb_class_new_instance, 1);
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
              rb_define_method(cXMLXPathExpression, "initialize",  
     | 
| 
      
 68 
     | 
    
         
            +
              rb_define_method(cXMLXPathExpression, "initialize", rxml_xpath_expression_initialize, 1);
         
     | 
| 
       69 
69 
     | 
    
         
             
            }
         
     | 
| 
         @@ -2,8 +2,8 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            /* Please see the LICENSE file for copyright and distribution information */
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            #ifndef  
     | 
| 
       6 
     | 
    
         
            -
            #define  
     | 
| 
      
 5 
     | 
    
         
            +
            #ifndef __rxml_XPATH_EXPRESSION__
         
     | 
| 
      
 6 
     | 
    
         
            +
            #define __rxml_XPATH_EXPRESSION__
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            extern VALUE cXMLXPathExpression;
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
         @@ -12,8 +12,8 @@ 
     | 
|
| 
       12 
12 
     | 
    
         
             
            VALUE cXMLXPathObject;
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            xmlDocPtr
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
            static xmlDocPtr
         
     | 
| 
      
 16 
     | 
    
         
            +
            rxml_xpath_object_doc(xmlXPathObjectPtr xpop)
         
     | 
| 
       17 
17 
     | 
    
         
             
            {
         
     | 
| 
       18 
18 
     | 
    
         
             
              xmlDocPtr result = NULL;
         
     | 
| 
       19 
19 
     | 
    
         
             
              xmlNodePtr *nodes = NULL;
         
     | 
| 
         @@ -32,14 +32,14 @@ ruby_xml_xpath_object_doc(xmlXPathObjectPtr xpop) 
     | 
|
| 
       32 
32 
     | 
    
         
             
              return (*nodes)->doc;
         
     | 
| 
       33 
33 
     | 
    
         
             
            }
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
            void
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 35 
     | 
    
         
            +
            static void
         
     | 
| 
      
 36 
     | 
    
         
            +
            rxml_xpath_object_mark(xmlXPathObjectPtr xpop)
         
     | 
| 
       37 
37 
     | 
    
         
             
            {
         
     | 
| 
       38 
38 
     | 
    
         
             
              int i;
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
              if ( xpop->type == XPATH_NODESET && xpop->nodesetval != NULL ) 
         
     | 
| 
       41 
41 
     | 
    
         
             
              {
         
     | 
| 
       42 
     | 
    
         
            -
                xmlDocPtr xdoc =  
     | 
| 
      
 42 
     | 
    
         
            +
                xmlDocPtr xdoc = rxml_xpath_object_doc(xpop);
         
     | 
| 
       43 
43 
     | 
    
         
             
                if (xdoc && xdoc->_private)
         
     | 
| 
       44 
44 
     | 
    
         
             
                  rb_gc_mark((VALUE)xdoc->_private);
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
         @@ -51,27 +51,17 @@ ruby_xml_xpath_object_mark(xmlXPathObjectPtr xpop) 
     | 
|
| 
       51 
51 
     | 
    
         
             
              }
         
     | 
| 
       52 
52 
     | 
    
         
             
            }
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
     | 
    
         
            -
            void
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
      
 54 
     | 
    
         
            +
            static void
         
     | 
| 
      
 55 
     | 
    
         
            +
            rxml_xpath_object_free(xmlXPathObjectPtr xpop)
         
     | 
| 
       56 
56 
     | 
    
         
             
            {
         
     | 
| 
       57 
     | 
    
         
            -
              /*  
     | 
| 
       58 
     | 
    
         
            -
                  
     | 
| 
       59 
     | 
    
         
            -
               
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
              /* Now free the xpath result */
         
     | 
| 
       62 
     | 
    
         
            -
              xmlXPathFreeObject(xpop);
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
              /* Now decrement the document object if this was a 
         
     | 
| 
       65 
     | 
    
         
            -
                 XPATH_NODESET.  Note this could free the document,
         
     | 
| 
       66 
     | 
    
         
            -
                 which is why we do it after freeing xpop.*/
         
     | 
| 
       67 
     | 
    
         
            -
              if (xdoc)
         
     | 
| 
       68 
     | 
    
         
            -
                ruby_xml_document_decr(xdoc);
         
     | 
| 
      
 57 
     | 
    
         
            +
              /* Now free the xpath result but not underlying nodes
         
     | 
| 
      
 58 
     | 
    
         
            +
                 since those belong to the document. */
         
     | 
| 
      
 59 
     | 
    
         
            +
              xmlXPathFreeNodeSetList(xpop);
         
     | 
| 
       69 
60 
     | 
    
         
             
            }
         
     | 
| 
       70 
61 
     | 
    
         | 
| 
       71 
62 
     | 
    
         
             
            VALUE
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 63 
     | 
    
         
            +
            rxml_xpath_object_wrap(xmlXPathObjectPtr xpop)
         
     | 
| 
       73 
64 
     | 
    
         
             
            {
         
     | 
| 
       74 
     | 
    
         
            -
              xmlDocPtr xdoc;
         
     | 
| 
       75 
65 
     | 
    
         
             
              VALUE rval;
         
     | 
| 
       76 
66 
     | 
    
         | 
| 
       77 
67 
     | 
    
         
             
              if ( xpop==NULL )
         
     | 
| 
         @@ -79,13 +69,9 @@ ruby_xml_xpath_object_wrap(xmlXPathObjectPtr xpop) 
     | 
|
| 
       79 
69 
     | 
    
         | 
| 
       80 
70 
     | 
    
         
             
              switch(xpop->type) {
         
     | 
| 
       81 
71 
     | 
    
         
             
              case XPATH_NODESET:
         
     | 
| 
       82 
     | 
    
         
            -
                xdoc = ruby_xml_xpath_object_doc(xpop);
         
     | 
| 
       83 
     | 
    
         
            -
                if (xdoc)
         
     | 
| 
       84 
     | 
    
         
            -
                  ruby_xml_document_incr(xdoc);
         
     | 
| 
       85 
     | 
    
         
            -
                
         
     | 
| 
       86 
72 
     | 
    
         
             
                rval = Data_Wrap_Struct(cXMLXPathObject,
         
     | 
| 
       87 
     | 
    
         
            -
                                         
     | 
| 
       88 
     | 
    
         
            -
                                         
     | 
| 
      
 73 
     | 
    
         
            +
                                        rxml_xpath_object_mark,
         
     | 
| 
      
 74 
     | 
    
         
            +
                                        rxml_xpath_object_free,
         
     | 
| 
       89 
75 
     | 
    
         
             
                                        xpop);
         
     | 
| 
       90 
76 
     | 
    
         | 
| 
       91 
77 
     | 
    
         
             
                break;
         
     | 
| 
         @@ -115,7 +101,7 @@ ruby_xml_xpath_object_wrap(xmlXPathObjectPtr xpop) 
     | 
|
| 
       115 
101 
     | 
    
         
             
            }
         
     | 
| 
       116 
102 
     | 
    
         | 
| 
       117 
103 
     | 
    
         
             
            static VALUE
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
      
 104 
     | 
    
         
            +
            rxml_xpath_object_tabref(xmlXPathObjectPtr xpop, int apos) {
         
     | 
| 
       119 
105 
     | 
    
         | 
| 
       120 
106 
     | 
    
         
             
              if (apos < 0 )
         
     | 
| 
       121 
107 
     | 
    
         
             
                apos=xpop->nodesetval->nodeNr+apos;
         
     | 
| 
         @@ -125,10 +111,10 @@ ruby_xml_xpath_object_tabref(xmlXPathObjectPtr xpop, int apos) { 
     | 
|
| 
       125 
111 
     | 
    
         | 
| 
       126 
112 
     | 
    
         
             
              switch(xpop->nodesetval->nodeTab[apos]->type) {
         
     | 
| 
       127 
113 
     | 
    
         
             
              case XML_ATTRIBUTE_NODE:
         
     | 
| 
       128 
     | 
    
         
            -
                return  
     | 
| 
      
 114 
     | 
    
         
            +
                return rxml_attr_wrap((xmlAttrPtr)xpop->nodesetval->nodeTab[apos]);
         
     | 
| 
       129 
115 
     | 
    
         
             
                break;
         
     | 
| 
       130 
116 
     | 
    
         
             
              default:
         
     | 
| 
       131 
     | 
    
         
            -
                return  
     | 
| 
      
 117 
     | 
    
         
            +
                return rxml_node2_wrap(cXMLNode,
         
     | 
| 
       132 
118 
     | 
    
         
             
            			       xpop->nodesetval->nodeTab[apos]);
         
     | 
| 
       133 
119 
     | 
    
         
             
              }
         
     | 
| 
       134 
120 
     | 
    
         
             
            }
         
     | 
| 
         @@ -139,8 +125,8 @@ ruby_xml_xpath_object_tabref(xmlXPathObjectPtr xpop, int apos) { 
     | 
|
| 
       139 
125 
     | 
    
         
             
             * 
         
     | 
| 
       140 
126 
     | 
    
         
             
             * Obtain an array of the nodes in this set.
         
     | 
| 
       141 
127 
     | 
    
         
             
             */
         
     | 
| 
       142 
     | 
    
         
            -
            VALUE
         
     | 
| 
       143 
     | 
    
         
            -
             
     | 
| 
      
 128 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 129 
     | 
    
         
            +
            rxml_xpath_object_to_a(VALUE self)
         
     | 
| 
       144 
130 
     | 
    
         
             
            {
         
     | 
| 
       145 
131 
     | 
    
         
             
              VALUE set_ary, nodeobj;
         
     | 
| 
       146 
132 
     | 
    
         
             
              xmlXPathObjectPtr xpop;
         
     | 
| 
         @@ -151,7 +137,7 @@ ruby_xml_xpath_object_to_a(VALUE self) 
     | 
|
| 
       151 
137 
     | 
    
         
             
              set_ary = rb_ary_new();
         
     | 
| 
       152 
138 
     | 
    
         
             
              if (!((xpop->nodesetval == NULL) || (xpop->nodesetval->nodeNr == 0))) {
         
     | 
| 
       153 
139 
     | 
    
         
             
                for (i = 0; i < xpop->nodesetval->nodeNr; i++) {
         
     | 
| 
       154 
     | 
    
         
            -
                  nodeobj =  
     | 
| 
      
 140 
     | 
    
         
            +
                  nodeobj = rxml_xpath_object_tabref(xpop, i);
         
     | 
| 
       155 
141 
     | 
    
         
             
                  rb_ary_push(set_ary, nodeobj);
         
     | 
| 
       156 
142 
     | 
    
         
             
                }
         
     | 
| 
       157 
143 
     | 
    
         
             
              }
         
     | 
| 
         @@ -165,8 +151,8 @@ ruby_xml_xpath_object_to_a(VALUE self) 
     | 
|
| 
       165 
151 
     | 
    
         
             
             *
         
     | 
| 
       166 
152 
     | 
    
         
             
             * Determine whether this nodeset is empty (contains no nodes).
         
     | 
| 
       167 
153 
     | 
    
         
             
             */
         
     | 
| 
       168 
     | 
    
         
            -
            VALUE
         
     | 
| 
       169 
     | 
    
         
            -
             
     | 
| 
      
 154 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 155 
     | 
    
         
            +
            rxml_xpath_object_empty_q(VALUE self) {
         
     | 
| 
       170 
156 
     | 
    
         
             
              xmlXPathObjectPtr xpop;
         
     | 
| 
       171 
157 
     | 
    
         | 
| 
       172 
158 
     | 
    
         
             
              Data_Get_Struct(self,xmlXPathObject,xpop);
         
     | 
| 
         @@ -183,19 +169,19 @@ ruby_xml_xpath_object_empty_q(VALUE self) { 
     | 
|
| 
       183 
169 
     | 
    
         
             
             * 
         
     | 
| 
       184 
170 
     | 
    
         
             
             * Call the supplied block for each node in this set.
         
     | 
| 
       185 
171 
     | 
    
         
             
             */
         
     | 
| 
       186 
     | 
    
         
            -
            VALUE
         
     | 
| 
       187 
     | 
    
         
            -
             
     | 
| 
      
 172 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 173 
     | 
    
         
            +
            rxml_xpath_object_each(VALUE self)
         
     | 
| 
       188 
174 
     | 
    
         
             
            {
         
     | 
| 
       189 
175 
     | 
    
         
             
              xmlXPathObjectPtr xpop;
         
     | 
| 
       190 
176 
     | 
    
         
             
              int i;
         
     | 
| 
       191 
177 
     | 
    
         | 
| 
       192 
     | 
    
         
            -
              if (  
     | 
| 
      
 178 
     | 
    
         
            +
              if ( rxml_xpath_object_empty_q(self) == Qtrue )
         
     | 
| 
       193 
179 
     | 
    
         
             
                return Qnil;
         
     | 
| 
       194 
180 
     | 
    
         | 
| 
       195 
181 
     | 
    
         
             
              Data_Get_Struct(self,xmlXPathObject,xpop);
         
     | 
| 
       196 
182 
     | 
    
         | 
| 
       197 
183 
     | 
    
         
             
              for (i = 0; i < xpop->nodesetval->nodeNr; i++) {
         
     | 
| 
       198 
     | 
    
         
            -
                rb_yield( 
     | 
| 
      
 184 
     | 
    
         
            +
                rb_yield(rxml_xpath_object_tabref(xpop,i));
         
     | 
| 
       199 
185 
     | 
    
         
             
              }
         
     | 
| 
       200 
186 
     | 
    
         
             
              return(self);
         
     | 
| 
       201 
187 
     | 
    
         
             
            }
         
     | 
| 
         @@ -206,12 +192,12 @@ ruby_xml_xpath_object_each(VALUE self) 
     | 
|
| 
       206 
192 
     | 
    
         
             
             *
         
     | 
| 
       207 
193 
     | 
    
         
             
             * Returns the first node in this node set, or nil if none exist.
         
     | 
| 
       208 
194 
     | 
    
         
             
             */
         
     | 
| 
       209 
     | 
    
         
            -
            VALUE
         
     | 
| 
       210 
     | 
    
         
            -
             
     | 
| 
       211 
     | 
    
         
            -
              if (  
     | 
| 
      
 195 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 196 
     | 
    
         
            +
            rxml_xpath_object_first(VALUE self) {
         
     | 
| 
      
 197 
     | 
    
         
            +
              if ( rxml_xpath_object_empty_q(self) == Qtrue )
         
     | 
| 
       212 
198 
     | 
    
         
             
                return Qnil;
         
     | 
| 
       213 
199 
     | 
    
         | 
| 
       214 
     | 
    
         
            -
              return  
     | 
| 
      
 200 
     | 
    
         
            +
              return rxml_xpath_object_tabref((xmlXPathObjectPtr)DATA_PTR(self),0);
         
     | 
| 
       215 
201 
     | 
    
         
             
            }
         
     | 
| 
       216 
202 
     | 
    
         | 
| 
       217 
203 
     | 
    
         
             
            /*
         
     | 
| 
         @@ -220,12 +206,12 @@ ruby_xml_xpath_object_first(VALUE self) { 
     | 
|
| 
       220 
206 
     | 
    
         
             
             *
         
     | 
| 
       221 
207 
     | 
    
         
             
             * array index into set of nodes
         
     | 
| 
       222 
208 
     | 
    
         
             
             */
         
     | 
| 
       223 
     | 
    
         
            -
            VALUE
         
     | 
| 
       224 
     | 
    
         
            -
             
     | 
| 
       225 
     | 
    
         
            -
              if (  
     | 
| 
      
 209 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 210 
     | 
    
         
            +
            rxml_xpath_object_aref(VALUE self, VALUE aref) {
         
     | 
| 
      
 211 
     | 
    
         
            +
              if ( rxml_xpath_object_empty_q(self) == Qtrue )
         
     | 
| 
       226 
212 
     | 
    
         
             
                return Qnil;
         
     | 
| 
       227 
213 
     | 
    
         | 
| 
       228 
     | 
    
         
            -
              return  
     | 
| 
      
 214 
     | 
    
         
            +
              return rxml_xpath_object_tabref((xmlXPathObjectPtr)DATA_PTR(self),
         
     | 
| 
       229 
215 
     | 
    
         
             
            				      NUM2INT(aref));
         
     | 
| 
       230 
216 
     | 
    
         
             
            }
         
     | 
| 
       231 
217 
     | 
    
         | 
| 
         @@ -235,11 +221,11 @@ ruby_xml_xpath_object_aref(VALUE self, VALUE aref) { 
     | 
|
| 
       235 
221 
     | 
    
         
             
             * 
         
     | 
| 
       236 
222 
     | 
    
         
             
             * Obtain the length of the nodesetval node list.
         
     | 
| 
       237 
223 
     | 
    
         
             
             */
         
     | 
| 
       238 
     | 
    
         
            -
            VALUE
         
     | 
| 
       239 
     | 
    
         
            -
             
     | 
| 
      
 224 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 225 
     | 
    
         
            +
            rxml_xpath_object_length(VALUE self) {
         
     | 
| 
       240 
226 
     | 
    
         
             
              xmlXPathObjectPtr xpop;
         
     | 
| 
       241 
227 
     | 
    
         | 
| 
       242 
     | 
    
         
            -
              if ( 
     | 
| 
      
 228 
     | 
    
         
            +
              if (rxml_xpath_object_empty_q(self) == Qtrue)
         
     | 
| 
       243 
229 
     | 
    
         
             
                return INT2FIX(0);
         
     | 
| 
       244 
230 
     | 
    
         | 
| 
       245 
231 
     | 
    
         
             
              Data_Get_Struct(self,xmlXPathObject,xpop);
         
     | 
| 
         @@ -266,8 +252,8 @@ ruby_xml_xpath_object_length(VALUE self) { 
     | 
|
| 
       266 
252 
     | 
    
         
             
             * * XML::XPath::USERS
         
     | 
| 
       267 
253 
     | 
    
         
             
             * * XML::XPath::XSLT_TREE 
         
     | 
| 
       268 
254 
     | 
    
         
             
             */
         
     | 
| 
       269 
     | 
    
         
            -
            VALUE
         
     | 
| 
       270 
     | 
    
         
            -
             
     | 
| 
      
 255 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 256 
     | 
    
         
            +
            rxml_xpath_object_get_type(VALUE self)
         
     | 
| 
       271 
257 
     | 
    
         
             
            {
         
     | 
| 
       272 
258 
     | 
    
         
             
              xmlXPathObjectPtr xpop;
         
     | 
| 
       273 
259 
     | 
    
         | 
| 
         @@ -283,8 +269,8 @@ ruby_xml_xpath_object_get_type(VALUE self) 
     | 
|
| 
       283 
269 
     | 
    
         
             
             * 
         
     | 
| 
       284 
270 
     | 
    
         
             
             * Returns the original XPath expression as a string.
         
     | 
| 
       285 
271 
     | 
    
         
             
             */
         
     | 
| 
       286 
     | 
    
         
            -
            VALUE
         
     | 
| 
       287 
     | 
    
         
            -
             
     | 
| 
      
 272 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 273 
     | 
    
         
            +
            rxml_xpath_object_string(VALUE self)
         
     | 
| 
       288 
274 
     | 
    
         
             
            {
         
     | 
| 
       289 
275 
     | 
    
         
             
              xmlXPathObjectPtr xpop;
         
     | 
| 
       290 
276 
     | 
    
         | 
| 
         @@ -303,8 +289,8 @@ ruby_xml_xpath_object_string(VALUE self) 
     | 
|
| 
       303 
289 
     | 
    
         
             
             * Dump libxml debugging information to stdout.
         
     | 
| 
       304 
290 
     | 
    
         
             
             * Requires Libxml be compiled with debugging enabled.
         
     | 
| 
       305 
291 
     | 
    
         
             
             */
         
     | 
| 
       306 
     | 
    
         
            -
            VALUE
         
     | 
| 
       307 
     | 
    
         
            -
             
     | 
| 
      
 292 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 293 
     | 
    
         
            +
            rxml_xpath_object_debug(VALUE self) {
         
     | 
| 
       308 
294 
     | 
    
         
             
              xmlXPathObjectPtr xpop;
         
     | 
| 
       309 
295 
     | 
    
         | 
| 
       310 
296 
     | 
    
         
             
              #ifndef LIBXML_DEBUG_ENABLED
         
     | 
| 
         @@ -321,14 +307,14 @@ ruby_init_xml_xpath_object(void) { 
     | 
|
| 
       321 
307 
     | 
    
         
             
              cXMLXPathObject = rb_define_class_under(mXPath, "Object", rb_cObject);
         
     | 
| 
       322 
308 
     | 
    
         
             
              rb_include_module(cXMLXPathObject, rb_mEnumerable);
         
     | 
| 
       323 
309 
     | 
    
         
             
              rb_define_attr(cXMLXPathObject, "context", 1, 0);
         
     | 
| 
       324 
     | 
    
         
            -
              rb_define_method(cXMLXPathObject, "each",  
     | 
| 
       325 
     | 
    
         
            -
              rb_define_method(cXMLXPathObject, "xpath_type",  
     | 
| 
       326 
     | 
    
         
            -
              rb_define_method(cXMLXPathObject, "empty?",  
     | 
| 
       327 
     | 
    
         
            -
              rb_define_method(cXMLXPathObject, "first",  
     | 
| 
       328 
     | 
    
         
            -
              rb_define_method(cXMLXPathObject, "length",  
     | 
| 
       329 
     | 
    
         
            -
              rb_define_method(cXMLXPathObject, "size",  
     | 
| 
       330 
     | 
    
         
            -
              rb_define_method(cXMLXPathObject, "to_a",  
     | 
| 
       331 
     | 
    
         
            -
              rb_define_method(cXMLXPathObject, "[]",  
     | 
| 
       332 
     | 
    
         
            -
              rb_define_method(cXMLXPathObject, "string",  
     | 
| 
       333 
     | 
    
         
            -
              rb_define_method(cXMLXPathObject, "debug",  
     | 
| 
      
 310 
     | 
    
         
            +
              rb_define_method(cXMLXPathObject, "each", rxml_xpath_object_each, 0);
         
     | 
| 
      
 311 
     | 
    
         
            +
              rb_define_method(cXMLXPathObject, "xpath_type", rxml_xpath_object_get_type, 0);
         
     | 
| 
      
 312 
     | 
    
         
            +
              rb_define_method(cXMLXPathObject, "empty?", rxml_xpath_object_empty_q, 0);
         
     | 
| 
      
 313 
     | 
    
         
            +
              rb_define_method(cXMLXPathObject, "first", rxml_xpath_object_first, 0);
         
     | 
| 
      
 314 
     | 
    
         
            +
              rb_define_method(cXMLXPathObject, "length", rxml_xpath_object_length, 0);
         
     | 
| 
      
 315 
     | 
    
         
            +
              rb_define_method(cXMLXPathObject, "size", rxml_xpath_object_length, 0);
         
     | 
| 
      
 316 
     | 
    
         
            +
              rb_define_method(cXMLXPathObject, "to_a", rxml_xpath_object_to_a, 0);
         
     | 
| 
      
 317 
     | 
    
         
            +
              rb_define_method(cXMLXPathObject, "[]", rxml_xpath_object_aref, 1);
         
     | 
| 
      
 318 
     | 
    
         
            +
              rb_define_method(cXMLXPathObject, "string", rxml_xpath_object_string, 0);
         
     | 
| 
      
 319 
     | 
    
         
            +
              rb_define_method(cXMLXPathObject, "debug", rxml_xpath_object_debug, 0);
         
     | 
| 
       334 
320 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,22 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /* $Id $ */
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            #ifndef  
     | 
| 
       4 
     | 
    
         
            -
            #define  
     | 
| 
      
 3 
     | 
    
         
            +
            #ifndef __rxml_XPATH_OBJECT__
         
     | 
| 
      
 4 
     | 
    
         
            +
            #define __rxml_XPATH_OBJECT__
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            extern VALUE cXMLXPathObject;
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            typedef struct ruby_xml_xpath_object_s {
         
     | 
| 
       9 
     | 
    
         
            -
              xmlXPathObjectPtr xpop;
         
     | 
| 
       10 
     | 
    
         
            -
            } ruby_xml_xpath_object;
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
8 
     | 
    
         
             
            void ruby_init_xml_xpath_object(void);
         
     | 
| 
       13 
     | 
    
         
            -
            VALUE  
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            VALUE ruby_xml_xpath_object_first(VALUE self);
         
     | 
| 
       16 
     | 
    
         
            -
            VALUE ruby_xml_xpath_object_to_a(VALUE self);
         
     | 
| 
       17 
     | 
    
         
            -
            VALUE ruby_xml_xpath_object_each(VALUE self);
         
     | 
| 
       18 
     | 
    
         
            -
            VALUE ruby_xml_xpath_object_empty_q(VALUE self);
         
     | 
| 
       19 
     | 
    
         
            -
            VALUE ruby_xml_xpath_object_first(VALUE self);
         
     | 
| 
       20 
     | 
    
         
            -
            VALUE ruby_xml_xpath_object_length(VALUE self);
         
     | 
| 
      
 9 
     | 
    
         
            +
            VALUE rxml_xpath_object_wrap(xmlXPathObjectPtr xpop);
         
     | 
| 
       21 
10 
     | 
    
         | 
| 
       22 
11 
     | 
    
         
             
            #endif
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /* $Id: ruby_xml_xpointer.c  
     | 
| 
      
 1 
     | 
    
         
            +
            /* $Id: ruby_xml_xpointer.c 612 2008-11-21 08:01:29Z cfis $ */
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            /* Please see the LICENSE file for copyright and distribution information */
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
         @@ -16,8 +16,8 @@ VALUE cXMLXPointer; 
     | 
|
| 
       16 
16 
     | 
    
         
             
            */
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            VALUE
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 20 
     | 
    
         
            +
            rxml_xpointer_point(VALUE class, VALUE rnode, VALUE xptr_str) {
         
     | 
| 
       21 
21 
     | 
    
         
             
            #ifdef LIBXML_XPTR_ENABLED
         
     | 
| 
       22 
22 
     | 
    
         
             
              xmlNodePtr xnode;
         
     | 
| 
       23 
23 
     | 
    
         
             
              xmlXPathContextPtr xctxt;
         
     | 
| 
         @@ -39,9 +39,9 @@ ruby_xml_xpointer_point(VALUE class, VALUE rnode, VALUE xptr_str) { 
     | 
|
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
              xpop = xmlXPtrEval((xmlChar*)StringValuePtr(xptr_str), xctxt);
         
     | 
| 
       41 
41 
     | 
    
         
             
              if (!xpop)
         
     | 
| 
       42 
     | 
    
         
            -
                 
     | 
| 
      
 42 
     | 
    
         
            +
                rxml_raise(&xmlLastError);
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
              result =  
     | 
| 
      
 44 
     | 
    
         
            +
              result = rxml_xpath_object_wrap(xpop);
         
     | 
| 
       45 
45 
     | 
    
         
             
              rb_iv_set(result, "@context", context);
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
47 
     | 
    
         
             
              return(result);
         
     | 
| 
         @@ -51,10 +51,9 @@ ruby_xml_xpointer_point(VALUE class, VALUE rnode, VALUE xptr_str) { 
     | 
|
| 
       51 
51 
     | 
    
         
             
            #endif
         
     | 
| 
       52 
52 
     | 
    
         
             
            }
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
54 
     | 
    
         
             
            VALUE
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
              return( 
     | 
| 
      
 55 
     | 
    
         
            +
            rxml_xpointer_point2(VALUE node, VALUE xptr_str) {
         
     | 
| 
      
 56 
     | 
    
         
            +
              return(rxml_xpointer_point(cXMLXPointer, node, xptr_str));
         
     | 
| 
       58 
57 
     | 
    
         
             
            }
         
     | 
| 
       59 
58 
     | 
    
         | 
| 
       60 
59 
     | 
    
         | 
| 
         @@ -65,8 +64,8 @@ ruby_xml_xpointer_point2(VALUE node, VALUE xptr_str) { 
     | 
|
| 
       65 
64 
     | 
    
         
             
             * Create an xpath representing the range between the supplied
         
     | 
| 
       66 
65 
     | 
    
         
             
             * start and end node.
         
     | 
| 
       67 
66 
     | 
    
         
             
             */
         
     | 
| 
       68 
     | 
    
         
            -
            VALUE
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
      
 67 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 68 
     | 
    
         
            +
            rxml_xpointer_range(VALUE class, VALUE rstart, VALUE rend) {
         
     | 
| 
       70 
69 
     | 
    
         
             
            #ifdef LIBXML_XPTR_ENABLED
         
     | 
| 
       71 
70 
     | 
    
         
             
              xmlNodePtr start, end;
         
     | 
| 
       72 
71 
     | 
    
         
             
              VALUE rxxp;
         
     | 
| 
         @@ -89,7 +88,7 @@ ruby_xml_xpointer_range(VALUE class, VALUE rstart, VALUE rend) { 
     | 
|
| 
       89 
88 
     | 
    
         
             
              if (xpath == NULL)
         
     | 
| 
       90 
89 
     | 
    
         
             
                rb_fatal("You shouldn't be able to have this happen");
         
     | 
| 
       91 
90 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
              rxxp =  
     | 
| 
      
 91 
     | 
    
         
            +
              rxxp = rxml_xpath_object_wrap(xpath);
         
     | 
| 
       93 
92 
     | 
    
         
             
              return(rxxp);
         
     | 
| 
       94 
93 
     | 
    
         
             
            #else
         
     | 
| 
       95 
94 
     | 
    
         
             
              rb_warn("libxml was compiled without XPointer support");
         
     | 
| 
         @@ -106,5 +105,5 @@ ruby_xml_xpointer_range(VALUE class, VALUE rstart, VALUE rend) { 
     | 
|
| 
       106 
105 
     | 
    
         
             
            void
         
     | 
| 
       107 
106 
     | 
    
         
             
            ruby_init_xml_xpointer(void) {
         
     | 
| 
       108 
107 
     | 
    
         
             
              cXMLXPointer = rb_define_class_under(mXML, "XPointer", rb_cObject);
         
     | 
| 
       109 
     | 
    
         
            -
              rb_define_singleton_method(cXMLXPointer, "range",  
     | 
| 
      
 108 
     | 
    
         
            +
              rb_define_singleton_method(cXMLXPointer, "range", rxml_xpointer_range, 2);
         
     | 
| 
       110 
109 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /* $Id: ruby_xml_xpointer.h  
     | 
| 
      
 1 
     | 
    
         
            +
            /* $Id: ruby_xml_xpointer.h 614 2008-11-22 08:04:39Z cfis $ */
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            /* Please see the LICENSE file for copyright and distribution information */
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            #ifndef  
     | 
| 
       6 
     | 
    
         
            -
            #define  
     | 
| 
      
 5 
     | 
    
         
            +
            #ifndef __rxml_XPOINTER__
         
     | 
| 
      
 6 
     | 
    
         
            +
            #define __rxml_XPOINTER__
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            extern VALUE cXMLXPointer;
         
     | 
| 
       9 
9 
     | 
    
         
             
            extern VALUE eXMLXPointerInvalidExpression;
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
            typedef struct  
     | 
| 
      
 11 
     | 
    
         
            +
            typedef struct rxml_xpointer {
         
     | 
| 
       12 
12 
     | 
    
         
             
              VALUE xd;
         
     | 
| 
       13 
13 
     | 
    
         
             
              VALUE ctxt;
         
     | 
| 
       14 
14 
     | 
    
         
             
              /*
         
     | 
| 
         @@ -18,10 +18,8 @@ typedef struct ruby_xml_xpointer { 
     | 
|
| 
       18 
18 
     | 
    
         
             
               *
         
     | 
| 
       19 
19 
     | 
    
         
             
               * I also need an xpointer data struct type.
         
     | 
| 
       20 
20 
     | 
    
         
             
              */
         
     | 
| 
       21 
     | 
    
         
            -
            }  
     | 
| 
      
 21 
     | 
    
         
            +
            } rxml_xpointer;
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
            VALUE ruby_xml_xpointer_point(VALUE class, VALUE node, VALUE xptr_string);
         
     | 
| 
       24 
     | 
    
         
            -
            VALUE ruby_xml_xpointer_point2(VALUE node, VALUE xptr_string);
         
     | 
| 
       25 
23 
     | 
    
         
             
            void ruby_init_xml_xpointer(void);
         
     | 
| 
       26 
24 
     | 
    
         | 
| 
       27 
25 
     | 
    
         
             
            #endif
         
     |