Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/LibreOffice/sc/inc/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 2 kB image not shown  

Quelle  dpitemdata.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/.
 */


#pragma once

#include "scdllapi.h"

#include <sal/types.h>
#include <rtl/ustring.h>
#include <rtl/ustring.hxx>
#include "calcmacros.hxx"
#include "dpglobal.hxx"

/**
 * When assigning a string value, you can also assign an interned string
 * whose life-cycle is managed by the pivot cache that it belongs to.  Those
 * methods that take a string pointer assume that the string is interned.
 *
 * <p>Do make sure that an item with an interned string won't persist after
 * the pivot cache has been destroyed or reloaded.</p>
 */

class ScDPItemData
{
    friend class ScDPCache;

public:
    enum Type { GroupValue = 0, RangeStart = 1, Value = 2, String = 3, Error = 4, Empty = 5 };

    SC_DLLPUBLIC static const sal_Int32 DateFirst;
    SC_DLLPUBLIC static const sal_Int32 DateLast;

    struct GroupValueAttr
    {
        sal_Int32 mnGroupType;
        sal_Int32 mnValue;
    };

private:

    union {
        rtl_uString* mpString;
        GroupValueAttr maGroupValue;
        double mfValue;
    };

    sal_uInt8 meType:3;
    bool mbStringInterned:1;

    void DisposeString();

public:
    // case insensitive equality
    static sal_Int32 Compare(const ScDPItemData& rA, const ScDPItemData& rB);

    ScDPItemData();
    ScDPItemData(const ScDPItemData& r);
    ScDPItemData(const OUString& rStr);
    ScDPItemData(sal_Int32 nGroupType, sal_Int32 nValue);
    SC_DLLPUBLIC ~ScDPItemData();

    Type GetType() const { return static_cast<Type>(meType); }
    void SetEmpty();
    void SetString(const OUString& rS);
    void SetStringInterned( rtl_uString* pS );
    void SetValue(double fVal);
    void SetRangeStart(double fVal);
    void SetRangeFirst();
    void SetRangeLast();
    void SetErrorStringInterned( rtl_uString* pS );
    bool IsCaseInsEqual(const ScDPItemData& r) const;

    // exact equality
    bool operator==(const ScDPItemData& r) const;
    bool operator< (const ScDPItemData& r) const;

    ScDPItemData& operator= (const ScDPItemData& r);

    SC_DLLPUBLIC bool IsEmpty() const;
    bool IsValue() const;
    SC_DLLPUBLIC OUString GetString() const;
    SC_DLLPUBLIC double GetValue() const;
    SC_DLLPUBLIC GroupValueAttr GetGroupValue() const;
    SC_DLLPUBLIC bool HasStringData() const ;

    ScDPValue::Type GetCellType() const;

#if DEBUG_PIVOT_TABLE
    void Dump(const char* msg) const;
#endif
};

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

Messung V0.5
C=94 H=92 G=92

¤ 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.