summaryrefslogtreecommitdiff
path: root/sot/inc
diff options
context:
space:
mode:
Diffstat (limited to 'sot/inc')
-rw-r--r--sot/inc/absdev.hxx49
-rw-r--r--sot/inc/agg.hxx71
-rw-r--r--sot/inc/clsids.hxx36
-rw-r--r--sot/inc/filelist.hxx78
-rw-r--r--sot/inc/makefile.mk48
-rw-r--r--sot/inc/pch/precompiled_sot.cxx31
-rw-r--r--sot/inc/pch/precompiled_sot.hxx34
-rw-r--r--sot/inc/sot/exchange.hxx250
-rw-r--r--sot/inc/sot/factory.hxx90
-rw-r--r--sot/inc/sot/formats.hxx193
-rw-r--r--sot/inc/sot/object.hxx468
-rw-r--r--sot/inc/sot/sotdata.hxx61
-rw-r--r--sot/inc/sot/sotdllapi.h43
-rw-r--r--sot/inc/sot/sotref.hxx78
-rw-r--r--sot/inc/sot/storage.hxx269
-rw-r--r--sot/inc/stg.hxx391
-rw-r--r--sot/inc/storinfo.hxx75
17 files changed, 2265 insertions, 0 deletions
diff --git a/sot/inc/absdev.hxx b/sot/inc/absdev.hxx
new file mode 100644
index 000000000000..a464ce1f3c55
--- /dev/null
+++ b/sot/inc/absdev.hxx
@@ -0,0 +1,49 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SOT_ABSDEV_HXX
+#define _SOT_ABSDEV_HXX
+
+#include <tools/solar.h>
+
+class JobSetup;
+class AbstractDeviceData
+{
+protected:
+ JobSetup * pJobSetup;
+public:
+ virtual ~AbstractDeviceData() {}
+ virtual AbstractDeviceData * Copy() const = 0;
+ virtual BOOL Equals( const AbstractDeviceData & ) const = 0;
+
+ JobSetup * GetJobSetup() const { return pJobSetup; }
+};
+
+#endif // _SOT_ABSDEV_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/agg.hxx b/sot/inc/agg.hxx
new file mode 100644
index 000000000000..2521e4701f64
--- /dev/null
+++ b/sot/inc/agg.hxx
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SOT_AGG_HXX
+#define _SOT_AGG_HXX
+
+#include <tools/ownlist.hxx>
+
+/************** class SvAggregate ***************************************/
+/************************************************************************/
+class SotFactory;
+class SotObject;
+struct SvAggregate
+{
+ union
+ {
+ SotFactory * pFact;
+ SotObject * pObj;
+ };
+ BOOL bFactory;
+ BOOL bMainObj; // TRUE, das Objekt, welches das casting steuert
+
+ SvAggregate()
+ : pFact( NULL )
+ , bFactory( FALSE )
+ , bMainObj( FALSE ) {}
+ SvAggregate( SotObject * pObjP, BOOL bMainP )
+ : pObj( pObjP )
+ , bFactory( FALSE )
+ , bMainObj( bMainP ) {}
+ SvAggregate( SotFactory * pFactP )
+ : pFact( pFactP )
+ , bFactory( TRUE )
+ , bMainObj( FALSE ) {}
+};
+
+/************** class SvAggregateMemberList *****************************/
+/************************************************************************/
+class SvAggregateMemberList
+{
+ PRV_SV_DECL_OWNER_LIST(SvAggregateMemberList,SvAggregate)
+};
+
+#endif // _AGG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/clsids.hxx b/sot/inc/clsids.hxx
new file mode 100644
index 000000000000..56030d778f5c
--- /dev/null
+++ b/sot/inc/clsids.hxx
@@ -0,0 +1,36 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SOT_CLSIDS_HXX
+#define _SOT_CLSIDS_HXX
+
+// all the definitions of the class ids are moved to the comphelper
+#include <comphelper/classids.hxx>
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/filelist.hxx b/sot/inc/filelist.hxx
new file mode 100644
index 000000000000..bf9aa3e4084d
--- /dev/null
+++ b/sot/inc/filelist.hxx
@@ -0,0 +1,78 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _FILELIST_HXX
+#define _FILELIST_HXX
+
+#include <tools/stream.hxx>
+#include "sot/sotdllapi.h"
+
+class FileStringList;
+
+class SOT_DLLPUBLIC FileList : public SvDataCopyStream
+{
+ FileStringList* pStrList;
+
+protected:
+
+ // SvData-Methoden
+ virtual void Load( SvStream& );
+ virtual void Save( SvStream& );
+ virtual void Assign( const SvDataCopyStream& );
+
+ // Liste loeschen;
+ void ClearAll( void );
+
+public:
+
+ TYPEINFO();
+ FileList();
+ ~FileList();
+
+ // Zuweisungsoperator
+ FileList& operator=( const FileList& rFileList );
+
+
+ // Im-/Export
+ SOT_DLLPUBLIC friend SvStream& operator<<( SvStream& rOStm, const FileList& rFileList );
+ SOT_DLLPUBLIC friend SvStream& operator>>( SvStream& rIStm, FileList& rFileList );
+
+ // Clipboard, D&D usw.
+ static ULONG GetFormat();
+
+
+ // Liste fuellen/abfragen
+ void AppendFile( const String& rStr );
+ String GetFile( ULONG i ) const;
+ ULONG Count( void ) const;
+
+};
+
+#endif // _FILELIST_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/makefile.mk b/sot/inc/makefile.mk
new file mode 100644
index 000000000000..bc31cd07e06b
--- /dev/null
+++ b/sot/inc/makefile.mk
@@ -0,0 +1,48 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+PRJ=..
+
+PRJNAME=sot
+TARGET=inc
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+.IF "$(ENABLE_PCH)"!=""
+ALLTAR : \
+ $(SLO)$/precompiled.pch \
+ $(SLO)$/precompiled_ex.pch
+
+.ENDIF # "$(ENABLE_PCH)"!=""
+
diff --git a/sot/inc/pch/precompiled_sot.cxx b/sot/inc/pch/precompiled_sot.cxx
new file mode 100644
index 000000000000..1e18a81180e2
--- /dev/null
+++ b/sot/inc/pch/precompiled_sot.cxx
@@ -0,0 +1,31 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "precompiled_sot.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/pch/precompiled_sot.hxx b/sot/inc/pch/precompiled_sot.hxx
new file mode 100644
index 000000000000..dc9d2de5a192
--- /dev/null
+++ b/sot/inc/pch/precompiled_sot.hxx
@@ -0,0 +1,34 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): Generated on 2006-09-01 17:50:02.092358
+
+#ifdef PRECOMPILED_HEADERS
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/sot/exchange.hxx b/sot/inc/sot/exchange.hxx
new file mode 100644
index 000000000000..48dd74e57fde
--- /dev/null
+++ b/sot/inc/sot/exchange.hxx
@@ -0,0 +1,250 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SOT_EXCHANGE_HXX
+#define _SOT_EXCHANGE_HXX
+
+#include <list>
+#include <vector>
+#include <tools/string.hxx>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/datatransfer/DataFlavor.hpp>
+#include <com/sun/star/datatransfer/dnd/DNDConstants.hdl>
+#include "sot/sotdllapi.h"
+
+class SotDataObject;
+
+namespace com { namespace sun { namespace star { namespace datatransfer {
+ class XTransferable;
+} } } }
+
+// ---------------------
+// - SotFormatStringId -
+// ---------------------
+
+typedef ULONG SotFormatStringId;
+
+// ----------------
+// - DataFlavorEx -
+// ----------------
+
+struct DataFlavorEx : public ::com::sun::star::datatransfer::DataFlavor
+{
+ SotFormatStringId mnSotId;
+};
+
+typedef ::std::vector< ::com::sun::star::datatransfer::DataFlavor > DataFlavorVector;
+typedef ::std::vector< DataFlavorEx > _DataFlavorExVector;
+
+// JP 23.03.2001 - this struct is only for "hide" the STD of the vetor,
+// because our makefile filter all this symbols and so nowbody can use
+// these struct in any interfacses.
+struct DataFlavorExVector : public _DataFlavorExVector
+{
+};
+
+typedef ::std::list< ::com::sun::star::datatransfer::DataFlavor > DataFlavorList;
+typedef ::std::list< DataFlavorEx > DataFlavorExList;
+
+SOT_DLLPUBLIC sal_Bool IsFormatSupported( const DataFlavorExVector& rDataFlavorExVector,
+ ULONG nId );
+
+// -------------------------
+// - Vordefinierte Formate -
+// -------------------------
+
+// Die Reihenfolge und die Werte dürfen nicht geändert werden,
+// da die Implementation sich darauf verläßt.
+// Standard-Formate fuer die es auch Copy/Paste-Methoden gibt
+#define FORMAT_STRING 1
+#define FORMAT_BITMAP 2
+#define FORMAT_GDIMETAFILE 3
+#define FORMAT_PRIVATE 4
+#define FORMAT_FILE 5
+#define FORMAT_FILE_LIST 6
+
+// Weitere Standardformate (diese gehen nur ueber CopyData/PasteData)
+#define FORMAT_RTF 10
+
+// Source-Options
+#define EXCHG_SOURCE_MOVEABLE ((USHORT)0x0001)
+#define EXCHG_SOURCE_COPYABLE ((USHORT)0x0002)
+#define EXCHG_SOURCE_LINKABLE ((USHORT)0x0004)
+#define EXCHG_SOURCE_PRINTABLE ((USHORT)0x0008)
+#define EXCHG_SOURCE_DISCARDABLE ((USHORT)0x0010)
+#define EXCHG_SOURCE_ALL ((USHORT)0x001F)
+#define EXCHG_SOURCE_DEF_COPYABLE ((USHORT)0x0020)
+
+// Aktionen
+#define EXCHG_ACTION_MASK ((USHORT)0x00FF)
+#define EXCHG_INOUT_ACTION_NONE ((USHORT)com::sun::star::datatransfer::dnd::DNDConstants::ACTION_NONE)
+#define EXCHG_IN_ACTION_DEFAULT EXCHG_INOUT_ACTION_NONE
+#define EXCHG_IN_ACTION_MOVE ((USHORT)com::sun::star::datatransfer::dnd::DNDConstants::ACTION_MOVE)
+#define EXCHG_IN_ACTION_COPY ((USHORT)com::sun::star::datatransfer::dnd::DNDConstants::ACTION_COPY)
+#define EXCHG_IN_ACTION_LINK ((USHORT)com::sun::star::datatransfer::dnd::DNDConstants::ACTION_LINK)
+#define EXCHG_INOUT_ACTION_PRINT ((USHORT)8)
+#define EXCHG_INOUT_ACTION_DISCARD ((USHORT)16)
+#define EXCHG_OUT_ACTION_INSERT_OBJ ((USHORT)17)
+#define EXCHG_OUT_ACTION_INSERT_BOOKMARK ((USHORT)18)
+#define EXCHG_OUT_ACTION_INSERT_FILELINK ((USHORT)19)
+#define EXCHG_OUT_ACTION_INSERT_FILE ((USHORT)20)
+#define EXCHG_OUT_ACTION_INSERT_FILELIST ((USHORT)21)
+#define EXCHG_OUT_ACTION_INSERT_IMAGEMAP ((USHORT)22)
+#define EXCHG_OUT_ACTION_INSERT_OLE ((USHORT)23)
+#define EXCHG_OUT_ACTION_INSERT_INTERACTIVE ((USHORT)24)
+#define EXCHG_OUT_ACTION_INSERT_URLBUTTON ((USHORT)25)
+#define EXCHG_OUT_ACTION_INSERT_CHAOSOBJ ((USHORT)26) // OBSOLET ab 500.b ?
+#define EXCHG_OUT_ACTION_REPLACE_OBJ ((USHORT)27)
+#define EXCHG_OUT_ACTION_REPLACE_LINK ((USHORT)28)
+#define EXCHG_OUT_ACTION_REPLACE_IMAGEMAP ((USHORT)29)
+#define EXCHG_OUT_ACTION_GET_ATTRIBUTES ((USHORT)30)
+#define EXCHG_OUT_ACTION_UPLOAD ((USHORT)31) // OBSOLET ab 500.b ?
+#define EXCHG_OUT_ACTION_MOVE_FILE ((USHORT)32)
+#define EXCHG_OUT_ACTION_MOVE_FILELIST ((USHORT)33)
+#define EXCHG_OUT_ACTION_UPDATE_RANGE ((USHORT)34)
+#define EXCHG_OUT_ACTION_INSERT_PRIVATE ((USHORT)35)
+#define EXCHG_OUT_ACTION_INSERT_HTML ((USHORT)36)
+#define EXCHG_OUT_ACTION_MOVE_PRIVATE ((USHORT)37)
+#define EXCHG_OUT_ACTION_INSERT_STRING ((USHORT)38)
+#define EXCHG_OUT_ACTION_INSERT_DRAWOBJ ((USHORT)39)
+#define EXCHG_OUT_ACTION_INSERT_SVXB ((USHORT)40)
+#define EXCHG_OUT_ACTION_INSERT_GDIMETAFILE ((USHORT)41)
+#define EXCHG_OUT_ACTION_INSERT_BITMAP ((USHORT)42)
+#define EXCHG_OUT_ACTION_INSERT_DDE ((USHORT)43)
+#define EXCHG_OUT_ACTION_INSERT_HYPERLINK ((USHORT)44)
+#define EXCHG_OUT_ACTION_REPLACE_DRAWOBJ ((USHORT)45)
+#define EXCHG_OUT_ACTION_REPLACE_SVXB ((USHORT)46)
+#define EXCHG_OUT_ACTION_REPLACE_GDIMETAFILE ((USHORT)47)
+#define EXCHG_OUT_ACTION_REPLACE_BITMAP ((USHORT)48)
+#define EXCHG_OUT_ACTION_REPLACE_GRAPH ((USHORT)49)
+#define EXCHG_OUT_ACTION_INSERT_GRAPH ((USHORT)50)
+#define EXCHG_OUT_ACTION_INSERT_MSGATTACH ((USHORT)51) // obsolet ab 500.b ?
+#define EXCHG_OUT_ACTION_COPY_CHAOSOBJ ((USHORT)52)
+#define EXCHG_OUT_ACTION_MOVE_CHAOSOBJ ((USHORT)53)
+#define EXCHG_OUT_ACTION_COPY_MSGATTACH ((USHORT)54)
+#define EXCHG_OUT_ACTION_COPY_BOOKMARK ((USHORT)55)
+#define EXCHG_OUT_ACTION_COPY_FILE ((USHORT)56)
+
+#define EXCHG_OUT_ACTION_FLAG_CREATE_THEME ((USHORT)0x0100)
+#define EXCHG_OUT_ACTION_FLAG_KEEP_POSSIZE ((USHORT)0x0200)
+#define EXCHG_OUT_ACTION_FLAG_INSERT_IMAGEMAP ((USHORT)0x0400)
+#define EXCHG_OUT_ACTION_FLAG_REPLACE_IMAGEMAP ((USHORT)0x0800)
+#define EXCHG_OUT_ACTION_FLAG_FILL ((USHORT)0x1000)
+#define EXCHG_OUT_ACTION_FLAG_INSERT_TARGETURL ((USHORT)0x2000)
+
+// Ziele
+#define EXCHG_DEST_DOC_OLEOBJ 1
+#define EXCHG_DEST_CHARTDOC_OLEOBJ 2
+#define EXCHG_DEST_DOC_TEXTFRAME 3
+#define EXCHG_DEST_DOC_GRAPHOBJ 4
+#define EXCHG_DEST_DOC_LNKD_GRAPHOBJ 5
+#define EXCHG_DEST_DOC_GRAPH_W_IMAP 6
+#define EXCHG_DEST_DOC_LNKD_GRAPH_W_IMAP 7
+#define EXCHG_DEST_DOC_IMAPREGION 8
+#define EXCHG_DEST_DOC_DRAWOBJ 9
+#define EXCHG_DEST_DOC_URLBUTTON 10
+#define EXCHG_DEST_DOC_URLFIELD 11
+#define EXCHG_DEST_DOC_GROUPOBJ 12
+#define EXCHG_DEST_SWDOC_FREE_AREA 13
+#define EXCHG_DEST_SCDOC_FREE_AREA 14
+#define EXCHG_DEST_SDDOC_FREE_AREA 15
+#define EXCHG_DEST_DOC_TEXTFRAME_WEB 16
+#define EXCHG_DEST_SWDOC_FREE_AREA_WEB 17
+
+// ------------
+// - Exchange -
+// ------------
+class SvGlobalName;
+class SOT_DLLPUBLIC SotExchange
+{
+public:
+ static ULONG RegisterFormat( const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
+ static ULONG RegisterFormatName( const String& rName );
+ static ULONG RegisterFormatMimeType( const String& rMimeType );
+
+ static ULONG GetFormat( const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
+ static String GetFormatName( ULONG nFormat );
+ static sal_Bool GetFormatDataFlavor( ULONG nFormat, ::com::sun::star::datatransfer::DataFlavor& rFlavor );
+ static String GetFormatMimeType( ULONG nFormat );
+ static BOOL IsInternal( const SvGlobalName& );
+ static ULONG GetFormatIdFromMimeType( const String& rMimeType );
+
+ // bestimme die SotFormatStringId von dem registrierten Format
+ //JP 12.11.98: diese 3 Methoden sind ab sofort ueberfluessig, da
+ // die ClipboardIds statisch sind und aequivalent zur
+ // SotFormatStringId ist!
+ static SotFormatStringId GetFormatStringId( ULONG nFormat )
+ { return nFormat; }
+ static SotFormatStringId GetFormatStringId( const String& rName )
+ { return SotExchange::RegisterFormatMimeType( rName ); }
+ static ULONG RegisterSotFormatName( SotFormatStringId nId )
+ { return nId; }
+
+ // same for XTransferable interface
+ static USHORT GetExchangeAction(
+ // XTransferable
+ const DataFlavorExVector& rDataFlavorExVector,
+ // Ziel der Aktion (EXCHG_DEST_*)
+ USHORT nDestination,
+ // Aktionen, die Quelle unterstuetzt (EXCHG_SOURCE_...)
+ USHORT nSourceOptions,
+ // vom Anwender gewaehlte Aktion (EXCHG_IN_*, EXCHG_INOUT_*)
+ USHORT nUserAction,
+ // In:- Out: Zu benutzendes Format
+ ULONG& rFormat,
+ // In:- Out: Default-Action (EXCHG_IN_*, EXCHG_INOUT_*)
+ USHORT& rDefaultAction,
+ // In:- optional - check only for this specific format
+ ULONG nOnlyTestFormat = 0,
+ // In:- optional - check the contents of Xtransferable
+ const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >* pxTransferable = NULL );
+
+ // same for XTransferable interface
+ static USHORT GetExchangeAction(
+ // XTransferable
+ const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxTransferable,
+ // Ziel der Aktion (EXCHG_DEST_*)
+ USHORT nDestination,
+ // Aktionen, die Quelle unterstuetzt (EXCHG_SOURCE_...)
+ USHORT nSourceOptions,
+ // vom Anwender gewaehlte Aktion (EXCHG_IN_*, EXCHG_INOUT_*)
+ USHORT nUserAction,
+ // In:- Out: Zu benutzendes Format
+ ULONG& rFormat,
+ // In:- Out: Default-Action (EXCHG_IN_*, EXCHG_INOUT_*)
+ USHORT& rDefaultAction,
+ // In:- optional - check only for this specific format
+ ULONG nOnlyTestFormat = 0 );
+
+ static USHORT IsChart( const SvGlobalName& rName );
+ static USHORT IsMath( const SvGlobalName& rName );
+};
+
+#endif // _EXCHANGE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/sot/factory.hxx b/sot/inc/sot/factory.hxx
new file mode 100644
index 000000000000..e2b32c6aa65c
--- /dev/null
+++ b/sot/inc/sot/factory.hxx
@@ -0,0 +1,90 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SOT_FACTORY_HXX
+#define _SOT_FACTORY_HXX
+
+#include <tools/globname.hxx>
+#include <tools/rtti.hxx>
+#include "sot/sotdllapi.h"
+
+/*************************************************************************
+*************************************************************************/
+class SotObject;
+class SotFactory;
+
+DECLARE_LIST( SotFactoryList, SotFactory * )
+typedef void * (*CreateInstanceType)( SotObject ** );
+
+//==================class SotFactory=======================================
+class SOT_DLLPUBLIC SotFactory : public SvGlobalName
+{
+ USHORT nSuperCount; // Anzahl der Superklassen
+ const SotFactory ** pSuperClasses; // Superklassen
+ CreateInstanceType pCreateFunc;
+
+ String aClassName;
+
+ static BOOL ExistTest( const SvGlobalName & );
+protected:
+ virtual ~SotFactory();
+public:
+ TYPEINFO();
+ static void DeInit();
+ static void IncSvObjectCount( SotObject * = NULL );
+ static void DecSvObjectCount( SotObject * = NULL );
+ static UINT32 GetSvObjectCount();
+ static void TestInvariant();
+
+ static const SotFactory * Find( const SvGlobalName & );
+ static const SotFactoryList * GetFactoryList();
+
+ SotFactory( const SvGlobalName &,
+ const String & rClassName, CreateInstanceType );
+
+ void PutSuperClass( const SotFactory * );
+ virtual void * CreateInstance( SotObject ** ppObj = NULL ) const;
+ void * CastAndAddRef( SotObject * ) const;
+ void * AggCastAndAddRef( SotObject * ) const;
+
+ BOOL Is( const SotFactory * pSuperClass ) const;
+ const SotFactory * GetSuper( USHORT nPos ) const
+ {
+ return nPos < nSuperCount ?
+ pSuperClasses[ nPos ]
+ : NULL;
+ }
+
+private:
+ SOT_DLLPRIVATE SotFactory( const SotFactory & );
+ SOT_DLLPRIVATE SotFactory & operator = ( const SotFactory & );
+};
+
+#endif // _FACTORY_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/sot/formats.hxx b/sot/inc/sot/formats.hxx
new file mode 100644
index 000000000000..03b0b17cd8f8
--- /dev/null
+++ b/sot/inc/sot/formats.hxx
@@ -0,0 +1,193 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SOT_FORMATS_HXX
+#define _SOT_FORMATS_HXX
+
+#ifdef _SOT_FORMATS_INCLUDE_SYSTEMFORMATS
+
+#ifdef WNT
+#ifdef _MSC_VER
+#pragma warning(push, 1)
+#pragma warning(disable: 4917)
+#endif
+#include <tools/prewin.h>
+#include <shlobj.h>
+#include <tools/postwin.h>
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+#endif
+
+#endif
+#include <sot/exchange.hxx>
+
+#define SOT_FORMAT_SYSTEM_START ((ULONG)0)
+#define SOT_FORMAT_STRING ((ULONG)FORMAT_STRING)
+#define SOT_FORMAT_BITMAP ((ULONG)FORMAT_BITMAP)
+#define SOT_FORMAT_GDIMETAFILE ((ULONG)FORMAT_GDIMETAFILE)
+#define SOT_FORMAT_PRIVATE ((ULONG)FORMAT_PRIVATE)
+#define SOT_FORMAT_FILE ((ULONG)FORMAT_FILE)
+#define SOT_FORMAT_FILE_LIST ((ULONG)FORMAT_FILE_LIST)
+#define SOT_FORMAT_RTF ((ULONG)FORMAT_RTF)
+
+#define SOT_FORMATSTR_ID_DRAWING ((ULONG)11)
+#define SOT_FORMATSTR_ID_SVXB ((ULONG)12)
+#define SOT_FORMATSTR_ID_SVIM ((ULONG)13)
+#define SOT_FORMATSTR_ID_XFA ((ULONG)14)
+#define SOT_FORMATSTR_ID_EDITENGINE ((ULONG)15)
+#define SOT_FORMATSTR_ID_INTERNALLINK_STATE ((ULONG)16)
+#define SOT_FORMATSTR_ID_SOLK ((ULONG)17)
+#define SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK ((ULONG)18)
+#define SOT_FORMATSTR_ID_TREELISTBOX ((ULONG)19)
+#define SOT_FORMATSTR_ID_NATIVE ((ULONG)20)
+#define SOT_FORMATSTR_ID_OWNERLINK ((ULONG)21)
+#define SOT_FORMATSTR_ID_STARSERVER ((ULONG)22)
+#define SOT_FORMATSTR_ID_STAROBJECT ((ULONG)23)
+#define SOT_FORMATSTR_ID_APPLETOBJECT ((ULONG)24)
+#define SOT_FORMATSTR_ID_PLUGIN_OBJECT ((ULONG)25)
+#define SOT_FORMATSTR_ID_STARWRITER_30 ((ULONG)26)
+#define SOT_FORMATSTR_ID_STARWRITER_40 ((ULONG)27)
+#define SOT_FORMATSTR_ID_STARWRITER_50 ((ULONG)28)
+#define SOT_FORMATSTR_ID_STARWRITERWEB_40 ((ULONG)29)
+#define SOT_FORMATSTR_ID_STARWRITERWEB_50 ((ULONG)30)
+#define SOT_FORMATSTR_ID_STARWRITERGLOB_40 ((ULONG)31)
+#define SOT_FORMATSTR_ID_STARWRITERGLOB_50 ((ULONG)32)
+#define SOT_FORMATSTR_ID_STARDRAW ((ULONG)33)
+#define SOT_FORMATSTR_ID_STARDRAW_40 ((ULONG)34)
+#define SOT_FORMATSTR_ID_STARIMPRESS_50 ((ULONG)35)
+#define SOT_FORMATSTR_ID_STARDRAW_50 ((ULONG)36)
+#define SOT_FORMATSTR_ID_STARCALC ((ULONG)37)
+#define SOT_FORMATSTR_ID_STARCALC_40 ((ULONG)38)
+#define SOT_FORMATSTR_ID_STARCALC_50 ((ULONG)39)
+#define SOT_FORMATSTR_ID_STARCHART ((ULONG)40)
+#define SOT_FORMATSTR_ID_STARCHART_40 ((ULONG)41)
+#define SOT_FORMATSTR_ID_STARCHART_50 ((ULONG)42)
+#define SOT_FORMATSTR_ID_STARIMAGE ((ULONG)43)
+#define SOT_FORMATSTR_ID_STARIMAGE_40 ((ULONG)44)
+#define SOT_FORMATSTR_ID_STARIMAGE_50 ((ULONG)45)
+#define SOT_FORMATSTR_ID_STARMATH ((ULONG)46)
+#define SOT_FORMATSTR_ID_STARMATH_40 ((ULONG)47)
+#define SOT_FORMATSTR_ID_STARMATH_50 ((ULONG)48)
+#define SOT_FORMATSTR_ID_STAROBJECT_PAINTDOC ((ULONG)49)
+#define SOT_FORMATSTR_ID_FILLED_AREA ((ULONG)50)
+#define SOT_FORMATSTR_ID_HTML ((ULONG)51)
+#define SOT_FORMATSTR_ID_HTML_SIMPLE ((ULONG)52)
+#define SOT_FORMATSTR_ID_CHAOS ((ULONG)53)
+#define SOT_FORMATSTR_ID_CNT_MSGATTACHFILE ((ULONG)54)
+#define SOT_FORMATSTR_ID_BIFF_5 ((ULONG)55)
+#define SOT_FORMATSTR_ID_BIFF__5 ((ULONG)56)
+#define SOT_FORMATSTR_ID_SYLK ((ULONG)57)
+#define SOT_FORMATSTR_ID_SYLK_BIGCAPS ((ULONG)58)
+#define SOT_FORMATSTR_ID_LINK ((ULONG)59)
+#define SOT_FORMATSTR_ID_DIF ((ULONG)60)
+#define SOT_FORMATSTR_ID_STARDRAW_TABBAR ((ULONG)61)
+#define SOT_FORMATSTR_ID_SONLK ((ULONG)62)
+#define SOT_FORMATSTR_ID_MSWORD_DOC ((ULONG)63)
+#define SOT_FORMATSTR_ID_STAR_FRAMESET_DOC ((ULONG)64)
+#define SOT_FORMATSTR_ID_OFFICE_DOC ((ULONG)65)
+#define SOT_FORMATSTR_ID_NOTES_DOCINFO ((ULONG)66)
+#define SOT_FORMATSTR_ID_NOTES_HNOTE ((ULONG)67)
+#define SOT_FORMATSTR_ID_NOTES_NATIVE ((ULONG)68)
+#define SOT_FORMATSTR_ID_SFX_DOC ((ULONG)69)
+#define SOT_FORMATSTR_ID_EVDF ((ULONG)70)
+#define SOT_FORMATSTR_ID_ESDF ((ULONG)71)
+#define SOT_FORMATSTR_ID_IDF ((ULONG)72)
+#define SOT_FORMATSTR_ID_EFTP ((ULONG)73)
+#define SOT_FORMATSTR_ID_EFD ((ULONG)74)
+#define SOT_FORMATSTR_ID_SVX_FORMFIELDEXCH ((ULONG)75)
+#define SOT_FORMATSTR_ID_EXTENDED_TABBAR ((ULONG)76)
+#define SOT_FORMATSTR_ID_SBA_DATAEXCHANGE ((ULONG)77)
+#define SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE ((ULONG)78)
+#define SOT_FORMATSTR_ID_SBA_PRIVATE_URL ((ULONG)79)
+#define SOT_FORMATSTR_ID_SBA_TABED ((ULONG)80)
+#define SOT_FORMATSTR_ID_SBA_TABID ((ULONG)81)
+#define SOT_FORMATSTR_ID_SBA_JOIN ((ULONG)82)
+#define SOT_FORMATSTR_ID_OBJECTDESCRIPTOR ((ULONG)83)
+#define SOT_FORMATSTR_ID_LINKSRCDESCRIPTOR ((ULONG)84)
+#define SOT_FORMATSTR_ID_EMBED_SOURCE ((ULONG)85)
+#define SOT_FORMATSTR_ID_LINK_SOURCE ((ULONG)86)
+#define SOT_FORMATSTR_ID_EMBEDDED_OBJ ((ULONG)87)
+#define SOT_FORMATSTR_ID_FILECONTENT ((ULONG)88)
+#define SOT_FORMATSTR_ID_FILEGRPDESCRIPTOR ((ULONG)89)
+#define SOT_FORMATSTR_ID_FILENAME ((ULONG)90)
+#define SOT_FORMATSTR_ID_SD_OLE ((ULONG)91)
+#define SOT_FORMATSTR_ID_EMBEDDED_OBJ_OLE ((ULONG)92)
+#define SOT_FORMATSTR_ID_EMBED_SOURCE_OLE ((ULONG)93)
+#define SOT_FORMATSTR_ID_OBJECTDESCRIPTOR_OLE ((ULONG)94)
+#define SOT_FORMATSTR_ID_LINKSRCDESCRIPTOR_OLE ((ULONG)95)
+#define SOT_FORMATSTR_ID_LINK_SOURCE_OLE ((ULONG)96)
+#define SOT_FORMATSTR_ID_SBA_CTRLDATAEXCHANGE ((ULONG)97)
+#define SOT_FORMATSTR_ID_OUTPLACE_OBJ ((ULONG)98)
+#define SOT_FORMATSTR_ID_CNT_OWN_CLIP ((ULONG)99)
+#define SOT_FORMATSTR_ID_INET_IMAGE ((ULONG)100)
+#define SOT_FORMATSTR_ID_NETSCAPE_IMAGE ((ULONG)101)
+#define SOT_FORMATSTR_ID_SBA_FORMEXCHANGE ((ULONG)102)
+#define SOT_FORMATSTR_ID_SBA_REPORTEXCHANGE ((ULONG)103)
+#define SOT_FORMATSTR_ID_UNIFORMRESOURCELOCATOR ((ULONG)104)
+#define SOT_FORMATSTR_ID_STARCHARTDOCUMENT_50 ((ULONG)105)
+#define SOT_FORMATSTR_ID_GRAPHOBJ ((ULONG)106)
+#define SOT_FORMATSTR_ID_STARWRITER_60 ((ULONG)107)
+#define SOT_FORMATSTR_ID_STARWRITERWEB_60 ((ULONG)108)
+#define SOT_FORMATSTR_ID_STARWRITERGLOB_60 ((ULONG)109)
+#define SOT_FORMATSTR_ID_STARDRAW_60 ((ULONG)110)
+#define SOT_FORMATSTR_ID_STARIMPRESS_60 ((ULONG)111)
+#define SOT_FORMATSTR_ID_STARCALC_60 ((ULONG)112)
+#define SOT_FORMATSTR_ID_STARCHART_60 ((ULONG)113)
+#define SOT_FORMATSTR_ID_STARMATH_60 ((ULONG)114)
+#define SOT_FORMATSTR_ID_WMF ((ULONG)115)
+#define SOT_FORMATSTR_ID_DBACCESS_QUERY ((ULONG)116)
+#define SOT_FORMATSTR_ID_DBACCESS_TABLE ((ULONG)117)
+#define SOT_FORMATSTR_ID_DBACCESS_COMMAND ((ULONG)118)
+#define SOT_FORMATSTR_ID_DIALOG_60 ((ULONG)119)
+#define SOT_FORMATSTR_ID_EMF ((ULONG)120)
+#define SOT_FORMATSTR_ID_BIFF_8 ((ULONG)121)
+#define SOT_FORMATSTR_ID_BMP ((ULONG)122)
+#define SOT_FORMATSTR_ID_HTML_NO_COMMENT ((ULONG)123)
+#define SOT_FORMATSTR_ID_STARWRITER_8 ((ULONG)124)
+#define SOT_FORMATSTR_ID_STARWRITERWEB_8 ((ULONG)125)
+#define SOT_FORMATSTR_ID_STARWRITERGLOB_8 ((ULONG)126)
+#define SOT_FORMATSTR_ID_STARDRAW_8 ((ULONG)127)
+#define SOT_FORMATSTR_ID_STARIMPRESS_8 ((ULONG)128)
+#define SOT_FORMATSTR_ID_STARCALC_8 ((ULONG)129)
+#define SOT_FORMATSTR_ID_STARCHART_8 ((ULONG)130)
+#define SOT_FORMATSTR_ID_STARMATH_8 ((ULONG)131)
+#define SOT_FORMATSTR_ID_XFORMS ((ULONG)132)
+#define SOT_FORMATSTR_ID_STARWRITER_8_TEMPLATE ((ULONG)133)
+#define SOT_FORMATSTR_ID_STARDRAW_8_TEMPLATE ((ULONG)134)
+#define SOT_FORMATSTR_ID_STARIMPRESS_8_TEMPLATE ((ULONG)135)
+#define SOT_FORMATSTR_ID_STARCALC_8_TEMPLATE ((ULONG)136)
+#define SOT_FORMATSTR_ID_STARCHART_8_TEMPLATE ((ULONG)137)
+#define SOT_FORMATSTR_ID_STARMATH_8_TEMPLATE ((ULONG)138)
+#define SOT_FORMATSTR_ID_STARBASE_8 ((ULONG)139)
+#define SOT_FORMATSTR_ID_HC_GDIMETAFILE ((ULONG)140)
+#define SOT_FORMATSTR_ID_USER_END SOT_FORMATSTR_ID_HC_GDIMETAFILE
+
+#endif // _SOT_FORMATS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/sot/object.hxx b/sot/inc/sot/object.hxx
new file mode 100644
index 000000000000..cb876fedcab1
--- /dev/null
+++ b/sot/inc/sot/object.hxx
@@ -0,0 +1,468 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SOT_OBJECT_HXX
+#define _SOT_OBJECT_HXX
+
+#include <sot/sotref.hxx>
+#include <sot/sotdata.hxx>
+#include <tools/globname.hxx>
+#include "sot/sotdllapi.h"
+
+/*************************************************************************
+*************************************************************************/
+
+#define TEST_INVARIANT
+#ifdef TEST_INVARIANT
+#define SO2_DECL_INVARIANT() \
+ virtual void TestObjRef( BOOL bFree ); \
+ void TestMemberObjRef( BOOL bFree ); \
+ virtual void TestInvariant( BOOL bPrint ); \
+ void TestMemberInvariant( BOOL bPrint );
+
+#define SO2_IMPL_INVARIANT(ClassName) \
+void __EXPORT ClassName::TestObjRef( BOOL bFree ) \
+{ \
+ TestMemberObjRef( bFree ); \
+} \
+void __EXPORT ClassName::TestInvariant( BOOL bPrint ) \
+{ \
+ TestMemberInvariant( bPrint ); \
+}
+
+#define SO2_IMPL_INVARIANT1(ClassName,Super1) \
+void __EXPORT ClassName::TestObjRef( BOOL bFree ) \
+{ \
+ TestMemberObjRef( bFree ); \
+ Super1::TestObjRef( bFree ); \
+} \
+void __EXPORT ClassName::TestInvariant( BOOL bPrint ) \
+{ \
+ TestMemberInvariant( bPrint ); \
+ Super1::TestInvariant( bPrint ); \
+}
+
+#define SO2_IMPL_INVARIANT2(ClassName,Super1,Super2) \
+void __EXPORT ClassName::TestObjRef( BOOL bFree ) \
+{ \
+ TestMemberObjRef( bFree ); \
+ Super1::TestObjRef( bFree ); \
+ Super2::TestObjRef( bFree ); \
+} \
+void __EXPORT ClassName::TestInvariant( BOOL bPrint ) \
+{ \
+ TestMemberInvariant( bPrint ); \
+ Super1::TestInvariant( bPrint ); \
+ Super2::TestInvariant( bPrint ); \
+}
+
+#define SO2_IMPL_INVARIANT3(ClassName,Super1,Super2,Super3) \
+void __EXPORT ClassName::TestObjRef( BOOL bFree ) \
+{ \
+ TestMemberObjRef( bFree ); \
+ Super1::TestObjRef( bFree ); \
+ Super2::TestObjRef( bFree ); \
+ Super3::TestObjRef( bFree ); \
+} \
+void __EXPORT ClassName::TestInvariant( BOOL bPrint ) \
+{ \
+ TestMemberInvariant( bPrint ); \
+ Super1::TestInvariant( bPrint ); \
+ Super2::TestInvariant( bPrint ); \
+ Super3::TestInvariant( bPrint ); \
+}
+
+#define SO2_IMPL_INVARIANT4(ClassName,Super1,Super2,Super3,Super4) \
+void __EXPORT ClassName::TestObjRef( BOOL bFree ) \
+{ \
+ TestMemberObjRef( bFree ); \
+ Super1::TestObjRef( bFree ); \
+ Super2::TestObjRef( bFree ); \
+ Super3::TestObjRef( bFree ); \
+ Super4::TestObjRef( bFree ); \
+} \
+void __EXPORT ClassName::TestInvariant( BOOL bPrint ) \
+{ \
+ TestMemberInvariant( bPrint ); \
+ Super1::TestInvariant( bPrint ); \
+ Super2::TestInvariant( bPrint ); \
+ Super3::TestInvariant( bPrint ); \
+ Super4::TestInvariant( bPrint ); \
+}
+
+#ifdef DBG_UTIL
+#define CALL_TEST_INVARIANT() SotFactory::TestInvariant()
+#else
+#define CALL_TEST_INVARIANT()
+#endif // DBG_UTIL
+
+#else // TEST_INVARIANT
+
+#define SO2_DECL_INVARIANT()
+
+#define SO2_IMPL_INVARIANT(ClassName)
+#define SO2_IMPL_INVARIANT1(ClassName,Super1)
+#define SO2_IMPL_INVARIANT2(ClassName,Super1,Super2)
+#define SO2_IMPL_INVARIANT3(ClassName,Super1,Super2,Super3)
+#define SO2_IMPL_INVARIANT4(ClassName,Super1,Super2,Super3,Super4)
+
+#define CALL_TEST_INVARIANT()
+
+#endif // TEST_INVARIANT
+
+/**************************************************************************
+**************************************************************************/
+#define SO2_DECL_BASIC_CLASS_DLL(ClassName,FacName) \
+private: \
+ static SotFactory ** GetFactoryAdress() \
+ { return &(FacName->p##ClassName##Factory); } \
+public: \
+ static void * CreateInstance( SotObject ** = NULL ); \
+ static SotFactory * ClassFactory(); \
+ virtual const SotFactory * GetSvFactory() const; \
+ virtual void * Cast( const SotFactory * );
+
+#define SO2_DECL_BASIC_CLASS(ClassName) \
+private: \
+ static SotFactory * pFactory; \
+ static SotFactory ** GetFactoryAdress() { return &pFactory; } \
+public: \
+ static void * CreateInstance( SotObject ** = NULL ); \
+ static SotFactory * ClassFactory(); \
+ virtual const SotFactory * GetSvFactory() const; \
+ virtual void * Cast( const SotFactory * );
+
+/**************************************************************************
+**************************************************************************/
+#define SO2_IMPL_BASIC_CLASS_DLL(ClassName,FactoryName,GlobalName) \
+SotFactory * ClassName::ClassFactory() \
+{ \
+ SotFactory **ppFactory = GetFactoryAdress(); \
+ if( !*ppFactory ) \
+ { \
+ *ppFactory = new FactoryName( GlobalName, \
+ String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( #ClassName ) ), \
+ ClassName::CreateInstance ); \
+ } \
+ return *ppFactory; \
+} \
+void * __EXPORT ClassName::CreateInstance( SotObject ** ppObj ) \
+{ \
+ ClassName * p = new ClassName(); \
+ if( ppObj ) \
+ *ppObj = p; \
+ return p; \
+} \
+const SotFactory * __EXPORT ClassName::GetSvFactory() const \
+{ \
+ return ClassFactory(); \
+} \
+void * __EXPORT ClassName::Cast( const SotFactory * pFact ) \
+{ \
+ void * pRet = NULL; \
+ if( !pFact || pFact == ClassFactory() ) \
+ pRet = this; \
+ return pRet; \
+}
+
+#define SO2_IMPL_BASIC_CLASS(ClassName,FactoryName,GlobalName) \
+SotFactory * ClassName::pFactory = NULL; \
+ SO2_IMPL_BASIC_CLASS_DLL(ClassName,FactoryName,GlobalName)
+
+/**************************************************************************
+**************************************************************************/
+#define SO2_IMPL_BASIC_CLASS1_DLL(ClassName,FactoryName,Super1,GlobalName)\
+SotFactory * ClassName::ClassFactory() \
+{ \
+ SotFactory **ppFactory = GetFactoryAdress(); \
+ if( !*ppFactory ) \
+ { \
+ *ppFactory = new FactoryName( GlobalName, \
+ String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( #ClassName ) ), \
+ ClassName::CreateInstance ); \
+ (*ppFactory)->PutSuperClass( Super1::ClassFactory() ); \
+ } \
+ return *ppFactory; \
+} \
+void * __EXPORT ClassName::CreateInstance( SotObject ** ppObj ) \
+{ \
+ ClassName * p = new ClassName(); \
+ Super1* pSuper1 = p; \
+ SotObject* pBasicObj = pSuper1; \
+ if( ppObj ) \
+ *ppObj = pBasicObj; \
+ return p; \
+} \
+const SotFactory * __EXPORT ClassName::GetSvFactory() const \
+{ \
+ return ClassFactory(); \
+} \
+void * __EXPORT ClassName::Cast( const SotFactory * pFact ) \
+{ \
+ void * pRet = NULL; \
+ if( !pFact || pFact == ClassFactory() ) \
+ pRet = this; \
+ if( !pRet ) \
+ pRet = Super1::Cast( pFact ); \
+ return pRet; \
+}
+
+#define SO2_IMPL_BASIC_CLASS1(ClassName,FactoryName,Super1,GlobalName) \
+SotFactory * ClassName::pFactory = NULL; \
+ SO2_IMPL_BASIC_CLASS1_DLL(ClassName,FactoryName,Super1,GlobalName)
+
+/**************************************************************************
+**************************************************************************/
+#define SO2_IMPL_BASIC_CLASS2_DLL(ClassName,FactoryName,Super1,Super2,GlobalName) \
+SotFactory * ClassName::ClassFactory() \
+{ \
+ SotFactory **ppFactory = GetFactoryAdress(); \
+ if( !*ppFactory ) \
+ { \
+ *ppFactory = new FactoryName( GlobalName, \
+ String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( #ClassName ) ), \
+ ClassName::CreateInstance ); \
+ (*ppFactory)->PutSuperClass( Super1::ClassFactory() ); \
+ (*ppFactory)->PutSuperClass( Super2::ClassFactory() ); \
+ } \
+ return *ppFactory; \
+} \
+void * __EXPORT ClassName::CreateInstance( SotObject ** ppObj ) \
+{ \
+ ClassName * p = new ClassName(); \
+ if( ppObj ) \
+ *ppObj = p; \
+ return p; \
+} \
+const SotFactory * __EXPORT ClassName::GetSvFactory() const \
+{ \
+ return ClassFactory(); \
+} \
+void * __EXPORT ClassName::Cast( const SotFactory * pFact ) \
+{ \
+ void * pRet = NULL; \
+ if( !pFact || pFact == ClassFactory() ) \
+ pRet = this; \
+ if( !pRet ) \
+ pRet = Super1::Cast( pFact ); \
+ if( !pRet ) \
+ pRet = Super2::Cast( pFact ); \
+ return pRet; \
+}
+#define SO2_IMPL_BASIC_CLASS2(ClassName,FactoryName,Super1,Super2,GlobalName) \
+SotFactory * ClassName::pFactory = NULL; \
+ SO2_IMPL_BASIC_CLASS2_DLL(ClassName,FactoryName,Super1,Super2,GlobalName)
+
+/**************************************************************************
+**************************************************************************/
+#define SO2_IMPL_BASIC_CLASS3_DLL(ClassName,FactoryName,Super1,Super2,Super3,GlobalName) \
+SotFactory * ClassName::ClassFactory() \
+{ \
+ SotFactory **ppFactory = GetFactoryAdress(); \
+ if( !*ppFactory ) \
+ { \
+ *ppFactory = new FactoryName( GlobalName, \
+ String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( #ClassName ) ), \
+ ClassName::CreateInstance );\
+ (*ppFactory)->PutSuperClass( Super1::ClassFactory() ); \
+ (*ppFactory)->PutSuperClass( Super2::ClassFactory() ); \
+ (*ppFactory)->PutSuperClass( Super3::ClassFactory() ); \
+ } \
+ return *pFactory; \
+} \
+void * __EXPORT ClassName::CreateInstance( SotObject ** ppObj ) \
+{ \
+ ClassName * p = new ClassName(); \
+ if( ppObj ) \
+ *ppObj = p; \
+ return p; \
+} \
+const SotFactory * __EXPORT ClassName::GetSvFactory() const \
+{ \
+ return ClassFactory(); \
+} \
+void * __EXPORT ClassName::Cast( const SotFactory * pFact ) \
+{ \
+ void * pRet = NULL; \
+ if( !pFact || pFact == ClassFactory() ) \
+ pRet = this; \
+ if( !pRet ) \
+ pRet = Super1::Cast( pFact ); \
+ if( !pRet ) \
+ pRet = Super2::Cast( pFact ); \
+ if( !pRet ) \
+ pRet = Super3::Cast( pFact ); \
+ return pRet; \
+}
+
+#define SO2_IMPL_BASIC_CLASS3(ClassName,FactoryName,Super1,Super2,Super3,GlobalName) \
+SotFactory * ClassName::pFactory = NULL; \
+ SO2_IMPL_BASIC_CLASS3_DLL(ClassName,FactoryName,Super1,Super2,Super3,GlobalName)
+
+/**************************************************************************
+**************************************************************************/
+#define SO2_IMPL_BASIC_CLASS4_DLL(ClassName,FactoryName,Super1,Super2,Super3,Super4,GlobalName) \
+SotFactory * ClassName::ClassFactory() \
+{ \
+ SotFactory **ppFactory = GetFactoryAdress(); \
+ if( !*ppFactory ) \
+ { \
+ *ppFactory = new SotFactory( GlobalName, \
+ String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( #ClassName ) ), \
+ ClassName::CreateInstance );\
+ (*ppFactory)->PutSuperClass( Super1::ClassFactory() ); \
+ (*ppFactory)->PutSuperClass( Super2::ClassFactory() ); \
+ (*ppFactory)->PutSuperClass( Super3::ClassFactory() ); \
+ (*ppFactory)->PutSuperClass( Super4::ClassFactory() ); \
+ } \
+ return *ppFactory; \
+} \
+void * __EXPORT ClassName::CreateInstance( SotObject ** ppObj ) \
+{ \
+ ClassName * p = new ClassName(); \
+ if( ppObj ) \
+ *ppObj = p; \
+ return p; \
+} \
+const SotFactory * __EXPORT ClassName::GetSvFactory() const \
+{ \
+ return ClassFactory(); \
+} \
+void * __EXPORT ClassName::Cast( const SotFactory * pFact ) \
+{ \
+ void * pRet = NULL; \
+ if( !pFact || pFact == ClassFactory() ) \
+ pRet = this; \
+ if( !pRet ) \
+ pRet = Super1::Cast( pFact ); \
+ if( !pRet ) \
+ pRet = Super2::Cast( pFact ); \
+ if( !pRet ) \
+ pRet = Super3::Cast( pFact ); \
+ if( !pRet ) \
+ pRet = Super4::Cast( pFact ); \
+ return pRet; \
+}
+
+#define SO2_IMPL_BASIC_CLASS4(ClassName,FactoryName,Super1,Super2,Super3,Super4,GlobalName) \
+SotFactory * ClassName::pFactory = NULL; \
+ SO2_IMPL_BASIC_CLASS4_DLL(ClassName,FactoryName,Super1,Super2,Super3,Super4,GlobalName)
+
+//==================class SotObject========================================
+#ifdef _MSC_VER
+#pragma warning(disable: 4250)
+#endif
+
+class SvAggregateMemberList;
+struct IUnknown;
+class SOT_DLLPUBLIC SotObject : virtual public SvRefBase
+{
+friend class SotFactory;
+friend class SvObject;
+ SvAggregateMemberList * pAggList; // fuer Aggregation, erstes ist das MainObj
+ USHORT nStrongLockCount;
+ USHORT nOwnerLockCount;
+ BOOL bOwner:1,
+ bSVObject:1, // Ist Proxy, dann TRUE wenn andere Seite SV ist
+ bInClose:1; // TRUE, im DoClose
+
+ void * DownAggCast( const SotFactory * pFact );
+ void RemoveInterface( ULONG );
+ void RemoveInterface( SotObject * );
+#if defined (GCC) && (defined (C281) || defined (C290) || defined (C291))
+public:
+#else
+protected:
+#endif
+ virtual ~SotObject();
+ void SetExtern() { bOwner = FALSE; }
+ virtual BOOL Close();
+public:
+ SotObject();
+ SO2_DECL_BASIC_CLASS_DLL(SotObject,SOTDATA())
+ SO2_DECL_INVARIANT()
+
+ // Nur damit die Makros in So3 nicht ganz ausufern
+ virtual IUnknown * GetInterface( const SvGlobalName & );
+
+ BOOL Owner() const { return bOwner; }
+ BOOL IsSvObject() const;
+
+ // Methoden fuer die Aggregation (siehe OLE2-Spec)
+ BOOL ShouldDelete();
+ virtual void QueryDelete();
+ SvAggregateMemberList & GetAggList();
+ void AddInterface( SotObject * );
+ void AddInterface( SotFactory * );
+ virtual SotObjectRef CreateAggObj( const SotFactory * );
+ void * AggCast( const SotFactory * pFact );
+ void * CastAndAddRef( const SotFactory * pFact );
+ SotObject * GetMainObj() const;
+
+ // !!! Read the Manual !!!
+ virtual USHORT FuzzyLock( BOOL bLock, BOOL bIntern, BOOL bClose );
+ void Lock( BOOL bLock )
+ {
+ FuzzyLock( bLock, TRUE, TRUE );
+ }
+ USHORT GetOwnerLockCount() const { return nOwnerLockCount; }
+ USHORT GetStrongLockCount() const { return nStrongLockCount; }
+
+ void OwnerLock( BOOL bLock );
+ void RemoveOwnerLock();
+ BOOL DoClose();
+ BOOL IsInClose() const { return bInClose; }
+
+private:
+ // Kopieren und Zuweisen dieses Objekttyps ist nicht erlaubt
+ SOT_DLLPRIVATE SotObject & operator = ( const SotObject & );
+ SOT_DLLPRIVATE SotObject( const SotObject & );
+};
+
+//==================class SotObjectRef======================================
+SV_IMPL_REF(SotObject)
+
+inline SotObjectRef::SotObjectRef( SotObject * pObjP, SvCastEnum )
+{
+ if( pObjP )
+ {
+ pObj = (SotObject *)pObjP->AggCast( SotObject::ClassFactory() );
+ if( pObj )
+ pObj->AddRef();
+ }
+ else
+ pObj = NULL;
+}
+
+//==================class SotObject*List====================================
+SV_DECL_REF_LIST(SotObject,SotObject*)
+SV_IMPL_REF_LIST(SotObject,SotObject*)
+
+#endif // _IFACE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/sot/sotdata.hxx b/sot/inc/sot/sotdata.hxx
new file mode 100644
index 000000000000..7bf2e0eec1e3
--- /dev/null
+++ b/sot/inc/sot/sotdata.hxx
@@ -0,0 +1,61 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SOT_DATA_HXX
+#define _SOT_DATA_HXX
+
+/*************************************************************************
+*************************************************************************/
+
+#include <tools/solar.h>
+#include "sot/sotdllapi.h"
+
+//==================class SotData_Impl====================================
+
+class List;
+class SotFactory;
+class SotFactoryList;
+class SotObjectList;
+
+struct SotData_Impl
+{
+ UINT32 nSvObjCount;
+ SotObjectList * pObjectList;
+ SotFactoryList * pFactoryList;
+ SotFactory * pSotObjectFactory;
+ SotFactory * pSotStorageStreamFactory;
+ SotFactory * pSotStorageFactory;
+ List* pDataFlavorList;
+ SotData_Impl();
+};
+
+SOT_DLLPUBLIC SotData_Impl* SOTDATA();
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/sot/sotdllapi.h b/sot/inc/sot/sotdllapi.h
new file mode 100644
index 000000000000..092e55d629cb
--- /dev/null
+++ b/sot/inc/sot/sotdllapi.h
@@ -0,0 +1,43 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SOTDLLAPI_H
+#define INCLUDED_SOTDLLAPI_H
+
+#include "sal/types.h"
+
+#if defined(SOT_DLLIMPLEMENTATION)
+#define SOT_DLLPUBLIC SAL_DLLPUBLIC_EXPORT
+#else
+#define SOT_DLLPUBLIC SAL_DLLPUBLIC_IMPORT
+#endif
+#define SOT_DLLPRIVATE SAL_DLLPRIVATE
+
+#endif /* INCLUDED_SOTDLLAPI_H */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/sot/sotref.hxx b/sot/inc/sot/sotref.hxx
new file mode 100644
index 000000000000..cb1a991320ab
--- /dev/null
+++ b/sot/inc/sot/sotref.hxx
@@ -0,0 +1,78 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SOT_SOTREF_HXX
+#define _SOT_SOTREF_HXX
+
+#include <tools/ref.hxx>
+
+//========================================================================
+enum SvCastEnum { SV_AGGREGATION_CAST };
+#ifndef SVT_DECL_SOTOBJECT_DEFINED
+#define SVT_DECL_SOTOBJECT_DEFINED
+class SotObject;
+class SotObjectRef
+{
+ PRV_SV_DECL_REF(SotObject)
+ inline SotObjectRef( SotObject * pObjP, SvCastEnum );
+};
+#endif
+
+//========================================================================
+#define SO2_DECL_REF(ClassName) \
+class ClassName; \
+class ClassName##Ref \
+{ \
+ PRV_SV_DECL_REF(ClassName) \
+ inline ClassName##Ref( const SotObjectRef & ); \
+ inline ClassName##Ref( SotObject * pObjP ); \
+ inline ClassName##Ref( SotObject * pObjP, SvCastEnum ); \
+};
+
+#define SO2_IMPL_REF(ClassName) \
+SV_IMPL_REF(ClassName) \
+inline ClassName##Ref::ClassName##Ref( const SotObjectRef & r ) \
+{ \
+ pObj = (ClassName *)ClassName::ClassFactory()->CastAndAddRef( &r ); \
+} \
+inline ClassName##Ref::ClassName##Ref( SotObject * pObjP ) \
+{ \
+ pObj = (ClassName *)ClassName::ClassFactory()->CastAndAddRef( pObjP );\
+} \
+inline ClassName##Ref::ClassName##Ref( SotObject * pObjP, SvCastEnum ) \
+{ \
+ pObj = (ClassName *)ClassName::ClassFactory()->AggCastAndAddRef( pObjP );\
+}
+
+#define SO2_DECL_IMPL_REF(ClassName) \
+ SO2_DECL_REF(ClassName) \
+ SO2_IMPL_REF(ClassName)
+
+#endif // _SO2REF_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/sot/storage.hxx b/sot/inc/sot/storage.hxx
new file mode 100644
index 000000000000..893837abac88
--- /dev/null
+++ b/sot/inc/sot/storage.hxx
@@ -0,0 +1,269 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SOT_STORAGE_HXX
+#define _SOT_STORAGE_HXX
+
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Reference.h>
+
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/embed/XStorage.hpp>
+#include <sot/object.hxx>
+#include <sot/factory.hxx>
+#include <tools/stream.hxx>
+#include <tools/errcode.hxx>
+#include "sot/sotdllapi.h"
+
+#define STORAGE_FAILIFTHERE 0x02
+#define STORAGE_TRANSACTED 0x04
+#define STORAGE_PRIORITY 0x08
+#define STORAGE_DELETEONRELEASE 0x10
+#define STORAGE_CONVERT 0x20
+#define STORAGE_UNPACKED_MODE 0x40
+#define STORAGE_DISKSPANNED_MODE 0x80
+#define STORAGE_CREATE_UNPACKED 0x44
+typedef short StorageMode;
+
+class SvStorage;
+namespace binfilter
+{
+ class SvStorage;
+}
+
+/*************************************************************************
+*************************************************************************/
+class SotStorage;
+class BaseStorageStream;
+class SOT_DLLPUBLIC SotStorageStream : virtual public SotObject, public SvStream
+{
+friend class SotStorage;
+friend class ImpStream;
+ BaseStorageStream * pOwnStm;// Zeiger auf den eigenen Stream
+protected:
+ virtual ULONG GetData( void* pData, ULONG nSize );
+ virtual ULONG PutData( const void* pData, ULONG nSize );
+ virtual ULONG SeekPos( ULONG nPos );
+ virtual void FlushData();
+ ~SotStorageStream();
+public:
+ SotStorageStream( const String &,
+ StreamMode = STREAM_STD_READWRITE,
+ StorageMode = 0 );
+ SotStorageStream( BaseStorageStream *pStm );
+ SotStorageStream();
+ SO2_DECL_BASIC_CLASS_DLL(SotStorageStream,SOTDATA())
+ SO2_DECL_INVARIANT()
+
+ using SvStream::SyncSvStream;
+ virtual void SyncSvStream();
+ void SyncSysStream() { SvStream::SyncSysStream(); }
+
+ virtual void ResetError();
+
+ virtual void SetSize( ULONG nNewSize );
+ UINT32 GetSize() const;
+ BOOL CopyTo( SotStorageStream * pDestStm );
+ virtual BOOL Commit();
+ virtual BOOL Revert();
+ BOOL SetProperty( const String& rName, const ::com::sun::star::uno::Any& rValue );
+ BOOL GetProperty( const String& rName, ::com::sun::star::uno::Any& rValue );
+ ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >
+ GetXInputStream() const;
+};
+
+#ifndef SOT_DECL_SOTSTORAGESTREAM_DEFINED
+#define SOT_DECL_SOTSTORAGESTREAM_DEFINED
+SO2_DECL_REF(SotStorageStream)
+#endif
+SO2_IMPL_REF(SotStorageStream)
+
+namespace ucbhelper
+{
+ class Content;
+}
+
+class SvStorageInfoList;
+class BaseStorage;
+class UNOStorageHolder;
+class SOT_DLLPUBLIC SotStorage : virtual public SotObject
+{
+friend class SotStorageStream;
+friend class SvStorage;
+friend class ::binfilter::SvStorage;
+
+ BaseStorage * m_pTmpStg; // Temp-Storage fuer Transacted, nur auf diesem schreiben! ??? Useless ???
+ BaseStorage * m_pOwnStg; // Zielstorage
+ SvStream * m_pStorStm; // nur fuer SDSTORAGES
+ ULONG m_nError;
+ String m_aName; // Name des Storage
+ BOOL m_bIsRoot:1, // z.B.: File-Storage
+ m_bDelStm:1;
+ ByteString m_aKey; // aKey.Len != 0 -> Verschluesselung
+ long m_nVersion;
+
+protected:
+ ~SotStorage();
+ void CreateStorage( BOOL bUCBStorage, StreamMode, StorageMode );
+public:
+ SotStorage( const String &,
+ StreamMode = STREAM_STD_READWRITE,
+ StorageMode = 0 );
+ SotStorage( BOOL bUCBStorage, const String &,
+ StreamMode = STREAM_STD_READWRITE,
+ StorageMode = 0 );
+ SotStorage( const ::ucbhelper::Content& rContent, const String &,
+ StreamMode = STREAM_STD_READWRITE,
+ StorageMode = 0 );
+ SotStorage( BaseStorage * );
+ SotStorage( SvStream & rStm );
+ SotStorage( BOOL bUCBStorage, SvStream & rStm );
+ SotStorage( SvStream * pStm, BOOL bDelete );
+ SotStorage();
+ SO2_DECL_BASIC_CLASS_DLL(SotStorage,SOTDATA())
+ SO2_DECL_INVARIANT()
+
+ SvMemoryStream * CreateMemoryStream();
+ const SvStream * GetSvStream();
+
+ static BOOL IsStorageFile( const String & rFileName );
+ static BOOL IsStorageFile( SvStream* pStream );
+
+ virtual const String & GetName() const;
+
+ virtual BOOL Validate();
+
+ void SetKey( const ByteString& rKey );
+ const ByteString & GetKey() const { return m_aKey; }
+
+ void SetVersion( long nVers )
+ {
+ m_nVersion = nVers;
+ }
+ long GetVersion() const
+ {
+ return m_nVersion;
+ }
+
+ ULONG GetErrorCode() const { return m_nError; }
+ ULONG GetError() const { return ERRCODE_TOERROR(m_nError); }
+ void SetError( ULONG nErrorCode )
+ {
+ if( m_nError == SVSTREAM_OK )
+ m_nError = nErrorCode;
+ }
+ virtual void ResetError();
+
+ BOOL IsRoot() const { return m_bIsRoot; }
+ void SignAsRoot( BOOL b = TRUE ) { m_bIsRoot = b; }
+ void SetDeleteStream( BOOL bDelete ) { m_bDelStm = bDelete; }
+
+ // eigener Datenbereich
+ virtual void SetClass( const SvGlobalName & rClass,
+ ULONG bOriginalClipFormat,
+ const String & rUserTypeName );
+ virtual void SetConvertClass( const SvGlobalName & rConvertClass,
+ ULONG bOriginalClipFormat,
+ const String & rUserTypeName );
+ virtual SvGlobalName GetClassName();// Typ der Daten im Storage
+ virtual ULONG GetFormat();
+ virtual String GetUserName();
+ virtual BOOL ShouldConvert();
+ void SetName( const String& rName );
+
+ // Liste aller Elemente
+ virtual void FillInfoList( SvStorageInfoList * ) const;
+ virtual BOOL CopyTo( SotStorage * pDestStg );
+ virtual BOOL Commit();
+ virtual BOOL Revert();
+
+ /* Element Methoden */
+ // Stream mit Verbindung zu Storage erzeugen,
+ // in etwa eine Parent-Child Beziehung
+ SotStorageStream * OpenSotStream( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ StorageMode = 0 );
+ SotStorageStream * OpenEncryptedSotStream( const String & rEleName, const ByteString& rKey,
+ StreamMode = STREAM_STD_READWRITE,
+ StorageMode = 0 );
+ SotStorage * OpenSotStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ StorageMode = STORAGE_TRANSACTED );
+ SotStorage * OpenUCBStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ StorageMode = STORAGE_TRANSACTED );
+ SotStorage * OpenOLEStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ StorageMode = STORAGE_TRANSACTED );
+ // Abfrage auf Storage oder Stream
+ virtual BOOL IsStream( const String & rEleName ) const;
+ virtual BOOL IsStorage( const String & rEleName ) const;
+ virtual BOOL IsContained( const String & rEleName ) const;
+ // Element loeschen
+ virtual BOOL Remove( const String & rEleName );
+ // Elementnamen aendern
+ virtual BOOL Rename( const String & rEleName,
+ const String & rNewName );
+ virtual BOOL CopyTo( const String & rEleName, SotStorage * pDest,
+ const String & rNewName );
+ virtual BOOL MoveTo( const String & rEleName, SotStorage * pDest,
+ const String & rNewName );
+
+ SvStream* GetTargetSvStream() const;
+ BOOL SetProperty( const String& rName, const ::com::sun::star::uno::Any& rValue );
+ BOOL GetProperty( const String& rName, ::com::sun::star::uno::Any& rValue );
+ BOOL GetProperty( const String& rEleName, const String& rName, ::com::sun::star::uno::Any& rValue );
+ BOOL IsOLEStorage() const;
+ static BOOL IsOLEStorage( const String & rFileName );
+ static BOOL IsOLEStorage( SvStream* pStream );
+
+ // this is temporary HACK, _MUST_ be removed before release
+ ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >
+ GetUNOAPIDuplicate( const String& rEleName, sal_Int32 nUNOStorageMode );
+ void RemoveUNOStorageHolder( UNOStorageHolder* pHolder );
+
+ static SotStorage* OpenOLEStorage( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xStorage,
+ const String& rEleName, StreamMode = STREAM_STD_READWRITE );
+ static sal_Int32 GetFormatID( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xStorage );
+ static sal_Int32 GetVersion( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xStorage );
+};
+
+#ifndef SOT_DECL_SOTSTORAGE_DEFINED
+#define SOT_DECL_SOTSTORAGE_DEFINED
+SO2_DECL_REF(SotStorage)
+#endif
+SO2_IMPL_REF(SotStorage)
+
+#define SvStorage SotStorage
+#define SvStorageRef SotStorageRef
+#define SvStorageStream SotStorageStream
+#define SvStorageStreamRef SotStorageStreamRef
+
+#endif // _SVSTOR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/stg.hxx b/sot/inc/stg.hxx
new file mode 100644
index 000000000000..a64390521d57
--- /dev/null
+++ b/sot/inc/stg.hxx
@@ -0,0 +1,391 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _STG_HXX
+#define _STG_HXX
+
+#include <com/sun/star/uno/Any.h>
+#include <com/sun/star/uno/Reference.h>
+
+#include <com/sun/star/io/XInputStream.hpp>
+
+#include <com/sun/star/ucb/XCommandEnvironment.hpp>
+
+#include <com/sun/star/embed/XStorage.hpp>
+
+
+#include <tools/rtti.hxx>
+#include <tools/stream.hxx>
+#include <tools/globname.hxx>
+#include "sot/sotdllapi.h"
+
+#include <list>
+class UNOStorageHolder;
+typedef ::std::list< UNOStorageHolder* > UNOStorageHolderList;
+
+class Storage;
+class StorageStream;
+class StgIo;
+class StgDirEntry;
+class StgStrm;
+class SvGlobalName;
+struct ClsId
+{
+ INT32 n1;
+ INT16 n2, n3;
+ UINT8 n4, n5, n6, n7, n8, n9, n10, n11;
+};
+
+class SOT_DLLPUBLIC StorageBase : public SvRefBase
+{
+protected:
+ ULONG m_nError; // error code
+ StreamMode m_nMode; // open mode
+ BOOL m_bAutoCommit;
+ StorageBase();
+ virtual ~StorageBase();
+public:
+ TYPEINFO();
+ virtual const SvStream* GetSvStream() const = 0;
+ virtual BOOL Validate( BOOL=FALSE ) const = 0;
+ virtual BOOL ValidateMode( StreamMode ) const = 0;
+ void ResetError() const;
+ void SetError( ULONG ) const;
+ ULONG GetError() const;
+ BOOL Good() const { return BOOL( m_nError == SVSTREAM_OK ); }
+ StreamMode GetMode() const { return m_nMode; }
+ void SetAutoCommit( BOOL bSet )
+ { m_bAutoCommit = bSet; }
+};
+
+class BaseStorageStream : public StorageBase
+{
+public:
+ TYPEINFO();
+ virtual ULONG Read( void * pData, ULONG nSize ) = 0;
+ virtual ULONG Write( const void* pData, ULONG nSize ) = 0;
+ virtual ULONG Seek( ULONG nPos ) = 0;
+ virtual ULONG Tell() = 0;
+ virtual void Flush() = 0;
+ virtual BOOL SetSize( ULONG nNewSize ) = 0;
+ virtual BOOL CopyTo( BaseStorageStream * pDestStm ) = 0;
+ virtual BOOL Commit() = 0;
+ virtual BOOL Revert() = 0;
+ virtual BOOL Equals( const BaseStorageStream& rStream ) const = 0;
+};
+
+class SvStorageInfoList;
+class BaseStorage : public StorageBase
+{
+public:
+ TYPEINFO();
+ virtual const String& GetName() const = 0;
+ virtual BOOL IsRoot() const = 0;
+ virtual void SetClassId( const ClsId& ) = 0;
+ virtual const ClsId& GetClassId() const = 0;
+ virtual void SetDirty() = 0;
+ virtual void SetClass( const SvGlobalName & rClass,
+ ULONG nOriginalClipFormat,
+ const String & rUserTypeName ) = 0;
+ virtual void SetConvertClass( const SvGlobalName & rConvertClass,
+ ULONG nOriginalClipFormat,
+ const String & rUserTypeName ) = 0;
+ virtual SvGlobalName GetClassName() = 0;
+ virtual ULONG GetFormat() = 0;
+ virtual String GetUserName() = 0;
+ virtual BOOL ShouldConvert() = 0;
+ virtual void FillInfoList( SvStorageInfoList* ) const = 0;
+ virtual BOOL CopyTo( BaseStorage* pDestStg ) const = 0;
+ virtual BOOL Commit() = 0;
+ virtual BOOL Revert() = 0;
+ virtual BaseStorageStream* OpenStream( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = TRUE, const ByteString* pKey=0 ) = 0;
+ virtual BaseStorage* OpenStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = FALSE ) = 0;
+ virtual BaseStorage* OpenUCBStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = FALSE ) = 0;
+ virtual BaseStorage* OpenOLEStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = FALSE ) = 0;
+ virtual BOOL IsStream( const String& rEleName ) const = 0;
+ virtual BOOL IsStorage( const String& rEleName ) const = 0;
+ virtual BOOL IsContained( const String& rEleName ) const = 0;
+ virtual BOOL Remove( const String & rEleName ) = 0;
+ virtual BOOL Rename( const String & rEleName, const String & rNewName ) = 0;
+ virtual BOOL CopyTo( const String & rEleName, BaseStorage * pDest, const String & rNewName ) = 0;
+ virtual BOOL MoveTo( const String & rEleName, BaseStorage * pDest, const String & rNewName ) = 0;
+ virtual BOOL ValidateFAT() = 0;
+ virtual BOOL Equals( const BaseStorage& rStream ) const = 0;
+};
+
+class OLEStorageBase
+{
+protected:
+ StreamMode& nStreamMode; // open mode
+ StgIo* pIo; // I/O subsystem
+ StgDirEntry* pEntry; // the dir entry
+ OLEStorageBase( StgIo*, StgDirEntry*, StreamMode& );
+ ~OLEStorageBase();
+ BOOL Validate_Impl( BOOL=FALSE ) const;
+ BOOL ValidateMode_Impl( StreamMode, StgDirEntry* p = NULL ) const ;
+ const SvStream* GetSvStream_Impl() const;
+public:
+};
+
+class StorageStream : public BaseStorageStream, public OLEStorageBase
+{
+//friend class Storage;
+ ULONG nPos; // current position
+protected:
+ ~StorageStream();
+public:
+ TYPEINFO();
+ StorageStream( StgIo*, StgDirEntry*, StreamMode );
+ virtual ULONG Read( void * pData, ULONG nSize );
+ virtual ULONG Write( const void* pData, ULONG nSize );
+ virtual ULONG Seek( ULONG nPos );
+ virtual ULONG Tell() { return nPos; }
+ virtual void Flush();
+ virtual BOOL SetSize( ULONG nNewSize );
+ virtual BOOL CopyTo( BaseStorageStream * pDestStm );
+ virtual BOOL Commit();
+ virtual BOOL Revert();
+ virtual BOOL Validate( BOOL=FALSE ) const;
+ virtual BOOL ValidateMode( StreamMode ) const;
+ BOOL ValidateMode( StreamMode, StgDirEntry* p ) const;
+ const SvStream* GetSvStream() const;
+ virtual BOOL Equals( const BaseStorageStream& rStream ) const;
+};
+
+class UCBStorageStream;
+
+class SOT_DLLPUBLIC Storage : public BaseStorage, public OLEStorageBase
+{
+ String aName;
+ BOOL bIsRoot;
+ void Init( BOOL bCreate );
+ Storage( StgIo*, StgDirEntry*, StreamMode );
+protected:
+ ~Storage();
+public:
+ TYPEINFO();
+ Storage( const String &, StreamMode = STREAM_STD_READWRITE, BOOL bDirect = TRUE );
+ Storage( SvStream& rStrm, BOOL bDirect = TRUE );
+ Storage( UCBStorageStream& rStrm, BOOL bDirect = TRUE );
+
+ static BOOL IsStorageFile( const String & rFileName );
+ static BOOL IsStorageFile( SvStream* );
+
+ virtual const String& GetName() const;
+ virtual BOOL IsRoot() const { return bIsRoot; }
+ virtual void SetClassId( const ClsId& );
+ virtual const ClsId& GetClassId() const;
+ virtual void SetDirty();
+ virtual void SetClass( const SvGlobalName & rClass,
+ ULONG nOriginalClipFormat,
+ const String & rUserTypeName );
+ virtual void SetConvertClass( const SvGlobalName & rConvertClass,
+ ULONG nOriginalClipFormat,
+ const String & rUserTypeName );
+ virtual SvGlobalName GetClassName();
+ virtual ULONG GetFormat();
+ virtual String GetUserName();
+ virtual BOOL ShouldConvert();
+ virtual void FillInfoList( SvStorageInfoList* ) const;
+ virtual BOOL CopyTo( BaseStorage* pDestStg ) const;
+ virtual BOOL Commit();
+ virtual BOOL Revert();
+ virtual BaseStorageStream* OpenStream( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = TRUE, const ByteString* pKey=0 );
+ virtual BaseStorage* OpenStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = FALSE );
+ virtual BaseStorage* OpenUCBStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = FALSE );
+ virtual BaseStorage* OpenOLEStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = FALSE );
+ virtual BOOL IsStream( const String& rEleName ) const;
+ virtual BOOL IsStorage( const String& rEleName ) const;
+ virtual BOOL IsContained( const String& rEleName ) const;
+ virtual BOOL Remove( const String & rEleName );
+ virtual BOOL Rename( const String & rEleName, const String & rNewName );
+ virtual BOOL CopyTo( const String & rEleName, BaseStorage * pDest, const String & rNewName );
+ virtual BOOL MoveTo( const String & rEleName, BaseStorage * pDest, const String & rNewName );
+ virtual BOOL ValidateFAT();
+ virtual BOOL Validate( BOOL=FALSE ) const;
+ virtual BOOL ValidateMode( StreamMode ) const;
+ BOOL ValidateMode( StreamMode, StgDirEntry* p ) const;
+ virtual const SvStream* GetSvStream() const;
+ virtual BOOL Equals( const BaseStorage& rStream ) const;
+};
+
+class UCBStorageStream_Impl;
+class UCBStorageStream : public BaseStorageStream
+{
+friend class UCBStorage;
+
+ UCBStorageStream_Impl*
+ pImp;
+protected:
+ ~UCBStorageStream();
+public:
+ TYPEINFO();
+ UCBStorageStream( const String& rName, StreamMode nMode, BOOL bDirect, const ByteString* pKey=0 );
+ UCBStorageStream( const String& rName, StreamMode nMode, BOOL bDirect, const ByteString* pKey, BOOL bRepair, ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XProgressHandler > xProgress );
+ UCBStorageStream( UCBStorageStream_Impl* );
+
+ virtual ULONG Read( void * pData, ULONG nSize );
+ virtual ULONG Write( const void* pData, ULONG nSize );
+ virtual ULONG Seek( ULONG nPos );
+ virtual ULONG Tell();
+ virtual void Flush();
+ virtual BOOL SetSize( ULONG nNewSize );
+ virtual BOOL CopyTo( BaseStorageStream * pDestStm );
+ virtual BOOL Commit();
+ virtual BOOL Revert();
+ virtual BOOL Validate( BOOL=FALSE ) const;
+ virtual BOOL ValidateMode( StreamMode ) const;
+ const SvStream* GetSvStream() const;
+ virtual BOOL Equals( const BaseStorageStream& rStream ) const;
+ BOOL SetProperty( const String& rName, const ::com::sun::star::uno::Any& rValue );
+ BOOL GetProperty( const String& rName, ::com::sun::star::uno::Any& rValue );
+
+ SvStream* GetModifySvStream();
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > GetXInputStream() const;
+};
+
+namespace ucbhelper
+{
+ class Content;
+}
+
+class UCBStorage_Impl;
+struct UCBStorageElement_Impl;
+class SOT_DLLPUBLIC UCBStorage : public BaseStorage
+{
+ UCBStorage_Impl* pImp;
+
+protected:
+ ~UCBStorage();
+public:
+ static BOOL IsStorageFile( SvStream* );
+ static BOOL IsStorageFile( const String& rName );
+ static BOOL IsDiskSpannedFile( SvStream* );
+ static String GetLinkedFile( SvStream& );
+ static String CreateLinkFile( const String& rName );
+
+ UCBStorage( const ::ucbhelper::Content& rContent, const String& rName, StreamMode nMode, BOOL bDirect = TRUE, BOOL bIsRoot = TRUE );
+ UCBStorage( const String& rName,
+ StreamMode nMode,
+ BOOL bDirect = TRUE,
+ BOOL bIsRoot = TRUE );
+
+ UCBStorage( const String& rName,
+ StreamMode nMode,
+ BOOL bDirect,
+ BOOL bIsRoot,
+ BOOL bIsRepair,
+ ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XProgressHandler >
+ xProgressHandler );
+
+ UCBStorage( UCBStorage_Impl* );
+ UCBStorage( SvStream& rStrm, BOOL bDirect = TRUE );
+
+ TYPEINFO();
+ virtual const String& GetName() const;
+ virtual BOOL IsRoot() const;
+ virtual void SetClassId( const ClsId& );
+ virtual const ClsId& GetClassId() const;
+ virtual void SetDirty();
+ virtual void SetClass( const SvGlobalName & rClass,
+ ULONG nOriginalClipFormat,
+ const String & rUserTypeName );
+ virtual void SetConvertClass( const SvGlobalName & rConvertClass,
+ ULONG nOriginalClipFormat,
+ const String & rUserTypeName );
+ virtual SvGlobalName GetClassName();
+ virtual ULONG GetFormat();
+ virtual String GetUserName();
+ virtual BOOL ShouldConvert();
+ virtual void FillInfoList( SvStorageInfoList* ) const;
+ virtual BOOL CopyTo( BaseStorage* pDestStg ) const;
+ virtual BOOL Commit();
+ virtual BOOL Revert();
+ virtual BaseStorageStream* OpenStream( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = TRUE, const ByteString* pKey=0 );
+ virtual BaseStorage* OpenStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = FALSE );
+ virtual BaseStorage* OpenUCBStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = FALSE );
+ virtual BaseStorage* OpenOLEStorage( const String & rEleName,
+ StreamMode = STREAM_STD_READWRITE,
+ BOOL bDirect = FALSE );
+ virtual BOOL IsStream( const String& rEleName ) const;
+ virtual BOOL IsStorage( const String& rEleName ) const;
+ virtual BOOL IsContained( const String& rEleName ) const;
+ virtual BOOL Remove( const String & rEleName );
+ virtual BOOL Rename( const String & rEleName, const String & rNewName );
+ virtual BOOL CopyTo( const String & rEleName, BaseStorage * pDest, const String & rNewName );
+ virtual BOOL MoveTo( const String & rEleName, BaseStorage * pDest, const String & rNewName );
+ virtual BOOL ValidateFAT();
+ virtual BOOL Validate( BOOL=FALSE ) const;
+ virtual BOOL ValidateMode( StreamMode ) const;
+ virtual const SvStream* GetSvStream() const;
+ virtual BOOL Equals( const BaseStorage& rStream ) const;
+ BOOL SetProperty( const String& rName, const ::com::sun::star::uno::Any& rValue );
+ BOOL GetProperty( const String& rName, ::com::sun::star::uno::Any& rValue );
+ BOOL GetProperty( const String& rEleName, const String& rName, ::com::sun::star::uno::Any& rValue );
+
+ // HACK to avoid incompatible build, can be done since this feature is only for development
+ // should be removed before release
+ UNOStorageHolderList* GetUNOStorageHolderList();
+
+//#if _SOLAR__PRIVATE
+ UCBStorageElement_Impl* FindElement_Impl( const String& rName ) const;
+ BOOL CopyStorageElement_Impl( UCBStorageElement_Impl& rElement,
+ BaseStorage* pDest, const String& rNew ) const;
+ BaseStorage* OpenStorage_Impl( const String & rEleName,
+ StreamMode, BOOL bDirect, BOOL bForceUCBStorage );
+//#endif
+
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sot/inc/storinfo.hxx b/sot/inc/storinfo.hxx
new file mode 100644
index 000000000000..af3c0ca15b95
--- /dev/null
+++ b/sot/inc/storinfo.hxx
@@ -0,0 +1,75 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SOT_STORINFO_HXX
+#define _SOT_STORINFO_HXX
+
+#include <tools/pstm.hxx>
+#include <tools/globname.hxx>
+#include <tools/ownlist.hxx>
+#include "sot/sotdllapi.h"
+
+class StgDirEntry;
+class SvStorageInfo
+{
+friend class SvStorage;
+ String aName;
+ SvGlobalName aClassName;
+ ULONG nSize;
+ BOOL bStream:1,
+ bStorage:1;
+
+ SvStorageInfo(){}; // Fuer SvStorage
+public:
+ SvStorageInfo( const StgDirEntry& );
+ SvStorageInfo( const String& rName, ULONG nSz, BOOL bIsStorage )
+ : aName( rName )
+ , nSize( nSz )
+ , bStream( !bIsStorage )
+ , bStorage( bIsStorage )
+ {}
+
+ const SvGlobalName & GetClassName() const { return aClassName; }
+ const String & GetName() const { return aName; }
+ BOOL IsStream() const { return bStream; }
+ BOOL IsStorage() const { return bStorage; }
+ ULONG GetSize() const { return nSize; }
+};
+
+class SOT_DLLPUBLIC SvStorageInfoList
+{
+ PRV_SV_DECL_OWNER_LIST(SvStorageInfoList,SvStorageInfo)
+ const SvStorageInfo * Get( const String & rName );
+};
+
+SOT_DLLPUBLIC ULONG ReadClipboardFormat( SvStream & rStm );
+SOT_DLLPUBLIC void WriteClipboardFormat( SvStream & rStm, ULONG nFormat );
+
+#endif // _STORINFO_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */