@@ -9,15 +9,15 @@ using namespace std;
9
9
class AnitomyCompat : public Anitomy
10
10
{
11
11
public:
12
- void setOptions (Options newOptions)
12
+ void setOptions (Options * newOptions)
13
13
{
14
14
Options &opts = options ();
15
- opts.allowed_delimiters = newOptions. allowed_delimiters ;
16
- opts.ignored_strings = newOptions. ignored_strings ;
17
- opts.parse_episode_number = newOptions. parse_episode_number ;
18
- opts.parse_episode_title = newOptions. parse_episode_title ;
19
- opts.parse_file_extension = newOptions. parse_file_extension ;
20
- opts.parse_release_group = newOptions. parse_release_group ;
15
+ opts.allowed_delimiters = newOptions-> allowed_delimiters ;
16
+ opts.ignored_strings = newOptions-> ignored_strings ;
17
+ opts.parse_episode_number = newOptions-> parse_episode_number ;
18
+ opts.parse_episode_title = newOptions-> parse_episode_title ;
19
+ opts.parse_file_extension = newOptions-> parse_file_extension ;
20
+ opts.parse_release_group = newOptions-> parse_release_group ;
21
21
}
22
22
};
23
23
@@ -31,37 +31,42 @@ vector<Elements> *elementVectorFromIntPointer(uintptr_t vec)
31
31
return reinterpret_cast <vector<Elements> *>(vec);
32
32
}
33
33
34
- Options createOptions ()
34
+ Options * createOptions ()
35
35
{
36
- return Options ();
36
+ return new Options ();
37
37
}
38
38
39
- vector<Elements> parseArray (vector<string_t > vec, Options options)
39
+ vector<Elements> parseArray (vector<string_t > vec, Options * options)
40
40
{
41
41
vector<Elements> ret;
42
- AnitomyCompat an ;
43
- an. setOptions (options);
42
+ AnitomyCompat *an = new AnitomyCompat () ;
43
+ an-> setOptions (options);
44
44
for (string_t filename : vec)
45
45
{
46
- an. Parse (filename);
47
- ret.emplace_back (an. elements ());
46
+ an-> Parse (filename);
47
+ ret.push_back (an-> elements ());
48
48
}
49
+ free (options);
50
+ delete an;
49
51
return ret;
50
52
}
51
53
52
- Elements parseFile (string_t filename, Options options)
54
+ Elements parseFile (string_t filename, Options * options)
53
55
{
54
- AnitomyCompat an;
55
- an.setOptions (options);
56
- an.Parse (filename);
57
- return an.elements ();
56
+ AnitomyCompat *an = new AnitomyCompat ();
57
+ an->setOptions (options);
58
+ an->Parse (filename);
59
+ free (options);
60
+ Elements el = an->elements ();
61
+ delete an;
62
+ return el;
58
63
}
59
64
60
65
EMSCRIPTEN_BINDINGS (Anitomy)
61
66
{
62
- emscripten::function (" _parseArray" , &parseArray);
63
- emscripten::function (" _parseFile" , &parseFile);
64
- emscripten::function (" _createOptions" , &createOptions);
67
+ emscripten::function (" _parseArray" , &parseArray, allow_raw_pointers () );
68
+ emscripten::function (" _parseFile" , &parseFile, allow_raw_pointers () );
69
+ emscripten::function (" _createOptions" , &createOptions, allow_raw_pointers () );
65
70
66
71
register_vector<string_t >(" VectorString_t" )
67
72
.constructor (&string_tVectorFromIntPointer, allow_raw_pointers ());
@@ -78,7 +83,7 @@ EMSCRIPTEN_BINDINGS(Anitomy)
78
83
79
84
class_<AnitomyCompat, base<Anitomy>>(" Anitomy" )
80
85
.constructor <>()
81
- .function (" setOptions" , &AnitomyCompat::setOptions);
86
+ .function (" setOptions" , &AnitomyCompat::setOptions, allow_raw_pointers () );
82
87
83
88
class_<Elements>(" Elements" )
84
89
.constructor <>()
@@ -89,13 +94,13 @@ EMSCRIPTEN_BINDINGS(Anitomy)
89
94
.function (" count" , &Elements::count)
90
95
.function (" get_all" , &Elements::get_all);
91
96
92
- value_object <Options>(" Options" )
93
- .field (" allowed_delimiters" , &Options::allowed_delimiters)
94
- .field (" ignored_strings" , &Options::ignored_strings)
95
- .field (" parse_episode_number" , &Options::parse_episode_number)
96
- .field (" parse_episode_title" , &Options::parse_episode_title)
97
- .field (" parse_file_extension" , &Options::parse_file_extension)
98
- .field (" parse_release_group" , &Options::parse_release_group);
97
+ class_ <Options>(" Options" )
98
+ .property (" allowed_delimiters" , &Options::allowed_delimiters)
99
+ .property (" ignored_strings" , &Options::ignored_strings)
100
+ .property (" parse_episode_number" , &Options::parse_episode_number)
101
+ .property (" parse_episode_title" , &Options::parse_episode_title)
102
+ .property (" parse_file_extension" , &Options::parse_file_extension)
103
+ .property (" parse_release_group" , &Options::parse_release_group);
99
104
100
105
enum_<ElementCategory>(" ElementCategory" )
101
106
.value (" kElementIterateFirst" , ElementCategory::kElementIterateFirst )
0 commit comments