Orb/python/doxygen/guidiser.py
changeset 1 82f11024044a
parent 0 42188c7ea2d9
equal deleted inserted replaced
0:42188c7ea2d9 1:82f11024044a
    16 import os
    16 import os
    17 import stat
    17 import stat
    18 import sys
    18 import sys
    19 import shutil
    19 import shutil
    20 import xml
    20 import xml
       
    21 import logging
       
    22 from optparse import OptionParser, check_choice
    21 from xml.etree import ElementTree as etree
    23 from xml.etree import ElementTree as etree
    22 from cStringIO import StringIO
    24 from cStringIO import StringIO
    23 from lib import scan, main, xml_decl, doctype_identifier
    25 from lib import scan, xml_decl, doctype_identifier, XmlParser
       
    26 from doxyidredirect import DoxyIdRedirect, ExceptionDoxyIdRedirectLookup
    24 
    27 
    25 
    28 
    26 __version__ = "0.1"
    29 __version__ = "0.1"
    27 
       
    28 
    30 
    29 class Guidiser(object):
    31 class Guidiser(object):
    30     """
    32     """
    31     A simple class that parses an xml file and converts the values of all
    33     A simple class that parses an xml file and converts the values of all
    32     id, href and keyref attributes to a 'GUID'.
    34     id, href and keyref attributes to a 'GUID'.
    37     >>> oldroot.attrib['id']
    39     >>> oldroot.attrib['id']
    38     'CP_class'
    40     'CP_class'
    39     >>> root.attrib['id']
    41     >>> root.attrib['id']
    40     'GUID-25825EC4-341F-3EA4-94AA-7DCE380E6D2E'
    42     'GUID-25825EC4-341F-3EA4-94AA-7DCE380E6D2E'
    41     """
    43     """
    42     def __init__(self, namespace='www.nokia.com'):
    44     # Publishing targets
       
    45     PT_MODE = 0
       
    46     PT_DITAOT = 1
       
    47     PUBLISHING_TARGETS = (PT_MODE, PT_DITAOT)
       
    48     
       
    49     def __init__(self, namespace='www.nokia.com', publishing_target=0, xmlparser=XmlParser(), doxyidredirect=DoxyIdRedirect(None)):
    43         self.namespace = self._get_namespace(namespace)
    50         self.namespace = self._get_namespace(namespace)
    44     
    51         self.set_publishing_target(publishing_target)
       
    52         self.xmlparser = xmlparser
       
    53         self.doxyidredirect = doxyidredirect
       
    54         
       
    55     def set_publishing_target(self, target):
       
    56         if not target in self.PUBLISHING_TARGETS:
       
    57             raise Exception('Invalid Publishing Target \"%s\"' % target)
       
    58         self._publishing_target = target
       
    59         
       
    60     def get_publishing_target(self):
       
    61         return self._publishing_target
       
    62         
    45     def _get_namespace(self, namespace, LEN_BYTES=16):
    63     def _get_namespace(self, namespace, LEN_BYTES=16):
    46         if len(namespace) < LEN_BYTES:
    64         if len(namespace) < LEN_BYTES:
    47             namespace = namespace + (' ' * (LEN_BYTES - len(namespace)))
    65             namespace = namespace + (' ' * (LEN_BYTES - len(namespace)))
    48         return uuid.UUID(bytes=namespace[:LEN_BYTES])
    66         return uuid.UUID(bytes=namespace[:LEN_BYTES])
    49     
    67     
    50     def _get_guid(self, id):
    68     def _get_guid(self, fqn):
    51         # Sometimes need to remove filepath and hash if id is an href
    69         return ('GUID-%s' % (uuid.uuid3(self.namespace, fqn))).upper()
    52         id = id.split('#')[-1]
    70                         
    53         # If id is an href and points to a ditamap, then the id of the map is filename minus ".ditamap"
    71     def _guidise_href(self, href, tag):
    54         if id.endswith(".ditamap"):
    72         if tag == "xref":
    55             id = id[:-8]
    73             return self._guidise_xref_href(href)
    56         return ('GUID-%s' % (uuid.uuid3(self.namespace, id))).upper()
    74         else:
       
    75             # Tag is a topicref or topicref descended element
       
    76             return self._guidise_topicref_href(href)
       
    77     
       
    78     def _guidise_topicref_href(self, href):
       
    79         # Guidise an href that points to a ditamap
       
    80         # NOTE: the id of the map is assumed to be the same as the filename
       
    81         # (minus the ".ditamap" extension)
       
    82         if href.endswith(".ditamap"):
       
    83             guid = self._get_guid(href[:-len(".ditamap")])
       
    84             if self.get_publishing_target() == self.PT_DITAOT:
       
    85                 guid += ".ditamap"
       
    86             return guid
       
    87         
       
    88         # Guidise an href that points to a topic
       
    89         # NOTE: Doxygen currently outputs "filepath#topicid" for topicref hrefs
       
    90         # the "#topicid" is redundant (as topicrefs can't reference below the topic level)
       
    91         # so will probably be removed from doxygen output at some point.
       
    92         filename = href.split('#')[0]
       
    93         id = os.path.splitext(filename)[0]
       
    94         fqn = None
       
    95         try:
       
    96             filename, fqn = self.doxyidredirect.lookupId(id)
       
    97         except ExceptionDoxyIdRedirectLookup, err:
       
    98             logging.error("Could not file id %s in DoxyIdRedirect\n" % id)
       
    99         #if the id was not found just guidise the id
       
   100         #this is just to make the id unique for mode
       
   101         guid = self._get_guid(fqn) if fqn else self._get_guid(id)
       
   102         if self.get_publishing_target() == self.PT_DITAOT:
       
   103             guid+=".xml"
       
   104         return guid
       
   105     
       
   106     def _guidise_xref_href(self, href):
       
   107         # Don't guidise references without hashes. Assume they are filepaths
       
   108         # to files other than ditatopics
       
   109         if href.find('#') == -1:
       
   110             return href
       
   111 			
       
   112         # Doxygen currently outputs hrefs in the format autolink_8cpp.xml#autolink_8cpp_1ae0e289308b6d2cbb5c86e753741981dc
       
   113         # The right side of the # is not enough to extract the fully qualified name of the function because it is md5ed
       
   114         # Send the right side to doxyidredirect to get the fqn of the function			
       
   115         filename, id = href.split('#')
       
   116         try:
       
   117             fqn = self.doxyidredirect.lookupId(id)[1]
       
   118         except ExceptionDoxyIdRedirectLookup, err:
       
   119             logging.error("No API name for element id %s, guidising id instead" % id)
       
   120             fqn = None
       
   121         guid = self._get_guid(fqn) if fqn else self._get_guid(id)
       
   122 
       
   123         basename, ext = os.path.splitext(filename)
       
   124         try:
       
   125             base_guid = self._get_guid(self.doxyidredirect.lookupId(basename)[1])
       
   126         except ExceptionDoxyIdRedirectLookup, e:
       
   127             base_guid = self._get_guid(basename)
       
   128             
       
   129         if self.get_publishing_target() == self.PT_DITAOT:
       
   130             return base_guid + ext + "#" + guid
       
   131         else:
       
   132             return guid
       
   133     
       
   134     def _guidise_id(self, id):
       
   135         try:
       
   136             filename, fqn = self.doxyidredirect.lookupId(id)
       
   137             return self._get_guid(fqn)
       
   138         except ExceptionDoxyIdRedirectLookup, err:
       
   139             logging.debug("Could not file id %s in DoxyIdRedirect\n" % id)
       
   140             return self._get_guid(id)
    57     
   141     
    58     def guidise(self, xmlfile):
   142     def guidise(self, xmlfile):
    59         def _update_attrib(el, key):
   143         #WORKAROUND: ElementTree provides no function to set prefixes and makes up its own if they are not set (ns0, ns1, ns2)
    60             child.attrib[key] = self._get_guid(child.attrib[key])
   144         etree._namespace_map["http://dita.oasis-open.org/architecture/2005/"] = 'ditaarch'
    61         try:
   145         try:
    62             root = etree.parse(xmlfile).getroot()
   146             root = etree.parse(xmlfile).getroot()
    63         except xml.parsers.expat.ExpatError, e:
   147         except xml.parsers.expat.ExpatError, e:
    64             sys.stderr.write("ERROR: %s could not be parser: %s\n" % (xmlfile, str(e)))
   148             logging.error("%s could not be parsed: %s\n" % (xmlfile, str(e)))
    65             return None
   149             return None
    66         for child in root.getiterator():
   150         for child in root.getiterator():
    67             for key in [key for key in ('id', 'href', 'keyref') if key in child.attrib]:
   151             for key in [key for key in ('id', 'href', 'keyref') if key in child.attrib]:
    68                 _update_attrib(child, key) 
   152                 if key == 'id':
       
   153                     child.attrib['id'] = self._guidise_id(child.attrib['id'])
       
   154                 elif key == 'href':
       
   155                     if 'format' in child.attrib and child.attrib['format'] == 'html':
       
   156                         continue
       
   157                     else:
       
   158                         base_dir = os.path.dirname(xmlfile) if isinstance(xmlfile, str) else ""
       
   159                         child.attrib['href'] = self._guidise_href(child.attrib['href'], child.tag)
       
   160                 elif key == 'keyref':
       
   161                     child.attrib['keyref'] = self._get_guid(child.attrib['keyref'])                    
       
   162 
    69         return root
   163         return root
    70 
   164     
    71 
   165 
    72 def updatefiles(xmldir):
   166 def updatefiles(xmldir, publishing_target=Guidiser.PT_MODE):
    73     guidiser = Guidiser()
   167     guidiser = Guidiser(publishing_target=publishing_target, doxyidredirect=DoxyIdRedirect(xmldir))
    74     for filepath in scan(xmldir):
   168     for filepath in scan(xmldir):
       
   169         logging.debug('Guidising file \"%s\"' % filepath)
    75         root = guidiser.guidise(filepath)
   170         root = guidiser.guidise(filepath)
    76         if root is not None:
   171         if root is not None:
    77             os.chmod(filepath, stat.S_IWRITE)
   172             try:
       
   173                 os.chmod(filepath, stat.S_IWRITE)
       
   174             except Exception, e:
       
   175                 logging.error("Could not make file \"%s\" writable, error was \"%s\"" % (filepath, e))
       
   176                 continue            
    78             with open(filepath, 'w') as f:
   177             with open(filepath, 'w') as f:
    79                 f.write(xml_decl()+'\n')
   178                 f.write(xml_decl()+'\n')
    80                 f.write(doctype_identifier(root.tag)+'\n')
   179                 try:
       
   180                     doc_id = doctype_identifier(root.tag)
       
   181                 except Exception, e:
       
   182                     logging.error("Could not write doctype identifier for file \"%s\", error was \"%s\""
       
   183                                   %(filepath, e))
       
   184                 else:
       
   185                     f.write(doc_id+'\n')
    81                 f.write(etree.tostring(root))        
   186                 f.write(etree.tostring(root))        
       
   187                 f.close()
       
   188                 
       
   189 def main():
       
   190     usage = "usage: %prog [options] <Path to the XML content>"
       
   191     parser = OptionParser(usage, version='%prog ' + __version__)
       
   192     parser.add_option("-p", dest="publishing_target", type="choice", choices=["mode", "ditaot"], default="mode", 
       
   193                       help="Publishing Target: mode|ditaot, [default: %default]")
       
   194     parser.add_option("-l", "--loglevel", type="int", default=30, help="Log Level (debug=10, info=20, warning=30, [error=40], critical=50)")      
       
   195     (options, args) = parser.parse_args()
       
   196     if len(args) < 1:
       
   197         parser.print_help()
       
   198         parser.error("Please supply the path to the XML content")
       
   199     if options.loglevel:
       
   200         logging.basicConfig(level=options.loglevel)
       
   201     pub_target = Guidiser.PT_MODE if (options.publishing_target == "mode") else Guidiser.PT_DITAOT  
       
   202     updatefiles(args[0], pub_target)
    82 
   203 
    83 
   204 
    84 if __name__ == '__main__':
   205 if __name__ == '__main__':
    85     sys.exit(main(updatefiles, __version__))
   206     sys.exit(main())
       
   207 
    86     
   208     
    87 ######################################
   209 ######################################
    88 # Test code
   210 # Test code
    89 ######################################
   211 ######################################
    90 
   212 
       
   213 class StubDoxyIdRedirect(object):
       
   214     def __init__(self, theDir):
       
   215         self.dict = {'struct_e_sock_1_1_t_addr_update':('struct_e_sock_1_1_t_addr_update.xml', 'ESock::TAddrUpdate'),
       
   216         'class_c_active_scheduler_1_1_t_cleanup_bundle':('class_c_active_scheduler_1_1_t_cleanup_bundle.xml', 'CActiveScheduler::TCleanupBundle'),
       
   217         'class_test':('class_test.xml', 'Test'),
       
   218         'class_test_1a99f2bbfac6c95612322b0f10e607ebe5':('cxxclass.xml', 'Test')}
       
   219     
       
   220     def lookupId(self, doxy_id):
       
   221         try:
       
   222             filename, fqn = self.dict[doxy_id]
       
   223             return (filename, fqn)
       
   224         except Exception, e:
       
   225             raise ExceptionDoxyIdRedirectLookup("StubException: %s" % e)
       
   226 
       
   227 
    91 class TestGuidiser(unittest.TestCase):
   228 class TestGuidiser(unittest.TestCase):
    92     def setUp(self):
   229     def setUp(self):
    93         self.guidiser = Guidiser()
   230         self.guidiser = Guidiser(publishing_target=Guidiser.PT_MODE, doxyidredirect=StubDoxyIdRedirect('adir'))
       
   231         self.test_dir = "guidiser_test_dir"
       
   232         
       
   233     def _create_test_data(self):
       
   234         f = open("struct_e_sock_1_1_t_addr_update.xml", "w")
       
   235         f.write(struct_e_sock_1_1_t_addr_update)
       
   236         f.close()
       
   237         os.mkdir(self.test_dir)
       
   238         f = open(os.path.join(self.test_dir, "struct_e_sock_1_1_t_addr_update.xml"), "w")
       
   239         f.write(struct_e_sock_1_1_t_addr_update)
       
   240         f.close()        
       
   241         
       
   242     def _cleanup_test_data(self):
       
   243         os.remove("struct_e_sock_1_1_t_addr_update.xml")
       
   244         shutil.rmtree(self.test_dir)
       
   245         
       
   246     def test_i_can_get_and_set_a_PT(self):
       
   247         self.assertEqual(self.guidiser.get_publishing_target(), Guidiser.PT_MODE)
       
   248         self.guidiser.set_publishing_target(Guidiser.PT_DITAOT)
       
   249         self.assertEqual(self.guidiser.get_publishing_target(), Guidiser.PT_DITAOT)
       
   250         
       
   251     def test_i_raise_an_exception_when_trying_to_set_an_invalid_PT(self):
       
   252         self.assertRaises(Exception, self.guidiser.set_publishing_target, 2) 
    94         
   253         
    95     def test_i_update_root_elements_id(self):        
   254     def test_i_update_root_elements_id(self):        
    96         root = self.guidiser.guidise(StringIO(cxxclass))
   255         root = self.guidiser.guidise(StringIO(cxxclass))
    97         self.assertTrue(root.attrib['id'] == "GUID-25825EC4-341F-3EA4-94AA-7DCE380E6D2E")
   256         self.assertEqual(root.attrib['id'], "GUID-56866D87-2CE9-31EA-8FA7-F4275FDBCB93")
    98 
   257 
    99     def test_i_continue_if_passed_an_invalid_file(self):
   258     def test_i_continue_if_passed_an_invalid_file(self):
   100         try:
   259         try:
   101             self.guidiser.guidise(StringIO("<cxxclass><argh</cxxclass>"))
   260             self.guidiser.guidise(StringIO("<cxxclass><argh</cxxclass>"))
   102         except Exception:
   261         except Exception:
   140     def test_based_toplevel_class(self):
   299     def test_based_toplevel_class(self):
   141         self.assertTrue(self.guidiser._get_guid("RConnection") ==
   300         self.assertTrue(self.guidiser._get_guid("RConnection") ==
   142                         "GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD" 
   301                         "GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD" 
   143                        )
   302                        )
   144         
   303         
   145     def test_based_toplevel_class_jarnos_output(self):
       
   146         self.assertTrue(self.guidiser._get_guid("RConnection") ==
       
   147                          "GUID-01926597-E8A1-35E5-A221-B4530CF1783F"
       
   148                          )
       
   149         
       
   150     def test_target_id(self):
   304     def test_target_id(self):
   151         self.assertTrue(self.guidiser._get_guid("ESock::TAddrUpdate") ==
   305         self.assertTrue(self.guidiser._get_guid("ESock::TAddrUpdate") ==
   152                          "GUID-E72084E6-C1CE-3388-93F7-5B7A3F506C3B"
   306                          "GUID-E72084E6-C1CE-3388-93F7-5B7A3F506C3B"
   153                          )
   307                          )
   154         
   308         
   155     def test_map_href(self):
   309     def test_topicref_href_to_topic_for_mode(self):
   156         self.assertTrue(self.guidiser._get_guid("ESock::struct_e_sock_1_1_t_addr_update.xml#ESock::TAddrUpdate") ==
   310         self.assertEquals(self.guidiser._guidise_href("struct_e_sock_1_1_t_addr_update.xml#struct_e_sock_1_1_t_addr_update", "topicref"),
   157                  "GUID-E72084E6-C1CE-3388-93F7-5B7A3F506C3B"
   311                  "GUID-E72084E6-C1CE-3388-93F7-5B7A3F506C3B"
   158                  )
   312                  )
   159                 
   313         
   160     def test_map_href_to_another_map(self):
   314     def test_topicref_href_to_topic_for_ditaot(self):
   161         self.assertTrue(self.guidiser._get_guid("ziplib.ditamap") ==
   315         self.guidiser.set_publishing_target(Guidiser.PT_DITAOT)
       
   316         self._create_test_data()
       
   317         try:
       
   318             self.assertEquals(self.guidiser._guidise_href("struct_e_sock_1_1_t_addr_update.xml#struct_e_sock_1_1_t_addr_update", "topicref"),
       
   319                               "GUID-E72084E6-C1CE-3388-93F7-5B7A3F506C3B.xml")
       
   320         finally:
       
   321             self._cleanup_test_data()            
       
   322                         
       
   323     def test_topicref_href_to_map_for_mode(self):
       
   324         self.assertEquals(self.guidiser._guidise_href("ziplib.ditamap", "topicref"),
   162                  "GUID-7C7A889C-AE2B-31FC-A5DA-A87019E1251D"
   325                  "GUID-7C7A889C-AE2B-31FC-A5DA-A87019E1251D"
   163                  )
   326                  )
   164         
   327         
       
   328     def test_topicref_href_to_map_for_ditaot(self):
       
   329         self.guidiser.set_publishing_target(Guidiser.PT_DITAOT)
       
   330         self.assertEquals(self.guidiser._guidise_href("ziplib.ditamap", "topicref"),
       
   331                  "GUID-7C7A889C-AE2B-31FC-A5DA-A87019E1251D.ditamap"
       
   332                  )
       
   333                 
       
   334     def test_xref_href_to_topic_in_same_file_for_mode(self):
       
   335         self.assertEquals(self.guidiser._guidise_href("struct_e_sock_1_1_t_addr_update.xml#struct_e_sock_1_1_t_addr_update", "xref"),
       
   336                  "GUID-E72084E6-C1CE-3388-93F7-5B7A3F506C3B"
       
   337                  )
       
   338 
       
   339     def test_xref_href_to_topic_in_same_file_for_ditaot(self):
       
   340         self.guidiser.set_publishing_target(Guidiser.PT_DITAOT)
       
   341         self.assertEquals(self.guidiser._guidise_href("struct_e_sock_1_1_t_addr_update.xml#struct_e_sock_1_1_t_addr_update", "xref"),
       
   342                  "GUID-E72084E6-C1CE-3388-93F7-5B7A3F506C3B.xml#GUID-E72084E6-C1CE-3388-93F7-5B7A3F506C3B"
       
   343                  )
       
   344 				 
       
   345     def test_xref_href_to_some_other_file_on_file_system(self):
       
   346         self.guidiser.set_publishing_target(Guidiser.PT_DITAOT)
       
   347         self.assertEquals(self.guidiser._guidise_href("../../documentation/RFCs/rfc3580.txt", "xref"),
       
   348                  "../../documentation/RFCs/rfc3580.txt"
       
   349                  )
       
   350     
       
   351     def test_i_guidise_the_id_of_a_fully_qualified_apiname(self):
       
   352         self.assertEquals(self.guidiser._guidise_id("struct_e_sock_1_1_t_addr_update"),
       
   353          "GUID-E72084E6-C1CE-3388-93F7-5B7A3F506C3B"
       
   354          )
       
   355          
       
   356     def test_id_guidise_the_id_something_that_is_not_a_fully_qualified_apiname(self):
       
   357         self.assertEquals(self.guidiser._guidise_id("commsdataobjects"),
       
   358          "GUID-2F2463E0-6C84-3FAB-8B60-57E57315FDEB"
       
   359          )
       
   360          
       
   361     def test_i_preserve_namespaces(self):  
       
   362         xml_in = """<reference ditaarch:DITAArchVersion="1.1" xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/" />"""
       
   363         xml_expected = """<reference ditaarch:DITAArchVersion="1.1" xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/" />"""
       
   364         root = self.guidiser.guidise(StringIO(xml_in))
       
   365         self.assertEqual(etree.tostring(root), xml_expected)
   165         
   366         
   166 class Testupdate_files(unittest.TestCase):
   367 class Testupdate_files(unittest.TestCase):
   167     
   368     
   168     def setUp(self):
   369     def setUp(self):
   169         self.test_dir = "guidisertestdata"
   370         self.test_dir = "guidisertestdata"
   174     def test_i_can_update_a_file_on_the_file_sys(self):
   375     def test_i_can_update_a_file_on_the_file_sys(self):
   175         def reference_file_handle(mode):
   376         def reference_file_handle(mode):
   176             return open(os.path.join(self.test_dir, "reference.dita"), mode) 
   377             return open(os.path.join(self.test_dir, "reference.dita"), mode) 
   177         os.mkdir(self.test_dir)
   378         os.mkdir(self.test_dir)
   178         f = reference_file_handle("w")
   379         f = reference_file_handle("w")
   179         f.write(reference)
   380         f.write(filesys_cxxclass)
   180         f.close()
   381         f.close()
   181         updatefiles(self.test_dir)
   382         updatefiles(self.test_dir)
   182         self.assertEquals(reference_file_handle("r").read(), guidised_reference)
   383         self.assertEquals(reference_file_handle("r").read(), filesys_cxxclass_guidised)
   183         
   384         
   184         
   385 struct_e_sock_1_1_t_addr_update = """<?xml version='1.0' encoding='UTF-8' standalone='no'?>
   185         
   386 <!DOCTYPE cxxStruct PUBLIC "-//NOKIA//DTD DITA C++ API Struct Reference Type v0.1.0//EN" "dtd/cxxStruct.dtd" >
   186 reference = """<?xml version="1.0" encoding="UTF-8"?>
   387 <cxxStruct id="struct_coord_struct">
   187 <!DOCTYPE reference PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
   388 	<apiName>CoordStruct</apiName>
   188 <reference id="CActiveScheduler::TCleanupBundle">
   389 	<shortdesc/>
   189     <title>CActiveScheduler::TCleanupBundle</title>
   390 	<cxxStructDetail>
   190     <shortdesc/>
   391 		<cxxStructDefinition>
   191     <refbody>
   392 			<cxxStructAccessSpecifier value="public"/>
   192         <section>
   393 			<cxxStructAPIItemLocation>
   193             <ph>
   394 				<cxxStructDeclarationFile name="filePath" value="C:/wip/sysdoc/tools/Doxygen/branches/DITA/test/PaulRo/linking/src/restypedef.cpp"/>
   194             </ph>
   395 				<cxxStructDeclarationFileLine name="lineNumber" value="10"/>
   195         </section>
   396 				<cxxStructDefinitionFile name="filePath" value="C:/wip/sysdoc/tools/Doxygen/branches/DITA/test/PaulRo/linking/src/restypedef.cpp"/>
   196         <section/>
   397 				<cxxStructDefinitionFileLineStart name="lineNumber" value="9"/>
   197     </refbody>
   398 				<cxxStructDefinitionFileLineEnd name="lineNumber" value="15"/>
   198     <reference id="CActiveScheduler::TCleanupBundle::iCleanupPtr">
   399 			</cxxStructAPIItemLocation>
   199         <title>iCleanupPtr</title>
   400 		</cxxStructDefinition>
   200         <shortdesc/>
   401 		<apiDesc>
   201         <refbody>
   402 			<p>A coordinate pair. </p>
   202             <section>
   403 		</apiDesc>
   203                 <ph>
   404 	</cxxStructDetail>
   204                 </ph>
   405 	<cxxVariable id="struct_coord_struct_1a183d7226fc5a8470ce9b9f04f9cb69bb">
   205             </section>
   406 		<apiName>x</apiName>
   206             <section/>
   407 		<shortdesc/>
   207         </refbody>
   408 		<cxxVariableDetail>
   208     </reference>
   409 			<cxxVariableDefinition>
   209     <reference id="CActiveScheduler::TCleanupBundle::iDummyInt">
   410 				<cxxVariableAccessSpecifier value="public"/>
   210         <title>iDummyInt</title>
   411 				<cxxVariableDeclaredType>float</cxxVariableDeclaredType>
   211         <shortdesc/>
   412 				<cxxVariableScopedName>CoordStruct</cxxVariableScopedName>
   212         <refbody>
   413 				<cxxVariablePrototype>float x</cxxVariablePrototype>
   213             <section>
   414 				<cxxVariableNameLookup>CoordStruct::x</cxxVariableNameLookup>
   214             </section>
   415 				<cxxVariableAPIItemLocation>
   215             <section/>
   416 					<cxxVariableDeclarationFile name="filePath" value="C:/wip/sysdoc/tools/Doxygen/branches/DITA/test/PaulRo/linking/src/restypedef.cpp"/>
   216         </refbody>
   417 					<cxxVariableDeclarationFileLine name="lineNumber" value="12"/>
   217     </reference>
   418 				</cxxVariableAPIItemLocation>
   218 </reference>
   419 			</cxxVariableDefinition>
   219 """
   420 			<apiDesc>
   220 
   421 				<p>The x coordinate </p>
   221 guidised_reference = """<?xml version="1.0" encoding="UTF-8"?>
   422 			</apiDesc>
   222 <!DOCTYPE reference PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
   423 		</cxxVariableDetail>
   223 <reference id="GUID-83FD90ED-B2F7-3ED5-ABC5-83ED6A3F1C2F">
   424 	</cxxVariable>
   224     <title>CActiveScheduler::TCleanupBundle</title>
   425 	<cxxVariable id="struct_coord_struct_1a1a5966a881bc3e76e9becf00639585ac">
   225     <shortdesc />
   426 		<apiName>y</apiName>
   226     <refbody>
   427 		<shortdesc/>
   227         <section>
   428 		<cxxVariableDetail>
   228             <ph>
   429 			<cxxVariableDefinition>
   229             </ph>
   430 				<cxxVariableAccessSpecifier value="public"/>
   230         </section>
   431 				<cxxVariableDeclaredType>float</cxxVariableDeclaredType>
   231         <section />
   432 				<cxxVariableScopedName>CoordStruct</cxxVariableScopedName>
   232     </refbody>
   433 				<cxxVariablePrototype>float y</cxxVariablePrototype>
   233     <reference id="GUID-903F7E6D-EFFE-3A37-9348-B9FE3A27AF4A">
   434 				<cxxVariableNameLookup>CoordStruct::y</cxxVariableNameLookup>
   234         <title>iCleanupPtr</title>
   435 				<cxxVariableAPIItemLocation>
   235         <shortdesc />
   436 					<cxxVariableDeclarationFile name="filePath" value="C:/wip/sysdoc/tools/Doxygen/branches/DITA/test/PaulRo/linking/src/restypedef.cpp"/>
   236         <refbody>
   437 					<cxxVariableDeclarationFileLine name="lineNumber" value="14"/>
   237             <section>
   438 				</cxxVariableAPIItemLocation>
   238                 <ph>
   439 			</cxxVariableDefinition>
   239                 </ph>
   440 			<apiDesc>
   240             </section>
   441 				<p>The y coordinate </p>
   241             <section />
   442 			</apiDesc>
   242         </refbody>
   443 		</cxxVariableDetail>
   243     </reference>
   444 	</cxxVariable>
   244     <reference id="GUID-DA4580F4-EBCC-3FA2-A856-810EAFC82236">
   445 </cxxStruct>"""
   245         <title>iDummyInt</title>
   446         
   246         <shortdesc />
   447 filesys_cxxclass = """<?xml version='1.0' encoding='UTF-8' standalone='no'?>
   247         <refbody>
       
   248             <section>
       
   249             </section>
       
   250             <section />
       
   251         </refbody>
       
   252     </reference>
       
   253 </reference>"""
       
   254         
       
   255 cxxclass = """<?xml version='1.0' encoding='UTF-8' standalone='no'?>
       
   256 <!DOCTYPE cxxClass PUBLIC "-//NOKIA//DTD DITA C++ API Class Reference Type v0.1.0//EN" "dtd/cxxClass.dtd" >
   448 <!DOCTYPE cxxClass PUBLIC "-//NOKIA//DTD DITA C++ API Class Reference Type v0.1.0//EN" "dtd/cxxClass.dtd" >
   257 <cxxClass id="CP_class">
   449 <cxxClass id="class_c_active_scheduler_1_1_t_cleanup_bundle">
   258     <apiName>CP_class</apiName>
   450     <apiName>CActiveScheduler::TCleanupBundle</apiName>
   259     <shortdesc/>
   451     <shortdesc/>
   260     <cxxClassDetail>
   452     <cxxClassDetail>
   261       <cxxClassNestedStruct keyref="CB_class">CB_class</cxxClassNestedStruct>
       
   262       <cxxClassNestedUnion keyref="CB_class">CB_class</cxxClassNestedUnion>
       
   263       <cxxClassNestedClass keyref="CB_class">CB_class</cxxClassNestedClass>    
       
   264         <cxxClassDefinition>
   453         <cxxClassDefinition>
   265             <cxxClassAccessSpecifier value="public"/>
   454             <cxxClassAccessSpecifier value="private"/>
   266             <cxxClassAPIItemLocation>
   455             <cxxClassAPIItemLocation>
   267                 <cxxClassDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
   456                 <cxxClassDeclarationFile name="filePath" value="K:/epoc32/include/e32base.h"/>
   268                 <cxxClassDeclarationFileLine name="lineNumber" value="25"/>
   457                 <cxxClassDeclarationFileLine name="lineNumber" value="2832"/>
   269                 <cxxClassDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
   458                 <cxxClassDefinitionFile name="filePath" value="K:/sf/os/commsfw/datacommsserver/esockserver/csock/CS_CLI.CPP"/>
   270                 <cxxClassDefinitionFileLineStart name="lineNumber" value="21"/>
   459                 <cxxClassDefinitionFileLineStart name="lineNumber" value="2831"/>
   271                 <cxxClassDefinitionFileLineEnd name="lineNumber" value="168"/>
   460                 <cxxClassDefinitionFileLineEnd name="lineNumber" value="2836"/>
   272             </cxxClassAPIItemLocation>
   461             </cxxClassAPIItemLocation>
   273         </cxxClassDefinition>
   462         </cxxClassDefinition>
   274         <apiDesc>
   463         <apiDesc/>
   275             <p>CP_class_text. A link to a method, <xref href="CP_class::CPD_function(CPD_type_1)">CP_class::CPD_function(CPD_type_1)</xref>.</p>
       
   276         </apiDesc>
       
   277     </cxxClassDetail>
   464     </cxxClassDetail>
   278     <cxxFunction id="CP_class::CPD_function(CPD_type_1)">
   465     <cxxVariable id="class_c_active_scheduler_1_1_t_cleanup_bundle_1aaa7a637534aa0b9164dda2816be6fbf4">
   279         <apiName>CPD_function</apiName>
   466         <apiName>iCleanupPtr</apiName>
   280         <shortdesc/>
       
   281         <cxxFunctionDetail>
       
   282             <cxxFunctionDefinition>
       
   283                 <cxxFunctionAccessSpecifier value="private"/>
       
   284                 <cxxFunctionDeclaredType>CPD_return</cxxFunctionDeclaredType>
       
   285                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   286                 <cxxFunctionPrototype>CPD_return CPD_function(CPD_type_1 CPD_param_1)</cxxFunctionPrototype>
       
   287                 <cxxFunctionNameLookup>CP_class::CPD_function(CPD_type_1)</cxxFunctionNameLookup>
       
   288                 <cxxFunctionParameters>
       
   289                     <cxxFunctionParameter>
       
   290                         <cxxFunctionParameterDeclaredType>CPD_type_1</cxxFunctionParameterDeclaredType>
       
   291                         <cxxFunctionParameterDeclarationName>CPD_param_1</cxxFunctionParameterDeclarationName>
       
   292                         <apiDefNote>CPD_param_1_text </apiDefNote>
       
   293                     </cxxFunctionParameter>
       
   294                 </cxxFunctionParameters>
       
   295                 <cxxFunctionAPIItemLocation>
       
   296                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   297                     <cxxFunctionDeclarationFileLine name="lineNumber" value="33"/>
       
   298                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   299                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   300                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   301                 </cxxFunctionAPIItemLocation>
       
   302             </cxxFunctionDefinition>
       
   303             <apiDesc>
       
   304                 <p>CPD_function_text. CPD_return CPD_return_text </p>
       
   305             </apiDesc>
       
   306         </cxxFunctionDetail>
       
   307     </cxxFunction>
       
   308     <cxxFunction id="CP_class::CPC_function(CPC_type_1)">
       
   309         <apiName>CPC_function</apiName>
       
   310         <shortdesc/>
       
   311         <cxxFunctionDetail>
       
   312             <cxxFunctionDefinition>
       
   313                 <cxxFunctionAccessSpecifier value="private"/>
       
   314                 <cxxFunctionDeclaredType>CPC_return</cxxFunctionDeclaredType>
       
   315                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   316                 <cxxFunctionPrototype>CPC_return CPC_function(CPC_type_1 CPC_param_1)</cxxFunctionPrototype>
       
   317                 <cxxFunctionNameLookup>CP_class::CPC_function(CPC_type_1)</cxxFunctionNameLookup>
       
   318                 <cxxFunctionParameters>
       
   319                     <cxxFunctionParameter>
       
   320                         <cxxFunctionParameterDeclaredType>CPC_type_1</cxxFunctionParameterDeclaredType>
       
   321                         <cxxFunctionParameterDeclarationName>CPC_param_1</cxxFunctionParameterDeclarationName>
       
   322                         <apiDefNote>CPC_param_1_text </apiDefNote>
       
   323                     </cxxFunctionParameter>
       
   324                 </cxxFunctionParameters>
       
   325                 <cxxFunctionAPIItemLocation>
       
   326                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   327                     <cxxFunctionDeclarationFileLine name="lineNumber" value="39"/>
       
   328                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   329                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   330                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   331                 </cxxFunctionAPIItemLocation>
       
   332             </cxxFunctionDefinition>
       
   333             <apiDesc>
       
   334                 <p>CPC_function_text. CPC_return CPC_return_text </p>
       
   335             </apiDesc>
       
   336         </cxxFunctionDetail>
       
   337     </cxxFunction>
       
   338     <cxxFunction id="CP_class::CPF_function(CPF_type_1)">
       
   339         <apiName>CPF_function</apiName>
       
   340         <shortdesc/>
       
   341         <cxxFunctionDetail>
       
   342             <cxxFunctionDefinition>
       
   343                 <cxxFunctionAccessSpecifier value="protected"/>
       
   344                 <cxxFunctionDeclaredType>CPF_return</cxxFunctionDeclaredType>
       
   345                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   346                 <cxxFunctionPrototype>CPF_return CPF_function(CPF_type_1 CPF_param_1)</cxxFunctionPrototype>
       
   347                 <cxxFunctionNameLookup>CP_class::CPF_function(CPF_type_1)</cxxFunctionNameLookup>
       
   348                 <cxxFunctionParameters>
       
   349                     <cxxFunctionParameter>
       
   350                         <cxxFunctionParameterDeclaredType>CPF_type_1</cxxFunctionParameterDeclaredType>
       
   351                         <cxxFunctionParameterDeclarationName>CPF_param_1</cxxFunctionParameterDeclarationName>
       
   352                         <apiDefNote>CPF_param_1_text </apiDefNote>
       
   353                     </cxxFunctionParameter>
       
   354                 </cxxFunctionParameters>
       
   355                 <cxxFunctionAPIItemLocation>
       
   356                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   357                     <cxxFunctionDeclarationFileLine name="lineNumber" value="46"/>
       
   358                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   359                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   360                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   361                 </cxxFunctionAPIItemLocation>
       
   362             </cxxFunctionDefinition>
       
   363             <apiDesc>
       
   364                 <p>CPF_function_text. CPF_return CPF_return_text </p>
       
   365             </apiDesc>
       
   366         </cxxFunctionDetail>
       
   367     </cxxFunction>
       
   368     <cxxFunction id="CP_class::CPE_function(CPE_type_1)">
       
   369         <apiName>CPE_function</apiName>
       
   370         <shortdesc/>
       
   371         <cxxFunctionDetail>
       
   372             <cxxFunctionDefinition>
       
   373                 <cxxFunctionAccessSpecifier value="protected"/>
       
   374                 <cxxFunctionDeclaredType>CPE_return</cxxFunctionDeclaredType>
       
   375                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   376                 <cxxFunctionPrototype>CPE_return CPE_function(CPE_type_1 CPE_param_1)</cxxFunctionPrototype>
       
   377                 <cxxFunctionNameLookup>CP_class::CPE_function(CPE_type_1)</cxxFunctionNameLookup>
       
   378                 <cxxFunctionParameters>
       
   379                     <cxxFunctionParameter>
       
   380                         <cxxFunctionParameterDeclaredType>CPE_type_1</cxxFunctionParameterDeclaredType>
       
   381                         <cxxFunctionParameterDeclarationName>CPE_param_1</cxxFunctionParameterDeclarationName>
       
   382                         <apiDefNote>CPE_param_1_text </apiDefNote>
       
   383                     </cxxFunctionParameter>
       
   384                 </cxxFunctionParameters>
       
   385                 <cxxFunctionAPIItemLocation>
       
   386                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   387                     <cxxFunctionDeclarationFileLine name="lineNumber" value="52"/>
       
   388                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   389                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   390                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   391                 </cxxFunctionAPIItemLocation>
       
   392             </cxxFunctionDefinition>
       
   393             <apiDesc>
       
   394                 <p>CPE_function_text. CPE_return CPE_return_text </p>
       
   395             </apiDesc>
       
   396         </cxxFunctionDetail>
       
   397     </cxxFunction>
       
   398     <cxxFunction id="CP_class::CPB_function(CPB_type_1)">
       
   399         <apiName>CPB_function</apiName>
       
   400         <shortdesc/>
       
   401         <cxxFunctionDetail>
       
   402             <cxxFunctionDefinition>
       
   403                 <cxxFunctionAccessSpecifier value="public"/>
       
   404                 <cxxFunctionDeclaredType>CPB_return</cxxFunctionDeclaredType>
       
   405                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   406                 <cxxFunctionPrototype>CPB_return CPB_function(CPB_type_1 CPB_param_1)</cxxFunctionPrototype>
       
   407                 <cxxFunctionNameLookup>CP_class::CPB_function(CPB_type_1)</cxxFunctionNameLookup>
       
   408                 <cxxFunctionParameters>
       
   409                     <cxxFunctionParameter>
       
   410                         <cxxFunctionParameterDeclaredType>CPB_type_1</cxxFunctionParameterDeclaredType>
       
   411                         <cxxFunctionParameterDeclarationName>CPB_param_1</cxxFunctionParameterDeclarationName>
       
   412                         <apiDefNote>CPB_param_1_text </apiDefNote>
       
   413                     </cxxFunctionParameter>
       
   414                 </cxxFunctionParameters>
       
   415                 <cxxFunctionAPIItemLocation>
       
   416                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   417                     <cxxFunctionDeclarationFileLine name="lineNumber" value="59"/>
       
   418                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   419                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   420                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   421                 </cxxFunctionAPIItemLocation>
       
   422             </cxxFunctionDefinition>
       
   423             <apiDesc>
       
   424                 <p>CPB_function_text. CPB_return CPB_return_text </p>
       
   425             </apiDesc>
       
   426         </cxxFunctionDetail>
       
   427     </cxxFunction>
       
   428     <cxxFunction id="CP_class::CPA_function(CPA_type_1)">
       
   429         <apiName>CPA_function</apiName>
       
   430         <shortdesc/>
       
   431         <cxxFunctionDetail>
       
   432             <cxxFunctionDefinition>
       
   433                 <cxxFunctionAccessSpecifier value="public"/>
       
   434                 <cxxFunctionDeclaredType>CPA_return</cxxFunctionDeclaredType>
       
   435                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   436                 <cxxFunctionPrototype>CPA_return CPA_function(CPA_type_1 CPA_param_1)</cxxFunctionPrototype>
       
   437                 <cxxFunctionNameLookup>CP_class::CPA_function(CPA_type_1)</cxxFunctionNameLookup>
       
   438                 <cxxFunctionParameters>
       
   439                     <cxxFunctionParameter>
       
   440                         <cxxFunctionParameterDeclaredType>CPA_type_1</cxxFunctionParameterDeclaredType>
       
   441                         <cxxFunctionParameterDeclarationName>CPA_param_1</cxxFunctionParameterDeclarationName>
       
   442                         <apiDefNote>CPA_param_1_text </apiDefNote>
       
   443                     </cxxFunctionParameter>
       
   444                 </cxxFunctionParameters>
       
   445                 <cxxFunctionAPIItemLocation>
       
   446                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   447                     <cxxFunctionDeclarationFileLine name="lineNumber" value="65"/>
       
   448                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   449                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   450                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   451                 </cxxFunctionAPIItemLocation>
       
   452             </cxxFunctionDefinition>
       
   453             <apiDesc>
       
   454                 <p>CPA_function_text. CPA_return CPA_return_text </p>
       
   455             </apiDesc>
       
   456         </cxxFunctionDetail>
       
   457     </cxxFunction>
       
   458     <cxxFunction id="CP_class::CPH_function(CPH_type_1)">
       
   459         <apiName>CPH_function</apiName>
       
   460         <shortdesc/>
       
   461         <cxxFunctionDetail>
       
   462             <cxxFunctionDefinition>
       
   463                 <cxxFunctionAccessSpecifier value="protected"/>
       
   464                 <cxxFunctionStorageClassSpecifierStatic/>
       
   465                 <cxxFunctionDeclaredType>CPH_return</cxxFunctionDeclaredType>
       
   466                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   467                 <cxxFunctionPrototype>static CPH_return CPH_function(CPH_type_1 CPH_param_1)</cxxFunctionPrototype>
       
   468                 <cxxFunctionNameLookup>CP_class::CPH_function(CPH_type_1)</cxxFunctionNameLookup>
       
   469                 <cxxFunctionParameters>
       
   470                     <cxxFunctionParameter>
       
   471                         <cxxFunctionParameterDeclaredType>CPH_type_1</cxxFunctionParameterDeclaredType>
       
   472                         <cxxFunctionParameterDeclarationName>CPH_param_1</cxxFunctionParameterDeclarationName>
       
   473                         <apiDefNote>CPH_param_1_text </apiDefNote>
       
   474                     </cxxFunctionParameter>
       
   475                 </cxxFunctionParameters>
       
   476                 <cxxFunctionAPIItemLocation>
       
   477                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   478                     <cxxFunctionDeclarationFileLine name="lineNumber" value="76"/>
       
   479                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   480                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   481                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   482                 </cxxFunctionAPIItemLocation>
       
   483             </cxxFunctionDefinition>
       
   484             <apiDesc>
       
   485                 <p>CPH_function_text. CPH_return CPH_return_text </p>
       
   486             </apiDesc>
       
   487         </cxxFunctionDetail>
       
   488     </cxxFunction>
       
   489     <cxxFunction id="CP_class::CPG_function(CPG_type_1)">
       
   490         <apiName>CPG_function</apiName>
       
   491         <shortdesc/>
       
   492         <cxxFunctionDetail>
       
   493             <cxxFunctionDefinition>
       
   494                 <cxxFunctionAccessSpecifier value="protected"/>
       
   495                 <cxxFunctionStorageClassSpecifierStatic/>
       
   496                 <cxxFunctionDeclaredType>CPG_return</cxxFunctionDeclaredType>
       
   497                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   498                 <cxxFunctionPrototype>static CPG_return CPG_function(CPG_type_1 CPG_param_1)</cxxFunctionPrototype>
       
   499                 <cxxFunctionNameLookup>CP_class::CPG_function(CPG_type_1)</cxxFunctionNameLookup>
       
   500                 <cxxFunctionParameters>
       
   501                     <cxxFunctionParameter>
       
   502                         <cxxFunctionParameterDeclaredType>CPG_type_1</cxxFunctionParameterDeclaredType>
       
   503                         <cxxFunctionParameterDeclarationName>CPG_param_1</cxxFunctionParameterDeclarationName>
       
   504                         <apiDefNote>CPG_param_1_text </apiDefNote>
       
   505                     </cxxFunctionParameter>
       
   506                 </cxxFunctionParameters>
       
   507                 <cxxFunctionAPIItemLocation>
       
   508                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   509                     <cxxFunctionDeclarationFileLine name="lineNumber" value="82"/>
       
   510                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   511                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   512                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   513                 </cxxFunctionAPIItemLocation>
       
   514             </cxxFunctionDefinition>
       
   515             <apiDesc>
       
   516                 <p>CPG_function_text. CPG_return CPG_return_text </p>
       
   517             </apiDesc>
       
   518         </cxxFunctionDetail>
       
   519     </cxxFunction>
       
   520     <cxxFunction id="CP_class::CPJ_function(CPJ_type_1)">
       
   521         <apiName>CPJ_function</apiName>
       
   522         <shortdesc/>
       
   523         <cxxFunctionDetail>
       
   524             <cxxFunctionDefinition>
       
   525                 <cxxFunctionAccessSpecifier value="private"/>
       
   526                 <cxxFunctionStorageClassSpecifierStatic/>
       
   527                 <cxxFunctionDeclaredType>CPJ_return</cxxFunctionDeclaredType>
       
   528                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   529                 <cxxFunctionPrototype>static CPJ_return CPJ_function(CPJ_type_1 CPJ_param_1)</cxxFunctionPrototype>
       
   530                 <cxxFunctionNameLookup>CP_class::CPJ_function(CPJ_type_1)</cxxFunctionNameLookup>
       
   531                 <cxxFunctionParameters>
       
   532                     <cxxFunctionParameter>
       
   533                         <cxxFunctionParameterDeclaredType>CPJ_type_1</cxxFunctionParameterDeclaredType>
       
   534                         <cxxFunctionParameterDeclarationName>CPJ_param_1</cxxFunctionParameterDeclarationName>
       
   535                         <apiDefNote>CPJ_param_1_text </apiDefNote>
       
   536                     </cxxFunctionParameter>
       
   537                 </cxxFunctionParameters>
       
   538                 <cxxFunctionAPIItemLocation>
       
   539                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   540                     <cxxFunctionDeclarationFileLine name="lineNumber" value="89"/>
       
   541                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   542                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   543                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   544                 </cxxFunctionAPIItemLocation>
       
   545             </cxxFunctionDefinition>
       
   546             <apiDesc>
       
   547                 <p>CPJ_function_text. CPJ_return CPJ_return_text </p>
       
   548             </apiDesc>
       
   549         </cxxFunctionDetail>
       
   550     </cxxFunction>
       
   551     <cxxFunction id="CP_class::CPI_function(CPI_type_1)">
       
   552         <apiName>CPI_function</apiName>
       
   553         <shortdesc/>
       
   554         <cxxFunctionDetail>
       
   555             <cxxFunctionDefinition>
       
   556                 <cxxFunctionAccessSpecifier value="private"/>
       
   557                 <cxxFunctionStorageClassSpecifierStatic/>
       
   558                 <cxxFunctionDeclaredType>CPI_return</cxxFunctionDeclaredType>
       
   559                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   560                 <cxxFunctionPrototype>static CPI_return CPI_function(CPI_type_1 CPI_param_1)</cxxFunctionPrototype>
       
   561                 <cxxFunctionNameLookup>CP_class::CPI_function(CPI_type_1)</cxxFunctionNameLookup>
       
   562                 <cxxFunctionParameters>
       
   563                     <cxxFunctionParameter>
       
   564                         <cxxFunctionParameterDeclaredType>CPI_type_1</cxxFunctionParameterDeclaredType>
       
   565                         <cxxFunctionParameterDeclarationName>CPI_param_1</cxxFunctionParameterDeclarationName>
       
   566                         <apiDefNote>CPI_param_1_text </apiDefNote>
       
   567                     </cxxFunctionParameter>
       
   568                 </cxxFunctionParameters>
       
   569                 <cxxFunctionAPIItemLocation>
       
   570                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   571                     <cxxFunctionDeclarationFileLine name="lineNumber" value="95"/>
       
   572                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   573                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   574                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   575                 </cxxFunctionAPIItemLocation>
       
   576             </cxxFunctionDefinition>
       
   577             <apiDesc>
       
   578                 <p>CPI_function_text. CPI_return CPI_return_text </p>
       
   579             </apiDesc>
       
   580         </cxxFunctionDetail>
       
   581     </cxxFunction>
       
   582     <cxxFunction id="CP_class::CPL_function(CPL_type_1)">
       
   583         <apiName>CPL_function</apiName>
       
   584         <shortdesc/>
       
   585         <cxxFunctionDetail>
       
   586             <cxxFunctionDefinition>
       
   587                 <cxxFunctionAccessSpecifier value="public"/>
       
   588                 <cxxFunctionStorageClassSpecifierStatic/>
       
   589                 <cxxFunctionDeclaredType>CPL_return</cxxFunctionDeclaredType>
       
   590                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   591                 <cxxFunctionPrototype>static CPL_return CPL_function(CPL_type_1 CPL_param_1)</cxxFunctionPrototype>
       
   592                 <cxxFunctionNameLookup>CP_class::CPL_function(CPL_type_1)</cxxFunctionNameLookup>
       
   593                 <cxxFunctionParameters>
       
   594                     <cxxFunctionParameter>
       
   595                         <cxxFunctionParameterDeclaredType>CPL_type_1</cxxFunctionParameterDeclaredType>
       
   596                         <cxxFunctionParameterDeclarationName>CPL_param_1</cxxFunctionParameterDeclarationName>
       
   597                         <apiDefNote>CPL_param_1_text </apiDefNote>
       
   598                     </cxxFunctionParameter>
       
   599                 </cxxFunctionParameters>
       
   600                 <cxxFunctionAPIItemLocation>
       
   601                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   602                     <cxxFunctionDeclarationFileLine name="lineNumber" value="102"/>
       
   603                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   604                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   605                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   606                 </cxxFunctionAPIItemLocation>
       
   607             </cxxFunctionDefinition>
       
   608             <apiDesc>
       
   609                 <p>CPL_function_text. CPL_return CPL_return_text </p>
       
   610             </apiDesc>
       
   611         </cxxFunctionDetail>
       
   612     </cxxFunction>
       
   613     <cxxFunction id="CP_class::CPK_function(CPK_type_1)">
       
   614         <apiName>CPK_function</apiName>
       
   615         <shortdesc/>
       
   616         <cxxFunctionDetail>
       
   617             <cxxFunctionDefinition>
       
   618                 <cxxFunctionAccessSpecifier value="public"/>
       
   619                 <cxxFunctionStorageClassSpecifierStatic/>
       
   620                 <cxxFunctionDeclaredType>CPK_return</cxxFunctionDeclaredType>
       
   621                 <cxxFunctionScopedName>CP_class</cxxFunctionScopedName>
       
   622                 <cxxFunctionPrototype>static CPK_return CPK_function(CPK_type_1 CPK_param_1)</cxxFunctionPrototype>
       
   623                 <cxxFunctionNameLookup>CP_class::CPK_function(CPK_type_1)</cxxFunctionNameLookup>
       
   624                 <cxxFunctionParameters>
       
   625                     <cxxFunctionParameter>
       
   626                         <cxxFunctionParameterDeclaredType>CPK_type_1</cxxFunctionParameterDeclaredType>
       
   627                         <cxxFunctionParameterDeclarationName>CPK_param_1</cxxFunctionParameterDeclarationName>
       
   628                         <apiDefNote>CPK_param_1_text </apiDefNote>
       
   629                     </cxxFunctionParameter>
       
   630                 </cxxFunctionParameters>
       
   631                 <cxxFunctionAPIItemLocation>
       
   632                     <cxxFunctionDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   633                     <cxxFunctionDeclarationFileLine name="lineNumber" value="108"/>
       
   634                     <cxxFunctionDefinitionFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   635                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="-1"/>
       
   636                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="-1"/>
       
   637                 </cxxFunctionAPIItemLocation>
       
   638             </cxxFunctionDefinition>
       
   639             <apiDesc>
       
   640                 <p>CPK_function_text. CPK_return CPK_return_text </p>
       
   641             </apiDesc>
       
   642         </cxxFunctionDetail>
       
   643     </cxxFunction>
       
   644     <cxxVariable id="CP_class::CPN_name">
       
   645         <apiName>CPN_name</apiName>
       
   646         <shortdesc/>
   467         <shortdesc/>
   647         <cxxVariableDetail>
   468         <cxxVariableDetail>
   648             <cxxVariableDefinition>
   469             <cxxVariableDefinition>
   649                 <cxxVariableAccessSpecifier value="public"/>
   470                 <cxxVariableAccessSpecifier value="public"/>
   650                 <cxxVariableDeclaredType>CPN_type</cxxVariableDeclaredType>
   471                 <cxxVariableDeclaredType>
   651                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
   472                     <apiRelation keyref="class_c_cleanup">CCleanup</apiRelation> *</cxxVariableDeclaredType>
   652                 <cxxVariablePrototype>CPN_type CPN_name</cxxVariablePrototype>
   473                 <cxxVariableScopedName>CActiveScheduler::TCleanupBundle</cxxVariableScopedName>
   653                 <cxxVariableNameLookup>CP_class::CPN_name</cxxVariableNameLookup>
   474                 <cxxVariablePrototype>CCleanup * iCleanupPtr</cxxVariablePrototype>
       
   475                 <cxxVariableNameLookup>CActiveScheduler::TCleanupBundle::iCleanupPtr</cxxVariableNameLookup>
   654                 <cxxVariableAPIItemLocation>
   476                 <cxxVariableAPIItemLocation>
   655                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
   477                     <cxxVariableDeclarationFile name="filePath" value="K:/epoc32/include/e32base.h"/>
   656                     <cxxVariableDeclarationFileLine name="lineNumber" value="114"/>
   478                     <cxxVariableDeclarationFileLine name="lineNumber" value="2834"/>
   657                 </cxxVariableAPIItemLocation>
   479                 </cxxVariableAPIItemLocation>
   658             </cxxVariableDefinition>
   480             </cxxVariableDefinition>
   659             <apiDesc>
   481             <apiDesc/>
   660                 <p>CPN_text </p>
       
   661             </apiDesc>
       
   662         </cxxVariableDetail>
   482         </cxxVariableDetail>
   663     </cxxVariable>
   483     </cxxVariable>
   664     <cxxVariable id="CP_class::CPM_name">
   484     <cxxVariable id="class_c_active_scheduler_1_1_t_cleanup_bundle_1ad750b8dbf966def2486a52b6c3d236fc">
   665         <apiName>CPM_name</apiName>
   485         <apiName>iDummyInt</apiName>
   666         <shortdesc/>
   486         <shortdesc/>
   667         <cxxVariableDetail>
   487         <cxxVariableDetail>
   668             <cxxVariableDefinition>
   488             <cxxVariableDefinition>
   669                 <cxxVariableAccessSpecifier value="public"/>
   489                 <cxxVariableAccessSpecifier value="public"/>
   670                 <cxxVariableDeclaredType>CPM_type</cxxVariableDeclaredType>
   490                 <cxxVariableDeclaredType>
   671                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
   491                     <apiRelation keyref="_c_s___c_l_i_8_c_p_p_1abb88f5378e8305d934297176fe5fa298">TInt</apiRelation>
   672                 <cxxVariablePrototype>CPM_type CPM_name</cxxVariablePrototype>
   492                 </cxxVariableDeclaredType>
   673                 <cxxVariableNameLookup>CP_class::CPM_name</cxxVariableNameLookup>
   493                 <cxxVariableScopedName>CActiveScheduler::TCleanupBundle</cxxVariableScopedName>
       
   494                 <cxxVariablePrototype>TInt iDummyInt</cxxVariablePrototype>
       
   495                 <cxxVariableNameLookup>CActiveScheduler::TCleanupBundle::iDummyInt</cxxVariableNameLookup>
   674                 <cxxVariableAPIItemLocation>
   496                 <cxxVariableAPIItemLocation>
   675                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
   497                     <cxxVariableDeclarationFile name="filePath" value="K:/epoc32/include/e32base.h"/>
   676                     <cxxVariableDeclarationFileLine name="lineNumber" value="116"/>
   498                     <cxxVariableDeclarationFileLine name="lineNumber" value="2835"/>
   677                 </cxxVariableAPIItemLocation>
   499                 </cxxVariableAPIItemLocation>
   678             </cxxVariableDefinition>
   500             </cxxVariableDefinition>
   679             <apiDesc>
   501             <apiDesc/>
   680                 <p>CPM_text </p>
       
   681             </apiDesc>
       
   682         </cxxVariableDetail>
   502         </cxxVariableDetail>
   683     </cxxVariable>
   503     </cxxVariable>
   684     <cxxVariable id="CP_class::CPP_name">
   504 </cxxClass>"""
   685         <apiName>CPP_name</apiName>
   505 
   686         <shortdesc/>
   506 filesys_cxxclass_guidised = """<?xml version="1.0" encoding="UTF-8"?>
       
   507 <!DOCTYPE cxxClass PUBLIC "-//NOKIA//DTD DITA C++ API Class Reference Type v0.1.0//EN" "dtd/cxxClass.dtd">
       
   508 <cxxClass id="GUID-83FD90ED-B2F7-3ED5-ABC5-83ED6A3F1C2F">
       
   509     <apiName>CActiveScheduler::TCleanupBundle</apiName>
       
   510     <shortdesc />
       
   511     <cxxClassDetail>
       
   512         <cxxClassDefinition>
       
   513             <cxxClassAccessSpecifier value="private" />
       
   514             <cxxClassAPIItemLocation>
       
   515                 <cxxClassDeclarationFile name="filePath" value="K:/epoc32/include/e32base.h" />
       
   516                 <cxxClassDeclarationFileLine name="lineNumber" value="2832" />
       
   517                 <cxxClassDefinitionFile name="filePath" value="K:/sf/os/commsfw/datacommsserver/esockserver/csock/CS_CLI.CPP" />
       
   518                 <cxxClassDefinitionFileLineStart name="lineNumber" value="2831" />
       
   519                 <cxxClassDefinitionFileLineEnd name="lineNumber" value="2836" />
       
   520             </cxxClassAPIItemLocation>
       
   521         </cxxClassDefinition>
       
   522         <apiDesc />
       
   523     </cxxClassDetail>
       
   524     <cxxVariable id="GUID-903F7E6D-EFFE-3A37-9348-B9FE3A27AF4A">
       
   525         <apiName>iCleanupPtr</apiName>
       
   526         <shortdesc />
   687         <cxxVariableDetail>
   527         <cxxVariableDetail>
   688             <cxxVariableDefinition>
   528             <cxxVariableDefinition>
   689                 <cxxVariableAccessSpecifier value="protected"/>
   529                 <cxxVariableAccessSpecifier value="public" />
   690                 <cxxVariableDeclaredType>CPP_type</cxxVariableDeclaredType>
   530                 <cxxVariableDeclaredType>
   691                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
   531                     <apiRelation keyref="GUID-3BB23EB1-2F65-378D-918B-1FBBD6E46C90">CCleanup</apiRelation> *</cxxVariableDeclaredType>
   692                 <cxxVariablePrototype>CPP_type CPP_name</cxxVariablePrototype>
   532                 <cxxVariableScopedName>CActiveScheduler::TCleanupBundle</cxxVariableScopedName>
   693                 <cxxVariableNameLookup>CP_class::CPP_name</cxxVariableNameLookup>
   533                 <cxxVariablePrototype>CCleanup * iCleanupPtr</cxxVariablePrototype>
       
   534                 <cxxVariableNameLookup>CActiveScheduler::TCleanupBundle::iCleanupPtr</cxxVariableNameLookup>
   694                 <cxxVariableAPIItemLocation>
   535                 <cxxVariableAPIItemLocation>
   695                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
   536                     <cxxVariableDeclarationFile name="filePath" value="K:/epoc32/include/e32base.h" />
   696                     <cxxVariableDeclarationFileLine name="lineNumber" value="119"/>
   537                     <cxxVariableDeclarationFileLine name="lineNumber" value="2834" />
   697                 </cxxVariableAPIItemLocation>
   538                 </cxxVariableAPIItemLocation>
   698             </cxxVariableDefinition>
   539             </cxxVariableDefinition>
   699             <apiDesc>
   540             <apiDesc />
   700                 <p>CPP_text </p>
       
   701             </apiDesc>
       
   702         </cxxVariableDetail>
   541         </cxxVariableDetail>
   703     </cxxVariable>
   542     </cxxVariable>
   704     <cxxVariable id="CP_class::CPO_name">
   543     <cxxVariable id="GUID-DA4580F4-EBCC-3FA2-A856-810EAFC82236">
   705         <apiName>CPO_name</apiName>
   544         <apiName>iDummyInt</apiName>
   706         <shortdesc/>
   545         <shortdesc />
   707         <cxxVariableDetail>
   546         <cxxVariableDetail>
   708             <cxxVariableDefinition>
   547             <cxxVariableDefinition>
   709                 <cxxVariableAccessSpecifier value="protected"/>
   548                 <cxxVariableAccessSpecifier value="public" />
   710                 <cxxVariableDeclaredType>CPO_type</cxxVariableDeclaredType>
   549                 <cxxVariableDeclaredType>
   711                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
   550                     <apiRelation keyref="GUID-1A4B29B0-5E06-39E5-A0A8-4A33E093C872">TInt</apiRelation>
   712                 <cxxVariablePrototype>CPO_type CPO_name</cxxVariablePrototype>
   551                 </cxxVariableDeclaredType>
   713                 <cxxVariableNameLookup>CP_class::CPO_name</cxxVariableNameLookup>
   552                 <cxxVariableScopedName>CActiveScheduler::TCleanupBundle</cxxVariableScopedName>
       
   553                 <cxxVariablePrototype>TInt iDummyInt</cxxVariablePrototype>
       
   554                 <cxxVariableNameLookup>CActiveScheduler::TCleanupBundle::iDummyInt</cxxVariableNameLookup>
   714                 <cxxVariableAPIItemLocation>
   555                 <cxxVariableAPIItemLocation>
   715                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
   556                     <cxxVariableDeclarationFile name="filePath" value="K:/epoc32/include/e32base.h" />
   716                     <cxxVariableDeclarationFileLine name="lineNumber" value="121"/>
   557                     <cxxVariableDeclarationFileLine name="lineNumber" value="2835" />
   717                 </cxxVariableAPIItemLocation>
   558                 </cxxVariableAPIItemLocation>
   718             </cxxVariableDefinition>
   559             </cxxVariableDefinition>
   719             <apiDesc>
   560             <apiDesc />
   720                 <p>CPO_text </p>
       
   721             </apiDesc>
       
   722         </cxxVariableDetail>
   561         </cxxVariableDetail>
   723     </cxxVariable>
   562     </cxxVariable>
   724     <cxxVariable id="CP_class::CPR_name">
   563 </cxxClass>"""
   725         <apiName>CPR_name</apiName>
   564         
   726         <shortdesc/>
   565 cxxclass = """<?xml version='1.0' encoding='UTF-8' standalone='no'?>
   727         <cxxVariableDetail>
   566 <!DOCTYPE cxxClass PUBLIC "-//NOKIA//DTD DITA C++ API Class Reference Type v0.1.0//EN" "dtd/cxxClass.dtd" >
   728             <cxxVariableDefinition>
   567 <cxxClass id="class_test">
   729                 <cxxVariableAccessSpecifier value="private"/>
   568 	<apiName>Test</apiName>
   730                 <cxxVariableDeclaredType>CPR_type</cxxVariableDeclaredType>
   569 	<shortdesc/>
   731                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
   570 	<cxxClassDetail>
   732                 <cxxVariablePrototype>CPR_type CPR_name</cxxVariablePrototype>
   571 		<cxxClassDefinition>
   733                 <cxxVariableNameLookup>CP_class::CPR_name</cxxVariableNameLookup>
   572 			<cxxClassAccessSpecifier value="public"/>
   734                 <cxxVariableAPIItemLocation>
   573 			<cxxClassAPIItemLocation>
   735                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
   574 				<cxxClassDeclarationFile name="filePath" value="C:/wip/sysdoc/tools/Doxygen/branches/DITA/test/PaulRo/linking/src/autolink.cpp"/>
   736                     <cxxVariableDeclarationFileLine name="lineNumber" value="124"/>
   575 				<cxxClassDeclarationFileLine name="lineNumber" value="59"/>
   737                 </cxxVariableAPIItemLocation>
   576 				<cxxClassDefinitionFile name="filePath" value="C:/wip/sysdoc/tools/Doxygen/branches/DITA/test/PaulRo/linking/src/autolink.cpp"/>
   738             </cxxVariableDefinition>
   577 				<cxxClassDefinitionFileLineStart name="lineNumber" value="58"/>
   739             <apiDesc>
   578 				<cxxClassDefinitionFileLineEnd name="lineNumber" value="74"/>
   740                 <p>CPR_text </p>
   579 			</cxxClassAPIItemLocation>
   741             </apiDesc>
   580 		</cxxClassDefinition>
   742         </cxxVariableDetail>
   581 		<apiDesc>
   743     </cxxVariable>
   582         <p>Points to function <xref href="class_test.xml#class_test_1a99f2bbfac6c95612322b0f10e607ebe5">Test()</xref></p>
   744     <cxxVariable id="CP_class::CPQ_name">
   583 		</apiDesc>
   745         <apiName>CPQ_name</apiName>
   584 	</cxxClassDetail>
   746         <shortdesc/>
   585 	<cxxFunction id="class_test_1a99f2bbfac6c95612322b0f10e607ebe5">
   747         <cxxVariableDetail>
   586 		<apiName>Test</apiName>
   748             <cxxVariableDefinition>
   587 		<shortdesc/>
   749                 <cxxVariableAccessSpecifier value="private"/>
   588 		<cxxFunctionDetail>
   750                 <cxxVariableDeclaredType>CPQ_type</cxxVariableDeclaredType>
   589 			<cxxFunctionDefinition>
   751                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
   590 				<cxxFunctionAccessSpecifier value="public"/>
   752                 <cxxVariablePrototype>CPQ_type CPQ_name</cxxVariablePrototype>
   591 				<cxxFunctionConstructor/>
   753                 <cxxVariableNameLookup>CP_class::CPQ_name</cxxVariableNameLookup>
   592 				<cxxFunctionDeclaredType/>
   754                 <cxxVariableAPIItemLocation>
   593 				<cxxFunctionScopedName>Test</cxxFunctionScopedName>
   755                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
   594 				<cxxFunctionPrototype>Test()</cxxFunctionPrototype>
   756                     <cxxVariableDeclarationFileLine name="lineNumber" value="126"/>
   595 				<cxxFunctionNameLookup>Test::Test()</cxxFunctionNameLookup>
   757                 </cxxVariableAPIItemLocation>
   596 				<cxxFunctionParameters/>
   758             </cxxVariableDefinition>
   597 				<cxxFunctionAPIItemLocation>
   759             <apiDesc>
   598 					<cxxFunctionDeclarationFile name="filePath" value="C:/wip/sysdoc/tools/Doxygen/branches/DITA/test/PaulRo/linking/src/autolink.cpp"/>
   760                 <p>CPQ_text </p>
   599 					<cxxFunctionDeclarationFileLine name="lineNumber" value="61"/>
   761             </apiDesc>
   600 					<cxxFunctionDefinitionFile name="filePath" value="C:/wip/sysdoc/tools/Doxygen/branches/DITA/test/PaulRo/linking/src/autolink.cpp"/>
   762         </cxxVariableDetail>
   601 					<cxxFunctionDefinitionFileLineStart name="lineNumber" value="77"/>
   763     </cxxVariable>
   602 					<cxxFunctionDefinitionFileLineEnd name="lineNumber" value="77"/>
   764     <cxxVariable id="CP_class::CPX_name">
   603 				</cxxFunctionAPIItemLocation>
   765         <apiName>CPX_name</apiName>
   604 			</cxxFunctionDefinition>
   766         <shortdesc/>
   605 			<apiDesc>
   767         <cxxVariableDetail>
   606 				<p>details. </p>
   768             <cxxVariableDefinition>
   607 			</apiDesc>
   769                 <cxxVariableAccessSpecifier value="private"/>
   608 		</cxxFunctionDetail>
   770                 <cxxVariableStorageClassSpecifierStatic/>
   609 	</cxxFunction>
   771                 <cxxVariableDeclaredType>CPX_type</cxxVariableDeclaredType>
       
   772                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
       
   773                 <cxxVariablePrototype>static CPX_type CPX_name</cxxVariablePrototype>
       
   774                 <cxxVariableNameLookup>CP_class::CPX_name</cxxVariableNameLookup>
       
   775                 <cxxVariableAPIItemLocation>
       
   776                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   777                     <cxxVariableDeclarationFileLine name="lineNumber" value="132"/>
       
   778                 </cxxVariableAPIItemLocation>
       
   779             </cxxVariableDefinition>
       
   780             <apiDesc>
       
   781                 <p>CPX_text </p>
       
   782             </apiDesc>
       
   783         </cxxVariableDetail>
       
   784     </cxxVariable>
       
   785     <cxxVariable id="CP_class::CPW_name">
       
   786         <apiName>CPW_name</apiName>
       
   787         <shortdesc/>
       
   788         <cxxVariableDetail>
       
   789             <cxxVariableDefinition>
       
   790                 <cxxVariableAccessSpecifier value="private"/>
       
   791                 <cxxVariableStorageClassSpecifierStatic/>
       
   792                 <cxxVariableDeclaredType>CPW_type</cxxVariableDeclaredType>
       
   793                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
       
   794                 <cxxVariablePrototype>static CPW_type CPW_name</cxxVariablePrototype>
       
   795                 <cxxVariableNameLookup>CP_class::CPW_name</cxxVariableNameLookup>
       
   796                 <cxxVariableAPIItemLocation>
       
   797                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   798                     <cxxVariableDeclarationFileLine name="lineNumber" value="134"/>
       
   799                 </cxxVariableAPIItemLocation>
       
   800             </cxxVariableDefinition>
       
   801             <apiDesc>
       
   802                 <p>CPW_text </p>
       
   803             </apiDesc>
       
   804         </cxxVariableDetail>
       
   805     </cxxVariable>
       
   806     <cxxVariable id="CP_class::CPV_name">
       
   807         <apiName>CPV_name</apiName>
       
   808         <shortdesc/>
       
   809         <cxxVariableDetail>
       
   810             <cxxVariableDefinition>
       
   811                 <cxxVariableAccessSpecifier value="protected"/>
       
   812                 <cxxVariableStorageClassSpecifierStatic/>
       
   813                 <cxxVariableDeclaredType>CPV_type</cxxVariableDeclaredType>
       
   814                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
       
   815                 <cxxVariablePrototype>static CPV_type CPV_name</cxxVariablePrototype>
       
   816                 <cxxVariableNameLookup>CP_class::CPV_name</cxxVariableNameLookup>
       
   817                 <cxxVariableAPIItemLocation>
       
   818                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   819                     <cxxVariableDeclarationFileLine name="lineNumber" value="137"/>
       
   820                 </cxxVariableAPIItemLocation>
       
   821             </cxxVariableDefinition>
       
   822             <apiDesc>
       
   823                 <p>CPV_text </p>
       
   824             </apiDesc>
       
   825         </cxxVariableDetail>
       
   826     </cxxVariable>
       
   827     <cxxVariable id="CP_class::CPU_name">
       
   828         <apiName>CPU_name</apiName>
       
   829         <shortdesc/>
       
   830         <cxxVariableDetail>
       
   831             <cxxVariableDefinition>
       
   832                 <cxxVariableAccessSpecifier value="protected"/>
       
   833                 <cxxVariableStorageClassSpecifierStatic/>
       
   834                 <cxxVariableDeclaredType>CPU_type</cxxVariableDeclaredType>
       
   835                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
       
   836                 <cxxVariablePrototype>static CPU_type CPU_name</cxxVariablePrototype>
       
   837                 <cxxVariableNameLookup>CP_class::CPU_name</cxxVariableNameLookup>
       
   838                 <cxxVariableAPIItemLocation>
       
   839                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   840                     <cxxVariableDeclarationFileLine name="lineNumber" value="139"/>
       
   841                 </cxxVariableAPIItemLocation>
       
   842             </cxxVariableDefinition>
       
   843             <apiDesc>
       
   844                 <p>CPU_text </p>
       
   845             </apiDesc>
       
   846         </cxxVariableDetail>
       
   847     </cxxVariable>
       
   848     <cxxVariable id="CP_class::CPT_name">
       
   849         <apiName>CPT_name</apiName>
       
   850         <shortdesc/>
       
   851         <cxxVariableDetail>
       
   852             <cxxVariableDefinition>
       
   853                 <cxxVariableAccessSpecifier value="public"/>
       
   854                 <cxxVariableStorageClassSpecifierStatic/>
       
   855                 <cxxVariableDeclaredType>CPT_type</cxxVariableDeclaredType>
       
   856                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
       
   857                 <cxxVariablePrototype>static CPT_type CPT_name</cxxVariablePrototype>
       
   858                 <cxxVariableNameLookup>CP_class::CPT_name</cxxVariableNameLookup>
       
   859                 <cxxVariableAPIItemLocation>
       
   860                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   861                     <cxxVariableDeclarationFileLine name="lineNumber" value="142"/>
       
   862                 </cxxVariableAPIItemLocation>
       
   863             </cxxVariableDefinition>
       
   864             <apiDesc>
       
   865                 <p>CPT_text </p>
       
   866             </apiDesc>
       
   867         </cxxVariableDetail>
       
   868     </cxxVariable>
       
   869     <cxxVariable id="CP_class::CPS_name">
       
   870         <apiName>CPS_name</apiName>
       
   871         <shortdesc/>
       
   872         <cxxVariableDetail>
       
   873             <cxxVariableDefinition>
       
   874                 <cxxVariableAccessSpecifier value="public"/>
       
   875                 <cxxVariableStorageClassSpecifierStatic/>
       
   876                 <cxxVariableDeclaredType>CPS_type</cxxVariableDeclaredType>
       
   877                 <cxxVariableScopedName>CP_class</cxxVariableScopedName>
       
   878                 <cxxVariablePrototype>static CPS_type CPS_name</cxxVariablePrototype>
       
   879                 <cxxVariableNameLookup>CP_class::CPS_name</cxxVariableNameLookup>
       
   880                 <cxxVariableAPIItemLocation>
       
   881                     <cxxVariableDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   882                     <cxxVariableDeclarationFileLine name="lineNumber" value="144"/>
       
   883                 </cxxVariableAPIItemLocation>
       
   884             </cxxVariableDefinition>
       
   885             <apiDesc>
       
   886                 <p>CPS_text </p>
       
   887             </apiDesc>
       
   888         </cxxVariableDetail>
       
   889     </cxxVariable>
       
   890     <cxxTypedef id="CP_class::CPb_type_alias">
       
   891         <apiName>CPb_type_alias</apiName>
       
   892         <shortdesc/>
       
   893         <cxxTypedefDetail>
       
   894             <cxxTypedefDefinition>
       
   895                 <cxxTypedefAccessSpecifier value="public"/>
       
   896                 <cxxTypedefDeclaredType>CPb_typedef</cxxTypedefDeclaredType>
       
   897                 <cxxTypedefScopedName>CP_class</cxxTypedefScopedName>
       
   898                 <cxxTypedefPrototype>CPb_typedef CPb_type_alias</cxxTypedefPrototype>
       
   899                 <cxxTypedefNameLookup>CP_class::CPb_type_alias</cxxTypedefNameLookup>
       
   900                 <cxxTypedefAPIItemLocation>
       
   901                     <cxxTypedefDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   902                     <cxxTypedefDeclarationFileLine name="lineNumber" value="150"/>
       
   903                 </cxxTypedefAPIItemLocation>
       
   904             </cxxTypedefDefinition>
       
   905             <apiDesc>
       
   906                 <p>CPb_text </p>
       
   907             </apiDesc>
       
   908         </cxxTypedefDetail>
       
   909     </cxxTypedef>
       
   910     <cxxTypedef id="CP_class::CPa_type_alias">
       
   911         <apiName>CPa_type_alias</apiName>
       
   912         <shortdesc/>
       
   913         <cxxTypedefDetail>
       
   914             <cxxTypedefDefinition>
       
   915                 <cxxTypedefAccessSpecifier value="public"/>
       
   916                 <cxxTypedefDeclaredType>CPa_typedef</cxxTypedefDeclaredType>
       
   917                 <cxxTypedefScopedName>CP_class</cxxTypedefScopedName>
       
   918                 <cxxTypedefPrototype>CPa_typedef CPa_type_alias</cxxTypedefPrototype>
       
   919                 <cxxTypedefNameLookup>CP_class::CPa_type_alias</cxxTypedefNameLookup>
       
   920                 <cxxTypedefAPIItemLocation>
       
   921                     <cxxTypedefDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   922                     <cxxTypedefDeclarationFileLine name="lineNumber" value="152"/>
       
   923                 </cxxTypedefAPIItemLocation>
       
   924             </cxxTypedefDefinition>
       
   925             <apiDesc>
       
   926                 <p>CPa_text </p>
       
   927             </apiDesc>
       
   928         </cxxTypedefDetail>
       
   929     </cxxTypedef>
       
   930     <cxxTypedef id="CP_class::CPd_type_alias">
       
   931         <apiName>CPd_type_alias</apiName>
       
   932         <shortdesc/>
       
   933         <cxxTypedefDetail>
       
   934             <cxxTypedefDefinition>
       
   935                 <cxxTypedefAccessSpecifier value="private"/>
       
   936                 <cxxTypedefDeclaredType>CPd_typedef</cxxTypedefDeclaredType>
       
   937                 <cxxTypedefScopedName>CP_class</cxxTypedefScopedName>
       
   938                 <cxxTypedefPrototype>CPd_typedef CPd_type_alias</cxxTypedefPrototype>
       
   939                 <cxxTypedefNameLookup>CP_class::CPd_type_alias</cxxTypedefNameLookup>
       
   940                 <cxxTypedefAPIItemLocation>
       
   941                     <cxxTypedefDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   942                     <cxxTypedefDeclarationFileLine name="lineNumber" value="155"/>
       
   943                 </cxxTypedefAPIItemLocation>
       
   944             </cxxTypedefDefinition>
       
   945             <apiDesc>
       
   946                 <p>CPd_text </p>
       
   947             </apiDesc>
       
   948         </cxxTypedefDetail>
       
   949     </cxxTypedef>
       
   950     <cxxTypedef id="CP_class::CPc_type_alias">
       
   951         <apiName>CPc_type_alias</apiName>
       
   952         <shortdesc/>
       
   953         <cxxTypedefDetail>
       
   954             <cxxTypedefDefinition>
       
   955                 <cxxTypedefAccessSpecifier value="private"/>
       
   956                 <cxxTypedefDeclaredType>CPc_typedef</cxxTypedefDeclaredType>
       
   957                 <cxxTypedefScopedName>CP_class</cxxTypedefScopedName>
       
   958                 <cxxTypedefPrototype>CPc_typedef CPc_type_alias</cxxTypedefPrototype>
       
   959                 <cxxTypedefNameLookup>CP_class::CPc_type_alias</cxxTypedefNameLookup>
       
   960                 <cxxTypedefAPIItemLocation>
       
   961                     <cxxTypedefDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   962                     <cxxTypedefDeclarationFileLine name="lineNumber" value="157"/>
       
   963                 </cxxTypedefAPIItemLocation>
       
   964             </cxxTypedefDefinition>
       
   965             <apiDesc>
       
   966                 <p>CPc_text </p>
       
   967             </apiDesc>
       
   968         </cxxTypedefDetail>
       
   969     </cxxTypedef>
       
   970     <cxxTypedef id="CP_class::CPf_type_alias">
       
   971         <apiName>CPf_type_alias</apiName>
       
   972         <shortdesc/>
       
   973         <cxxTypedefDetail>
       
   974             <cxxTypedefDefinition>
       
   975                 <cxxTypedefAccessSpecifier value="protected"/>
       
   976                 <cxxTypedefDeclaredType>CPf_typedef</cxxTypedefDeclaredType>
       
   977                 <cxxTypedefScopedName>CP_class</cxxTypedefScopedName>
       
   978                 <cxxTypedefPrototype>CPf_typedef CPf_type_alias</cxxTypedefPrototype>
       
   979                 <cxxTypedefNameLookup>CP_class::CPf_type_alias</cxxTypedefNameLookup>
       
   980                 <cxxTypedefAPIItemLocation>
       
   981                     <cxxTypedefDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
   982                     <cxxTypedefDeclarationFileLine name="lineNumber" value="160"/>
       
   983                 </cxxTypedefAPIItemLocation>
       
   984             </cxxTypedefDefinition>
       
   985             <apiDesc>
       
   986                 <p>CPf_text </p>
       
   987             </apiDesc>
       
   988         </cxxTypedefDetail>
       
   989     </cxxTypedef>
       
   990     <cxxTypedef id="CP_class::CPe_type_alias">
       
   991         <apiName>CPe_type_alias</apiName>
       
   992         <shortdesc/>
       
   993         <cxxTypedefDetail>
       
   994             <cxxTypedefDefinition>
       
   995                 <cxxTypedefAccessSpecifier value="protected"/>
       
   996                 <cxxTypedefDeclaredType>CPe_typedef</cxxTypedefDeclaredType>
       
   997                 <cxxTypedefScopedName>CP_class</cxxTypedefScopedName>
       
   998                 <cxxTypedefPrototype>CPe_typedef CPe_type_alias</cxxTypedefPrototype>
       
   999                 <cxxTypedefNameLookup>CP_class::CPe_type_alias</cxxTypedefNameLookup>
       
  1000                 <cxxTypedefAPIItemLocation>
       
  1001                     <cxxTypedefDeclarationFile name="filePath" value="C:/p4work/EPOC/DV3/team/2005/sysdoc/tools/Doxygen/branches/DITA/test/CXX/daft/structure/classes/src/CP.h"/>
       
  1002                     <cxxTypedefDeclarationFileLine name="lineNumber" value="162"/>
       
  1003                 </cxxTypedefAPIItemLocation>
       
  1004             </cxxTypedefDefinition>
       
  1005             <apiDesc>
       
  1006                 <p>CPe_text </p>
       
  1007             </apiDesc>
       
  1008         </cxxTypedefDetail>
       
  1009     </cxxTypedef>
       
  1010 </cxxClass>""" 
   610 </cxxClass>"""