LCOV - code coverage report
Current view: top level - libreoffice/autodoc/source/display/idl - hfi_property.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 212 217 97.7 %
Date: 2012-12-27 Functions: 25 31 80.6 %
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 "hfi_property.hxx"
      22             : 
      23             : 
      24             : // NOT FULLY DEFINED SERVICES
      25             : #include <ary/idl/i_ce.hxx>
      26             : #include <ary/idl/ik_attribute.hxx>
      27             : #include <ary/idl/ik_constant.hxx>
      28             : #include <ary/idl/ik_enumvalue.hxx>
      29             : #include <ary/idl/ik_property.hxx>
      30             : #include <ary/idl/ik_structelem.hxx>
      31             : #include <toolkit/hf_docentry.hxx>
      32             : #include <toolkit/hf_title.hxx>
      33             : #include "hfi_typetext.hxx"
      34             : #include "hfi_doc.hxx"
      35             : #include "hfi_tag.hxx"
      36             : #include "hi_env.hxx"
      37             : #include "hi_ary.hxx"
      38             : #include "hi_linkhelper.hxx"
      39             : 
      40             : void
      41       12442 : HF_IdlDataMember::Produce_byData( const client & ce ) const
      42             : {
      43       12442 :     write_Title(ce);
      44       12442 :     enter_ContentCell();
      45       12442 :     write_Declaration(ce);
      46       12442 :     write_Description(ce);
      47       12442 :     leave_ContentCell();
      48       12442 : }
      49             : 
      50       12442 : HF_IdlDataMember::HF_IdlDataMember( Environment &       io_rEnv,
      51             :                                     HF_SubTitleTable &  o_table )
      52             :     :   HtmlFactory_Idl( io_rEnv,
      53       12442 :                          &(o_table.Add_Row()
      54       24884 :                             >> *new Html::TableCell
      55       24884 :                                 << new Html::ClassAttr(C_sCellStyle_MDetail))
      56       12442 :                        )
      57             : {
      58       12442 : }
      59             : 
      60           1 : const String sContentBorder("0");
      61           1 : const String sContentWidth("96%");
      62           1 : const String sContentPadding("5");
      63           1 : const String sContentSpacing("0");
      64             : 
      65           1 : const String sBgWhite("#ffffff");
      66           1 : const String sCenter("center");
      67             : 
      68             : void
      69        9679 : HF_IdlDataMember::write_Title( const client & i_ce ) const
      70             : {
      71        9679 :     CurOut()
      72       19358 :         >> *new Html::Label(i_ce.LocalName())
      73       19358 :             << new Html::ClassAttr(C_sMemberTitle)
      74       19358 :             << i_ce.LocalName();
      75        9679 : }
      76             : 
      77             : void
      78        9679 : HF_IdlDataMember::write_Description( const client & i_ce ) const
      79             : {
      80        9679 :     CurOut() << new Html::HorizontalLine;
      81        9679 :     write_Docu(CurOut(), i_ce);
      82        9679 : }
      83             : 
      84             : void
      85       12442 : HF_IdlDataMember::enter_ContentCell() const
      86             : {
      87             : 
      88             :     Xml::Element &
      89       12442 :         rContentCell = CurOut()
      90             :                         >> *new Html::Table( sContentBorder,
      91             :                                              sContentWidth,
      92             :                                              sContentPadding,
      93       24884 :                                              sContentSpacing )
      94       37326 :                             << new Html::ClassAttr("table-in-data")
      95       24884 :                             << new Html::BgColorAttr(sBgWhite)
      96       24884 :                             << new Html::AlignAttr(sCenter)
      97       24884 :                             >> *new Html::TableRow
      98       24884 :                                 >> *new Html::TableCell;
      99       12442 :     Out().Enter(rContentCell);
     100       12442 : }
     101             : 
     102             : 
     103             : void
     104       12442 : HF_IdlDataMember::leave_ContentCell() const
     105             : {
     106       12442 :     Out().Leave();
     107       12442 : }
     108             : 
     109             : 
     110        3166 : HF_IdlProperty::~HF_IdlProperty()
     111             : {
     112        3166 : }
     113             : 
     114             : typedef ary::idl::ifc_property::attr    PropertyAttr;
     115             : 
     116             : void
     117        3166 : HF_IdlProperty::write_Declaration( const client & i_ce ) const
     118             : {
     119        3166 :     if (PropertyAttr::HasAnyStereotype(i_ce))
     120             :     {
     121         358 :         CurOut() << "[ ";
     122         358 :         if (PropertyAttr::IsReadOnly(i_ce))
     123         226 :             CurOut() << "readonly ";
     124         358 :         if (PropertyAttr::IsBound(i_ce))
     125           4 :             CurOut() << "bound ";
     126         358 :         if (PropertyAttr::IsConstrained(i_ce))
     127           0 :             CurOut() << "constrained ";
     128         358 :         if (PropertyAttr::IsMayBeAmbiguous(i_ce))
     129           0 :             CurOut() << "maybeambiguous ";
     130         358 :         if (PropertyAttr::IsMayBeDefault(i_ce))
     131           3 :             CurOut() << "maybedefault ";
     132         358 :         if (PropertyAttr::IsMayBeVoid(i_ce))
     133         126 :             CurOut() << "maybevoid ";
     134         358 :         if (PropertyAttr::IsRemovable(i_ce))
     135           0 :             CurOut() << "removable ";
     136         358 :         if (PropertyAttr::IsTransient(i_ce))
     137           6 :             CurOut() << "transient ";
     138         358 :         CurOut() << "] ";
     139             :     }   // end if
     140             : 
     141             :     HF_IdlTypeText
     142        3166 :         aType( Env(), CurOut() );
     143        3166 :     aType.Produce_byData( PropertyAttr::Type(i_ce) );
     144             : 
     145        3166 :     CurOut() << " " >> *new Html::Bold << i_ce.LocalName();
     146        3166 :     CurOut() << ";";
     147        3166 : }
     148             : 
     149             : 
     150             : 
     151             : 
     152         513 : HF_IdlAttribute::~HF_IdlAttribute()
     153             : {
     154         513 : }
     155             : 
     156             : typedef ary::idl::ifc_attribute::attr    AttributeAttr;
     157             : 
     158             : void
     159         513 : HF_IdlAttribute::write_Declaration( const client & i_ce ) const
     160             : {
     161         513 :     if (AttributeAttr::HasAnyStereotype(i_ce))
     162             :     {
     163         279 :         CurOut() << "[ ";
     164         279 :         if (AttributeAttr::IsReadOnly(i_ce))
     165         129 :             CurOut() << "readonly ";
     166         279 :         if (AttributeAttr::IsBound(i_ce))
     167         151 :             CurOut() << "bound ";
     168         279 :         CurOut() << "] ";
     169             :     }
     170             : 
     171             :     HF_IdlTypeText
     172         513 :         aType( Env(), CurOut() );
     173         513 :     aType.Produce_byData( AttributeAttr::Type(i_ce) );
     174             : 
     175         513 :     CurOut()
     176         513 :         << " "
     177        1026 :         >> *new Html::Bold
     178        1026 :             << i_ce.LocalName();
     179             : 
     180         513 :     dyn_type_list pGetExceptions;
     181         513 :     dyn_type_list pSetExceptions;
     182         513 :     AttributeAttr::Get_GetExceptions(pGetExceptions, i_ce);
     183         513 :     AttributeAttr::Get_SetExceptions(pSetExceptions, i_ce);
     184             : 
     185         513 :     bool bGetRaises = (*pGetExceptions).IsValid();
     186         513 :     bool bSetRaises = (*pSetExceptions).IsValid();
     187         513 :     bool bRaises = bGetRaises OR bSetRaises;
     188         513 :     if (bRaises)
     189             :     {
     190         113 :         HF_DocEntryList aSub(CurOut());
     191             : 
     192         113 :         if (bGetRaises)
     193             :         {
     194             :             Xml::Element &
     195          83 :                 rGet = aSub.Produce_Definition();
     196             :             HF_IdlTypeText
     197          83 :                 aExc(Env(), rGet);
     198          83 :             type_list & itExc = *pGetExceptions;
     199             : 
     200          83 :             rGet << "get raises (";
     201          83 :             aExc.Produce_byData(*itExc);
     202          83 :             for (++itExc; itExc.operator bool(); ++itExc)
     203             :             {
     204             :                 rGet
     205           0 :                     << ",";
     206           0 :                 aExc.Produce_byData(*itExc);
     207             :             }   // end for
     208          83 :             rGet << ")";
     209          83 :             if (NOT bSetRaises)
     210           6 :                 rGet << ";";
     211             :         }   // end if (bGetRaises)
     212             : 
     213         113 :         if (bSetRaises)
     214             :         {
     215             :             Xml::Element &
     216         107 :                 rSet = aSub.Produce_Definition();
     217             :             HF_IdlTypeText
     218         107 :                 aExc(Env(), rSet);
     219         107 :             type_list & itExc = *pSetExceptions;
     220             : 
     221         107 :             rSet << "set raises (";
     222         107 :             aExc.Produce_byData(*itExc);
     223         117 :             for (++itExc; itExc.operator bool(); ++itExc)
     224             :             {
     225             :                 rSet
     226          10 :                     << ",";
     227          10 :                 aExc.Produce_byData(*itExc);
     228             :             }   // end for
     229         107 :             rSet << ");";
     230         113 :         }   // end if (bSetRaises)
     231             :     }
     232             :     else
     233             :     {
     234         400 :         CurOut() << ";";
     235         513 :     }
     236         513 : }
     237             : 
     238             : 
     239             : 
     240             : 
     241        1297 : HF_IdlEnumValue::~HF_IdlEnumValue()
     242             : {
     243        1297 : }
     244             : 
     245             : typedef ary::idl::ifc_enumvalue::attr    EnumValueAttr;
     246             : 
     247             : void
     248        1297 : HF_IdlEnumValue::write_Declaration( const client & i_ce ) const
     249             : {
     250        1297 :     CurOut()
     251        2594 :         >> *new Html::Bold
     252        2594 :             << i_ce.LocalName();
     253             : 
     254             :     const String &
     255        1297 :         rValue = EnumValueAttr::Value(i_ce);
     256        1297 :     if ( NOT rValue.empty() )
     257         128 :     {    CurOut() << " " // << " = "    // In the moment this is somehow in the value
     258         128 :                  << rValue;
     259             :         // CurOut() << ",";             // In the moment this is somehow in the value
     260             :     }
     261             :     else
     262        1169 :         CurOut() << ",";
     263        1297 : }
     264             : 
     265             : 
     266        3220 : HF_IdlConstant::~HF_IdlConstant()
     267             : {
     268        3220 : }
     269             : 
     270             : typedef ary::idl::ifc_constant::attr    ConstantAttr;
     271             : 
     272             : void
     273        3220 : HF_IdlConstant::write_Declaration( const client & i_ce ) const
     274             : {
     275        3220 :     CurOut() << "const ";
     276             :     HF_IdlTypeText
     277        3220 :         aType( Env(), CurOut() );
     278        3220 :     aType.Produce_byData(ConstantAttr::Type(i_ce));
     279        3220 :     CurOut()
     280        3220 :         << " "
     281        6440 :         >> *new Html::Bold
     282        6440 :             << i_ce.LocalName();
     283             :     const String &
     284        3220 :         rValue = ConstantAttr::Value(i_ce);
     285        3220 :     CurOut() << " "     // << " = "    // In the moment this is somehow in the value
     286        3220 :              << rValue;
     287             :     // << ";";  // In the moment this is somehow in the value
     288        3220 : }
     289             : 
     290             : 
     291        1483 : HF_IdlStructElement::~HF_IdlStructElement()
     292             : {
     293        1483 : }
     294             : 
     295             : typedef ary::idl::ifc_structelement::attr    StructElementAttr;
     296             : 
     297             : void
     298        1483 : HF_IdlStructElement::write_Declaration( const client & i_ce ) const
     299             : {
     300             :     HF_IdlTypeText
     301        1483 :         aType( Env(), CurOut() );
     302        1483 :     aType.Produce_byData(StructElementAttr::Type(i_ce));
     303        1483 :     CurOut()
     304        1483 :         << " "
     305        2966 :         >> *new Html::Bold
     306        2966 :             << i_ce.LocalName();
     307        1483 :     CurOut()
     308        1483 :         << ";";
     309        1483 : }
     310             : 
     311        2763 : HF_IdlCommentedRelationElement::~HF_IdlCommentedRelationElement()
     312             : {
     313        2763 : }
     314             : 
     315             : void
     316        1786 : HF_IdlCommentedRelationElement::produce_Summary( Environment &   io_env,
     317             :                                                  Xml::Element &  io_context,
     318             :                                                  const comref &  i_commentedRef,
     319             :                                                  const client &  i_rScopeGivingCe )
     320             : {
     321             :     csv_assert( i_commentedRef.Info() );
     322             : 
     323        1786 :     const ce_info &         rDocu = *i_commentedRef.Info();
     324             : 
     325        1786 :     bool bShort = NOT rDocu.Short().IsEmpty();
     326        1786 :     bool bDescr = NOT rDocu.Description().IsEmpty();
     327             : 
     328        1786 :     if ( bShort )
     329             :     {
     330             :         HF_IdlDocuTextDisplay
     331        1688 :                 aDescription(io_env, 0, i_rScopeGivingCe);
     332             : 
     333        1688 :         Xml::Element& rPara = io_context >> *new Html::Paragraph;
     334        1688 :         aDescription.Out().Enter( rPara );
     335        1688 :         rDocu.Short().DisplayAt( aDescription );
     336             : 
     337             :         // if there's more than just the summary - i.e. a description, or usage restrictions, or tags -,
     338             :         // then add a link to the details section
     339        1688 :         if ( bDescr OR rDocu.IsDeprecated() OR rDocu.IsOptional() OR NOT rDocu.Tags().empty() )
     340             :         {
     341         781 :             StreamLock aLocalLink(100);
     342         781 :             aLocalLink() << "#" << get_LocalLinkName(io_env, i_commentedRef);
     343             : 
     344         781 :             aDescription.Out().Out() << "(";
     345         781 :             aDescription.Out().Out()
     346        2343 :                 >> *new Html::Link( aLocalLink().c_str() )
     347         781 :                     << "details";
     348         781 :             aDescription.Out().Out() << ")";
     349             :         }
     350             : 
     351        1688 :         aDescription.Out().Leave();
     352             :     }
     353        1786 : }
     354             : 
     355             : void
     356        5526 : HF_IdlCommentedRelationElement::produce_LinkDoc( Environment &   io_env,
     357             :                                                  const client &  i_ce,
     358             :                                                  Xml::Element &  io_context,
     359             :                                                  const comref &  i_commentedRef,
     360             :                                                  const E_DocType i_docType )
     361             : {
     362        5526 :     if ( i_commentedRef.Info() != 0 )
     363             :     {
     364        3572 :         if ( i_docType == doctype_complete )
     365             :         {
     366        1786 :             HF_DocEntryList aDocList(io_context);
     367        1786 :             HF_IdlDocu aDocuDisplay(io_env, aDocList);
     368             : 
     369        1786 :             aDocuDisplay.Produce_fromReference(*i_commentedRef.Info(), i_ce);
     370             :         }
     371             :         else
     372             :         {
     373        1786 :             produce_Summary(io_env, io_context, i_commentedRef, i_ce);
     374             :         }
     375             :     }
     376             :     else
     377             :     {
     378        1954 :         HF_DocEntryList aDocList(io_context);
     379             : 
     380             :         const client *
     381        1954 :             pCe = io_env.Linker().Search_CeFromType(i_commentedRef.Type());
     382             :         const ce_info *
     383             :             pShort = pCe != 0
     384        1954 :                         ?   Get_IdlDocu(pCe->Docu())
     385        3908 :                         :   (const ce_info *)(0);
     386        1954 :         if ( pShort != 0 )
     387             :         {
     388        1642 :             aDocList.Produce_NormalTerm("(referenced entity's summary:)");
     389             :             Xml::Element &
     390        1642 :                 rDef = aDocList.Produce_Definition();
     391             :             HF_IdlDocuTextDisplay
     392        1642 :                 aShortDisplay( io_env, &rDef, *pCe);
     393        1642 :             pShort->Short().DisplayAt(aShortDisplay);
     394        1954 :         }   // end if (pShort != 0)
     395             :     }   // endif ( (*i_commentedRef).Info() != 0 ) else
     396        5526 : }
     397             : 
     398             : 
     399             : String
     400        3544 : HF_IdlCommentedRelationElement::get_LocalLinkName( Environment &  io_env,
     401             :                                                    const comref & i_commentedRef )
     402             : {
     403        3544 :     StringVector        aModules;
     404        3544 :     String              sLocalName;
     405        3544 :     ce_id               nCe;
     406        3544 :     int                 nSequenceCount = 0;
     407             : 
     408             :     const ary::idl::Type &
     409        3544 :         rType = io_env.Data().Find_Type(i_commentedRef.Type());
     410        3544 :     io_env.Data().Get_TypeText(aModules, sLocalName, nCe, nSequenceCount, rType);
     411             : 
     412             :     // speaking strictly, this is not correct: If we have two interfaces with the same local
     413             :     // name, but in different modules, then the link name will be ambiguous. However, this should
     414             :     // be too seldom a case to really make the link names that ugly by adding the module information.
     415        3544 :     return sLocalName;
     416             : }
     417             : 
     418             : void
     419        2763 : HF_IdlCommentedRelationElement::write_Title( const client & /*i_ce*/ ) const
     420             : {
     421             : 
     422             :     Xml::Element &
     423        2763 :         rAnchor = CurOut()
     424        8289 :                     >> *new Html::Label(get_LocalLinkName(Env(), m_relation))
     425        5526 :                         << new Html::ClassAttr(C_sMemberTitle);
     426             : 
     427             :     HF_IdlTypeText
     428        2763 :         aText(Env(), rAnchor);
     429        2763 :     aText.Produce_byData(m_relation.Type());
     430        2763 : }
     431             : 
     432             : void
     433        2763 : HF_IdlCommentedRelationElement::write_Declaration( const client & /*i_ce*/ ) const
     434             : {
     435             :     // nothing to do here - an entity which is a commented relation does not have a declaration
     436        2763 : }
     437             : 
     438             : void
     439        2763 : HF_IdlCommentedRelationElement::write_Description( const client & i_ce ) const
     440             : {
     441        2763 :     produce_LinkDoc( Env(), i_ce, CurOut(), m_relation, doctype_complete );
     442        2766 : }
     443             : 
     444             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10