LCOV - code coverage report
Current view: top level - libreoffice/autodoc/source/display/idl - hi_ary.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 100 102 98.0 %
Date: 2012-12-27 Functions: 21 21 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <precomp.h>
      21             : #include "hi_ary.hxx"
      22             : 
      23             : 
      24             : // NOT FULLY DEFINED SERVICES
      25             : #include <cosv/ploc_dir.hxx>
      26             : #include <ary/idl/i_gate.hxx>
      27             : #include <ary/idl/i_module.hxx>
      28             : #include <ary/idl/i_ce.hxx>
      29             : #include <ary/idl/i_type.hxx>
      30             : #include <ary/idl/ip_ce.hxx>
      31             : #include <ary/idl/ip_type.hxx>
      32             : 
      33             : 
      34             : inline const ary::idl::Gate &
      35       36770 : AryAccess::gate() const
      36       36770 :     { return rGate; }
      37             : 
      38             : inline const ary::idl::CePilot &
      39      186144 : AryAccess::ces() const
      40      186144 :     { return rGate.Ces(); }
      41             : 
      42             : inline const ary::idl::TypePilot &
      43       73041 : AryAccess::types() const
      44       73041 :     { return rGate.Types(); }
      45             : 
      46             : inline const ary::idl::Module *
      47       14075 : AryAccess::find_SubModule( const ary::idl::Module & i_parent,
      48             :                            const String &           i_name ) const
      49             : {
      50             :     ary::idl::Ce_id
      51       14075 :         nModule = i_parent.Search_Name(i_name);
      52       14075 :     return ces().Search_Module(nModule);
      53             : }
      54             : 
      55             : bool
      56       20719 : AryAccess::nextName( const char * &      io_TextPtr,
      57             :                      String &            o_name ) const
      58             : {
      59       20719 :     if ( strncmp(io_TextPtr,"::", 2) == 0 )
      60       10481 :         io_TextPtr += 2;
      61             : 
      62       20719 :     const char *    pEnd = strchr(io_TextPtr,':');
      63             :     size_t          nLen = pEnd == 0
      64       10386 :                                 ?   strlen(io_TextPtr)
      65       31105 :                                 :   pEnd - io_TextPtr;
      66       20719 :     o_name.assign(io_TextPtr, nLen);
      67       20719 :     io_TextPtr += nLen;
      68             : 
      69       20719 :     return nLen > 0;
      70             : }
      71             : 
      72             : 
      73             : 
      74           1 : AryAccess::AryAccess( const ary::idl::Gate & i_rGate )
      75           1 :     :   rGate(i_rGate)
      76             : {
      77           1 : }
      78             : 
      79             : const ary::idl::Module &
      80        3084 : AryAccess::GlobalNamespace() const
      81             : {
      82        3084 :     return ces().GlobalNamespace();
      83             : }
      84             : 
      85             : const ary::idl::Module &
      86       10167 : AryAccess::Find_Module( ary::idl::Ce_id i_ce ) const
      87             : {
      88       10167 :     return ces().Find_Module(i_ce);
      89             : }
      90             : 
      91             : 
      92             : const ary::idl::CodeEntity &
      93       90532 : AryAccess::Find_Ce( ary::idl::Ce_id i_ce ) const
      94             : {
      95       90532 :     return ces().Find_Ce(i_ce);
      96             : }
      97             : 
      98             : const ary::idl::Type &
      99       36770 : AryAccess::Find_Type( ary::idl::Type_id i_type ) const
     100             : {
     101       36770 :     return types().Find_Type(i_type);
     102             : }
     103             : 
     104             : ary::idl::Ce_id
     105        3045 : AryAccess::CeFromType( ary::idl::Type_id i_type ) const
     106             : {
     107        3045 :     return types().Search_CeRelatedTo(i_type);
     108             : }
     109             : 
     110             : bool
     111       33226 : AryAccess::IsBuiltInOrRelated( const ary::idl::Type & i_type ) const
     112             : {
     113       33226 :     return types().IsBuiltInOrRelated(i_type);
     114             : }
     115             : 
     116             : bool
     117        1559 : AryAccess::Search_Ce( StringVector &            o_module,
     118             :                       String &                  o_mainEntity,
     119             :                       String &                  o_memberEntity,
     120             :                       const char *              i_sText,
     121             :                       const ary::idl::Module &  i_referingScope ) const
     122             : {
     123        1559 :     o_module.erase(o_module.begin(),o_module.end());
     124        1559 :     o_mainEntity = String::Null_();
     125        1559 :     o_memberEntity = String::Null_();
     126             : 
     127        1559 :     const ary::idl::Module *    pModule = 0;
     128             : 
     129        3087 :     if ( strncmp(i_sText, "::", 2) == 0
     130        1528 :          OR strncmp(i_sText, "com::sun::star", 14) == 0 )
     131         776 :         pModule = &GlobalNamespace();
     132             :     else
     133             :     {
     134         783 :         pModule = &i_referingScope;
     135         783 :         ces().Get_Text(o_module, o_mainEntity, o_memberEntity, *pModule);
     136             :     }
     137             : 
     138        1559 :     const char *    pNext = i_sText;
     139        1559 :     String          sNextName;
     140             : 
     141             :     // Find Module:
     142        6316 :     while ( nextName(pNext, sNextName) )
     143             :     {
     144             :         const ary::idl::Module *
     145        4753 :             pSub = find_SubModule(*pModule, sNextName);
     146        4753 :         if (pSub != 0)
     147             :         {
     148        3198 :             pModule = pSub;
     149        3198 :             o_module.push_back(sNextName);
     150             :         }
     151             :         else
     152        1555 :             break;
     153             :     }
     154             : 
     155             :     // Find main CodeEntity:
     156        1559 :     if ( sNextName.length() == 0 )
     157           4 :         return true;
     158             :     const ary::idl::Ce_id
     159        1555 :         nCe = pModule->Search_Name(sNextName);
     160        1555 :     if (NOT nCe.IsValid())
     161         277 :         return false;
     162        1278 :     o_mainEntity = sNextName;
     163             : 
     164             :     // Find member:
     165        1278 :     if ( *pNext == 0 )
     166        1008 :         return true;
     167         270 :     nextName(pNext, o_memberEntity);
     168         270 :     if (strchr(o_memberEntity,':') != 0)
     169           0 :         return false;   // This must not happen in IDL
     170             : 
     171         270 :     return true;
     172             : }
     173             : 
     174             : bool
     175        6612 : AryAccess::Search_CesModule( StringVector &             o_module,
     176             :                              const String &             i_scope,
     177             :                              const String &             i_ce,
     178             :                              const ary::idl::Module &   i_referingScope ) const
     179             : {
     180        6612 :     o_module.erase(o_module.begin(),o_module.end());
     181             : 
     182             :     const ary::idl::Module *
     183        6612 :         pModule = 0;
     184             : 
     185       13063 :     if ( strncmp(i_scope, "::", 2) == 0
     186        6451 :          OR strncmp(i_scope, "com::sun::star", 14) == 0 )
     187        2252 :         pModule = &GlobalNamespace();
     188             :     else
     189             :     {
     190        4360 :         pModule = &i_referingScope;
     191        4360 :         static String Dummy1;
     192        4360 :         static String Dummy2;
     193        4360 :         ces().Get_Text(o_module, Dummy1, Dummy2, *pModule);
     194             :     }
     195             : 
     196        6612 :     const char *    pNext = i_scope;
     197        6612 :     String          sNextName;
     198             : 
     199             :     // Find Module:
     200       22304 :     while ( nextName(pNext, sNextName) )
     201             :     {
     202             :         const ary::idl::Module *
     203        9086 :             pSub = find_SubModule(*pModule, sNextName);
     204        9086 :         if (pSub != 0)
     205             :         {
     206        9080 :             pModule = pSub;
     207        9080 :             o_module.push_back(sNextName);
     208             :         }
     209             :         else
     210           6 :             return false;
     211             :     }  // end while
     212        6606 :     return pModule->Search_Name(i_ce).IsValid();
     213             : }
     214             : 
     215             : const ary::idl::Module *
     216          55 : AryAccess::Search_Module( const StringVector & i_nameChain ) const
     217             : {
     218             :     const ary::idl::Module * ret =
     219          55 :         &GlobalNamespace();
     220         873 :     for ( StringVector::const_iterator it = i_nameChain.begin();
     221         582 :           it != i_nameChain.end();
     222             :           ++it )
     223             :     {
     224         236 :         ret = find_SubModule(*ret, *it);
     225         236 :         if (ret == 0)
     226           0 :             break;
     227             :     }   // end for
     228          55 :     return ret;
     229             : }
     230             : 
     231             : void
     232       63143 : AryAccess::Get_CeText( StringVector &               o_module,
     233             :                        String &                     o_ce,
     234             :                        String &                     o_member,
     235             :                        const ary::idl::CodeEntity & i_ce ) const
     236             : {
     237       63143 :     ces().Get_Text(o_module, o_ce, o_member, i_ce);
     238       63143 : }
     239             : 
     240             : void
     241       36770 : AryAccess::Get_TypeText( StringVector &         o_module,
     242             :                          String &               o_sCe,
     243             :                          ary::idl::Ce_id &      o_nCe,
     244             :                          int &                  o_sequenceCount,
     245             :                          const ary::idl::Type & i_type ) const
     246             : {
     247       36770 :     i_type.Get_Text(o_module, o_sCe, o_nCe, o_sequenceCount, gate());
     248       36770 : }
     249             : 
     250             : void
     251          27 : AryAccess::Get_IndexData( std::vector<ary::idl::Ce_id> &            o_data,
     252             :                           ary::idl::alphabetical_index::E_Letter    i_letter ) const
     253             : {
     254          27 :     rGate.Ces().Get_AlphabeticalIndex(o_data, i_letter);
     255          27 : }
     256             : 
     257             : 
     258             : const ary::idl::CePilot &
     259         119 : AryAccess::Ces() const
     260             : {
     261         119 :     return rGate.Ces();
     262           3 : }
     263             : 
     264             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10