/**************************************************************
 * 
 * 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_ucb_IOErrorCode_idl__
#define __com_sun_star_ucb_IOErrorCode_idl__


//=============================================================================

module com { module sun { module star { module ucb {

//=============================================================================
/** Types of input/output errors.

    <P>See <type scope="com::sun::star::task">InteractionHandler</type> for a
    description of what kinds of arguments
    <type>InteractiveAugmentedIOException</type> should use with each of these
    error codes.</P>
*/
published enum IOErrorCode
{
	//-------------------------------------------------------------------------
	/** An operation was aborted.
	*/
	ABORT,

	//-------------------------------------------------------------------------
	/** An object cannot be accessed due to insufficient user rights.
	*/
	ACCESS_DENIED,

	//-------------------------------------------------------------------------
	/** An object already exists.
    */
	ALREADY_EXISTING,

	//-------------------------------------------------------------------------
	/** A bad checksum.
	*/
	BAD_CRC,

	//-------------------------------------------------------------------------
	/** An object could not be created.
	*/
	CANT_CREATE,

	//-------------------------------------------------------------------------
	/** Data could not be read from a file.
    */
	CANT_READ,

	//-------------------------------------------------------------------------
	/** A seek operation could not be run.
    */
	CANT_SEEK,

	//-------------------------------------------------------------------------
	/** A tell operation could not be run.
	*/
	CANT_TELL,

	//-------------------------------------------------------------------------
	/** Data could not be written to a file.
	*/
	CANT_WRITE,

	//-------------------------------------------------------------------------
	/** A function is not possible because the path contains the current
		directory.
	*/
	CURRENT_DIRECTORY,

	//-------------------------------------------------------------------------
	/** A device (drive) not ready.
	*/
	DEVICE_NOT_READY,

	//-------------------------------------------------------------------------
	/** A function is not possible because the devices (drives) are not
		identical.
	*/
	DIFFERENT_DEVICES,

	//-------------------------------------------------------------------------
	/** A general input/output error.
	*/
	GENERAL,

	//-------------------------------------------------------------------------
	/** An invalid attempt was made to access an object.
	*/
	INVALID_ACCESS,

	//-------------------------------------------------------------------------
	/** A file name contains invalid characters.
	*/
	INVALID_CHARACTER,

	//-------------------------------------------------------------------------
	/** A specified device is invalid.
	*/
	INVALID_DEVICE,

	//-------------------------------------------------------------------------
	/** Invalid data length.
	*/
	INVALID_LENGTH,

	//-------------------------------------------------------------------------
	/** An operation was started with an invalid parameter.
	*/
	INVALID_PARAMETER,

	//-------------------------------------------------------------------------
	/** An operation cannot be run on file names containing wildcards.
	*/
	IS_WILDCARD,

	//-------------------------------------------------------------------------
	/** A locking problem.
	*/
	LOCKING_VIOLATION,

	//-------------------------------------------------------------------------
	/** An invalid file name.
	*/
	MISPLACED_CHARACTER,

	//-------------------------------------------------------------------------
    /** A file name is too long.
    */
	NAME_TOO_LONG,

	//-------------------------------------------------------------------------
	/** A nonexistent object.
	*/
	NOT_EXISTING,

	//-------------------------------------------------------------------------
	/** The path to a file does not exist.
	*/
	NOT_EXISTING_PATH,

	//-------------------------------------------------------------------------
	/** An action is not supported.
	*/
	NOT_SUPPORTED,

	//-------------------------------------------------------------------------
	/** An object is not a directory.
	*/
	NO_DIRECTORY,

	//-------------------------------------------------------------------------
	/** An object is not a file.
    */
	NO_FILE,

	//-------------------------------------------------------------------------
	/** No more space on a device.
	*/
	OUT_OF_DISK_SPACE,

	//-------------------------------------------------------------------------
	/** No more file handles available.
	*/
	OUT_OF_FILE_HANDLES,

	//-------------------------------------------------------------------------
	/** An operation could not be run due to insufficient memory.
    */
	OUT_OF_MEMORY,

	//-------------------------------------------------------------------------
	/** An operation is still pending.
	*/
	PENDING,

	//-------------------------------------------------------------------------
	/** An object cannot be copied into itself.
	*/
	RECURSIVE,

	//-------------------------------------------------------------------------
	/** An unknown I/O error has occurred.
	*/
	UNKNOWN,

	//-------------------------------------------------------------------------
	/** A function is not possible because the object is write protected.
	*/
	WRITE_PROTECTED,

	//-------------------------------------------------------------------------
	/** An incorrect file format.
	*/
	WRONG_FORMAT,

	//-------------------------------------------------------------------------
	/** An incorrect file version.
    */
	WRONG_VERSION

};

//=============================================================================

}; }; }; };

#endif
