Orb/python/orb/hrefloader.py
changeset 4 468f4c8d3d5b
equal deleted inserted replaced
3:d8fccb2cd802 4:468f4c8d3d5b
       
     1 # Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
       
     2 # All rights reserved.
       
     3 # This component and the accompanying materials are made available
       
     4 # under the terms of the License "Eclipse Public License v1.0"
       
     5 # which accompanies this distribution, and is available
       
     6 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 #
       
     8 # Initial Contributors:
       
     9 # Nokia Corporation - initial contribution.
       
    10 #
       
    11 # Contributors:
       
    12 #
       
    13 try:
       
    14     from xml.etree import cElementTree as etree
       
    15 except ImportError:
       
    16     from xml.etree import ElementTree as etree
       
    17 import xml
       
    18 import os
       
    19 import logging
       
    20 
       
    21 
       
    22 class HrefLoader(object):
       
    23     """
       
    24     Class that parses DITA cxx files and returns the header file an API is declared in.
       
    25     
       
    26     >>> refloader = HrefLoader(".", parser=EtreeStub()) # Pass in a stub parser for testing
       
    27     >>> refloader.get("class_c_always_online_e_com_interface.xml#class_c_always_online_e_com_interface")
       
    28     'D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h'
       
    29     """
       
    30     def __init__(self, filedir, parser=etree):
       
    31         self.basedir = filedir
       
    32         self.parser = parser
       
    33         self.decls = ['cxxClassDeclarationFile', 'cxxTypedefDeclarationFile', 'cxxFunctionDeclarationFile', 'cxxVariableDeclarationFile',]
       
    34 
       
    35     def get(self, url):
       
    36         filename = url.split('#')[0].split('::')[-1]
       
    37         id = url.split('#')[1] if '#' in url else filename
       
    38         filepath = os.path.join(self.basedir, filename)      
       
    39         try:
       
    40             tree = self.parser.parse(filepath)
       
    41         #except xml.parsers.expat.ExpatError, e:
       
    42         except Exception, e:
       
    43             logging.error("%s could not be parsed: %s\n" % (filepath, str(e)))
       
    44             return ""
       
    45         except IOError:
       
    46             return ""
       
    47         in_correct_element = False
       
    48         for el in tree.getiterator():
       
    49             if 'id' in el.attrib and el.attrib['id'] == id:
       
    50                 in_correct_element = True
       
    51             if el.tag in self.decls and in_correct_element:
       
    52                 return el.attrib['value']            
       
    53         return ""
       
    54 
       
    55 
       
    56 ################################################################
       
    57 # Unit test code
       
    58 ################################################################
       
    59 import unittest
       
    60 from cStringIO import StringIO
       
    61 
       
    62 
       
    63 class EtreeStub(object):    
       
    64     def parse(self, file):
       
    65         return etree.parse(StringIO(class_c_always_online))
       
    66 
       
    67 
       
    68 class InvalidEtreeStub(object):    
       
    69     def parse(self, file):
       
    70         return etree.parse(StringIO("<foo><bar"))
       
    71 
       
    72 
       
    73 class TestHrefLoader(unittest.TestCase):
       
    74     def test_i_return_a_header_when_passed_a_href(self):
       
    75         refloader = HrefLoader(".", parser=EtreeStub())
       
    76         self.assertTrue("D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h" == 
       
    77                         refloader.get("class_c_always_online_e_com_interface.xml#class_c_always_online_e_com_interface"))
       
    78             
       
    79     def test_i_continue_if_a_file_is_invalid(self):
       
    80         try:
       
    81             hl = HrefLoader(".", parser=InvalidEtreeStub())
       
    82             hl.get("")
       
    83         except Exception:
       
    84             self.fail("Shouldnt have raised an exception")
       
    85 
       
    86     def test_i_return_an_empty_string_when_passed_a_href_that_doesnt_exist(self):
       
    87         refloader = HrefLoader(".", parser=EtreeStub())
       
    88         self.assertTrue("" == refloader.get("class_c_always_online_e_com_interface.xml#foo_bar"))
       
    89 
       
    90     def test_i_return_an_empty_string_when_asked_for_a_file__that_doesnt_exist(self):
       
    91         refloader = HrefLoader(".")
       
    92         self.assertTrue("" == refloader.get("class_c_always_online_e_com_interface.xml#foo_bar"))
       
    93 
       
    94 
       
    95 class_c_always_online = """<?xml version='1.0' encoding='UTF-8' standalone='no'?>
       
    96 <!DOCTYPE cxxClass PUBLIC "-//NOKIA//DTD DITA C++ API Class Reference Type v0.5.0//EN" "dtd/cxxClass.dtd" >
       
    97 <cxxClass id="class_c_always_online_e_com_interface">
       
    98     <apiName>CAlwaysOnlineEComInterface</apiName>
       
    99     <shortdesc/>
       
   100     <cxxClassDetail>
       
   101         <cxxClassDefinition>
       
   102             <cxxClassAccessSpecifier value="public"/>
       
   103             <cxxClassAbstract/>
       
   104             <cxxClassDerivations>
       
   105                 <cxxClassDerivation>
       
   106                     <cxxClassDerivationAccessSpecifier value="public"/>
       
   107                     <cxxClassBaseClass keyref="class_c_base">CBase</cxxClassBaseClass>
       
   108                 </cxxClassDerivation>
       
   109             </cxxClassDerivations>
       
   110             <cxxClassAPIItemLocation>
       
   111                 <cxxClassDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   112                 <cxxClassDeclarationFileLine name="lineNumber" value="43"/>
       
   113                 <cxxClassDefinitionFile name="filePath" value="D:/EPOC/master/sf/mw/messagingmw/messagingfw/alwaysonline/AlwaysOnlineManager/src/AlwaysOnlineManagerClient.cpp"/>
       
   114                 <cxxClassDefinitionFileLineStart name="lineNumber" value="42"/>
       
   115                 <cxxClassDefinitionFileLineEnd name="lineNumber" value="95"/>
       
   116             </cxxClassAPIItemLocation>
       
   117         </cxxClassDefinition>
       
   118         <apiDesc>
       
   119             <p>7.0  <xref href="class_r_e_com_session">REComSession</xref>, <xref href="class_c_active">CActive</xref> An AlwaysOnlineManager abstract class being representative of the concrete class which the client wishes to use. It acts as a base, for a real class to provide all the functionality that a client requires. It supplies instantiation &amp; destruction by using the ECom framework, and functional services by using the methods of the actual class. </p>
       
   120         </apiDesc>
       
   121     </cxxClassDetail>
       
   122     <cxxClassNestedStruct keyref="class_c_always_online_e_com_interface">CAlwaysOnlineEComInterface</cxxClassNestedStruct>
       
   123     <cxxTypedef id="class_c_always_online_e_com_interface_1a73319f9960b3243e25a8a4c5ab41e3ca">
       
   124         <apiName>TAlwaysOnlineManagerInterfaceInitParams</apiName>
       
   125         <shortdesc/>
       
   126         <cxxTypedefDetail>
       
   127             <cxxTypedefDefinition>
       
   128                 <cxxTypedefAccessSpecifier value="public"/>
       
   129                 <cxxTypedefDeclaredType>struct <apiRelation keyref="struct_c_always_online_e_com_interface_1_1___c_e_com_interface_init_params">CAlwaysOnlineEComInterface::_CEComInterfaceInitParams</apiRelation>
       
   130                 </cxxTypedefDeclaredType>
       
   131                 <cxxTypedefScopedName>CAlwaysOnlineEComInterface</cxxTypedefScopedName>
       
   132                 <cxxTypedefPrototype>struct CAlwaysOnlineEComInterface::_CEComInterfaceInitParams TAlwaysOnlineManagerInterfaceInitParams</cxxTypedefPrototype>
       
   133                 <cxxTypedefNameLookup>CAlwaysOnlineEComInterface::TAlwaysOnlineManagerInterfaceInitParams</cxxTypedefNameLookup>
       
   134                 <cxxTypedefAPIItemLocation>
       
   135                     <cxxTypedefDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   136                     <cxxTypedefDeclarationFileLine name="lineNumber" value="51"/>
       
   137                 </cxxTypedefAPIItemLocation>
       
   138             </cxxTypedefDefinition>
       
   139             <apiDesc/>
       
   140         </cxxTypedefDetail>
       
   141     </cxxTypedef>
       
   142     <cxxFunction id="class_c_always_online_e_com_interface_1ad1417c7daef14ddd8cfbdfd87145b3f7">
       
   143         <apiName>NewL</apiName>
       
   144         <shortdesc/>
       
   145         <cxxFunctionDetail>
       
   146             <cxxFunctionDefinition>
       
   147                 <cxxFunctionAccessSpecifier value="public"/>
       
   148                 <cxxFunctionStorageClassSpecifierStatic/>
       
   149                 <cxxFunctionInline/>
       
   150                 <cxxFunctionDeclaredType>
       
   151                     <apiRelation keyref="class_c_always_online_e_com_interface">CAlwaysOnlineEComInterface</apiRelation> *</cxxFunctionDeclaredType>
       
   152                 <cxxFunctionScopedName>CAlwaysOnlineEComInterface</cxxFunctionScopedName>
       
   153                 <cxxFunctionPrototype>inline static CAlwaysOnlineEComInterface * NewL(TUid aId)</cxxFunctionPrototype>
       
   154                 <cxxFunctionNameLookup>CAlwaysOnlineEComInterface::NewL(TUid)</cxxFunctionNameLookup>
       
   155                 <cxxFunctionParameters>
       
   156                     <cxxFunctionParameter>
       
   157                         <cxxFunctionParameterDeclaredType>
       
   158                             <apiRelation keyref="class_t_uid">TUid</apiRelation>
       
   159                         </cxxFunctionParameterDeclaredType>
       
   160                         <cxxFunctionParameterDeclarationName>aId</cxxFunctionParameterDeclarationName>
       
   161                         <apiDefNote/>
       
   162                     </cxxFunctionParameter>
       
   163                 </cxxFunctionParameters>
       
   164                 <cxxFunctionAPIItemLocation>
       
   165                     <cxxFunctionDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   166                     <cxxFunctionDeclarationFileLine name="lineNumber" value="55"/>
       
   167                     <cxxFunctionDefinitionFile name="filePath" value="D:/EPOC/master/sf/mw/messagingmw/messagingfw/alwaysonline/AlwaysOnlineManager/src/AlwaysOnlineManagerClient.cpp"/>
       
   168                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="38"/>
       
   169                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="42"/>
       
   170                 </cxxFunctionAPIItemLocation>
       
   171             </cxxFunctionDefinition>
       
   172             <apiDesc/>
       
   173         </cxxFunctionDetail>
       
   174     </cxxFunction>
       
   175     <cxxFunction id="class_c_always_online_e_com_interface_1a696eafb2803d687b3349c619ecfaeb75">
       
   176         <apiName>NewL</apiName>
       
   177         <shortdesc/>
       
   178         <cxxFunctionDetail>
       
   179             <cxxFunctionDefinition>
       
   180                 <cxxFunctionAccessSpecifier value="public"/>
       
   181                 <cxxFunctionStorageClassSpecifierStatic/>
       
   182                 <cxxFunctionInline/>
       
   183                 <cxxFunctionDeclaredType>
       
   184                     <apiRelation keyref="class_c_always_online_e_com_interface">CAlwaysOnlineEComInterface</apiRelation> *</cxxFunctionDeclaredType>
       
   185                 <cxxFunctionScopedName>CAlwaysOnlineEComInterface</cxxFunctionScopedName>
       
   186                 <cxxFunctionPrototype>inline static CAlwaysOnlineEComInterface * NewL(const TDesC8 &amp;aMatchString)</cxxFunctionPrototype>
       
   187                 <cxxFunctionNameLookup>CAlwaysOnlineEComInterface::NewL(const TDesC8 &amp;)</cxxFunctionNameLookup>
       
   188                 <cxxFunctionParameters>
       
   189                     <cxxFunctionParameter>
       
   190                         <cxxFunctionParameterDeclaredType>const <apiRelation keyref="class_t_des_c8">TDesC8</apiRelation> &amp;</cxxFunctionParameterDeclaredType>
       
   191                         <cxxFunctionParameterDeclarationName>aMatchString</cxxFunctionParameterDeclarationName>
       
   192                         <apiDefNote/>
       
   193                     </cxxFunctionParameter>
       
   194                 </cxxFunctionParameters>
       
   195                 <cxxFunctionAPIItemLocation>
       
   196                     <cxxFunctionDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   197                     <cxxFunctionDeclarationFileLine name="lineNumber" value="60"/>
       
   198                     <cxxFunctionDefinitionFile name="filePath" value="D:/EPOC/master/sf/mw/messagingmw/messagingfw/alwaysonline/AlwaysOnlineManager/src/AlwaysOnlineManagerClient.cpp"/>
       
   199                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="44"/>
       
   200                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="63"/>
       
   201                 </cxxFunctionAPIItemLocation>
       
   202             </cxxFunctionDefinition>
       
   203             <apiDesc/>
       
   204         </cxxFunctionDetail>
       
   205     </cxxFunction>
       
   206     <cxxFunction id="class_c_always_online_e_com_interface_1a2993500e22cbb8d55978a7ea36140e95">
       
   207         <apiName>~CAlwaysOnlineEComInterface</apiName>
       
   208         <shortdesc/>
       
   209         <cxxFunctionDetail>
       
   210             <cxxFunctionDefinition>
       
   211                 <cxxFunctionAccessSpecifier value="public"/>
       
   212                 <cxxFunctionInline/>
       
   213                 <cxxFunctionVirtual/>
       
   214                 <cxxFunctionDestructor/>
       
   215                 <cxxFunctionDeclaredType/>
       
   216                 <cxxFunctionScopedName>CAlwaysOnlineEComInterface</cxxFunctionScopedName>
       
   217                 <cxxFunctionPrototype>inline virtual ~CAlwaysOnlineEComInterface()</cxxFunctionPrototype>
       
   218                 <cxxFunctionNameLookup>CAlwaysOnlineEComInterface::~CAlwaysOnlineEComInterface()</cxxFunctionNameLookup>
       
   219                 <cxxFunctionParameters/>
       
   220                 <cxxFunctionAPIItemLocation>
       
   221                     <cxxFunctionDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   222                     <cxxFunctionDeclarationFileLine name="lineNumber" value="63"/>
       
   223                     <cxxFunctionDefinitionFile name="filePath" value="D:/EPOC/master/sf/mw/messagingmw/messagingfw/alwaysonline/AlwaysOnlineManager/src/AlwaysOnlineManagerClient.cpp"/>
       
   224                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="30"/>
       
   225                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="36"/>
       
   226                 </cxxFunctionAPIItemLocation>
       
   227             </cxxFunctionDefinition>
       
   228             <apiDesc/>
       
   229         </cxxFunctionDetail>
       
   230     </cxxFunction>
       
   231     <cxxFunction id="class_c_always_online_e_com_interface_1a50f6b3a4ffb0d3751b7d81ccad3a1094">
       
   232         <apiName>ListImplementationsL</apiName>
       
   233         <shortdesc/>
       
   234         <cxxFunctionDetail>
       
   235             <cxxFunctionDefinition>
       
   236                 <cxxFunctionAccessSpecifier value="public"/>
       
   237                 <cxxFunctionStorageClassSpecifierStatic/>
       
   238                 <cxxFunctionInline/>
       
   239                 <cxxFunctionDeclaredType>void</cxxFunctionDeclaredType>
       
   240                 <cxxFunctionScopedName>CAlwaysOnlineEComInterface</cxxFunctionScopedName>
       
   241                 <cxxFunctionPrototype>inline static void ListImplementationsL(RImplInfoPtrArray &amp;aImplInfoArray)</cxxFunctionPrototype>
       
   242                 <cxxFunctionNameLookup>CAlwaysOnlineEComInterface::ListImplementationsL(RImplInfoPtrArray &amp;)</cxxFunctionNameLookup>
       
   243                 <cxxFunctionParameters>
       
   244                     <cxxFunctionParameter>
       
   245                         <cxxFunctionParameterDeclaredType>
       
   246                             <apiRelation keyref="class_r_pointer_array">RImplInfoPtrArray</apiRelation> &amp;</cxxFunctionParameterDeclaredType>
       
   247                         <cxxFunctionParameterDeclarationName>aImplInfoArray</cxxFunctionParameterDeclarationName>
       
   248                         <apiDefNote/>
       
   249                     </cxxFunctionParameter>
       
   250                 </cxxFunctionParameters>
       
   251                 <cxxFunctionAPIItemLocation>
       
   252                     <cxxFunctionDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   253                     <cxxFunctionDeclarationFileLine name="lineNumber" value="67"/>
       
   254                     <cxxFunctionDefinitionFile name="filePath" value="D:/EPOC/master/sf/mw/messagingmw/messagingfw/alwaysonline/AlwaysOnlineManager/src/AlwaysOnlineManagerClient.cpp"/>
       
   255                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="65"/>
       
   256                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="77"/>
       
   257                 </cxxFunctionAPIItemLocation>
       
   258             </cxxFunctionDefinition>
       
   259             <apiDesc/>
       
   260         </cxxFunctionDetail>
       
   261     </cxxFunction>
       
   262     <cxxFunction id="class_c_always_online_e_com_interface_1af9f8a32b8a8b46d6cc10cd49b674522e">
       
   263         <apiName>ListAllImplementationsL</apiName>
       
   264         <shortdesc/>
       
   265         <cxxFunctionDetail>
       
   266             <cxxFunctionDefinition>
       
   267                 <cxxFunctionAccessSpecifier value="public"/>
       
   268                 <cxxFunctionStorageClassSpecifierStatic/>
       
   269                 <cxxFunctionInline/>
       
   270                 <cxxFunctionDeclaredType>void</cxxFunctionDeclaredType>
       
   271                 <cxxFunctionScopedName>CAlwaysOnlineEComInterface</cxxFunctionScopedName>
       
   272                 <cxxFunctionPrototype>inline static void ListAllImplementationsL(RImplInfoPtrArray &amp;aImplInfoArray)</cxxFunctionPrototype>
       
   273                 <cxxFunctionNameLookup>CAlwaysOnlineEComInterface::ListAllImplementationsL(RImplInfoPtrArray &amp;)</cxxFunctionNameLookup>
       
   274                 <cxxFunctionParameters>
       
   275                     <cxxFunctionParameter>
       
   276                         <cxxFunctionParameterDeclaredType>
       
   277                             <apiRelation keyref="class_r_pointer_array">RImplInfoPtrArray</apiRelation> &amp;</cxxFunctionParameterDeclaredType>
       
   278                         <cxxFunctionParameterDeclarationName>aImplInfoArray</cxxFunctionParameterDeclarationName>
       
   279                         <apiDefNote/>
       
   280                     </cxxFunctionParameter>
       
   281                 </cxxFunctionParameters>
       
   282                 <cxxFunctionAPIItemLocation>
       
   283                     <cxxFunctionDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   284                     <cxxFunctionDeclarationFileLine name="lineNumber" value="68"/>
       
   285                     <cxxFunctionDefinitionFile name="filePath" value="D:/EPOC/master/sf/mw/messagingmw/messagingfw/alwaysonline/AlwaysOnlineManager/src/AlwaysOnlineManagerClient.cpp"/>
       
   286                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="79"/>
       
   287                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="82"/>
       
   288                 </cxxFunctionAPIItemLocation>
       
   289             </cxxFunctionDefinition>
       
   290             <apiDesc/>
       
   291         </cxxFunctionDetail>
       
   292     </cxxFunction>
       
   293     <cxxFunction id="class_c_always_online_e_com_interface_1a2d1bca910400ce5629c8ec39d5d58f10">
       
   294         <apiName>HandleServerCommandL</apiName>
       
   295         <shortdesc/>
       
   296         <cxxFunctionDetail>
       
   297             <cxxFunctionDefinition>
       
   298                 <cxxFunctionAccessSpecifier value="public"/>
       
   299                 <cxxFunctionInline/>
       
   300                 <cxxFunctionPureVirtual/>
       
   301                 <cxxFunctionDeclaredType>
       
   302                     <apiRelation keyref="_always_online_manager_client_8cpp_1af7aafba448a6eaa6ce8801f88dcb5b90">TAny</apiRelation> *</cxxFunctionDeclaredType>
       
   303                 <cxxFunctionScopedName>CAlwaysOnlineEComInterface</cxxFunctionScopedName>
       
   304                 <cxxFunctionPrototype>inline virtual TAny * HandleServerCommandL(TInt aCommand, TDesC8 *aParameters=NULL)=0</cxxFunctionPrototype>
       
   305                 <cxxFunctionNameLookup>CAlwaysOnlineEComInterface::HandleServerCommandL(TInt,TDesC8 *)</cxxFunctionNameLookup>
       
   306                 <cxxFunctionParameters>
       
   307                     <cxxFunctionParameter>
       
   308                         <cxxFunctionParameterDeclaredType>
       
   309                             <apiRelation keyref="_always_online_manager_client_8cpp_1abb88f5378e8305d934297176fe5fa298">TInt</apiRelation>
       
   310                         </cxxFunctionParameterDeclaredType>
       
   311                         <cxxFunctionParameterDeclarationName>aCommand</cxxFunctionParameterDeclarationName>
       
   312                         <apiDefNote/>
       
   313                     </cxxFunctionParameter>
       
   314                     <cxxFunctionParameter>
       
   315                         <cxxFunctionParameterDeclaredType>
       
   316                             <apiRelation keyref="class_t_des_c8">TDesC8</apiRelation> *</cxxFunctionParameterDeclaredType>
       
   317                         <cxxFunctionParameterDeclarationName>aParameters</cxxFunctionParameterDeclarationName>
       
   318                         <cxxFunctionParameterDefaultValue>NULL</cxxFunctionParameterDefaultValue>
       
   319                         <apiDefNote/>
       
   320                     </cxxFunctionParameter>
       
   321                 </cxxFunctionParameters>
       
   322                 <cxxFunctionAPIItemLocation>
       
   323                     <cxxFunctionDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   324                     <cxxFunctionDeclarationFileLine name="lineNumber" value="74"/>
       
   325                     <cxxFunctionDefinitionFile name="filePath" value="D:/EPOC/master/sf/mw/messagingmw/messagingfw/alwaysonline/AlwaysOnlineManager/src/AlwaysOnlineManagerClient.cpp"/>
       
   326                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="85"/>
       
   327                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="88"/>
       
   328                 </cxxFunctionAPIItemLocation>
       
   329             </cxxFunctionDefinition>
       
   330             <apiDesc/>
       
   331         </cxxFunctionDetail>
       
   332     </cxxFunction>
       
   333     <cxxFunction id="class_c_always_online_e_com_interface_1ac99836f705a34c72e7c26211f0d28523">
       
   334         <apiName>SetStatusQueryObject</apiName>
       
   335         <shortdesc/>
       
   336         <cxxFunctionDetail>
       
   337             <cxxFunctionDefinition>
       
   338                 <cxxFunctionAccessSpecifier value="public"/>
       
   339                 <cxxFunctionInline/>
       
   340                 <cxxFunctionDeclaredType>void</cxxFunctionDeclaredType>
       
   341                 <cxxFunctionScopedName>CAlwaysOnlineEComInterface</cxxFunctionScopedName>
       
   342                 <cxxFunctionPrototype>inline void SetStatusQueryObject(MAlwaysOnlineStatusQueryInterface *aStatusQueryObject)</cxxFunctionPrototype>
       
   343                 <cxxFunctionNameLookup>CAlwaysOnlineEComInterface::SetStatusQueryObject(MAlwaysOnlineStatusQueryInterface *)</cxxFunctionNameLookup>
       
   344                 <cxxFunctionParameters>
       
   345                     <cxxFunctionParameter>
       
   346                         <cxxFunctionParameterDeclaredType>
       
   347                             <apiRelation keyref="class_m_always_online_status_query_interface">MAlwaysOnlineStatusQueryInterface</apiRelation> *</cxxFunctionParameterDeclaredType>
       
   348                         <cxxFunctionParameterDeclarationName>aStatusQueryObject</cxxFunctionParameterDeclarationName>
       
   349                         <apiDefNote/>
       
   350                     </cxxFunctionParameter>
       
   351                 </cxxFunctionParameters>
       
   352                 <cxxFunctionAPIItemLocation>
       
   353                     <cxxFunctionDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   354                     <cxxFunctionDeclarationFileLine name="lineNumber" value="76"/>
       
   355                     <cxxFunctionDefinitionFile name="filePath" value="D:/EPOC/master/sf/mw/messagingmw/messagingfw/alwaysonline/AlwaysOnlineManager/src/AlwaysOnlineManagerClient.cpp"/>
       
   356                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="90"/>
       
   357                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="93"/>
       
   358                 </cxxFunctionAPIItemLocation>
       
   359             </cxxFunctionDefinition>
       
   360             <apiDesc/>
       
   361         </cxxFunctionDetail>
       
   362     </cxxFunction>
       
   363     <cxxFunction id="class_c_always_online_e_com_interface_1a143fe336b9c5a2c2a9b93b8ae971ba15">
       
   364         <apiName>InstanceUid</apiName>
       
   365         <shortdesc/>
       
   366         <cxxFunctionDetail>
       
   367             <cxxFunctionDefinition>
       
   368                 <cxxFunctionAccessSpecifier value="public"/>
       
   369                 <cxxFunctionInline/>
       
   370                 <cxxFunctionDeclaredType>
       
   371                     <apiRelation keyref="class_t_uid">TUid</apiRelation>
       
   372                 </cxxFunctionDeclaredType>
       
   373                 <cxxFunctionScopedName>CAlwaysOnlineEComInterface</cxxFunctionScopedName>
       
   374                 <cxxFunctionPrototype>inline TUid InstanceUid()</cxxFunctionPrototype>
       
   375                 <cxxFunctionNameLookup>CAlwaysOnlineEComInterface::InstanceUid()</cxxFunctionNameLookup>
       
   376                 <cxxFunctionParameters/>
       
   377                 <cxxFunctionAPIItemLocation>
       
   378                     <cxxFunctionDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   379                     <cxxFunctionDeclarationFileLine name="lineNumber" value="78"/>
       
   380                     <cxxFunctionDefinitionFile name="filePath" value="D:/EPOC/master/sf/mw/messagingmw/messagingfw/alwaysonline/AlwaysOnlineManager/src/AlwaysOnlineManagerClient.cpp"/>
       
   381                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="95"/>
       
   382                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="98"/>
       
   383                 </cxxFunctionAPIItemLocation>
       
   384             </cxxFunctionDefinition>
       
   385             <apiDesc/>
       
   386         </cxxFunctionDetail>
       
   387     </cxxFunction>
       
   388     <cxxFunction id="class_c_always_online_e_com_interface_1a96b2319cd9cbabda8be3612d2592e7aa">
       
   389         <apiName>CAlwaysOnlineEComInterface</apiName>
       
   390         <shortdesc/>
       
   391         <cxxFunctionDetail>
       
   392             <cxxFunctionDefinition>
       
   393                 <cxxFunctionAccessSpecifier value="protected"/>
       
   394                 <cxxFunctionInline/>
       
   395                 <cxxFunctionConstructor/>
       
   396                 <cxxFunctionDeclaredType/>
       
   397                 <cxxFunctionScopedName>CAlwaysOnlineEComInterface</cxxFunctionScopedName>
       
   398                 <cxxFunctionPrototype>inline CAlwaysOnlineEComInterface()</cxxFunctionPrototype>
       
   399                 <cxxFunctionNameLookup>CAlwaysOnlineEComInterface::CAlwaysOnlineEComInterface()</cxxFunctionNameLookup>
       
   400                 <cxxFunctionParameters/>
       
   401                 <cxxFunctionAPIItemLocation>
       
   402                     <cxxFunctionDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   403                     <cxxFunctionDeclarationFileLine name="lineNumber" value="82"/>
       
   404                     <cxxFunctionDefinitionFile name="filePath" value="D:/EPOC/master/sf/mw/messagingmw/messagingfw/alwaysonline/AlwaysOnlineManager/src/AlwaysOnlineManagerClient.cpp"/>
       
   405                     <cxxFunctionDefinitionFileLineStart name="lineNumber" value="25"/>
       
   406                     <cxxFunctionDefinitionFileLineEnd name="lineNumber" value="28"/>
       
   407                 </cxxFunctionAPIItemLocation>
       
   408             </cxxFunctionDefinition>
       
   409             <apiDesc/>
       
   410         </cxxFunctionDetail>
       
   411     </cxxFunction>
       
   412     <cxxVariable id="class_c_always_online_e_com_interface_1a4daeab4bc33a838f0935854a7a2d7b29">
       
   413         <apiName>iDtor_ID_Key</apiName>
       
   414         <shortdesc/>
       
   415         <cxxVariableDetail>
       
   416             <cxxVariableDefinition>
       
   417                 <cxxVariableAccessSpecifier value="private"/>
       
   418                 <cxxVariableDeclaredType>
       
   419                     <apiRelation keyref="class_t_uid">TUid</apiRelation>
       
   420                 </cxxVariableDeclaredType>
       
   421                 <cxxVariableScopedName>CAlwaysOnlineEComInterface</cxxVariableScopedName>
       
   422                 <cxxVariablePrototype>TUid iDtor_ID_Key</cxxVariablePrototype>
       
   423                 <cxxVariableNameLookup>CAlwaysOnlineEComInterface::iDtor_ID_Key</cxxVariableNameLookup>
       
   424                 <cxxVariableAPIItemLocation>
       
   425                     <cxxVariableDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   426                     <cxxVariableDeclarationFileLine name="lineNumber" value="86"/>
       
   427                 </cxxVariableAPIItemLocation>
       
   428             </cxxVariableDefinition>
       
   429             <apiDesc/>
       
   430         </cxxVariableDetail>
       
   431     </cxxVariable>
       
   432     <cxxVariable id="class_c_always_online_e_com_interface_1a561dc71e162a5f2754d8758a56e5145f">
       
   433         <apiName>iStatusQueryObject</apiName>
       
   434         <shortdesc/>
       
   435         <cxxVariableDetail>
       
   436             <cxxVariableDefinition>
       
   437                 <cxxVariableAccessSpecifier value="protected"/>
       
   438                 <cxxVariableDeclaredType>
       
   439                     <apiRelation keyref="class_m_always_online_status_query_interface">MAlwaysOnlineStatusQueryInterface</apiRelation> *</cxxVariableDeclaredType>
       
   440                 <cxxVariableScopedName>CAlwaysOnlineEComInterface</cxxVariableScopedName>
       
   441                 <cxxVariablePrototype>MAlwaysOnlineStatusQueryInterface * iStatusQueryObject</cxxVariablePrototype>
       
   442                 <cxxVariableNameLookup>CAlwaysOnlineEComInterface::iStatusQueryObject</cxxVariableNameLookup>
       
   443                 <cxxVariableAPIItemLocation>
       
   444                     <cxxVariableDeclarationFile name="filePath" value="D:/epoc32/include/platform/mw/AlwaysOnlineEComInterface.h"/>
       
   445                     <cxxVariableDeclarationFileLine name="lineNumber" value="90"/>
       
   446                 </cxxVariableAPIItemLocation>
       
   447             </cxxVariableDefinition>
       
   448             <apiDesc/>
       
   449         </cxxVariableDetail>
       
   450     </cxxVariable>
       
   451     <cxxClassInherits>
       
   452         <cxxClassFunctionInherited keyref="class_c_base_1a240de7932690a4e987d75690b0b6f82b">CBase::CBase()</cxxClassFunctionInherited>
       
   453         <cxxClassFunctionInherited keyref="class_c_base_1ac0a06aeab68b3e01be81f9dd79e011c6">CBase::Delete(CBase *)</cxxClassFunctionInherited>
       
   454         <cxxClassFunctionInherited keyref="class_c_base_1aae681a54d9c9b10c7d42e7e32ff109d5">CBase::Extension_(TUint,TAny *&amp;,TAny *)</cxxClassFunctionInherited>
       
   455         <cxxClassFunctionInherited keyref="class_c_base_1af4c4965092a763b0856ccbfa3cf99eaf">CBase::operator new(TUint)</cxxClassFunctionInherited>
       
   456         <cxxClassFunctionInherited keyref="class_c_base_1ab9e5f557dea4db22886189926687ddc1">CBase::operator new(TUint,TAny *)</cxxClassFunctionInherited>
       
   457         <cxxClassFunctionInherited keyref="class_c_base_1aa464dd21494443ac109084ed03b81f28">CBase::operator new(TUint,TLeave)</cxxClassFunctionInherited>
       
   458         <cxxClassFunctionInherited keyref="class_c_base_1af8429815362d4df6fecd47179e0c5dfe">CBase::operator new(TUint,TLeave,TUint)</cxxClassFunctionInherited>
       
   459         <cxxClassFunctionInherited keyref="class_c_base_1a80505bdf8b1b20a2ed102307a78eeeeb">CBase::operator new(TUint,TUint)</cxxClassFunctionInherited>
       
   460         <cxxClassFunctionInherited keyref="class_c_base_1a1390361b94424be22bb2b1020eb400ea">CBase::~CBase()</cxxClassFunctionInherited>
       
   461     </cxxClassInherits>
       
   462 </cxxClass>"""