Book Image

DART Essentials

By : Sikora
Book Image

DART Essentials

By: Sikora

Overview of this book

This book is targeted at expert programmers in JavaScript who want to learn Dart quickly. Some previous experience with OOP programming in other languages and a good knowledge of JavaScript are assumed.
Table of Contents (11 chapters)
10
Index

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...