#
# Copyright (c) 2013 Apple Inc. All rights reserved.
#
# @APPLE_APACHE_LICENSE_HEADER_START@
#
# Licensed 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.
#
# @APPLE_APACHE_LICENSE_HEADER_END@
#

# Must be kept in sync with ObjC TFB checks in object_internal.h

# dispatch_object_t classes
_OBJC_CLASS_$_OS_dispatch_object
_OBJC_CLASS_$_OS_dispatch_semaphore
__OS_dispatch_semaphore_vtable
_OBJC_CLASS_$_OS_dispatch_group
__OS_dispatch_group_vtable
_OBJC_CLASS_$_OS_dispatch_queue
__OS_dispatch_queue_vtable
_OBJC_CLASS_$_OS_dispatch_queue_serial
__OS_dispatch_queue_serial_vtable
_OBJC_CLASS_$_OS_dispatch_queue_concurrent
__OS_dispatch_queue_concurrent_vtable
_OBJC_CLASS_$_OS_dispatch_queue_root
__OS_dispatch_queue_root_vtable
_OBJC_CLASS_$_OS_dispatch_queue_main
__OS_dispatch_queue_main_vtable
_OBJC_CLASS_$_OS_dispatch_queue_runloop
__OS_dispatch_queue_runloop_vtable
_OBJC_CLASS_$_OS_dispatch_queue_mgr
__OS_dispatch_queue_mgr_vtable
_OBJC_CLASS_$_OS_dispatch_queue_specific_queue
__OS_dispatch_queue_specific_queue_vtable
_OBJC_CLASS_$_OS_dispatch_queue_attr
__OS_dispatch_queue_attr_vtable
_OBJC_CLASS_$_OS_dispatch_source
__OS_dispatch_source_vtable
_OBJC_CLASS_$_OS_dispatch_mach
__OS_dispatch_mach_vtable
_OBJC_CLASS_$_OS_dispatch_mach_msg
__OS_dispatch_mach_msg_vtable
_OBJC_CLASS_$_OS_dispatch_io
__OS_dispatch_io_vtable
_OBJC_CLASS_$_OS_dispatch_operation
__OS_dispatch_operation_vtable
_OBJC_CLASS_$_OS_dispatch_disk
__OS_dispatch_disk_vtable
# os_object_t classes
_OBJC_CLASS_$_OS_object
_OBJC_CLASS_$_OS_voucher
#_OBJC_CLASS_$_OS_voucher_recipe
# non-os_object_t classes
_OBJC_CLASS_$_OS_dispatch_data
_OBJC_CLASS_$_OS_dispatch_data_empty
# metaclasses
_OBJC_METACLASS_$_OS_dispatch_object
_OBJC_METACLASS_$_OS_dispatch_semaphore
_OBJC_METACLASS_$_OS_dispatch_group
_OBJC_METACLASS_$_OS_dispatch_queue
_OBJC_METACLASS_$_OS_dispatch_queue_serial
_OBJC_METACLASS_$_OS_dispatch_queue_concurrent
_OBJC_METACLASS_$_OS_dispatch_queue_root
_OBJC_METACLASS_$_OS_dispatch_queue_main
_OBJC_METACLASS_$_OS_dispatch_queue_runloop
_OBJC_METACLASS_$_OS_dispatch_queue_mgr
_OBJC_METACLASS_$_OS_dispatch_queue_specific_queue
_OBJC_METACLASS_$_OS_dispatch_queue_attr
_OBJC_METACLASS_$_OS_dispatch_source
_OBJC_METACLASS_$_OS_dispatch_mach
_OBJC_METACLASS_$_OS_dispatch_mach_msg
_OBJC_METACLASS_$_OS_dispatch_io
_OBJC_METACLASS_$_OS_dispatch_operation
_OBJC_METACLASS_$_OS_dispatch_disk
_OBJC_METACLASS_$_OS_object
_OBJC_METACLASS_$_OS_voucher
#_OBJC_METACLASS_$_OS_voucher_recipe
_OBJC_METACLASS_$_OS_dispatch_data
_OBJC_METACLASS_$_OS_dispatch_data_empty
