Diff for /parser3/src/classes/xnode.C between versions 1.76 and 1.78

version 1.76, 2007/02/03 18:08:38 version 1.78, 2007/08/20 08:56:46
Line 102  xmlNode& as_node(MethodParams& params, i Line 102  xmlNode& as_node(MethodParams& params, i
         if(Value* vxnode=value.as(VXNODE_TYPE, false))          if(Value* vxnode=value.as(VXNODE_TYPE, false))
                 return static_cast<VXnode*>(vxnode)->get_xmlnode();                  return static_cast<VXnode*>(vxnode)->get_xmlnode();
         else          else
                 throw Exception("parser.runtime",                  throw Exception(PARSER_RUNTIME,
                         0,                          0,
                         msg);                          msg);
 }  }
Line 114  xmlChar* as_xmlchar(Request& r, MethodPa Line 114  xmlChar* as_xmlchar(Request& r, MethodPa
 xmlAttr& as_attr(MethodParams& params, int index, const char* msg) {  xmlAttr& as_attr(MethodParams& params, int index, const char* msg) {
         xmlNode& xmlnode=as_node(params, index, msg);          xmlNode& xmlnode=as_node(params, index, msg);
         if(xmlnode.type!=XML_ATTRIBUTE_NODE)          if(xmlnode.type!=XML_ATTRIBUTE_NODE)
                 throw Exception("parser.runtime",                  throw Exception(PARSER_RUNTIME,
                         0,                          0,
                         msg);                          msg);
   
Line 171  xmlNs& pa_xmlMapNs(xmlDoc& doc, const xm Line 171  xmlNs& pa_xmlMapNs(xmlDoc& doc, const xm
 static void pa_addAttributeNode(xmlNode& selfNode, xmlAttr& attrNode)   static void pa_addAttributeNode(xmlNode& selfNode, xmlAttr& attrNode) 
 {  {
         if(attrNode.type!=XML_ATTRIBUTE_NODE)          if(attrNode.type!=XML_ATTRIBUTE_NODE)
                 throw Exception("parser.runtime",                  throw Exception(PARSER_RUNTIME,
                         0,                          0,
                         "must be ATTRIBUTE_NODE");                          "must be ATTRIBUTE_NODE");
   
Line 354  xmlNode& get_self_element(VXnode& vnode) Line 354  xmlNode& get_self_element(VXnode& vnode)
         xmlNode& node=vnode.get_xmlnode();          xmlNode& node=vnode.get_xmlnode();
   
         if(node.type!=XML_ELEMENT_NODE)          if(node.type!=XML_ELEMENT_NODE)
                 throw Exception("parser.runtime",                  throw Exception(PARSER_RUNTIME,
                         0,                          0,
                         "method can only be called on nodes of ELEMENT type");                          "method can only be called on nodes of ELEMENT type");
   
Line 576  static void _hasAttributeNS(Request& r, Line 576  static void _hasAttributeNS(Request& r,
         r.write_no_lang(*new VBool(prop!=0));          r.write_no_lang(*new VBool(prop!=0));
 }  }
   
   // boolean hasAttributes
   static void _hasAttributes(Request& r, MethodParams&) {
           VXnode& vnode=GET_SELF(r, VXnode);
           xmlNode& element=get_self_element(vnode);
   
           // write out result
           r.write_no_lang(*new VBool(element.properties!=0));
   }
   
 static void _getElementsByTagNameNS(Request& r, MethodParams& params) {  static void _getElementsByTagNameNS(Request& r, MethodParams& params) {
         VXnode& vnode=GET_SELF(r, VXnode);          VXnode& vnode=GET_SELF(r, VXnode);
         VXdoc& vdoc=vnode.get_vxdoc();          VXdoc& vdoc=vnode.get_vxdoc();
Line 625  static void register_one_ns( Line 634  static void register_one_ns(
                         info->r->transcode(key),                           info->r->transcode(key), 
                         info->r->transcode(*svalue));                          info->r->transcode(*svalue));
         else          else
                 throw Exception("parser.runtime",                  throw Exception(PARSER_RUNTIME,
                         new String(key, String::L_TAINTED),                          new String(key, String::L_TAINTED),
                         "value is %s, must be string or number", value->type());                          "value is %s, must be string or number", value->type());
 }  }
Line 683  static void selectNodesHandler(Request&, Line 692  static void selectNodesHandler(Request&,
                         }                          }
                 break;                  break;
         default:           default: 
                 throw Exception("parser.runtime",                  throw Exception(PARSER_RUNTIME,
                         &expression,                          &expression,
                         "wrong xmlXPathEvalExpression result type (%d)", res->type);                          "wrong xmlXPathEvalExpression result type (%d)", res->type);
                 break; // never                  break; // never
Line 701  static void selectNodeHandler(Request& r Line 710  static void selectNodeHandler(Request& r
         case XPATH_NODESET:           case XPATH_NODESET: 
                 if(res->nodesetval && res->nodesetval->nodeNr) { // empty result strangly has NODESET  res->type                  if(res->nodesetval && res->nodesetval->nodeNr) { // empty result strangly has NODESET  res->type
                         if(res->nodesetval->nodeNr>1)                          if(res->nodesetval->nodeNr>1)
                                 throw Exception("parser.runtime",                                  throw Exception(PARSER_RUNTIME,
                                         &expression,                                          &expression,
                                         "resulted not in a single node (%d)", res->nodesetval->nodeNr);                                          "resulted not in a single node (%d)", res->nodesetval->nodeNr);
                                                   
Line 718  static void selectNodeHandler(Request& r Line 727  static void selectNodeHandler(Request& r
                 result=new VString(r.transcode((xmlChar*)res->stringval));                  result=new VString(r.transcode((xmlChar*)res->stringval));
                 break;                  break;
         default:           default: 
                 throw Exception("parser.runtime",                  throw Exception(PARSER_RUNTIME,
                         &expression,                          &expression,
                         "wrong xmlXPathEvalExpression result type (%d)", res->type);                          "wrong xmlXPathEvalExpression result type (%d)", res->type);
         }          }
Line 738  static void selectBoolHandler(Request&, Line 747  static void selectBoolHandler(Request&,
                         break;                          break;
                 // else[nodeset] fall down to default                  // else[nodeset] fall down to default
         default:           default: 
                 throw Exception("parser.runtime",                  throw Exception(PARSER_RUNTIME,
                         &expression,                          &expression,
                         "wrong xmlXPathEvalExpression result type (%d)", res->type);                          "wrong xmlXPathEvalExpression result type (%d)", res->type);
                 break; // never                  break; // never
Line 759  static void selectNumberHandler(Request& Line 768  static void selectNumberHandler(Request&
                         break;                          break;
                 // else[nodeset] fall down to default                  // else[nodeset] fall down to default
         default:           default: 
                 throw Exception("parser.runtime",                  throw Exception(PARSER_RUNTIME,
                         &expression,                          &expression,
                         "wrong xmlXPathEvalExpression result type (%d)", res->type);                          "wrong xmlXPathEvalExpression result type (%d)", res->type);
                 break; // never                  break; // never
Line 782  static void selectStringHandler(Request& Line 791  static void selectStringHandler(Request&
                         break;                          break;
                 // else[nodeset] fall down to default                  // else[nodeset] fall down to default
         default:           default: 
                 throw Exception("parser.runtime",                  throw Exception(PARSER_RUNTIME,
                         &expression,                          &expression,
                         "wrong xmlXPathEvalExpression result type (%d)", res->type);                          "wrong xmlXPathEvalExpression result type (%d)", res->type);
                 break; // never                  break; // never
Line 872  MXnode::MXnode(const char* aname, VState Line 881  MXnode::MXnode(const char* aname, VState
         add_native_method("hasAttribute", Method::CT_DYNAMIC, _hasAttribute, 1, 1);          add_native_method("hasAttribute", Method::CT_DYNAMIC, _hasAttribute, 1, 1);
         // boolean hasAttributeNS(in DOMString namespaceURI, in DOMString localName) raises(DOMException);          // boolean hasAttributeNS(in DOMString namespaceURI, in DOMString localName) raises(DOMException);
         add_native_method("hasAttributeNS", Method::CT_DYNAMIC, _hasAttributeNS, 2, 2);          add_native_method("hasAttributeNS", Method::CT_DYNAMIC, _hasAttributeNS, 2, 2);
           // boolean hasAttributes
           add_native_method("hasAttributes", Method::CT_DYNAMIC, _hasAttributes, 0, 0);
           
   
         /// parser          /// parser
         // ^node.select[/some/xpath/query] = hash $.#[dnode]          // ^node.select[/some/xpath/query] = hash $.#[dnode]

Removed from v.1.76  
changed lines
  Added in v.1.78


E-mail: