@@ -87,22 +87,77 @@ static const struct luaL_Reg assign_index_methods[] = {
8787 ASSIGN (assign_gen, dim_t , af_index_t ),
8888 ASSIGN (assign_seq, unsigned , af_seq),
8989#if AF_API_VERSION >= 32
90- // AFAPI af_err af_create_indexers(af_index_t** indexers);
90+ {
91+ " af_create_indexers" , [](lua_State * L)
92+ {
93+ lua_settop (L, 0 ); // (empty)
94+
95+ af_index_t ** indexer_ud = NewIndexer (L); // indexer_ud
96+
97+ af_err err = af_create_indexers (indexer_ud);
98+
99+ return PushErr (L, err); // err, indexer_ud
100+ }
101+ },
91102#endif
92103 INDEX (index, unsigned , af_seq),
93104 INDEX (index_gen, dim_t , af_index_t ),
94105 OUTIN2_ARG (lookup, unsigned ),
95106#if AF_API_VERSION >= 32
96- // AFAPI af_err af_release_indexers(af_index_t* indexers);
97- // AFAPI af_err af_set_array_indexer(af_index_t* indexer, const af_array idx, const dim_t dim);
98- // AFAPI af_err af_set_seq_indexer(af_index_t* indexer, const af_seq* idx, const dim_t dim, const bool is_batch);
99- // AFAPI af_err af_set_seq_param_indexer(af_index_t* indexer, const double begin, const double end, const double step, const dim_t dim, const bool is_batch);
100- #endif
107+ {
108+ " af_release_indexers" , [](lua_State * L)
109+ {
110+ lua_settop (L, 1 ); // indexer
111+
112+ af_err err = af_release_indexers (GetIndexer (L, 1 ));
113+
114+ ClearIndexer (L, 1 );
115+
116+ lua_pushinteger (L, err);// indexer, err
117+
118+ return 1 ;
119+ }
120+ }, {
121+ " af_set_array_indexer" , [](lua_State * L)
122+ {
123+ lua_settop (L, 3 ); // indexer, idx, dim
124+
125+ af_err err = af_set_array_indexer (GetIndexer (L, 1 ), GetArray (L, 2 ), Arg<dim_t >(L, 3 ));
101126
102- #if 0
103- AFAPI af_seq af_make_seq(double begin, double end, double step);
127+ lua_pushinteger (L, err);// indexer, idx, dim, err
128+
129+ return 1 ;
130+ }
131+ }, {
132+ " af_set_seq_indexer" , [](lua_State * L)
133+ {
134+ lua_settop (L, 4 ); // indexer, idx, dim, is_batch
135+ lua_pushvalue (L, 2 );// indexer, idx, dim, is_batch, idx
136+
137+ af_seq seq;
138+
139+ Load (L, seq);
140+
141+ af_err err = af_set_seq_indexer (GetIndexer (L, 1 ), &seq, Arg<dim_t >(L, 3 ), B (L, 4 ));
142+
143+ lua_pushinteger (L, err);// indexer, idx, dim, is_batch, idx, err
144+
145+ return 1 ;
146+ }
147+ }, {
148+ " af_set_seq_param_indexer" , [](lua_State * L)
149+ {
150+ lua_settop (L, 6 ); // indexer, begin, end, step, dim, is_batch
151+
152+ af_err err = af_set_seq_param_indexer (GetIndexer (L, 1 ), D (L, 2 ), D (L, 3 ), D (L, 4 ), Arg<dim_t >(L, 5 ), B (L, 6 ));
153+
154+ lua_pushinteger (L, err);// indexer, begin, end, step, dim, is_batch, err
155+
156+ return 1 ;
157+ }
158+ },
104159#endif
105- // TODO^^^^
160+
106161 { NULL , NULL }
107162};
108163
0 commit comments