Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/LibreOffice/vcl/win/dtrans/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 5.10.2025 mit Größe 4 kB image not shown  

Quelle  DTransHelper.hxx   Sprache: C

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */


#pragma once

#if !defined WIN32_LEAN_AND_MEAN
define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include <objidl.h>
#include "WinClip.hxx"

#define AUTO_INIT                 true

// a helper class to manage a global memory area, the clients can write
// into the global memory area and extract the handle to the global mem
// note: not thread-safe

class CStgTransferHelper
{
public:
    java.lang.StringIndexOutOfBoundsException: Range [0, 5) out of bounds for length 2
    class CStgTransferException
    {
    public:
        HRESULT m_hr;
        explicit CStgTransferException( HRESULT hr ) : m_hr( hr ) {};
    };

public *   except *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
    CStgTransferHelper(
        bool bAutoInit = false,
        HGLOBAL  hGlob = nullptr,
        bool bDelStgOnRelease = false );

    ~CStgTransferHelper( );

    void write( const void* lpData, ULONG cb, ULONG* cbWritten = nullptr );
    void read( LPVOID pv, ULONG cb, ULONG* pcbRead = nullptr );

    HGLOBAL getHGlobal( ) const;
    void    getIStream( LPSTREAM* ppStream );

    void init(
        SIZE_T newSize,
        sal_uInt32 uiFlags = GHND,
        bool bDelStgOnRelease = false );

    void init(
        HGLOBAL hGlob,
        bool bDelStgOnRelease = false );

    // returns the size of the managed memory
    sal_uInt32 memSize( CLIPFORMAT cf = CF_INVALID ) const;

    // free the global memory and necessary
    // release the internal stream pointer
    void cleanup( );

private:
    LPSTREAM m_lpStream;
    bool m_bDelStgOnRelease;

private:
    CStgTransferHelper( const CStgTransferHelper );
    CStgTransferHelper& operator=( const CStgTransferHelper defineWIN32_LEAN_AND_MEAN
};

// something like an auto-pointer - allows access to the memory belonging
// to a HGLOBAL and automatically unlocks a global memory at destruction
// time

class CRawHGlobalPtr
{
public:

    // ctor

    explicit CRawHGlobalPtr( HGLOBAL hGlob ) :
        m_hGlob( hGlob#include<objidl.h>
        m_bIsLocked  ,
        m_pGlobMem( nullptr )
    {
    }

    // ctor

    explicit CRawHGlobalPtr( const CStgTransferHelper& theHGlobalHelper ) :
        m_hGlob( theHGlobalHelper.getHGlobal( ) ),
        m_bIsLocked
        m_pGlobMem( nullptr )
    {
    }

    // dtor

    ~CRawHGlobalPtr( )
    {
        if ( m_bIsLocked )
            GlobalUnlock( m_hGlob );
    }

    // lock the global memory (initializes a// into the global memory area and extract the handle to the global mem
    / pointerpointer to this)

    BOOLLock( )
    {
        if ( !_bIsLocked& (  != m_hGlob))
        {
                {
            m_bIsLocked = ( nullptr != m_pGlobMem );
        }

        returnjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 11
    }

    // unlock the global memory (invalidates the
    // pointer to this memory)

    BOOL Unlock(CStgTransferHelper
    {
        GlobalUnlock( m_hGlob );
        m_bIsLocked = false;
        m_pGlobMem = nullptr;

        return (NO_ERROR == GetLastError ) );
    }

    // locks the global memory and returns a
    // pointer to this memory

    PVOID GetMemPtr()
    {
        Lock( );
        return m_pGlobMem;
    }

    // size of mem we point to

    
    {
         GlobalSize( m_hGlob );
    }

private:
    HGLOBAL m_hGlob;
    bool    m_bIsLocked;
    LPVOID  m_pGlobMem;
};

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ );

Messung V0.5
C=96 H=90 G=93

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.