/* -*- 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 . */ #ifndef __com_sun_star_io_XPersistObject_idl__ #define __com_sun_star_io_XPersistObject_idl__ #include #include module com { module sun { module star { module io { published interface XObjectInputStream; published interface XObjectOutputStream; /** allows to make UNO objects persistent

Every UNO object, that wants to be serializable, should implement this interface. The object stores stores itself, when the write method is called.

The object needs to be created before it deserializes itself again (by using the read method). Therefore it must be creatable by name via a factory, which is in general the global service manager. The create and read mechanism is implemented by the com::sun::star::io::ObjectInputStream.

The serialization format (the series of strings, integers, objects) must be specified at the specification of the concrete service.

The interface does not support any special versioning mechanism. @see com::sun::star::io::XObjectOutputStream @see com::sun::star::io::XObjectInputStream */ published interface XPersistObject: com::sun::star::uno::XInterface { /** gives the service name of the object

This name is used to create such an object by a factory during deserialization.

@returns the service name that specifies the behavior and the persistent data format of this implementation. @see com::sun::star::lang::XMultiComponentFactory::getAvailableServiceNames() */ string getServiceName(); /** writes all the persistent data of the object to the stream.

The implementation must write the data in the order documented in the service specification. @param OutStream the stream, the data shall be written to. The stream supports simple types and other XPersistObject implementations. */ void write( [in] com::sun::star::io::XObjectOutputStream OutStream ) raises( com::sun::star::io::IOException ); /** reads all the persistent data of the object from the stream.

In case other XPersistObjects are read from the stream, the implementation uses a factory to create these objects (in general the global service manager).

The implementation must read the data in the order documented at the service specification. @param InStream the stream, the data shall be read from. */ void read( [in] com::sun::star::io::XObjectInputStream InStream ) raises( com::sun::star::io::IOException ); }; }; }; }; }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */