LCOV - code coverage report
Current view: top level - include/svl - svdde.hxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 0 12 0.0 %
Date: 2015-06-13 12:38:46 Functions: 0 16 0.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             : #ifndef INCLUDED_SVL_SVDDE_HXX
      21             : #define INCLUDED_SVL_SVDDE_HXX
      22             : 
      23             : #include <svl/svldllapi.h>
      24             : #include <sot/exchange.hxx>
      25             : #include <tools/solar.h>
      26             : #include <tools/link.hxx>
      27             : #include <vector>
      28             : 
      29             : class DdeString;
      30             : class DdeData;
      31             : class DdeConnection;
      32             : class DdeTransaction;
      33             : class DdeLink;
      34             : class DdeRequest;
      35             : class DdeWarmLink;
      36             : class DdeHotLink;
      37             : class DdePoke;
      38             : class DdeExecute;
      39             : class DdeItem;
      40             : class DdeTopic;
      41             : class DdeService;
      42             : struct DdeDataImp;
      43             : struct DdeImp;
      44             : class DdeItemImp;
      45             : struct Conversation;
      46             : 
      47             : typedef ::std::vector< DdeService* > DdeServices;
      48             : typedef ::std::vector< long > DdeFormats;
      49             : typedef ::std::vector< Conversation* > ConvList;
      50             : 
      51             : 
      52             : // - DdeData -
      53             : 
      54             : 
      55             : class SVL_DLLPUBLIC DdeData
      56             : {
      57             :     friend class    DdeInternal;
      58             :     friend class    DdeService;
      59             :     friend class    DdeConnection;
      60             :     friend class    DdeTransaction;
      61             :     DdeDataImp*     pImp;
      62             : 
      63             :     SVL_DLLPRIVATE void            Lock();
      64             : 
      65             :     void            SetFormat( SotClipboardFormatId nFmt );
      66             : 
      67             : public:
      68             :                     DdeData();
      69             :                     DdeData( SAL_UNUSED_PARAMETER const void*, SAL_UNUSED_PARAMETER long, SAL_UNUSED_PARAMETER SotClipboardFormatId = SotClipboardFormatId::STRING );
      70             :                     DdeData( SAL_UNUSED_PARAMETER const OUString& );
      71             :                     DdeData( const DdeData& );
      72             :                     ~DdeData();
      73             : 
      74             :     operator const  void*() const;
      75             :     operator        long() const;
      76             : 
      77             :     SotClipboardFormatId GetFormat() const;
      78             : 
      79             :     DdeData&        operator = ( const DdeData& );
      80             : 
      81             :     static sal_uLong GetExternalFormat(SotClipboardFormatId nFmt);
      82             :     static SotClipboardFormatId GetInternalFormat(sal_uLong nFmt);
      83             : };
      84             : 
      85             : 
      86             : // - DdeTransaction -
      87             : 
      88             : 
      89             : class SVL_DLLPUBLIC DdeTransaction
      90             : {
      91             : public:
      92             :     void    Data( const DdeData* );
      93             :     void    Done( bool bDataValid );
      94             : protected:
      95             :     DdeConnection&  rDde;
      96             :     DdeData         aDdeData;
      97             :     DdeString*      pName;
      98             :     short           nType;
      99             :     sal_IntPtr      nId;
     100             :     sal_IntPtr      nTime;
     101             :     Link<>          aData;
     102             :     Link<>          aDone;
     103             :     bool            bBusy;
     104             : 
     105             :                     DdeTransaction( DdeConnection&, SAL_UNUSED_PARAMETER const OUString&, SAL_UNUSED_PARAMETER long = 0 );
     106             : 
     107             : public:
     108             :     virtual        ~DdeTransaction();
     109             : 
     110           0 :     bool            IsBusy() { return bBusy; }
     111             :     const OUString GetName() const;
     112             : 
     113             :     void            Execute();
     114             : 
     115           0 :     void            SetDataHdl( const Link<>& rLink ) { aData = rLink; }
     116             :     const Link<>&   GetDataHdl() const { return aData; }
     117             : 
     118           0 :     void            SetDoneHdl( const Link<>& rLink ) { aDone = rLink; }
     119             :     const Link<>&   GetDoneHdl() const { return aDone; }
     120             : 
     121           0 :     void                 SetFormat( SotClipboardFormatId nFmt ) { aDdeData.SetFormat( nFmt );  }
     122           0 :     SotClipboardFormatId GetFormat() const       { return aDdeData.GetFormat(); }
     123             : 
     124             :     long            GetError();
     125             : 
     126             : private:
     127             :     friend class    DdeInternal;
     128             :     friend class    DdeConnection;
     129             : 
     130             :                             DdeTransaction( const DdeTransaction& ) SAL_DELETED_FUNCTION;
     131             :     const DdeTransaction&   operator= ( const DdeTransaction& ) SAL_DELETED_FUNCTION;
     132             : 
     133             : };
     134             : 
     135             : 
     136             : // - DdeLink -
     137             : 
     138             : 
     139             : class SVL_DLLPUBLIC DdeLink : public DdeTransaction
     140             : {
     141             :     Link<>          aNotify;
     142             : 
     143             : public:
     144             :                     DdeLink( DdeConnection&, const OUString&, long = 0 );
     145             :     virtual        ~DdeLink();
     146             : 
     147             :     void            SetNotifyHdl( const Link<>& rLink ) { aNotify = rLink; }
     148             :     const Link<>&   GetNotifyHdl() const { return aNotify; }
     149             :     void    Notify();
     150             : };
     151             : 
     152             : 
     153             : // - DdeWarmLink -
     154             : 
     155             : 
     156             : class SVL_DLLPUBLIC DdeWarmLink : public DdeLink
     157             : {
     158             : public:
     159             :             DdeWarmLink( DdeConnection&, const OUString&, long = 0 );
     160             : };
     161             : 
     162             : 
     163             : // - DdeHotLink -
     164             : 
     165             : 
     166           0 : class SVL_DLLPUBLIC DdeHotLink : public DdeLink
     167             : {
     168             : public:
     169             :             DdeHotLink( DdeConnection&, const OUString&, long = 0 );
     170             : };
     171             : 
     172             : 
     173             : // - DdeRequest -
     174             : 
     175             : 
     176           0 : class SVL_DLLPUBLIC DdeRequest : public DdeTransaction
     177             : {
     178             : public:
     179             :             DdeRequest( DdeConnection&, const OUString&, long = 0 );
     180             : };
     181             : 
     182             : 
     183             : // - DdePoke -
     184             : 
     185             : 
     186           0 : class SVL_DLLPUBLIC DdePoke : public DdeTransaction
     187             : {
     188             : public:
     189             :             DdePoke( DdeConnection&, const OUString&, const char*, long,
     190             :                      SotClipboardFormatId = SotClipboardFormatId::STRING, long = 0 );
     191             :             DdePoke( DdeConnection&, const OUString&, SAL_UNUSED_PARAMETER const DdeData&, long = 0 );
     192             :             DdePoke( DdeConnection&, const OUString&, const OUString&, long = 0 );
     193             : };
     194             : 
     195             : 
     196             : // - DdeExecute -
     197             : 
     198             : 
     199           0 : class SVL_DLLPUBLIC DdeExecute : public DdeTransaction
     200             : {
     201             : public:
     202             :             DdeExecute( DdeConnection&, const OUString&, long = 0 );
     203             : };
     204             : 
     205             : 
     206             : // - DdeConnection -
     207             : 
     208             : 
     209             : class SVL_DLLPUBLIC DdeConnection
     210             : {
     211             :     friend class    DdeInternal;
     212             :     friend class    DdeTransaction;
     213             :     std::vector<DdeTransaction*> aTransactions;
     214             :     DdeString*      pService;
     215             :     DdeString*      pTopic;
     216             :     DdeImp*         pImp;
     217             : 
     218             : public:
     219             :                     DdeConnection( SAL_UNUSED_PARAMETER const OUString&, SAL_UNUSED_PARAMETER const OUString& );
     220             :                     ~DdeConnection();
     221             : 
     222             :     long            GetError();
     223             :     sal_IntPtr      GetConvId();
     224             : 
     225             :     static const std::vector<DdeConnection*>& GetConnections();
     226             : 
     227             :     bool            IsConnected();
     228             : 
     229             :     const OUString  GetServiceName();
     230             :     const OUString  GetTopicName();
     231             : 
     232             : private:
     233             :                             DdeConnection( const DdeConnection& ) SAL_DELETED_FUNCTION;
     234             :     const DdeConnection&    operator= ( const DdeConnection& ) SAL_DELETED_FUNCTION;
     235             : };
     236             : 
     237             : 
     238             : // - DdeItem -
     239             : 
     240             : 
     241             : class SVL_DLLPUBLIC DdeItem
     242             : {
     243             :     friend class    DdeInternal;
     244             :     friend class    DdeTopic;
     245             :     DdeString*      pName;
     246             :     DdeTopic*       pMyTopic;
     247             :     DdeItemImp*     pImpData;
     248             : 
     249             :     void            IncMonitor( sal_uLong );
     250             :     void            DecMonitor( sal_uLong );
     251             : 
     252             : protected:
     253             :     sal_uInt8            nType;
     254             : 
     255             : public:
     256             :                     DdeItem( const sal_Unicode* );
     257             :                     DdeItem( SAL_UNUSED_PARAMETER const OUString& );
     258             :                     DdeItem( const DdeItem& );
     259             :                     virtual ~DdeItem();
     260             : 
     261             :     const OUString GetName() const;
     262             :     short           GetLinks();
     263             :     void            NotifyClient();
     264             : };
     265             : 
     266             : 
     267             : // - DdeItem -
     268             : 
     269             : 
     270           0 : class SVL_DLLPUBLIC DdeGetPutItem : public DdeItem
     271             : {
     272             : public:
     273             :                     DdeGetPutItem( const sal_Unicode* p );
     274             :                     DdeGetPutItem( const OUString& rStr );
     275             :                     DdeGetPutItem( const DdeItem& rItem );
     276             : 
     277             :     virtual DdeData* Get( SotClipboardFormatId );
     278             :     virtual bool    Put( const DdeData* );
     279             :     virtual void    AdviseLoop( bool );     // Start / Stop AdviseLoop
     280             : };
     281             : 
     282             : 
     283             : // - DdeTopic -
     284             : 
     285             : 
     286             : class SVL_DLLPUBLIC DdeTopic
     287             : {
     288             :     SVL_DLLPRIVATE void _Disconnect( sal_IntPtr );
     289             : 
     290             : public:
     291             :     void    Connect( sal_IntPtr );
     292             :     void    Disconnect( sal_IntPtr );
     293             :     virtual DdeData* Get(SotClipboardFormatId);
     294             :     virtual bool Put( const DdeData* );
     295             :     virtual bool Execute( const OUString* );
     296             :     // Eventually create a new item. return 0 -> Item creation failed
     297             :     virtual bool MakeItem( const OUString& rItem );
     298             : 
     299             :     // A Warm-/Hot-Link is created. Return true if successful
     300             :     virtual bool    StartAdviseLoop();
     301             :     bool    StopAdviseLoop();
     302             : 
     303             : private:
     304             :     friend class    DdeInternal;
     305             :     friend class    DdeService;
     306             :     friend class    DdeItem;
     307             : 
     308             : private:
     309             :     DdeString*      pName;
     310             :     OUString   aItem;
     311             :     std::vector<DdeItem*> aItems;
     312             :     Link<>          aConnectLink;
     313             :     Link<>          aDisconnectLink;
     314             :     Link<>          aGetLink;
     315             :     Link<>          aPutLink;
     316             :     Link<>          aExecLink;
     317             : 
     318             : public:
     319             :                     DdeTopic( SAL_UNUSED_PARAMETER const OUString& );
     320             :     virtual        ~DdeTopic();
     321             : 
     322             :     const OUString GetName() const;
     323             :     long            GetConvId();
     324             : 
     325             :     void            SetConnectHdl( const Link<>& rLink ) { aConnectLink = rLink; }
     326             :     const Link<>&   GetConnectHdl() const { return aConnectLink;  }
     327             :     void            SetDisconnectHdl( const Link<>& rLink ) { aDisconnectLink = rLink; }
     328             :     const Link<>&   GetDisconnectHdl() const { return aDisconnectLink;  }
     329             :     void            SetGetHdl( const Link<>& rLink ) { aGetLink = rLink; }
     330             :     const Link<>&   GetGetHdl() const { return aGetLink;  }
     331             :     void            SetPutHdl( const Link<>& rLink ) { aPutLink = rLink; }
     332             :     const Link<>&   GetPutHdl() const { return aPutLink;  }
     333             :     void            SetExecuteHdl( const Link<>& rLink ) { aExecLink = rLink; }
     334             :     const Link<>&   GetExecuteHdl() const { return aExecLink; }
     335             : 
     336             :     void            NotifyClient( const OUString& );
     337             :     bool            IsSystemTopic();
     338             : 
     339             :     void            InsertItem( DdeItem* );     // For own superclasses
     340             :     DdeItem*        AddItem( const DdeItem& );  // Will be cloned
     341             :     void            RemoveItem( const DdeItem& );
     342             :     const OUString&   GetCurItem() { return aItem;  }
     343             :     const std::vector<DdeItem*>& GetItems() const  { return aItems; }
     344             : 
     345             : private:
     346             :                     DdeTopic( const DdeTopic& ) SAL_DELETED_FUNCTION;
     347             :     const DdeTopic& operator= ( const DdeTopic& ) SAL_DELETED_FUNCTION;
     348             : };
     349             : 
     350             : 
     351             : // - DdeService -
     352             : 
     353             : 
     354             : class SVL_DLLPUBLIC DdeService
     355             : {
     356             :     friend class    DdeInternal;
     357             : 
     358             : public:
     359             :     bool    IsBusy();
     360             :     OUString GetHelp();
     361             :     // Eventually creating a new item. return 0 -> Topic creation failed
     362             :     bool    MakeTopic( const OUString& rItem );
     363             : 
     364             : protected:
     365             :     OUString Topics();
     366             :     OUString Formats();
     367             :     OUString SysItems();
     368             :     OUString Status();
     369             :     OUString SysTopicGet( const OUString& );
     370             :     bool    SysTopicExecute( const OUString* );
     371             : 
     372             :     const DdeTopic* GetSysTopic() const { return pSysTopic; }
     373             : private:
     374             :     std::vector<DdeTopic*> aTopics;
     375             :     DdeFormats      aFormats;
     376             :     DdeTopic*       pSysTopic;
     377             :     DdeString*      pName;
     378             :     ConvList*       pConv;
     379             :     short           nStatus;
     380             : 
     381             :     SVL_DLLPRIVATE bool HasCbFormat( sal_uInt16 );
     382             : 
     383             : public:
     384             :                     DdeService( SAL_UNUSED_PARAMETER const OUString& );
     385             :     virtual        ~DdeService();
     386             : 
     387             :     const OUString  GetName() const;
     388             :     short           GetError()              { return nStatus; }
     389             : 
     390             :     static DdeServices& GetServices();
     391             :     std::vector<DdeTopic*>& GetTopics() { return aTopics; }
     392             : 
     393             :     void            AddTopic( const DdeTopic& );
     394             :     void            RemoveTopic( const DdeTopic& );
     395             : 
     396             :     void            AddFormat(SotClipboardFormatId);
     397             :     void            RemoveFormat(SotClipboardFormatId);
     398             :     bool            HasFormat(SotClipboardFormatId);
     399             : 
     400             : private:
     401             :       //              DdeService( const DdeService& );
     402             :     //int             operator= ( const DdeService& );
     403             : };
     404             : 
     405             : 
     406             : // - DdeTransaction -
     407             : 
     408             : 
     409           0 : inline long DdeTransaction::GetError()
     410             : {
     411           0 :     return rDde.GetError();
     412             : }
     413             : #endif // INCLUDED_SVL_SVDDE_HXX
     414             : 
     415             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11