-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathpython_simple_filter.h
More file actions
35 lines (27 loc) · 1 KB
/
Copy pathpython_simple_filter.h
File metadata and controls
35 lines (27 loc) · 1 KB
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
#pragma once
#include <pybind11/embed.h>
#include <rime/common.h>
#include <rime/filter.h>
#include <rime/gear/filter_commons.h>
#include <rime/translation.h>
namespace py = pybind11;
namespace pythonext {
class PythonSimpleFilter : public rime::Filter {
public:
PythonSimpleFilter( const rime::Ticket& ticket, py::function py_entry );
virtual rime::an<rime::Translation> Apply( rime::an<rime::Translation> translation, rime::CandidateList* candidates ) override;
bool FilterFunc( rime::an<rime::Candidate> cand ) noexcept;
private:
const py::function py_entry;
};
class PythonSimpleFilterTranslation : public rime::Translation {
public:
PythonSimpleFilterTranslation( PythonSimpleFilter* filter, rime::an<rime::Translation> translation );
virtual bool Next() override;
virtual rime::an<rime::Candidate> Peek() override;
protected:
bool LocateNextCandidate();
rime::an<rime::Translation> translation_;
PythonSimpleFilter* const filter_;
};
} // namespace pythonext