Changeset 22
- Timestamp:
- 05/29/06 02:54:06 (6 years ago)
- Files:
-
- trunk/Makefile (modified) (1 diff)
- trunk/bcd/gen/bcdgen.d (modified) (15 diffs)
- trunk/bcd/libxml2 (added)
- trunk/bcd/libxml2/DOCBparser.d (added)
- trunk/bcd/libxml2/HTMLparser.d (added)
- trunk/bcd/libxml2/HTMLtree.d (added)
- trunk/bcd/libxml2/SAX.d (added)
- trunk/bcd/libxml2/SAX2.d (added)
- trunk/bcd/libxml2/c14n.d (added)
- trunk/bcd/libxml2/catalog.d (added)
- trunk/bcd/libxml2/chvalid.d (added)
- trunk/bcd/libxml2/dict.d (added)
- trunk/bcd/libxml2/encoding.d (added)
- trunk/bcd/libxml2/entities.d (added)
- trunk/bcd/libxml2/globals.d (added)
- trunk/bcd/libxml2/hash.d (added)
- trunk/bcd/libxml2/list.d (added)
- trunk/bcd/libxml2/nanoftp.d (added)
- trunk/bcd/libxml2/nanohttp.d (added)
- trunk/bcd/libxml2/parser.d (added)
- trunk/bcd/libxml2/parserInternals.d (added)
- trunk/bcd/libxml2/pattern.d (added)
- trunk/bcd/libxml2/relaxng.d (added)
- trunk/bcd/libxml2/schemasInternals.d (added)
- trunk/bcd/libxml2/schematron.d (added)
- trunk/bcd/libxml2/threads.d (added)
- trunk/bcd/libxml2/tree.d (added)
- trunk/bcd/libxml2/uri.d (added)
- trunk/bcd/libxml2/valid.d (added)
- trunk/bcd/libxml2/xinclude.d (added)
- trunk/bcd/libxml2/xlink.d (added)
- trunk/bcd/libxml2/xmlIO.d (added)
- trunk/bcd/libxml2/xmlautomata.d (added)
- trunk/bcd/libxml2/xmlerror.d (added)
- trunk/bcd/libxml2/xmlexports.d (added)
- trunk/bcd/libxml2/xmlmemory.d (added)
- trunk/bcd/libxml2/xmlmodule.d (added)
- trunk/bcd/libxml2/xmlreader.d (added)
- trunk/bcd/libxml2/xmlregexp.d (added)
- trunk/bcd/libxml2/xmlsave.d (added)
- trunk/bcd/libxml2/xmlschemas.d (added)
- trunk/bcd/libxml2/xmlschemastypes.d (added)
- trunk/bcd/libxml2/xmlstring.d (added)
- trunk/bcd/libxml2/xmlunicode.d (added)
- trunk/bcd/libxml2/xmlversion.d (added)
- trunk/bcd/libxml2/xmlwriter.d (added)
- trunk/bcd/libxml2/xpath.d (added)
- trunk/bcd/libxml2/xpathInternals.d (added)
- trunk/bcd/libxml2/xpointer.d (added)
- trunk/scripts/libxml2.sh (added)
- trunk/test/libxml2.d (added)
- trunk/test/libxml2.sh (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Makefile
r13 r22 8 8 fltk2exa: test/fltk2.d bcd/bind.d 9 9 sh test/fltk2.sh ${DMD} 10 11 libxml2exa: test/libxml2.d bcd/bind.d 12 sh test/libxml2.sh ${DMD} 13 trunk/bcd/gen/bcdgen.d
r21 r22 157 157 char[] safeName(char[] name) 158 158 { 159 if (name == "align" || 159 if (name == "alias" || 160 name == "align" || 161 name == "function" || 162 name == "in" || 163 name == "inout" || 164 name == "out" || 160 165 name == "override" || 166 name == "scope" || 161 167 name == "version") { 162 168 return name ~ "_"; … … 166 172 167 173 /** 174 * Return mangled unless it's not mangled 175 */ 176 char *getMangled(xmlNode *node) 177 { 178 char *mangled = xmlGetProp(node, "mangled"); 179 if (!mangled) mangled = xmlGetProp(node, "name"); 180 return mangled; 181 } 182 183 /** 184 * Return demangled unless it's not mangled 185 */ 186 char *getDemangled(xmlNode *node) 187 { 188 char *demangled = xmlGetProp(node, "demangled"); 189 if (!demangled) demangled = xmlGetProp(node, "name"); 190 return demangled; 191 } 192 193 /** 168 194 * Do we need to parse this node? 169 195 */ … … 172 198 // only parse it if it's in the file we're parsing and it's demanglable 173 199 char* file = xmlGetProp(node, "file"); 174 char* demangled = xmlGetProp(node, "demangled");200 char* demangled = getDemangled(node); 175 201 char* incomplete = xmlGetProp(node, "incomplete"); 176 202 … … 356 382 { 357 383 char[] name = toString(xmlGetProp(node, "name")); 358 char[] mangled = toString( xmlGetProp(node, "mangled"));359 char[] demangled = toString( xmlGetProp(node, "demangled"));384 char[] mangled = toString(getMangled(node)); 385 char[] demangled = toString(getDemangled(node)); 360 386 361 387 // parse for base classes … … 401 427 { 402 428 char[] name = toString(xmlGetProp(node, "name")); 403 char[] mangled = toString( xmlGetProp(node, "mangled"));404 char[] demangled = toString( xmlGetProp(node, "demangled"));429 char[] mangled = toString(getMangled(node)); 430 char[] demangled = toString(getDemangled(node)); 405 431 406 432 dtail ~= "struct " ~ name ~ " {\n"; … … 420 446 ParsedType type = parseType(stype, node.parent); 421 447 char[] name = toString(xmlGetProp(node, "name")); 422 char[] mangled = toString( xmlGetProp(node, "mangled"));448 char[] mangled = toString(getMangled(node)); 423 449 424 450 if (outputC) { … … 458 484 cout ~= "}\n"; 459 485 } else { 460 char[] demangled = toString( xmlGetProp(node, "demangled"));486 char[] demangled = toString(getDemangled(node)); 461 487 462 488 // if it's a const, don't make the set … … 511 537 char[] aname = toString(xmlGetProp(curNode, "name")); 512 538 if (aname == "") aname = "_" ~ toString(onParam); 539 aname = safeName(aname); 513 540 514 541 if (Dargs != "") { … … 575 602 char[] Dargs, char[] Deargs, char[] Cargs, char[] Dcall, char[] Ccall) 576 603 { 604 if (outputC) { 605 dhead ~= "extern (C) " ~ type.DType ~ " " ~ demangled ~ "(" ~ Deargs ~ ");\n"; 606 return; 607 } 608 577 609 dhead ~= "extern (C) " ~ type.DType ~ " _BCD_" ~ mangled ~ "(" ~ Deargs ~ ");\n"; 578 610 … … 612 644 { 613 645 char[] name = toString(xmlGetProp(node, "name")); 614 char[] mangled = toString( xmlGetProp(node, "mangled"));646 char[] mangled = toString(getMangled(node)); 615 647 ParsedType type = parseType(toString(xmlGetProp(node, "returns")), 616 648 node.parent); … … 632 664 { 633 665 char[] name = toString(xmlGetProp(node, "name")); 634 char[] mangled = toString( xmlGetProp(node, "mangled"));635 char[] demangled = toString( xmlGetProp(node, "demangled"));666 char[] mangled = toString(getMangled(node)); 667 char[] demangled = toString(getDemangled(node)); 636 668 ParsedType type = parseType(toString(xmlGetProp(node, "returns")), 637 669 node.parent); … … 658 690 void parse_Constructor(xmlNode *node) 659 691 { 692 if (outputC) return; // no constructors in C 693 660 694 char[] name = toString(xmlGetProp(node, "name")); 661 char[] mangled = toString( xmlGetProp(node, "mangled"));695 char[] mangled = toString(getMangled(node)); 662 696 663 697 while (find(mangled, "*INTERNAL*") != -1) { … … 846 880 847 881 } else if (nname == "Struct" || nname == "Class") { 848 ParsedType pt; 849 char[] className = toString(xmlGetProp(curNode, "demangled")); 850 851 // can't have incomplete types in D, so call it a BoundClass in D 852 if (xmlGetProp(curNode, "incomplete")) { 853 pt = new ParsedType(className ~ " *", 854 "bcd.bind.BoundClass"); 882 char[] className = toString(getDemangled(curNode)); 883 884 if (outputC) { 885 if (xmlGetProp(curNode, "incomplete")) { 886 return new ParsedType("struct " ~ className, 887 "void"); 888 } else { 889 return new ParsedType("struct " ~ className, 890 toString(xmlGetProp(curNode, "name"))); 891 } 855 892 } else { 856 pt = new ParsedType(className ~ " *", 857 toString(xmlGetProp(curNode, "name"))); 858 } 859 if (outputC) pt.CType = "struct " ~ pt.CType; 860 pt.className = className; 861 pt.isClass = true; 862 return pt; 893 ParsedType pt; 894 895 // can't have incomplete types in D, so call it a BoundClass in D 896 if (xmlGetProp(curNode, "incomplete")) { 897 pt = new ParsedType(className ~ " *", 898 "bcd.bind.BoundClass"); 899 } else { 900 pt = new ParsedType(className ~ " *", 901 toString(xmlGetProp(curNode, "name"))); 902 } 903 pt.className = className; 904 pt.isClass = true; 905 return pt; 906 } 863 907 864 908 } else if (nname == "CvQualifiedType") { … … 881 925 882 926 cout ~= "typedef " ~ pt.CType ~ " _BCD_" ~ aname ~ ";\n"; 883 dhead ~= "alias " ~ pt.DType ~ " " ~ aname ~ ";\n"; 884 } 885 886 ParsedType rpt = new ParsedType("_BCD_" ~ aname, aname); 927 928 if (files[toString(xmlGetProp(curNode, "file"))] == curFile) 929 dhead ~= "alias " ~ pt.DType ~ " " ~ aname ~ ";\n"; 930 } 931 932 ParsedType rpt = new ParsedType("_BCD_" ~ aname, pt.DType); 887 933 rpt.isClass = pt.isClass; 888 934 rpt.isFunction = pt.isFunction; … … 944 990 if (toString(xmlGetProp(pnode, "id")) == scontext) { 945 991 // FIXME: temporary kludge 946 char[] demangled = toString( xmlGetProp(pnode, "demangled"));992 char[] demangled = toString(getDemangled(curNode)); 947 993 if (demangled != "" && demangled != "::") 948 994 return new ParsedType( 949 toString( xmlGetProp(pnode, "demangled")) ~ "::" ~995 toString(getDemangled(curNode)) ~ "::" ~ 950 996 toString(xmlGetProp(curNode, "name")), "int"); 951 997 }
