Changeset 20864 for lang/cplusplus
- Timestamp:
- 10/07/08 00:43:28 (2 months ago)
- Location:
- lang/cplusplus/llv8call/trunk
- Files:
-
- 3 modified
-
ext/libxml/document.cc (modified) (7 diffs)
-
t/070_libxml/01_simple.js (modified) (2 diffs)
-
t/070_libxml/02_dom.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/cplusplus/llv8call/trunk/ext/libxml/document.cc
r20862 r20864 23 23 #include "libxml.h" 24 24 25 #define EXTERNAL_DOC() EXTERNAL(xmlDocPtr, doc, args.This(), 0); 25 #define EXTERNAL_DOC() EXTERNAL(xmlDocPtr, doc, args.This(), 0); 26 #define EXTERNAL_FRAGMENT() EXTERNAL(xmlNodePtr, fragment, args.This(), 1); 26 27 27 28 FUNCTION(createDocument) … … 36 37 Handle<Object> t = document_class()->NewInstance(); 37 38 t->SetInternalField(0, External::New(doc)); 39 t->SetInternalField(1, External::New(xmlNewDocFragment(doc))); 38 40 return t; 39 41 END … … 45 47 assert(doc); // TODO: better error handling 46 48 args.This()->SetInternalField(0, External::New(doc)); 49 args.This()->SetInternalField(1, External::New(xmlNewDocFragment(doc))); 47 50 return Undefined(); 48 51 END … … 101 104 ARG_str(elname, 0); 102 105 EXTERNAL_DOC(); 106 EXTERNAL_FRAGMENT(); 103 107 104 108 xmlNodePtr node_raw = xmlNewNode(NULL, (const xmlChar*)*elname); 105 109 assert(node_raw); 110 xmlAddChild(fragment, node_raw); 106 111 return createNode( doc, node_raw ); 112 END 113 114 FUNCTION(createTextNode) 115 ARG_COUNT(1); 116 ARG_str(text, 0); 117 EXTERNAL_DOC(); 118 EXTERNAL_FRAGMENT(); 119 120 xmlNodePtr textnode = xmlNewDocText(doc, (const xmlChar*)*text); 121 assert(textnode); 122 textnode->doc = doc; 123 xmlAddChild(fragment, textnode); 124 return createNode( doc, textnode ); 107 125 END 108 126 … … 136 154 CLASS(); 137 155 BIND_CM("createDocument", createDocument); 138 139 156 BIND_IM("readFile", _readFile); 140 157 BIND_IM("encoding", _encoding); … … 144 161 BIND_IM("setDocumentElement", setDocumentElement); 145 162 BIND_IM("createElement", _createElement); 163 BIND_IM("createTextNode", createTextNode); 146 164 BIND_IM("toString", toString); 147 165 BIND_IM("close", _close); 148 INTERNALCOUNT( 1);166 INTERNALCOUNT(2); 149 167 EXPORT_CLASS("Document"); 150 168 ENDSUBMODULE 151 169 152 // rest: 9/51170 // rest: 11/51 153 171 154 172 // TODO: doc.actualEncoding … … 170 188 // TODO: doc.documentElement 171 189 // TODO: doc.createElementNS 172 // TODO: doc.createTextNode173 190 // TODO: doc.createComment 174 191 // TODO: doc.createAttribute -
lang/cplusplus/llv8call/trunk/t/070_libxml/01_simple.js
r20859 r20864 1 1 require('t/util.js'); 2 2 3 plan({tests: 7});3 plan({tests:8}); 4 4 5 5 check_lib("org.coderepos.libxml"); … … 15 15 is(doc.createElement("bar").toString(), "<bar/>", 'node.toString'); 16 16 is(root.toString(), "<foo/>", "node.toString"); 17 doc.setEncoding("euc-jp"); 18 is(doc.encoding(), "euc-jp", "setEncoding"); 17 19 doc.close(); 18 20 -
lang/cplusplus/llv8call/trunk/t/070_libxml/02_dom.js
r20861 r20864 1 1 require('t/util.js'); 2 2 3 plan({tests: 9});3 plan({tests:11}); 4 4 5 5 check_lib("org.coderepos.libxml"); 6 6 var libxml = org.coderepos.libxml; 7 7 8 var doc = new libxml.Document.createDocument("1.0"); 8 9 var foo = doc.createElement("foo"); 9 10 doc.setDocumentElement(foo); 10 doc.setEncoding("euc-jp");11 is(doc.encoding(), "euc-jp", "setEncoding");12 11 var root = doc.documentElement(); 13 12 var bar = doc.createElement("bar"); 14 13 var eee = doc.createElement("eee"); 15 root.appendChild(bar); 16 is(root.toString(), "<foo><bar/></foo>", "node.appendChild"); 17 root.removeChild(bar); 18 is(root.toString(), "<foo/>", "node.removeChild"); 19 root.appendChild(bar); 20 root.appendChild(eee); 21 is(root.toString(), "<foo><bar/><eee/></foo>", "node.appendChild"); 22 root.removeChildNodes(); 23 is(root.toString(), "<foo/>", "node.removeChildNodes"); 24 root.appendChild(bar); 25 is(root.insertBefore(eee, bar).nodeName(), 'eee', 'node.insertBefore'); 26 is(root.toString(), "<foo><eee/><bar/></foo>", "node.insertBefore"); 27 root.removeChildNodes(); 28 root.appendChild(bar); 29 is(root.insertAfter(eee, bar).nodeName(), 'eee', 'node.insertAfter'); 30 is(root.toString(), "<foo><bar/><eee/></foo>", "node.insertAfter"); 14 15 function test(cb, purpose) { 16 root.removeChildNodes(); 17 cb(); 18 } 19 20 test(function () { 21 root.appendChild(bar); 22 is(root.toString(), "<foo><bar/></foo>", "node.appendChild"); 23 }); 24 25 test(function () { 26 root.appendChild(bar); 27 root.removeChild(bar); 28 is(root.toString(), "<foo/>", "node.removeChild"); 29 }); 30 31 test(function () { 32 root.appendChild(bar); 33 root.appendChild(eee); 34 is(root.toString(), "<foo><bar/><eee/></foo>", "node.appendChild"); 35 }); 36 37 test(function () { 38 root.removeChildNodes(); 39 is(root.toString(), "<foo/>", "node.removeChildNodes"); 40 }); 41 42 test(function () { 43 root.appendChild(bar); 44 is(root.insertBefore(eee, bar).nodeName(), 'eee', 'node.insertBefore'); 45 is(root.toString(), "<foo><eee/><bar/></foo>", "node.insertBefore"); 46 }); 47 48 test(function () { 49 root.appendChild(bar); 50 is(root.insertAfter(eee, bar).nodeName(), 'eee', 'node.insertAfter'); 51 is(root.toString(), "<foo><bar/><eee/></foo>", "node.insertAfter"); 52 }); 53 54 test(function () { 55 root.appendChild(bar); 56 is(root.insertAfter(eee, bar).nodeName(), 'eee', 'node.insertAfter'); 57 is(root.toString(), "<foo><bar/><eee/></foo>", "node.insertAfter"); 58 }); 59 60 test(function () { 61 root.appendChild(doc.createTextNode("qqq")); 62 is(root.toString(), '<foo>qqq</foo>', 'doc.createTextNode()'); 63 }); 31 64 32 65 doc.close();
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)