forked from darktable-org/darktable
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathglist.c
More file actions
68 lines (59 loc) · 2.02 KB
/
Copy pathglist.c
File metadata and controls
68 lines (59 loc) · 2.02 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
This file is part of darktable,
copyright (c) 2012 Jeremy Rosen
darktable is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
darktable is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with darktable. If not, see <http://www.gnu.org/licenses/>.
*/
#include "lua/glist.h"
#include <lauxlib.h>
#include <stdlib.h>
void dt_lua_push_glist_typeid(lua_State *L,GList * list, luaA_Type elt_type,bool reverse)
{
if(reverse) {
GList * elt = g_list_last(list);
lua_newtable(L);
while(elt) {
luaA_push_typeid(L,elt_type,elt->data);
luaL_ref(L,-2);
elt = g_list_previous(elt);
}
} else {
GList * elt = list;
lua_newtable(L);
while(elt) {
luaA_push_typeid(L,elt_type,elt->data);
luaL_ref(L,-2);
elt = g_list_next(elt);
}
}
}
GList* dt_lua_to_glist_typeid(lua_State *L, luaA_Type elt_type,int index)
{
// recreate list of images
GList * list = NULL;
size_t type_size = luaA_type_size(elt_type);
lua_pushnil(L); /* first key */
while (lua_next(L, index -1) != 0) {
/* uses 'key' (at index -2) and 'value' (at index -1) */
void*obj = malloc(type_size);
luaA_to_typeid(L,elt_type,obj,-1);
lua_pop(L,1);
list = g_list_prepend(list,(gpointer)obj);
}
list = g_list_reverse(list);
return list;
}
int dt_lua_init_glist(lua_State * L) {
return 0;
}
// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.sh
// vim: shiftwidth=2 expandtab tabstop=2 cindent
// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-space on;