LCOV - code coverage report
Current view: top level - libreoffice/autodoc/source/display/idl - hi_factory.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 110 122 90.2 %
Date: 2012-12-27 Functions: 12 14 85.7 %
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_factory.hxx"
      22             : 
      23             : 
      24             : // NOT FULLY DEFINED SERVICES
      25             : #include <ary/idl/i_ce.hxx>
      26             : #include <toolkit/hf_title.hxx>
      27             : #include "hfi_doc.hxx"
      28             : #include "hfi_navibar.hxx"
      29             : #include "hfi_tag.hxx"
      30             : #include "hfi_typetext.hxx"
      31             : #include "hi_linkhelper.hxx"
      32             : 
      33             : 
      34             : extern const String
      35           1 :     C_sCellStyle_SummaryLeft("imsum_left");
      36             : extern const String
      37           1 :     C_sCellStyle_SummaryRight("imsum_right");
      38             : extern const String
      39           1 :     C_sCellStyle_MDetail("imdetail");
      40             : extern const String
      41           1 :     C_sMemberTitle("membertitle");
      42             : 
      43             : 
      44             : namespace
      45             : {
      46             : 
      47             : const char C_sSpace[92] = "                              "
      48             :                           "                              "
      49             :                           "                               ";
      50             : }
      51             : 
      52             : 
      53             : void
      54       12108 : HtmlFactory_Idl::produce_SummaryDeclaration( Xml::Element &      o_row,
      55             :                                              const client &      i_ce ) const
      56             : {
      57       12108 :     produce_InternalLink(o_row, i_ce);
      58       12108 : }
      59             : 
      60             : void
      61       12108 : HtmlFactory_Idl::produce_InternalLink( Xml::Element &  o_screen,
      62             :                                        const client &  i_ce ) const
      63             : {
      64       12108 :     StreamLock aLocalLink(100);
      65       12108 :     aLocalLink() << "#" << i_ce.LocalName();
      66             : 
      67             :     o_screen
      68       12108 :         >> *new Html::TableCell
      69       24216 :             << new Html::ClassAttr( C_sCellStyle_SummaryLeft )
      70       36324 :             >> *new Html::Link( aLocalLink().c_str() )
      71       36324 :                 << i_ce.LocalName();
      72       12108 : }
      73             : 
      74             : void
      75       15274 : HtmlFactory_Idl::produce_ShortDoc( Xml::Element &   o_screen,
      76             :                                    const client &   i_ce ) const
      77             : {
      78             :     Xml::Element &
      79             :         rDetailsRowCell = o_screen
      80       15274 :                             >> *new Html::TableCell
      81       30548 :                                 << new Html::ClassAttr( C_sCellStyle_SummaryRight );
      82             :     HF_IdlShortDocu
      83       15274 :         aLinkDoc(Env(), rDetailsRowCell);
      84       15274 :     aLinkDoc.Produce_byData( i_ce );
      85             : 
      86       15274 :     rDetailsRowCell << new Xml::XmlCode("&nbsp;");
      87       15274 : }
      88             : 
      89             : // KORR_FUTURE: Does not belong here (implementation inheritance)!
      90             : void
      91         624 : HtmlFactory_Idl::produce_Bases( Xml::Element &   o_screen,
      92             :                                 const client &   i_ce,
      93             :                                 const String &   i_sLabel ) const
      94             : {
      95         624 :     ary::idl::Type_id nBaseT = baseOf(i_ce);
      96         624 :     if ( nBaseT.IsValid() )
      97             :     {
      98             :         HF_DocEntryList
      99         338 :             aDocList( o_screen );
     100         338 :         aDocList.Produce_Term(i_sLabel);
     101             : 
     102         338 :         int nDepth = 0;
     103             :         Xml::Element &
     104         338 :             rBaseList = aDocList.Produce_Definition()
     105         676 :                                 >> *new Xml::AnElement("pre")
     106         676 :                                     << new Xml::AnAttribute("style","font-family:monospace;");
     107             :         rBaseList
     108         338 :             >> *new Html::Strong
     109         676 :                 << i_ce.LocalName();
     110             :         rBaseList
     111         338 :             << "\n";
     112             :         recursive_ShowBases( rBaseList,
     113             :                              nBaseT,
     114         338 :                              nDepth );
     115             :     }
     116         624 : }
     117             : 
     118             : void
     119        5187 : HtmlFactory_Idl::produce_Members( ce_list &               it_list,
     120             :                                   const String &          i_summaryTitle,
     121             :                                   const String &          i_summaryLabel,
     122             :                                   const String &          i_detailsTitle,
     123             :                                   const String &          i_detailsLabel,
     124             :                                   const E_MemberViewType  i_viewType ) const
     125             : {
     126             :     csv_assert( it_list );
     127             : 
     128        5187 :     Dyn< HF_SubTitleTable > pSummary;
     129        5187 :     if  (   ( i_viewType == viewtype_summary )
     130             :         ||  ( i_viewType == viewtype_complete )
     131             :         )
     132             :     {
     133             :         pSummary = new HF_SubTitleTable(
     134        3130 :                 CurOut(),
     135             :                 i_summaryLabel,
     136             :                 i_summaryTitle,
     137        3130 :                 2 );
     138             :     }
     139             : 
     140        5187 :     Dyn< HF_SubTitleTable > pDetails;
     141        5187 :     if  (   ( i_viewType == viewtype_details )
     142             :         ||  ( i_viewType == viewtype_complete )
     143             :         )
     144             :     {
     145             :         pDetails = new HF_SubTitleTable(
     146        3130 :                 CurOut(),
     147             :                 i_detailsLabel,
     148             :                 i_detailsTitle,
     149        3130 :                 1 );
     150             :     }
     151             : 
     152       29642 :     for ( ; it_list.operator bool(); ++it_list )
     153             :     {
     154             :         const ary::idl::CodeEntity &
     155       24455 :             rCe = Env().Data().Find_Ce(*it_list);
     156             : 
     157       24455 :         if ( pSummary )
     158             :         {
     159             :             Xml::Element &
     160       15274 :                 rSummaryRow = pSummary->Add_Row();
     161       15274 :             produce_SummaryDeclaration(rSummaryRow, rCe);
     162             : //            produce_InternalLink(rSummaryRow, rCe);
     163       15274 :             produce_ShortDoc(rSummaryRow, rCe);
     164             :         }
     165             : 
     166       24455 :         if ( pDetails )
     167       15274 :             produce_MemberDetails(*pDetails, rCe);
     168        5187 :     }
     169        5187 : }
     170             : 
     171             : void
     172        3510 : HtmlFactory_Idl::produce_Title( HF_TitleTable &     o_title,
     173             :                                 const String &      i_label,
     174             :                                 const client &      i_ce ) const
     175             : {
     176             :     StreamLock
     177        3510 :         slAnnotations(200);
     178        3510 :     get_Annotations(slAnnotations(), i_ce);
     179             :     StreamLock
     180        3510 :         slTitle(200);
     181        3510 :     slTitle() << i_label << " " << i_ce.LocalName();
     182        3510 :     o_title.Produce_Title( slAnnotations().c_str(),
     183        7020 :                            slTitle().c_str() );
     184        3510 : }
     185             : 
     186             : void
     187        4134 : HtmlFactory_Idl::get_Annotations( StreamStr &         o_out,
     188             :                                   const client &      i_ce ) const
     189             : {
     190             :     const ary::doc::OldIdlDocu *
     191        4134 :         doc = Get_IdlDocu(i_ce.Docu());
     192        4134 :     if (doc != 0)
     193             :     {
     194        2732 :         if (doc->IsDeprecated())
     195           0 :             o_out << "deprecated ";
     196        2732 :         if (NOT doc->IsPublished())
     197          56 :             o_out << "unpublished ";
     198             :     }
     199             : 
     200             :     // KORR
     201             :     //  Need to display "unpublished", if there is no docu.
     202        4134 : }
     203             : 
     204             : void
     205       19527 : HtmlFactory_Idl::write_Docu( Xml::Element &     o_screen,
     206             :                              const client &     i_ce ) const
     207             : {
     208             :     const ary::doc::OldIdlDocu *
     209       19527 :         doc = Get_IdlDocu(i_ce.Docu());
     210       19527 :     if (doc != 0)
     211             :     {
     212             :         HF_DocEntryList
     213       16635 :             aDocuList( o_screen );
     214             :         HF_IdlDocu
     215       16635 :             aDocu( Env(), aDocuList );
     216       16635 :         aDocu.Produce_fromCodeEntity(i_ce);
     217             :     }
     218             : 
     219       19527 :     write_ManualLinks(o_screen, i_ce);
     220       19527 : }
     221             : 
     222             : void
     223       19527 : HtmlFactory_Idl::write_ManualLinks( Xml::Element &  o_screen,
     224             :                                     const client &  i_ce ) const
     225             : {
     226             :     const StringVector &
     227       19527 :         rLinks2Descrs = i_ce.Secondaries().Links2DescriptionInManual();
     228       19527 :     if ( rLinks2Descrs.empty() )
     229       19527 :         return;
     230             : 
     231             :     o_screen
     232         828 :         >> *new Html::Label(C_sLocalManualLinks.c_str()+1)  // Leave out the leading '#'.
     233         414 :             << " ";
     234             :     HF_DocEntryList
     235         414 :         aDocuList( o_screen );
     236         414 :     aDocuList.Produce_Term("Developers Guide");
     237             :     csv_assert(rLinks2Descrs.size() % 2 == 0);
     238        2985 :     for ( StringVector::const_iterator it = rLinks2Descrs.begin();
     239        1990 :           it != rLinks2Descrs.end();
     240             :           ++it )
     241             :     {
     242             :         Xml::Element &
     243         581 :             rLink = aDocuList.Produce_Definition() >> *new Html::Link( Env().Link2Manual(*it));
     244         581 :         if ( (*(it+1)).empty() )
     245             :             // HACK KORR_FUTURE
     246             :             // Research what happens with manual links which contain normal characters
     247             :             // in non-utf-8 texts. And research, why utfF-8 does not work here.
     248           0 :             rLink << new Xml::XmlCode(*it);
     249             :         else
     250         581 :             rLink << new Xml::XmlCode( *(it+1) );
     251         581 :         ++it;
     252         414 :     }   // end for
     253             : }
     254             : 
     255             : void
     256           0 : HtmlFactory_Idl::produce_MemberDetails(  HF_SubTitleTable &  ,
     257             :                                          const client &      ) const
     258             : {
     259             :     // Dummy, which does not need to do anything.
     260           0 : }
     261             : 
     262             : void
     263         526 : HtmlFactory_Idl::recursive_ShowBases( Xml::Element &     o_screen,
     264             :                                       type_id            i_baseType,
     265             :                                       int &              io_nDepth ) const
     266             : {
     267             :     // Show this base
     268         526 :     ++io_nDepth;
     269             :     const ary::idl::CodeEntity *
     270         526 :         pCe = Env().Linker().Search_CeFromType(i_baseType);
     271             : 
     272             :     csv_assert(io_nDepth > 0);
     273         526 :     if (io_nDepth > 30)
     274           0 :         io_nDepth = 30;
     275             :     o_screen
     276         526 :         << (C_sSpace + 93 - 3*io_nDepth)
     277        1052 :         << new csi::xml::XmlCode("&#x2517")
     278         526 :         << " ";
     279             : 
     280         526 :     if (pCe == 0)
     281             :     {
     282             :         HF_IdlTypeText
     283           0 :             aText( Env(), o_screen );
     284           0 :         aText.Produce_byData( i_baseType );
     285             :         o_screen
     286           0 :             << "\n";
     287           0 :         --io_nDepth;
     288           0 :         return;
     289             :     }
     290             : 
     291             :     HF_IdlTypeText
     292         526 :         aBaseLink( Env(), o_screen );
     293         526 :     aBaseLink.Produce_byData(pCe->CeId());
     294             :     o_screen
     295         526 :         << "\n";
     296             : 
     297             :     // Bases
     298             :     ary::idl::Type_id
     299         526 :         nBaseT = baseOf(*pCe);
     300         526 :     if (nBaseT.IsValid())
     301         188 :         recursive_ShowBases(o_screen,nBaseT,io_nDepth);
     302             : 
     303         526 :     --io_nDepth;
     304         526 :     return;
     305             : }
     306             : 
     307             : HtmlFactory_Idl::type_id
     308           0 : HtmlFactory_Idl::inq_BaseOf( const client & ) const
     309             : {
     310             :     // Unused dummy.
     311           0 :     return type_id(0);
     312           3 : }
     313             : 
     314             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10