LCOV - code coverage report
Current view: top level - libreoffice/autodoc/source/parser_i/idl - pe_singl.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 85 99 85.9 %
Date: 2012-12-27 Functions: 14 18 77.8 %
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 <s2_luidl/pe_singl.hxx>
      22             : 
      23             : 
      24             : // NOT FULLY DEFINED SERVICES
      25             : #include <ary/idl/i_gate.hxx>
      26             : #include <ary/idl/i_singleton.hxx>
      27             : #include <ary/idl/i_sisingleton.hxx>
      28             : #include <ary/idl/ip_ce.hxx>
      29             : #include <ary/doc/d_oldidldocu.hxx>
      30             : #include <s2_luidl/pe_type2.hxx>
      31             : #include <s2_luidl/tk_keyw.hxx>
      32             : #include <s2_luidl/tk_ident.hxx>
      33             : #include <s2_luidl/tk_punct.hxx>
      34             : 
      35             : 
      36             : 
      37             : namespace csi
      38             : {
      39             : namespace uidl
      40             : {
      41             : 
      42             : 
      43           3 : PE_Singleton::PE_Singleton()
      44             :     :   eState(e_none),
      45             :         sData_Name(),
      46             :         bIsPreDeclaration(false),
      47             :         pCurSingleton(0),
      48             :         pCurSiSingleton(0),
      49             :         pPE_Type(0),
      50           3 :         nCurParsed_Type(0)
      51             : {
      52           3 :     pPE_Type        = new PE_Type(nCurParsed_Type);
      53           3 : }
      54             : 
      55             : void
      56           3 : PE_Singleton::EstablishContacts( UnoIDL_PE *                io_pParentPE,
      57             :                                ary::Repository &        io_rRepository,
      58             :                                TokenProcessing_Result & o_rResult )
      59             : {
      60           3 :     UnoIDL_PE::EstablishContacts(io_pParentPE,io_rRepository,o_rResult);
      61           3 :     pPE_Type->EstablishContacts(this,io_rRepository,o_rResult);
      62           3 : }
      63             : 
      64           6 : PE_Singleton::~PE_Singleton()
      65             : {
      66           6 : }
      67             : 
      68             : void
      69          84 : PE_Singleton::ProcessToken( const Token & i_rToken )
      70             : {
      71          84 :     i_rToken.Trigger(*this);
      72          84 : }
      73             : 
      74             : 
      75             : void
      76          19 : PE_Singleton::Process_MetaType( const TokMetaType & i_rToken )
      77             : {
      78          19 :     switch ( i_rToken.Id() )
      79             :     {
      80             :         case TokMetaType::mt_service:
      81           4 :                     if (eState == e_std)
      82             :                     {
      83           4 :                         SetResult(done, push_sure, pPE_Type.Ptr());
      84           4 :                         eState = in_service;
      85             :                     }
      86             :                     else
      87           0 :                         On_Default();
      88           4 :                     break;
      89             :         case TokMetaType::mt_singleton:
      90          15 :                     if (eState == need_name)
      91          15 :                         SetResult(done, stay);
      92             :                     else
      93           0 :                         On_Default();
      94          15 :                     break;
      95             :         default:
      96             :             // KORR_FUTURE
      97             :             // Should throw syntax error warning
      98             :                     ;
      99             : 
     100             :     }   // end switch
     101          19 : }
     102             : 
     103             : void
     104          15 : PE_Singleton::Process_Identifier( const TokIdentifier & i_rToken )
     105             : {
     106          15 :     if (eState == need_name)
     107             :     {
     108          15 :         sData_Name = i_rToken.Text();
     109          15 :         SetResult(done, stay);
     110          15 :         eState = need_curlbr_open;
     111             :     }
     112             :     else
     113           0 :         On_Default();
     114          15 : }
     115             : 
     116             : void
     117          38 : PE_Singleton::Process_Punctuation( const TokPunctuation & i_rToken )
     118             : {
     119          38 :     switch (i_rToken.Id())
     120             :     {
     121             :         case TokPunctuation::CurledBracketOpen:
     122           4 :                     if (eState == need_curlbr_open)
     123             :                     {
     124           4 :                         pCurSingleton = &Gate().Ces().Store_Singleton(
     125           4 :                                                         CurNamespace().CeId(),
     126           8 :                                                         sData_Name );
     127           4 :                         PassDocuAt(*pCurSingleton);
     128           4 :                         SetResult(done, stay);
     129           4 :                         eState = e_std;
     130             :                     }
     131             :                     else
     132           0 :                         On_Default();
     133           4 :                     break;
     134             :         case TokPunctuation::CurledBracketClose:
     135           4 :                     if (eState == e_std)
     136             :                     {
     137           4 :                         SetResult(done, stay);
     138           4 :                         eState = need_finish;
     139             :                     }
     140             :                     else
     141           0 :                         On_Default();
     142           4 :                     break;
     143             :         case TokPunctuation::Semicolon:
     144          19 :                     switch (eState)
     145             :                     {
     146           4 :                        case e_std:  SetResult(done, stay);
     147           4 :                                     break;
     148             :                        case need_finish:
     149          15 :                                     SetResult(done, pop_success);
     150          15 :                                     eState = e_none;
     151          15 :                                     break;
     152             :                        default:
     153           0 :                                     On_Default();
     154             :                     }   // end switch
     155          19 :                     break;
     156             :         case TokPunctuation::Colon:
     157          11 :                     switch (eState)
     158             :                     {
     159             :                        case need_curlbr_open:
     160          11 :                                     SetResult(done, push_sure, pPE_Type.Ptr());
     161          11 :                                     eState = in_base_interface;
     162          11 :                                     break;
     163             :                        default:
     164           0 :                                     On_Default();
     165             :                     }   // end switch
     166          11 :                     break;
     167             :         default:
     168           0 :                     On_Default();
     169             :     }   // end switch
     170          38 : }
     171             : 
     172             : void
     173           0 : PE_Singleton::Process_Default()
     174             : {
     175           0 :     On_Default();
     176           0 : }
     177             : 
     178             : 
     179             : void
     180           0 : PE_Singleton::On_Default()
     181             : {
     182           0 :     SetResult(not_done, pop_failure);
     183           0 : }
     184             : 
     185             : void
     186          15 : PE_Singleton::InitData()
     187             : {
     188          15 :     eState = need_name;
     189          15 :     sData_Name.clear();
     190          15 :     bIsPreDeclaration = false;
     191          15 :     pCurSingleton = 0;
     192          15 :     pCurSiSingleton = 0;
     193          15 :     nCurParsed_Type = 0;
     194          15 : }
     195             : 
     196             : void
     197          15 : PE_Singleton::TransferData()
     198             : {
     199          15 :     if (NOT bIsPreDeclaration)
     200             :     {
     201             :         csv_assert(sData_Name.size() > 0);
     202             :         csv_assert( (pCurSingleton != 0) != (pCurSiSingleton != 0) );
     203             :     }
     204             : 
     205          15 :     eState = e_none;
     206          15 : }
     207             : 
     208             : void
     209          15 : PE_Singleton::ReceiveData()
     210             : {
     211          15 :     switch (eState)
     212             :     {
     213             :         case in_service:
     214           4 :                     pCurSingleton->Set_Service(nCurParsed_Type);
     215           4 :                     nCurParsed_Type = 0;
     216           4 :                     eState = e_std;
     217           4 :                     break;
     218             :         case in_base_interface:
     219          11 :                     pCurSiSingleton = &Gate().Ces().Store_SglIfcSingleton(
     220          11 :                                                     CurNamespace().CeId(),
     221             :                                                     sData_Name,
     222          22 :                                                     nCurParsed_Type );
     223          11 :                     PassDocuAt(*pCurSiSingleton);
     224          11 :                     nCurParsed_Type = 0;
     225          11 :                     eState = need_finish;
     226          11 :                     break;
     227             :         default:
     228             :             csv_assert(false);
     229             :     }   // end switch
     230          15 : }
     231             : 
     232             : UnoIDL_PE &
     233          12 : PE_Singleton::MyPE()
     234             : {
     235          12 :     return *this;
     236             : }
     237             : 
     238             : }   // namespace uidl
     239           3 : }   // namespace csi
     240             : 
     241             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10