summaryrefslogtreecommitdiffstats
path: root/include/indexstore/indexstore.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/indexstore/indexstore.h')
-rw-r--r--include/indexstore/indexstore.h53
1 files changed, 47 insertions, 6 deletions
diff --git a/include/indexstore/indexstore.h b/include/indexstore/indexstore.h
index 61e3dc3be2..8682d1b299 100644
--- a/include/indexstore/indexstore.h
+++ b/include/indexstore/indexstore.h
@@ -14,6 +14,8 @@
#ifndef LLVM_CLANG_C_INDEXSTORE_INDEXSTORE_H
#define LLVM_CLANG_C_INDEXSTORE_INDEXSTORE_H
+#include "llvm/ADT/STLExtras.h"
+
#include <ctime>
#include <stddef.h>
#include <stdint.h>
@@ -49,7 +51,11 @@
#ifndef INDEXSTORE_PUBLIC
#if defined(_MSC_VER)
-#define INDEXSTORE_PUBLIC __declspec(dllimport)
+#ifdef _INDEXSTORE_LIB_
+ #define INDEXSTORE_PUBLIC __declspec(dllexport)
+#else
+ #define INDEXSTORE_PUBLIC __declspec(dllimport)
+#endif
#else
#define INDEXSTORE_PUBLIC
#endif
@@ -88,10 +94,12 @@ indexstore_store_create(const char *store_path, indexstore_error_t *error);
INDEXSTORE_PUBLIC void indexstore_store_dispose(indexstore_t store);
-#if INDEXSTORE_HAS_BLOCKS
INDEXSTORE_PUBLIC bool indexstore_store_units_apply(
indexstore_t, unsigned sorted,
+#if INDEXSTORE_HAS_BLOCKS
bool (^applier)(indexstore_string_ref_t unit_name));
+#else
+ llvm::function_ref<bool(indexstore_string_ref_t)> applier);
#endif
typedef void *indexstore_unit_event_notification_t;
@@ -129,6 +137,13 @@ typedef void (^indexstore_unit_event_handler_t)(
INDEXSTORE_PUBLIC void indexstore_store_set_unit_event_handler(
indexstore_t store, indexstore_unit_event_handler_t handler);
+#else
+typedef std::function<void(indexstore_unit_event_notification_t)>
+indexstore_unit_event_handler_t;
+
+INDEXSTORE_PUBLIC void indexstore_store_set_unit_event_handler(
+ indexstore_t store,
+ llvm::function_ref<void(indexstore_unit_event_notification_t)> handler);
#endif
typedef struct {
@@ -294,10 +309,12 @@ typedef void *indexstore_occurrence_t;
INDEXSTORE_PUBLIC indexstore_symbol_t
indexstore_occurrence_get_symbol(indexstore_occurrence_t occur);
-#if INDEXSTORE_HAS_BLOCKS
INDEXSTORE_PUBLIC bool indexstore_occurrence_relations_apply(
indexstore_occurrence_t occur,
+#if INDEXSTORE_HAS_BLOCKS
bool (^applier)(indexstore_symbol_relation_t relation));
+#else
+ llvm::function_ref<bool(indexstore_symbol_relation_t)> applier);
#endif
INDEXSTORE_PUBLIC uint64_t
@@ -315,7 +332,6 @@ INDEXSTORE_PUBLIC indexstore_record_reader_t indexstore_record_reader_create(
INDEXSTORE_PUBLIC void
indexstore_record_reader_dispose(indexstore_record_reader_t reader);
-#if INDEXSTORE_HAS_BLOCKS
/// Goes through the symbol data and passes symbols to \c receiver, for the
/// symbol data that \c filter returns true on.
///
@@ -323,23 +339,40 @@ indexstore_record_reader_dispose(indexstore_record_reader_t reader);
/// interested in.
INDEXSTORE_PUBLIC bool indexstore_record_reader_search_symbols(
indexstore_record_reader_t reader,
+#if INDEXSTORE_HAS_BLOCKS
bool (^filter)(indexstore_symbol_t symbol, bool *stop),
void (^receiver)(indexstore_symbol_t symbol));
+#else
+ llvm::function_ref<bool(indexstore_symbol_t, bool *)> filter,
+ llvm::function_ref<void(indexstore_symbol_t)> receiver);
+#endif
/// \param nocache if true, avoids allocating memory for the symbols.
/// Useful when the caller does not intend to keep \c indexstore_record_reader_t
/// for more queries.
INDEXSTORE_PUBLIC bool indexstore_record_reader_symbols_apply(
indexstore_record_reader_t reader, bool nocache,
+#if INDEXSTORE_HAS_BLOCKS
bool (^applier)(indexstore_symbol_t symbol));
+#else
+ llvm::function_ref<bool(indexstore_symbol_t)> applier);
+#endif
INDEXSTORE_PUBLIC bool indexstore_record_reader_occurrences_apply(
indexstore_record_reader_t reader,
+#if INDEXSTORE_HAS_BLOCKS
bool (^applier)(indexstore_occurrence_t occur));
+#else
+ llvm::function_ref<bool(indexstore_occurrence_t)> applier);
+#endif
INDEXSTORE_PUBLIC bool indexstore_record_reader_occurrences_in_line_range_apply(
indexstore_record_reader_t reader, unsigned line_start, unsigned line_count,
+#if INDEXSTORE_HAS_BLOCKS
bool (^applier)(indexstore_occurrence_t occur));
+#else
+ llvm::function_ref<bool(indexstore_occurrence_t)> applier);
+#endif
/// \param symbols if non-zero \c symbols_count, indicates the list of symbols
/// that we want to get occurrences for. An empty array indicates that we want
@@ -349,7 +382,10 @@ INDEXSTORE_PUBLIC bool indexstore_record_reader_occurrences_of_symbols_apply(
indexstore_record_reader_t reader, indexstore_symbol_t *symbols,
size_t symbols_count, indexstore_symbol_t *related_symbols,
size_t related_symbols_count,
+#if INDEXSTORE_HAS_BLOCKS
bool (^applier)(indexstore_occurrence_t occur));
+#else
+ llvm::function_ref<bool(indexstore_occurrence_t)> applier);
#endif
typedef void *indexstore_unit_reader_t;
@@ -438,15 +474,20 @@ indexstore_unit_include_get_target_path(indexstore_unit_include_t dep);
INDEXSTORE_PUBLIC unsigned
indexstore_unit_include_get_source_line(indexstore_unit_include_t dep);
-#if INDEXSTORE_HAS_BLOCKS
INDEXSTORE_PUBLIC bool indexstore_unit_reader_dependencies_apply(
indexstore_unit_reader_t reader,
+#if INDEXSTORE_HAS_BLOCKS
bool (^applier)(indexstore_unit_dependency_t dep));
+#else
+ llvm::function_ref<bool(indexstore_unit_dependency_t)> applier);
+#endif
INDEXSTORE_PUBLIC bool indexstore_unit_reader_includes_apply(
indexstore_unit_reader_t reader,
+#if INDEXSTORE_HAS_BLOCKS
bool (^applier)(indexstore_unit_include_t include));
-
+#else
+ llvm::function_ref<bool(indexstore_unit_include_t)> applier);
#endif
INDEXSTORE_END_DECLS