less verbose on difference cleanup fixed xmlCleanupParser() doc work on

* check-xinclude-test-suite.py: less verbose on difference
* libxml.spec.in: cleanup
* parser.c: fixed xmlCleanupParser() doc
* doc/Makefile.am doc/apibuild.py doc/libxml2-api.xml
  doc/examples/Makefile.am doc/examples/example1.c
  doc/examples/examples.xml doc/examples/index.py
  doc/examples/test1.xml: work on adding C examples and
  generating automated information about those. examples.xml
  is autogenerated describing the examples.
* example/Makefile.am: cleanup
Daniel
diff --git a/doc/apibuild.py b/doc/apibuild.py
index 912ae8e..520ef09 100755
--- a/doc/apibuild.py
+++ b/doc/apibuild.py
@@ -50,12 +50,14 @@
     return raw
 
 class identifier:
-     def __init__(self, name, module=None, type=None, info=None, extra=None):
+     def __init__(self, name, module=None, type=None, lineno = 0,
+                  info=None, extra=None):
          self.name = name
 	 self.module = module
 	 self.type = type
 	 self.info = info
 	 self.extra = extra
+	 self.lineno = lineno
 	 self.static = 0
 
      def __repr__(self):
@@ -79,9 +81,26 @@
          self.info = info
      def set_extra(self, extra):
          self.extra = extra
+     def set_lineno(self, lineno):
+         self.lineno = lineno
      def set_static(self, static):
          self.static = static
 
+     def get_name(self):
+         return self.name
+     def get_module(self):
+         return self.module
+     def get_type(self):
+         return self.type
+     def get_info(self):
+         return self.info
+     def get_lineno(self):
+         return self.lineno
+     def get_extra(self):
+         return self.extra
+     def get_static(self):
+         return self.static
+
      def update(self, module, type = None, info = None, extra=None):
          if module != None and self.module == None:
 	     self.set_module(module)
@@ -95,7 +114,7 @@
 
 class index:
      def __init__(self, name = "noname"):
-         self.name = name;
+         self.name = name
          self.identifiers = {}
          self.functions = {}
 	 self.variables = {}
@@ -106,15 +125,32 @@
 	 self.macros = {}
 	 self.references = {}
 
-     def add(self, name, module, static, type, info=None, extra=None):
+     def add_ref(self, name, module, static, type, lineno, info=None, extra=None):
          if name[0:2] == '__':
 	     return None
          d = None
          try:
 	    d = self.identifiers[name]
-	    d.update(module, type, info, extra)
+	    d.update(module, type, lineno, info, extra)
 	 except:
-	    d = identifier(name, module, type, info, extra)
+	    d = identifier(name, module, type, lineno, info, extra)
+	    self.identifiers[name] = d
+
+	 if d != None and static == 1:
+	     d.set_static(1)
+
+	 if d != None and name != None and type != None:
+	     self.references[name] = d
+
+     def add(self, name, module, static, type, lineno, info=None, extra=None):
+         if name[0:2] == '__':
+	     return None
+         d = None
+         try:
+	    d = self.identifiers[name]
+	    d.update(module, type, lineno, info, extra)
+	 except:
+	    d = identifier(name, module, type, lineno, info, extra)
 	    self.identifiers[name] = d
 
 	 if d != None and static == 1:
@@ -461,10 +497,23 @@
 	 self.top_comment = ""
 	 self.last_comment = ""
 	 self.comment = None
+	 self.collect_ref = 0
+
+     def collect_references(self):
+         self.collect_ref = 1
 
      def lineno(self):
          return self.lexer.getlineno()
 
+     def index_add(self, name, module, static, type, info=None, extra = None):
+         self.index.add(name, module, static, type, self.lineno(),
+	                info, extra)
+
+     def index_add_ref(self, name, module, static, type, info=None,
+                       extra = None):
+         self.index.add_ref(name, module, static, type, self.lineno(),
+	                info, extra)
+
      def error(self, msg, token=-1):
          print "Parse Error: " + msg
 	 if token != -1:
@@ -679,7 +728,7 @@
 	     if token == None:
 	         return None
 	     if token[0] == 'preproc':
