1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import Csourcekitd
import SKSupport
extension sourcekitd_api_functions_t {
public init(_ sourcekitd: DLHandle) throws {
func loadRequired<T>(_ symbol: String) throws -> T {
guard let sym: T = dlsym(sourcekitd, symbol: symbol) else {
throw SKDError.missingRequiredSymbol(symbol)
}
return sym
}
func loadOptional<T>(_ symbol: String) -> T? {
return dlsym(sourcekitd, symbol: symbol)
}
self.init(
initialize: try loadRequired("sourcekitd_initialize"),
shutdown: try loadRequired("sourcekitd_shutdown"),
uid_get_from_cstr: try loadRequired("sourcekitd_uid_get_from_cstr"),
uid_get_from_buf: try loadRequired("sourcekitd_uid_get_from_buf"),
uid_get_length: try loadRequired("sourcekitd_uid_get_length"),
uid_get_string_ptr: try loadRequired("sourcekitd_uid_get_string_ptr"),
request_retain: try loadRequired("sourcekitd_request_retain"),
request_release: try loadRequired("sourcekitd_request_release"),
request_dictionary_create: try loadRequired("sourcekitd_request_dictionary_create"),
request_dictionary_set_value: try loadRequired("sourcekitd_request_dictionary_set_value"),
request_dictionary_set_string: try loadRequired("sourcekitd_request_dictionary_set_string"),
request_dictionary_set_stringbuf: try loadRequired("sourcekitd_request_dictionary_set_stringbuf"),
request_dictionary_set_int64: try loadRequired("sourcekitd_request_dictionary_set_int64"),
request_dictionary_set_uid: try loadRequired("sourcekitd_request_dictionary_set_uid"),
request_array_create: try loadRequired("sourcekitd_request_array_create"),
request_array_set_value: try loadRequired("sourcekitd_request_array_set_value"),
request_array_set_string: try loadRequired("sourcekitd_request_array_set_string"),
request_array_set_stringbuf: try loadRequired("sourcekitd_request_array_set_stringbuf"),
request_array_set_int64: try loadRequired("sourcekitd_request_array_set_int64"),
request_array_set_uid: try loadRequired("sourcekitd_request_array_set_uid"),
request_int64_create: try loadRequired("sourcekitd_request_int64_create"),
request_string_create: try loadRequired("sourcekitd_request_string_create"),
request_uid_create: try loadRequired("sourcekitd_request_uid_create"),
request_create_from_yaml: try loadRequired("sourcekitd_request_create_from_yaml"),
request_description_dump: try loadRequired("sourcekitd_request_description_dump"),
request_description_copy: try loadRequired("sourcekitd_request_description_copy"),
response_dispose: try loadRequired("sourcekitd_response_dispose"),
response_is_error: try loadRequired("sourcekitd_response_is_error"),
response_error_get_kind: try loadRequired("sourcekitd_response_error_get_kind"),
response_error_get_description: try loadRequired("sourcekitd_response_error_get_description"),
response_get_value: try loadRequired("sourcekitd_response_get_value"),
variant_get_type: try loadRequired("sourcekitd_variant_get_type"),
variant_dictionary_get_value: try loadRequired("sourcekitd_variant_dictionary_get_value"),
variant_dictionary_get_string: try loadRequired("sourcekitd_variant_dictionary_get_string"),
variant_dictionary_get_int64: try loadRequired("sourcekitd_variant_dictionary_get_int64"),
variant_dictionary_get_bool: try loadRequired("sourcekitd_variant_dictionary_get_bool"),
variant_dictionary_get_uid: try loadRequired("sourcekitd_variant_dictionary_get_uid"),
variant_array_get_count: try loadRequired("sourcekitd_variant_array_get_count"),
variant_array_get_value: try loadRequired("sourcekitd_variant_array_get_value"),
variant_array_get_string: try loadRequired("sourcekitd_variant_array_get_string"),
variant_array_get_int64: try loadRequired("sourcekitd_variant_array_get_int64"),
variant_array_get_bool: try loadRequired("sourcekitd_variant_array_get_bool"),
variant_array_get_uid: try loadRequired("sourcekitd_variant_array_get_uid"),
variant_int64_get_value: try loadRequired("sourcekitd_variant_int64_get_value"),
variant_bool_get_value: try loadRequired("sourcekitd_variant_bool_get_value"),
variant_string_get_length: try loadRequired("sourcekitd_variant_string_get_length"),
variant_string_get_ptr: try loadRequired("sourcekitd_variant_string_get_ptr"),
variant_data_get_size: loadOptional("sourcekitd_variant_data_get_size"),
variant_data_get_ptr: loadOptional("sourcekitd_variant_data_get_ptr"),
variant_uid_get_value: try loadRequired("sourcekitd_variant_uid_get_value"),
response_description_dump: try loadRequired("sourcekitd_response_description_dump"),
response_description_dump_filedesc: try loadRequired("sourcekitd_response_description_dump_filedesc"),
response_description_copy: try loadRequired("sourcekitd_response_description_copy"),
variant_description_dump: try loadRequired("sourcekitd_variant_description_dump"),
variant_description_dump_filedesc: try loadRequired("sourcekitd_variant_description_dump_filedesc"),
variant_description_copy: try loadRequired("sourcekitd_variant_description_copy"),
send_request_sync: try loadRequired("sourcekitd_send_request_sync"),
send_request: try loadRequired("sourcekitd_send_request"),
cancel_request: try loadRequired("sourcekitd_cancel_request"),
set_notification_handler: try loadRequired("sourcekitd_set_notification_handler"),
set_uid_handlers: try loadRequired("sourcekitd_set_uid_handlers")
)
}
}
|