Writing a native fuzzy search implementation
This is where things start to get interesting. When working with existing C++ code, you'll probably want to work with multiple instances of the same class, but we can't just instantiate a C++ class in Dart. Instead, we'll crate a wrapper class in Dart that stores the memory address of the C++ object. Let's start by creating a C++ class with a native fuzzy search implementation:
// fuzzy_search.hpp class FuzzySearch { public: FuzzySearch(Dart_Handle inputItems); std::vector<char*> search(const char* term); size_t size(); private: char** items; size_t length };
This is our header file. Header files in C/C++ are commonly used to define interfaces of libraries. In practice, we can use functions and data structures without worrying about their implementation. Previously, we used dart_api.h
, which defines, for example, Dart_Handle
or Dart_SetReturnValue()
:
// fuzzy_search.cpp #include <vector> #include "fuzzy_search.hpp...