-		 self.index.add(token[1], self.filename, not self.is_header,
+		 self.index_add(token[1], self.filename, not self.is_header,
 		                "include")
 		 return self.lexer.token()
 	     return token
@@ -701,7 +750,7 @@
                  except:
                      pass
                  info = self.parseMacroComment(name, not self.is_header)
-		 self.index.add(name, self.filename, not self.is_header,
+		 self.index_add(name, self.filename, not self.is_header,
 		                "macro", info)
 		 return token
 	 token = self.lexer.token()
@@ -760,15 +809,15 @@
 		     type = string.split(type, '(')[0]
 		     d = self.mergeFunctionComment(name,
 			     ((type, None), signature), 1)
-		     self.index.add(name, self.filename, not self.is_header,
+		     self.index_add(name, self.filename, not self.is_header,
 				    "functype", d)
 		 else:
 		     if base_type == "struct":
-			 self.index.add(name, self.filename, not self.is_header,
+			 self.index_add(name, self.filename, not self.is_header,
 					"struct", type)
 			 base_type = "struct " + name
 	             else:
-			 self.index.add(name, self.filename, not self.is_header,
+			 self.index_add(name, self.filename, not self.is_header,
 		                    "typedef", type)
 		 token = self.token()
 	     else:
@@ -806,7 +855,29 @@
 	         token = self.token()
 		 return token
 	     else:
-	         token = self.token()
+	         if self.collect_ref == 1:
+		     oldtok = token
+		     token = self.token()
+		     if oldtok[0] == "name" and oldtok[1][0:3] == "xml":
+		         if token[0] == "sep" and token[1] == "(":
+			     self.index_add_ref(oldtok[1], self.filename,
+			                        0, "function")
+			     token = self.token()
+			 elif token[0] == "name":
+			     token = self.token()
+			     if token[0] == "sep" and (token[1] == ";" or
+			        token[1] == "," or token[1] == "="):
+				 self.index_add_ref(oldtok[1], self.filename,
+						    0, "type")
+		     elif oldtok[0] == "name" and oldtok[1][0:4] == "XML_":
+			 self.index_add_ref(oldtok[1], self.filename,
+					    0, "typedef")
+		     elif oldtok[0] == "name" and oldtok[1][0:7] == "LIBXML_":
+			 self.index_add_ref(oldtok[1], self.filename,
+					    0, "typedef")
+			 
+		 else:
+		     token = self.token()
 	 return token
 
      #
@@ -1009,7 +1080,7 @@
 	     else:
 	         enum_type = token[1]
 	     for enum in self.enums:
-		 self.index.add(enum[0], self.filename,
+		 self.index_add(enum[0], self.filename,
 			        not self.is_header, "enum",
 			        (enum[1], enum[2], enum_type))
 	     return token
@@ -1207,10 +1278,10 @@
 		     self.comment = None
 		     token = self.token()
 		     if type == "struct":
-		         self.index.add(self.name, self.filename,
+		         self.index_add(self.name, self.filename,
 			      not self.is_header, "struct", self.struct_fields)
 		     else:
-			 self.index.add(self.name, self.filename,
+			 self.index_add(self.name, self.filename,
 			      not self.is_header, "variable", type)
 		     break
 		 elif token[1] == "(":
@@ -1221,19 +1292,19 @@
 		     if token[0] == "sep" and token[1] == ";":
 		         d = self.mergeFunctionComment(self.name,
 				 ((type, None), self.signature), 1)
-			 self.index.add(self.name, self.filename, static,
+			 self.index_add(self.name, self.filename, static,
 			                "function", d)
 			 token = self.token()
 		     elif token[0] == "sep" and token[1] == "{":
 		         d = self.mergeFunctionComment(self.name,
 				 ((type, None), self.signature), static)
-			 self.index.add(self.name, self.filename, static,
+			 self.index_add(self.name, self.filename, static,
 			                "function", d)
 			 token = self.token()
 			 token = self.parseBlock(token);
 		 elif token[1] == ',':
 		     self.comment = None
-		     self.index.add(self.name, self.filename, static,
+		     self.index_add(self.name, self.filename, static,
 		                    "variable", type)
 		     type = type_orig
 		     token = self.token()