/**************************************************************
*
* 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_container_Map_idl__
#define __com_sun_star_container_Map_idl__
#include
#include
#include
//=============================================================================
module com { module sun { module star { module container {
//=============================================================================
/** provides a default XEnumerableMap implementation
For the keys put into the map using XMap::put or createImmutable,
the following rules apply:
- A key is not allowed.
- If the key type is
BOOLEAN
, CHAR
, FLOAT
, DOUBLE
,
STRING
, TYPE
, or UNSIGNED HYPER
, then only keys of exactly this
type are accepted.
- If the key type is
DOUBLE
or FLOAT
, then Double.NaN
respectively
Float.NaN
is not accepted as key.
- If the key type's class is TypeClass::ENUM, then only keys
of exactly this type are accepted.
- If the key type is any of
BYTE
, SHORT
, UNSIGNED SHORT
,
LONG
, UNSIGNED LONG
, or HYPER
, then all keys which can losslessly
be converted to this type (possibly using widening conversions) are accepted.
- If the key type is an interface type, then all key values denoting objects which can be queried for
the given interface are accepted.
- All other key types are rejected.
For the values put into the map using XMap::put or createImmutable,
the following rules apply:
- The value will be accepted to be put into the map.
- If the value type's class is TypeClass::ANY, any value
will be accepted.
- If the value type is an interface type, then all values denoting objects which can be queried for
the given interface are accepted.
- If the value type's class is TypeClass::EXCEPTION
or TypeClass::STRUCT, then values whose type equals the
value type, or is a sub class of the value type, are accepted.
- For all other value types, only values whose type matches exactly are accepted.
- If the value type is
DOUBLE
or FLOAT
, then Double.NaN
respectively
Float.NaN
is not accepted.
The factory methods of the XEnumerableMap
interface support both isolated
and non-isolated enumerators. The latter one will be automatically disposed when the map changes
after enumerator creation, so every attempt to use them will result in a
DisposedException being thrown.
@see http://udk.openoffice.org/common/man/typesystem.html
*/
service EnumerableMap : XEnumerableMap
{
/** creates an instance mapping from the given key type to the given value type
@param KeyType
denotes the type of the keys in the to-be-created map
@param ValueType
denotes the type of the values in the to-be-created map
@throws ::com::sun::star::beans::IllegalTypeException
if KeyType or ValueType are unsupported types.
For values, all type classes except TypeClass::VOID
and TypeClass::UNKNOWN are accepted.
For keys, scalar types, strings, Type itself, and interface
types are accepted.
*/
create( [in] type KeyType, [in] type ValueType )
raises( ::com::sun::star::beans::IllegalTypeException );
/** creates an instance mapping from the given key type to the given value type
The resulting map is immutable, so later alter operations on it will fail
with a NoSupportException.
@param KeyType
denotes the type of the keys in the to-be-created map
@param ValueType
denotes the type of the values in the to-be-created map
@param Values
denote the values contained in the to-be-created map
@throws ::com::sun::star::beans::IllegalTypeException
if KeyType or ValueType are unsupported types.
For values, all type classes except TypeClass::VOID
are accepted.
For keys, scalar types, strings, Type itself, and interface
types are accepted.
@throws ::com::sun::star::lang::IllegalArgumentException
if any of the given values or keys violates the key rules or
value rules.
*/
createImmutable(
[in] type KeyType,
[in] type ValueType,
[in] sequence< ::com::sun::star::beans::Pair< any, any > > Values
)
raises( ::com::sun::star::beans::IllegalTypeException,
::com::sun::star::lang::IllegalArgumentException );
};
//=============================================================================
}; }; }; };
//=============================================================================
#endif