###############################################################
#  
#  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.
#  
###############################################################
UDK_3_0_0 {
	global:
		typelib_typedescription_new;
		typelib_typedescription_newInterface;
		typelib_typedescription_newInterfaceMethod;
		typelib_typedescription_newInterfaceAttribute;
		typelib_typedescription_newEnum;
		typelib_typedescription_newUnion;
		typelib_typedescription_newArray;
		typelib_typedescription_acquire;
		typelib_typedescription_release;
		typelib_typedescription_register;
		typelib_typedescription_equals;
		typelib_typedescription_isAssignableFrom;
		typelib_typedescription_getByName;
		typelib_typedescription_registerCallback;
		typelib_typedescription_revokeCallback;
		typelib_typedescriptionreference_new;
		typelib_typedescriptionreference_acquire;
		typelib_typedescriptionreference_release;
		typelib_typedescriptionreference_getDescription;
		typelib_typedescriptionreference_equals;
		typelib_typedescriptionreference_assign;
		typelib_typedescriptionreference_isAssignableFrom;

		typelib_setCacheSize;

		typelib_typedescriptionreference_newByAsciiName;
		typelib_static_type_getByTypeClass;
		typelib_static_type_init;
		typelib_static_sequence_type_init;
		typelib_static_compound_type_init;
		typelib_static_interface_type_init;
		typelib_static_enum_type_init;
		typelib_static_array_type_init;
		typelib_typedescription_complete;

		uno_equalData;
		uno_type_equalData;
		uno_constructData;
		uno_type_constructData;
		uno_destructData;
		uno_type_destructData;
		uno_copyData;
		uno_type_copyData;
		uno_copyAndConvertData;
		uno_type_copyAndConvertData;
		uno_assignData;
		uno_type_assignData;
		uno_type_isAssignableFromData;
		
		uno_any_assign;
		uno_type_any_assign;
		uno_any_construct;
		uno_type_any_construct;
		uno_any_constructAndConvert;
		uno_type_any_constructAndConvert;
		uno_any_destruct;
		uno_any_clear;

		uno_sequence_assign;
		uno_type_sequence_assign;
		uno_sequence_construct;
		uno_type_sequence_construct;
		uno_sequence_reference2One;
		uno_type_sequence_reference2One;
		uno_sequence_realloc;
		uno_type_sequence_realloc;

		uno_createEnvironment;
		uno_getEnvironment;
		uno_getRegisteredEnvironments;
		uno_dumpEnvironment;
		uno_dumpEnvironmentByName;
		uno_getMapping;
		uno_getMappingByName;
		uno_registerMapping;
		uno_revokeMapping;
		uno_registerMappingCallback;
		uno_revokeMappingCallback;

		uno_getCurrentContext;
		uno_setCurrentContext;

		uno_bindIdToCurrentThread;
		uno_getIdOfCurrentThread;
		uno_releaseIdFromCurrentThread;
		uno_threadpool_enter;
		uno_threadpool_create;
		uno_threadpool_destroy;
		uno_threadpool_putJob;
		uno_threadpool_dispose;
		uno_threadpool_attach;
		uno_threadpool_detach;
		
		cppu_unsatisfied_iquery_msg;
	local:
		*;
};

UDK_3.1 {
    global:
        typelib_static_mi_interface_type_init;
        typelib_static_struct_type_init;
        typelib_typedescription_newExtendedInterfaceAttribute;
        typelib_typedescription_newMIInterface;
        typelib_typedescription_newStruct;
	cppu_Any_extraction_failure_msg;
} UDK_3_0_0;

UDK_3.2 {
	global:
		uno_EnvDcp_getTypeName;
        uno_EnvDcp_getPurpose;

        uno_getCurrentEnvironment;
        uno_Environment_invoke_v;
        uno_Environment_invoke;
        uno_Environment_enter;

		uno_Environment_isValid;
} UDK_3.1;

UDK_3.3 {   # OOo 2.4
    global:
        cppu_unsatisfied_iset_msg;
} UDK_3.2;
