use libc::{c_char, c_void, c_int, c_uint, size_t};
#[link(name = "xml2")]
extern "C" {
pub fn xmlSaveFile(filename: *const c_char, cur: *mut c_void) -> c_int;
pub fn xmlNewDoc(version: *const c_char) -> *mut c_void;
pub fn xmlFreeDoc(cur: *mut c_void);
pub fn xmlNewDocNode(doc: *mut c_void, ns: *mut c_void, name: *const c_char, content: *const c_char) -> *mut c_void;
pub fn xmlNewDocText(doc: *mut c_void, content: *const c_char) -> *mut c_void;
pub fn xmlNewNs(node: *mut c_void, href: *const c_char, prefix: *const c_char) -> *mut c_void;
pub fn xmlNewChild(parent: *mut c_void, ns: *mut c_void, name: *const c_char, content: *const c_char) -> *mut c_void;
pub fn xmlNewTextChild(parent: *mut c_void, ns: *mut c_void, name: *const c_char, content: *const c_char) -> *mut c_void;
pub fn xmlNewText(parent: *mut c_void, content: *const c_char) -> *mut c_void;
pub fn xmlNewDocPI(doc: *mut c_void, name: *const c_char, content: *const c_char) -> *mut c_void;
pub fn xmlDocGetRootElement(doc: *const c_void) -> *mut c_void;
pub fn xmlDocSetRootElement(doc: *const c_void, root: *const c_void) -> *mut c_void;
pub fn xmlGetProp(node: *const c_void, name: *const c_char) -> *const c_char;
pub fn xmlNextSibling(cur: *const c_void) -> *mut c_void;
pub fn xmlPrevSibling(cur: *const c_void) -> *mut c_void;
pub fn xmlAddChild(cur: *const c_void, new: *const c_void) -> *mut c_void;
pub fn xmlAddPrevSibling(cur: *const c_void, new: *const c_void) -> *mut c_void;
pub fn xmlAddNextSibling(cur: *const c_void, new: *const c_void) -> *mut c_void;
pub fn xmlGetFirstChild(cur: *const c_void) -> *mut c_void;
pub fn xmlGetParent(cur: *const c_void) -> *mut c_void;
pub fn xmlNodeGetName(cur: *const c_void) -> *const c_char;
pub fn xmlNodeGetContentPointer(cur: *const c_void) -> *const c_char;
pub fn xmlNodeSetContent(node: *mut c_void, cur: *const c_char);
pub fn xmlGetNodeType(cur: *const c_void) -> c_int;
pub fn xmlBufferCreate() -> *mut c_void;
pub fn xmlBufferFree(buf: *mut c_void);
pub fn xmlBufferContent(buf: *mut c_void) -> *const c_char;
pub fn xmlNodeDump(buf: *mut c_void, doc: *mut c_void, node: *mut c_void, indent: c_int, disable_format: c_int);
pub fn xmlDocDumpMemoryEnc(doc: *mut c_void, receiver: *mut *mut c_char, size: *const c_int, encoding: *const c_char, format: c_int);
pub fn xmlReadFile(filename: *const c_char, encoding: *const c_char, options: c_uint) -> *mut c_void;
pub fn htmlReadFile(filename: *const c_char, encoding: *const c_char, options: c_uint) -> *mut c_void;
pub fn htmlReadDoc(html_string: *const c_char, url: *const c_char, encoding: *const c_char, options: c_uint) -> *mut c_void;
pub fn xmlReadDoc(xml_string: *const c_char, url: *const c_char, encoding: *const c_char, options: c_uint) -> *mut c_void;
pub fn htmlNewParserCtxt() -> *mut c_void;
pub fn htmlCtxtReadDoc(ctxt: *mut c_void, html_string: *const c_char, url: *mut c_void, encoding: *const c_char, options: c_uint) -> *mut c_void;
pub fn xmlInitParser();
pub fn xmlCleanupParser();
pub fn xmlInitGlobals();
pub fn xmlCleanupGlobals();
pub fn xmlKeepBlanksDefault(flag: c_uint) -> c_uint;
pub fn htmlFreeParserCtxt(ctxt: *mut c_void);
pub fn htmlWellFormed(ctxt: *mut c_void) -> c_int;
pub fn xmlXPathFreeContext(ctxt: *mut c_void);
pub fn xmlXPathNewContext(doc: *mut c_void) -> *mut c_void;
pub fn xmlXPathEvalExpression(str: *const c_char, ctxt: *mut c_void) -> *mut c_void;
pub fn xmlXPathCastToString(val: *const c_void) -> *const c_char;
pub fn xmlXPathObjectNumberOfNodes(val: *const c_void) -> c_int;
pub fn xmlXPathObjectGetNode(val: *const c_void, index: size_t) -> *mut c_void;
pub fn xmlFreeXPathObject(val: *const c_void);
pub fn setWellFormednessHandler(ctxt: *mut c_void);
}