/************************************************************** * * 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 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef __com_sun_star_io_XPersistObject_idl__ #define __com_sun_star_io_XPersistObject_idl__ #ifndef __com_sun_star_uno_XInterface_idl__ #include #endif #ifndef __com_sun_star_io_IOException_idl__ #include #endif //============================================================================= 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). Therefor it must be createable by name via a factory, which is in general the global service manager. The create and read mechanism is implemented by the 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 @returns the service name that specifies the behavior and the persistent data format of this implementation.

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

@see com::sun::star::lang::XServiceInfo::getAvailableServiceNames */ string getServiceName(); //------------------------------------------------------------------------- // DocMerge from xml: method com::sun::star::io::XPersistObject::write /** 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 ); //------------------------------------------------------------------------- // DocMerge from xml: method com::sun::star::io::XPersistObject::read /** 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