Changeset 20986 for lang/cplusplus

Show
Ignore:
Timestamp:
10/08/08 23:10:24 (2 months ago)
Author:
tokuhirom
Message:

dry

Location:
lang/cplusplus/llv8call/trunk/ext/libxml
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/cplusplus/llv8call/trunk/ext/libxml/document.cc

    r20949 r20986  
    3535        doc->encoding = (const xmlChar*)xmlStrdup((const xmlChar*)*encoding); 
    3636    } 
    37     Handle<Object> t = document_class()->NewInstance(); 
    38     t->SetInternalField(0, External::New(doc)); 
    39     t->SetInternalField(1, External::New(xmlNewDocFragment(doc))); 
    40     return t; 
     37    return createDocument(doc); 
    4138END 
    4239 
     
    8077    xmlNodePtr node_raw = xmlDocGetRootElement(doc); 
    8178    assert(node_raw); 
    82     return createElem( doc,  node_raw ); 
     79    return createObject( "Element", doc,  node_raw ); 
    8380END 
    8481 
     
    109106    assert(node_raw); 
    110107    xmlAddChild(fragment, node_raw); 
    111     return createElem( doc, node_raw ); 
     108    return createObject( "Element", doc, node_raw ); 
    112109END 
    113110 
     
    121118    assert(node_raw); 
    122119    xmlAddChild(fragment, node_raw); 
    123     return createCDATA( doc, node_raw ); 
     120    return createObject( "CDATASection", doc, node_raw ); 
    124121END 
    125122 
     
    132129 
    133130    xmlAttrPtr attr = xmlNewDocProp(doc, (const xmlChar*)*name, args.Length() == 2 ? (const xmlChar*)*value : NULL); 
    134     return createAttr(doc, attr); 
     131    return createObject("Attr", doc, (xmlNodePtr)attr); 
    135132END 
    136133 
     
    145142    textnode->doc = doc; 
    146143    xmlAddChild(fragment, textnode); 
    147     return createNode( doc, textnode ); 
     144    return CREATE_NODE( doc, textnode ); 
    148145END 
    149146 
     
    158155    textnode->doc = doc; 
    159156    xmlAddChild(fragment, textnode); 
    160     return createNode( doc, textnode ); 
     157    return CREATE_NODE( doc, textnode ); 
    161158END 
    162159 
  • lang/cplusplus/llv8call/trunk/ext/libxml/element.cc

    r20947 r20986  
    5656        return Undefined(); 
    5757    } else { 
    58         return createAttr(doc, ret); 
     58        return createObject("Attr", doc, (xmlNode*)ret); 
    5959    } 
    6060END 
  • lang/cplusplus/llv8call/trunk/ext/libxml/libxml.h

    r20949 r20986  
    1919} 
    2020 
    21 inline v8::Handle<v8::Function> node_class() { 
    22     return Handle<Function>::Cast( libxml_namespace()->Get(String::New("Node")) ); 
    23 } 
    24  
    25 inline v8::Handle<v8::Function> attr_class() { 
    26     return Handle<Function>::Cast( libxml_namespace()->Get(String::New("Attr")) ); 
    27 } 
    28  
    29 inline v8::Handle<v8::Function> elem_class() { 
    30     return Handle<Function>::Cast( libxml_namespace()->Get(String::New("Element")) ); 
    31 } 
    32  
    33 inline v8::Handle<v8::Function> document_class() { 
    34     return Handle<Function>::Cast( libxml_namespace()->Get(String::New("Document")) ); 
    35 } 
    36  
    37 inline v8::Handle<v8::Function> cdata_class() { 
    38     return Handle<Function>::Cast( libxml_namespace()->Get(String::New("CDATASection")) ); 
    39 } 
    40  
    41 static inline Handle<Object> createNode(xmlDocPtr doc, xmlNodePtr node_raw) { 
     21static inline Handle<Object> createObject(const char * type, xmlDocPtr doc, xmlNodePtr node_raw) { 
    4222    Handle<Value> consarg[2]; 
    4323    consarg[0] = External::New(node_raw); 
    4424    consarg[1] = External::New(doc); 
    45     return node_class()->NewInstance(2, consarg); 
     25    Handle<Function> f = Handle<Function>::Cast( libxml_namespace()->Get(String::New(type)) ); 
     26    return f->NewInstance(2, consarg); 
    4627} 
    4728 
    48 static inline Handle<Object> createElem(xmlDocPtr doc, xmlNodePtr elem_raw) { 
    49     Handle<Value> consarg[2]; 
    50     consarg[0] = External::New(elem_raw); 
    51     consarg[1] = External::New(doc); 
    52     return elem_class()->NewInstance(2, consarg); 
     29static inline Handle<Object> createDocument(xmlDocPtr doc) { 
     30    Handle<Function> f = Handle<Function>::Cast( libxml_namespace()->Get(String::New("Document")) ); 
     31    Handle<Object> t = f->NewInstance(); 
     32    t->SetInternalField(0, External::New(doc)); 
     33    t->SetInternalField(1, External::New(xmlNewDocFragment(doc))); 
     34    return t; 
    5335} 
    5436 
    55 static inline Handle<Object> createAttr(xmlDocPtr doc, xmlAttrPtr attr_raw) { 
    56     Handle<Value> consarg[2]; 
    57     consarg[0] = External::New(attr_raw); 
    58     consarg[1] = External::New(doc); 
    59     return attr_class()->NewInstance(2, consarg); 
    60 } 
    61  
    62 static inline Handle<Object> createCDATA(xmlDocPtr doc, xmlNodePtr attr_raw) { 
    63     Handle<Value> consarg[2]; 
    64     consarg[0] = External::New(attr_raw); 
    65     consarg[1] = External::New(doc); 
    66     return cdata_class()->NewInstance(2, consarg); 
    67 } 
     37#define CREATE_NODE(doc, node) createObject("Node",      doc, node) 
     38#define CREATE_ATTR(doc, node) createObject("Attribute", doc, node) 
    6839 
    6940#define ARG_node(name, n) EXTERNAL(xmlNodePtr, name, args[n]->ToObject(), 0) 
  • lang/cplusplus/llv8call/trunk/ext/libxml/node.h

    r20947 r20986  
    5656    ARG_node(argnode, 0); 
    5757    xmlNodePtr rNode = domAppendChild( node, argnode ); 
    58     return createNode( doc, rNode ); 
     58    return CREATE_NODE( doc, rNode ); 
    5959END 
    6060 
     
    6767    xmlNodePtr rNode = domInsertBefore( node, newnode, refnode ); 
    6868    assert(rNode); 
    69     return createNode( doc, rNode ); 
     69    return CREATE_NODE( doc, rNode ); 
    7070END 
    7171 
     
    7878    xmlNodePtr rNode = domInsertAfter( node, newnode, refnode ); 
    7979    assert(rNode); 
    80     return createNode( doc, rNode ); 
     80    return CREATE_NODE( doc, rNode ); 
    8181END 
    8282 
     
    8787    ARG_node(argnode, 0); 
    8888    xmlNodePtr rNode = domRemoveChild( node, argnode ); 
    89     return createNode( doc, rNode ); 
     89    return CREATE_NODE( doc, rNode ); 
    9090END 
    9191 
     
    149149    xmlNodePtr ret = _CloneNodeIn( node, deep ); 
    150150    assert(ret); 
    151     return createNode( doc, ret ); 
     151    return CREATE_NODE( doc, ret ); 
    152152END 
    153153 
     
    156156    EXTERNAL_NODE(); 
    157157    EXTERNAL_DOC(); 
    158     return createNode( doc, node->children ); 
     158    return CREATE_NODE( doc, node->children ); 
    159159END 
    160160 
     
    163163    EXTERNAL_NODE(); 
    164164    EXTERNAL_DOC(); 
    165     return createNode( doc, node->last ); 
     165    return CREATE_NODE( doc, node->last ); 
    166166END 
    167167 
     
    170170    EXTERNAL_NODE(); 
    171171    EXTERNAL_DOC(); 
    172     return createNode( doc, node->parent ); 
     172    return CREATE_NODE( doc, node->parent ); 
    173173END 
    174174