###############################################################
#  
#  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:
		initRegistry_Api;
		initRegistryTypeWriter_Api;
		initRegistryTypeReader_Api;
		reg_createKey;
		reg_openKey;
		reg_openSubKeys;
		reg_closeSubKeys;
		reg_deleteKey;
		reg_closeKey;
		reg_getKeyName;
		reg_setValue;
		reg_setLongListValue;
		reg_setStringListValue;
		reg_setUnicodeListValue;
		reg_getValueInfo;
		reg_getValue;
		reg_getLongListValue;
		reg_getStringListValue;
		reg_getUnicodeListValue;
		reg_freeValueList;
		reg_createLink;
		reg_deleteLink;
		reg_getKeyType;
		reg_getLinkTarget;
		reg_getResolvedKeyName;
		reg_loadKey;
		reg_saveKey;
		reg_mergeKey;
		reg_createRegistry;
		reg_openRootKey;
		reg_getName;
		reg_isReadOnly;
		reg_openRegistry;
		reg_closeRegistry;
		reg_destroyRegistry;
		reg_dumpRegistry;
	local:
		*;
};

UDK_3.1 {
    global:
        typereg_reader_create;
        typereg_reader_acquire;
        typereg_reader_release;
        typereg_reader_getVersion;
        typereg_reader_getDocumentation;
        typereg_reader_getFileName;
        typereg_reader_getTypeClass;
        typereg_reader_isPublished;
        typereg_reader_getTypeName;
        typereg_reader_getSuperTypeCount;
        typereg_reader_getSuperTypeName;
        typereg_reader_getFieldCount;
        typereg_reader_getFieldDocumentation;
        typereg_reader_getFieldFileName;
        typereg_reader_getFieldFlags;
        typereg_reader_getFieldName;
        typereg_reader_getFieldTypeName;
        typereg_reader_getFieldValue;
        typereg_reader_getMethodCount;
        typereg_reader_getMethodDocumentation;
        typereg_reader_getMethodFlags;
        typereg_reader_getMethodName;
        typereg_reader_getMethodReturnTypeName;
        typereg_reader_getMethodParameterCount;
        typereg_reader_getMethodParameterFlags;
        typereg_reader_getMethodParameterName;
        typereg_reader_getMethodParameterTypeName;
        typereg_reader_getMethodExceptionCount;
        typereg_reader_getMethodExceptionTypeName;
        typereg_reader_getReferenceCount;
        typereg_reader_getReferenceDocumentation;
        typereg_reader_getReferenceFlags;
        typereg_reader_getReferenceSort;
        typereg_reader_getReferenceTypeName;
        typereg_writer_create;
        typereg_writer_destroy;
        typereg_writer_setSuperTypeName;
        typereg_writer_setFieldData;
        typereg_writer_setMethodData;
        typereg_writer_setMethodParameterData;
        typereg_writer_setMethodExceptionTypeName;
        typereg_writer_setReferenceData;
        typereg_writer_getBlob;
} UDK_3_0_0;
