Passando estruturas de C para LUA.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
24 messages Options
12
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Passando estruturas de C para LUA.

wederson cabral
Bom dia!

Meu objetivo é passar uma estrutura de arvore(AVL) para Lua, com intenção de mostrar ela de forma gráfica através do Toolkit gráfico IUP.

Eu pensei diversas formas de fazer o mencionado na linha anterior, passar os números informando seu nível, passar todos números no percurso pré-ordem e montar a arvore em Lua mesmo, colocar num arquivo, ou String, o formato 'escrito' da arvore(aquela que usa {} pra definir quem é filho de quem), mas.. nenhuma dessas soluções pareceu 'elegante' de se fazer, todas tem meio que cara de 'gambiarra', e no final das contas eu teria que passar numero a numero de C para LUA com alguns meta dados para identificar onde cada numero está na arvore.

Eu ainda sou um programador iniciante, de certa forma, entendo bem de C e já tenho um bom conhecimento de Lua, mas é a primeira vez que estou fazendo a integração das duas em um projeto grande, de certa forma. 

Então eu gostaria de saber de vocês, desenvolvedores mais experientes, se existe algum padrão, ou quem sabe funcionalidade, para passar estruturas de dados de C para Lua, não só a arvore, que é meu objetivo, mas vetores, matrizes, filas e etc. Pelo o que estou vendo parece que a única forma é realmente passar numero a numero, ou passar todos juntos numa String.

TL:DR
Preciso saber se existe uma forma mais simples de passar estruturas de dados de C para Lua sem que seja valor a valor ou uma enorme String contendo todos valores.

Des dê já obrigado pela atenção !

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Eric Chiesse
Pesquise por "userdata" no manual do Lua. Acho que é o que você precisa.

Em domingo, 16 de julho de 2017, wederson cabral <[hidden email]> escreveu:
Bom dia!

Meu objetivo é passar uma estrutura de arvore(AVL) para Lua, com intenção de mostrar ela de forma gráfica através do Toolkit gráfico IUP.

Eu pensei diversas formas de fazer o mencionado na linha anterior, passar os números informando seu nível, passar todos números no percurso pré-ordem e montar a arvore em Lua mesmo, colocar num arquivo, ou String, o formato 'escrito' da arvore(aquela que usa {} pra definir quem é filho de quem), mas.. nenhuma dessas soluções pareceu 'elegante' de se fazer, todas tem meio que cara de 'gambiarra', e no final das contas eu teria que passar numero a numero de C para LUA com alguns meta dados para identificar onde cada numero está na arvore.

Eu ainda sou um programador iniciante, de certa forma, entendo bem de C e já tenho um bom conhecimento de Lua, mas é a primeira vez que estou fazendo a integração das duas em um projeto grande, de certa forma. 

Então eu gostaria de saber de vocês, desenvolvedores mais experientes, se existe algum padrão, ou quem sabe funcionalidade, para passar estruturas de dados de C para Lua, não só a arvore, que é meu objetivo, mas vetores, matrizes, filas e etc. Pelo o que estou vendo parece que a única forma é realmente passar numero a numero, ou passar todos juntos numa String.

TL:DR
Preciso saber se existe uma forma mais simples de passar estruturas de dados de C para Lua sem que seja valor a valor ou uma enorme String contendo todos valores.

Des dê já obrigado pela atenção !

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para <a href="javascript:_e(%7B%7D,&#39;cvml&#39;,&#39;lua-br%2Bunsubscribe@googlegroups.com&#39;);" target="_blank">lua-br+unsubscribe@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.


--
---
Eric

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Eric Chiesse
Dá uma olhada nesse exemplo: https://www.lua.org/pil/28.1.html

Em domingo, 16 de julho de 2017, Eric Chiesse <[hidden email]> escreveu:
Pesquise por "userdata" no manual do Lua. Acho que é o que você precisa.

Em domingo, 16 de julho de 2017, wederson cabral <<a href="javascript:_e(%7B%7D,&#39;cvml&#39;,&#39;wedersoncabral@gmail.com&#39;);" target="_blank">wedersoncabral@...> escreveu:
Bom dia!

Meu objetivo é passar uma estrutura de arvore(AVL) para Lua, com intenção de mostrar ela de forma gráfica através do Toolkit gráfico IUP.

Eu pensei diversas formas de fazer o mencionado na linha anterior, passar os números informando seu nível, passar todos números no percurso pré-ordem e montar a arvore em Lua mesmo, colocar num arquivo, ou String, o formato 'escrito' da arvore(aquela que usa {} pra definir quem é filho de quem), mas.. nenhuma dessas soluções pareceu 'elegante' de se fazer, todas tem meio que cara de 'gambiarra', e no final das contas eu teria que passar numero a numero de C para LUA com alguns meta dados para identificar onde cada numero está na arvore.

Eu ainda sou um programador iniciante, de certa forma, entendo bem de C e já tenho um bom conhecimento de Lua, mas é a primeira vez que estou fazendo a integração das duas em um projeto grande, de certa forma. 

Então eu gostaria de saber de vocês, desenvolvedores mais experientes, se existe algum padrão, ou quem sabe funcionalidade, para passar estruturas de dados de C para Lua, não só a arvore, que é meu objetivo, mas vetores, matrizes, filas e etc. Pelo o que estou vendo parece que a única forma é realmente passar numero a numero, ou passar todos juntos numa String.

TL:DR
Preciso saber se existe uma forma mais simples de passar estruturas de dados de C para Lua sem que seja valor a valor ou uma enorme String contendo todos valores.

Des dê já obrigado pela atenção !

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para lua-br+unsubscribe@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.


--
---
Eric


--
---
Eric

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Denis Dos Santos Silva
In reply to this post by wederson cabral
Wederson há várias formas de fazer isso, já que não é um recurso nativo essa conversão c struct / lua.

poderia sugerir, de forma complementar, ao que o Eric.


sem um exemplo prático do seu projeto não dá pra sugerir algo mais próximo.




Em domingo, 16 de julho de 2017 10:29:13 UTC-3, wederson cabral escreveu:
Bom dia!

Meu objetivo é passar uma estrutura de arvore(AVL) para Lua, com intenção de mostrar ela de forma gráfica através do Toolkit gráfico IUP.

Eu pensei diversas formas de fazer o mencionado na linha anterior, passar os números informando seu nível, passar todos números no percurso pré-ordem e montar a arvore em Lua mesmo, colocar num arquivo, ou String, o formato 'escrito' da arvore(aquela que usa {} pra definir quem é filho de quem), mas.. nenhuma dessas soluções pareceu 'elegante' de se fazer, todas tem meio que cara de 'gambiarra', e no final das contas eu teria que passar numero a numero de C para LUA com alguns meta dados para identificar onde cada numero está na arvore.

Eu ainda sou um programador iniciante, de certa forma, entendo bem de C e já tenho um bom conhecimento de Lua, mas é a primeira vez que estou fazendo a integração das duas em um projeto grande, de certa forma. 

Então eu gostaria de saber de vocês, desenvolvedores mais experientes, se existe algum padrão, ou quem sabe funcionalidade, para passar estruturas de dados de C para Lua, não só a arvore, que é meu objetivo, mas vetores, matrizes, filas e etc. Pelo o que estou vendo parece que a única forma é realmente passar numero a numero, ou passar todos juntos numa String.

TL:DR
Preciso saber se existe uma forma mais simples de passar estruturas de dados de C para Lua sem que seja valor a valor ou uma enorme String contendo todos valores.

Des dê já obrigado pela atenção !

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

wederson cabral
Obrigado por responder !

Eu já tinha visto esse o método citado pelo Eric no próprio livro "Programando em Lua", mas me pareceu tão complexo de se fazer que eu estava evitando, e também não ficou claro pra mim se o que estava sendo passado é o formato do estrutura ou os seus valores. Mas como não posso dizer que algo é difícil se não tentei fazer ainda, resolvi testar antes de voltar a comentar esse post.  E também não sei se o método funcionaria, pois dois componentes da minhas estrutura são ponteiros. E não sei se deixei claro, mas meu objetivo é passar os dados armazenados na estrutura em C(que é uma arvore), para Lua e não o formato em si.

De qualquer modo, já que mencionou que ver a estrutura ajudaria a me ajudar, segue abaixo o código dela.

struct Tree{
 
int data;
 
struct Tree *left;
 
struct Tree *right;
};



Em segunda-feira, 17 de julho de 2017 16:00:46 UTC-3, Denis Dos Santos Silva escreveu:
Wederson há várias formas de fazer isso, já que não é um recurso nativo essa conversão c struct / lua.

poderia sugerir, de forma complementar, ao que o Eric.

ffi: <a onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fluajit.org%2Fext_ffi_tutorial.html\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFN_QsvrVoFza6nOVJIKvULRyApag&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fluajit.org%2Fext_ffi_tutorial.html\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFN_QsvrVoFza6nOVJIKvULRyApag&#39;;return true;" href="http://luajit.org/ext_ffi_tutorial.html" target="_blank" rel="nofollow">http://luajit.org/ext_ffi_tutorial.html
struct: <a onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fwww.inf.puc-rio.br%2F~roberto%2Fstruct%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNE_nMzmv7WLwLCWIy0IBaHs2vS8fg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fwww.inf.puc-rio.br%2F~roberto%2Fstruct%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNE_nMzmv7WLwLCWIy0IBaHs2vS8fg&#39;;return true;" href="http://www.inf.puc-rio.br/~roberto/struct/" target="_blank" rel="nofollow">http://www.inf.puc-rio.br/~roberto/struct/

sem um exemplo prático do seu projeto não dá pra sugerir algo mais próximo.




Em domingo, 16 de julho de 2017 10:29:13 UTC-3, wederson cabral escreveu:
Bom dia!

Meu objetivo é passar uma estrutura de arvore(AVL) para Lua, com intenção de mostrar ela de forma gráfica através do Toolkit gráfico IUP.

Eu pensei diversas formas de fazer o mencionado na linha anterior, passar os números informando seu nível, passar todos números no percurso pré-ordem e montar a arvore em Lua mesmo, colocar num arquivo, ou String, o formato 'escrito' da arvore(aquela que usa {} pra definir quem é filho de quem), mas.. nenhuma dessas soluções pareceu 'elegante' de se fazer, todas tem meio que cara de 'gambiarra', e no final das contas eu teria que passar numero a numero de C para LUA com alguns meta dados para identificar onde cada numero está na arvore.

Eu ainda sou um programador iniciante, de certa forma, entendo bem de C e já tenho um bom conhecimento de Lua, mas é a primeira vez que estou fazendo a integração das duas em um projeto grande, de certa forma. 

Então eu gostaria de saber de vocês, desenvolvedores mais experientes, se existe algum padrão, ou quem sabe funcionalidade, para passar estruturas de dados de C para Lua, não só a arvore, que é meu objetivo, mas vetores, matrizes, filas e etc. Pelo o que estou vendo parece que a única forma é realmente passar numero a numero, ou passar todos juntos numa String.

TL:DR
Preciso saber se existe uma forma mais simples de passar estruturas de dados de C para Lua sem que seja valor a valor ou uma enorme String contendo todos valores.

Des dê já obrigado pela atenção !

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Eric Chiesse
Wederson, o userdata é simplesmente uma área de memória a qual vc permite que o Lua veja. O que vai dentro dessa memória é vc quem define, então não há problema em ter ponteiros lá.

Isso isoladamente não fará com que vc consiga manipular essa área. Apenas vai permitir que vc a referencie.

Para manipular a árvore (ler, criar ramos, apagar, atribuir valores, etc) vc vai precisar exportar as funções que manipulam a árvore de C para Lua usando a api de integração de C do Lua.

Tem um certo trabalho a ser feito? Sim.
É muito complexo? Definitivamente não.

Vc vai ter que aprender a manipular o lua_State em C e como criar um módulo (.dll ou .so) para exportar tuas funções para o Lua. Tem um certo material a ser entendido, mas depois que vc fizer uns dois exemplos não deve ter dificuldades em exportar a sua árvore.

Dá uma estudada e faz um código inicial, tendo dúvidas posta o código aqui.

---
Eric

2017-07-17 18:44 GMT-03:00 wederson cabral <[hidden email]>:
Obrigado por responder !

Eu já tinha visto esse o método citado pelo Eric no próprio livro "Programando em Lua", mas me pareceu tão complexo de se fazer que eu estava evitando, e também não ficou claro pra mim se o que estava sendo passado é o formato do estrutura ou os seus valores. Mas como não posso dizer que algo é difícil se não tentei fazer ainda, resolvi testar antes de voltar a comentar esse post.  E também não sei se o método funcionaria, pois dois componentes da minhas estrutura são ponteiros. E não sei se deixei claro, mas meu objetivo é passar os dados armazenados na estrutura em C(que é uma arvore), para Lua e não o formato em si.

De qualquer modo, já que mencionou que ver a estrutura ajudaria a me ajudar, segue abaixo o código dela.

struct Tree{
 
int data;
 
struct Tree *left;
 
struct Tree *right;
};



Em segunda-feira, 17 de julho de 2017 16:00:46 UTC-3, Denis Dos Santos Silva escreveu:
Wederson há várias formas de fazer isso, já que não é um recurso nativo essa conversão c struct / lua.

poderia sugerir, de forma complementar, ao que o Eric.


sem um exemplo prático do seu projeto não dá pra sugerir algo mais próximo.




Em domingo, 16 de julho de 2017 10:29:13 UTC-3, wederson cabral escreveu:
Bom dia!

Meu objetivo é passar uma estrutura de arvore(AVL) para Lua, com intenção de mostrar ela de forma gráfica através do Toolkit gráfico IUP.

Eu pensei diversas formas de fazer o mencionado na linha anterior, passar os números informando seu nível, passar todos números no percurso pré-ordem e montar a arvore em Lua mesmo, colocar num arquivo, ou String, o formato 'escrito' da arvore(aquela que usa {} pra definir quem é filho de quem), mas.. nenhuma dessas soluções pareceu 'elegante' de se fazer, todas tem meio que cara de 'gambiarra', e no final das contas eu teria que passar numero a numero de C para LUA com alguns meta dados para identificar onde cada numero está na arvore.

Eu ainda sou um programador iniciante, de certa forma, entendo bem de C e já tenho um bom conhecimento de Lua, mas é a primeira vez que estou fazendo a integração das duas em um projeto grande, de certa forma. 

Então eu gostaria de saber de vocês, desenvolvedores mais experientes, se existe algum padrão, ou quem sabe funcionalidade, para passar estruturas de dados de C para Lua, não só a arvore, que é meu objetivo, mas vetores, matrizes, filas e etc. Pelo o que estou vendo parece que a única forma é realmente passar numero a numero, ou passar todos juntos numa String.

TL:DR
Preciso saber se existe uma forma mais simples de passar estruturas de dados de C para Lua sem que seja valor a valor ou uma enorme String contendo todos valores.

Des dê já obrigado pela atenção !

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Luiz Henrique de Figueiredo
In reply to this post by wederson cabral
> struct Tree{
>  int data;
>  struct Tree *left;
>  struct Tree *right;
> };

Em vez de usar userdata, você pode replicar a árvore usando tabelas.
Não testei o código abaixo mas ele deve funcionar:

static void tree2Lua(struct Tree *t)
{
        if (t==NULL)
                lua_pushnil(L);
        else {
                lua_newtable(L);
                lua_pushint(L,t->data); lua_setfield(L,-2,"data");
                tree2Lua(t->left); lua_setfield(L,-2,"left");
                tree2Lua(t->right); lua_setfield(L,-2,"right");
        }
}

static int Ltree(lua_State *L)
{
        tree2Lua(root);
        return 1;
}

e em algum lugar faça
        lua_register(L,"tree",Ltree);

Depois disso, em Lua você pode fazer
        t=tree()
e obter um table com três campos: data, left, right, como em C.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Eric Chiesse
Luiz, faltou passar o lua_State para tree2Lua.

Wederson, a solução do Luiz é bem simples (mais simples do que eu coloquei) mas vc, depois de exportar, estará mexendo com os dados em Lua e não na sua estrutura original em C. Se para vc não fizer diferença segue pelo que ele colocou (note que tem pelo menos o ponto que mencionei acima para arrumar).

---
Eric

2017-07-17 20:11 GMT-03:00 Luiz Henrique de Figueiredo <[hidden email]>:
> struct Tree{
>  int data;
>  struct Tree *left;
>  struct Tree *right;
> };

Em vez de usar userdata, você pode replicar a árvore usando tabelas.
Não testei o código abaixo mas ele deve funcionar:

static void tree2Lua(struct Tree *t)
{
        if (t==NULL)
                lua_pushnil(L);
        else {
                lua_newtable(L);
                lua_pushint(L,t->data); lua_setfield(L,-2,"data");
                tree2Lua(t->left);      lua_setfield(L,-2,"left");
                tree2Lua(t->right);     lua_setfield(L,-2,"right");
        }
}

static int Ltree(lua_State *L)
{
        tree2Lua(root);
        return 1;
}

e em algum lugar faça
        lua_register(L,"tree",Ltree);

Depois disso, em Lua você pode fazer
        t=tree()
e obter um table com três campos: data, left, right, como em C.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Luiz Henrique de Figueiredo
> Luiz, faltou passar o lua_State para tree2Lua.

Sim, claro! Obrigado pela correção. Como eu disse, eu não testei...

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

wederson cabral
In reply to this post by Eric Chiesse
Obrigado por responder!

Meu objetivo não é manipular a estrutura da arvore ou modificar os valores, apenas precisa conseguir ler eles para poder apresentar ela em formato gráfico. Porem obrigado pela dica, com certeza vou estudar mais sobre isso, apesar de não ser meu objetivo nesse momento, tal conhecimento pode vir a calhar hora ou outra.

Voltando a falar sobre meu problema, então se eu exportar minha estrutura, já com os dados inseridos, a única forma de ler ela ainda será apenas através de funções C? e saberia me dizer se adotar essa estratégia seria mais eficiente, em questões de consumo de memória, do que utilizar minha antiga estratégia de passar os valores 1 a 1, num percurso pré-ordem, para remontar a arvore em Lua?


Em segunda-feira, 17 de julho de 2017 20:10:29 UTC-3, Eric Chiesse escreveu:
Wederson, o userdata é simplesmente uma área de memória a qual vc permite que o Lua veja. O que vai dentro dessa memória é vc quem define, então não há problema em ter ponteiros lá.

Isso isoladamente não fará com que vc consiga manipular essa área. Apenas vai permitir que vc a referencie.

Para manipular a árvore (ler, criar ramos, apagar, atribuir valores, etc) vc vai precisar exportar as funções que manipulam a árvore de C para Lua usando a api de integração de C do Lua.

Tem um certo trabalho a ser feito? Sim.
É muito complexo? Definitivamente não.

Vc vai ter que aprender a manipular o lua_State em C e como criar um módulo (.dll ou .so) para exportar tuas funções para o Lua. Tem um certo material a ser entendido, mas depois que vc fizer uns dois exemplos não deve ter dificuldades em exportar a sua árvore.

Dá uma estudada e faz um código inicial, tendo dúvidas posta o código aqui.

---
Eric

2017-07-17 18:44 GMT-03:00 wederson cabral <<a onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;" href="javascript:" target="_blank" rel="nofollow" gdf-obfuscated-mailto="KJgj-H5HBAAJ">wederso...@...>:
Obrigado por responder !

Eu já tinha visto esse o método citado pelo Eric no próprio livro "Programando em Lua", mas me pareceu tão complexo de se fazer que eu estava evitando, e também não ficou claro pra mim se o que estava sendo passado é o formato do estrutura ou os seus valores. Mas como não posso dizer que algo é difícil se não tentei fazer ainda, resolvi testar antes de voltar a comentar esse post.  E também não sei se o método funcionaria, pois dois componentes da minhas estrutura são ponteiros. E não sei se deixei claro, mas meu objetivo é passar os dados armazenados na estrutura em C(que é uma arvore), para Lua e não o formato em si.

De qualquer modo, já que mencionou que ver a estrutura ajudaria a me ajudar, segue abaixo o código dela.

struct Tree{
 
int data;
 
struct Tree *left;
 
struct Tree *right;
};



Em segunda-feira, 17 de julho de 2017 16:00:46 UTC-3, Denis Dos Santos Silva escreveu:
Wederson há várias formas de fazer isso, já que não é um recurso nativo essa conversão c struct / lua.

poderia sugerir, de forma complementar, ao que o Eric.

ffi: <a onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fluajit.org%2Fext_ffi_tutorial.html\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFN_QsvrVoFza6nOVJIKvULRyApag&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fluajit.org%2Fext_ffi_tutorial.html\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFN_QsvrVoFza6nOVJIKvULRyApag&#39;;return true;" href="http://luajit.org/ext_ffi_tutorial.html" target="_blank" rel="nofollow">http://luajit.org/ext_ffi_tutorial.html
struct: <a onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fwww.inf.puc-rio.br%2F~roberto%2Fstruct%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNE_nMzmv7WLwLCWIy0IBaHs2vS8fg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fwww.inf.puc-rio.br%2F~roberto%2Fstruct%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNE_nMzmv7WLwLCWIy0IBaHs2vS8fg&#39;;return true;" href="http://www.inf.puc-rio.br/~roberto/struct/" target="_blank" rel="nofollow">http://www.inf.puc-rio.br/~roberto/struct/

sem um exemplo prático do seu projeto não dá pra sugerir algo mais próximo.




Em domingo, 16 de julho de 2017 10:29:13 UTC-3, wederson cabral escreveu:
Bom dia!

Meu objetivo é passar uma estrutura de arvore(AVL) para Lua, com intenção de mostrar ela de forma gráfica através do Toolkit gráfico IUP.

Eu pensei diversas formas de fazer o mencionado na linha anterior, passar os números informando seu nível, passar todos números no percurso pré-ordem e montar a arvore em Lua mesmo, colocar num arquivo, ou String, o formato 'escrito' da arvore(aquela que usa {} pra definir quem é filho de quem), mas.. nenhuma dessas soluções pareceu 'elegante' de se fazer, todas tem meio que cara de 'gambiarra', e no final das contas eu teria que passar numero a numero de C para LUA com alguns meta dados para identificar onde cada numero está na arvore.

Eu ainda sou um programador iniciante, de certa forma, entendo bem de C e já tenho um bom conhecimento de Lua, mas é a primeira vez que estou fazendo a integração das duas em um projeto grande, de certa forma. 

Então eu gostaria de saber de vocês, desenvolvedores mais experientes, se existe algum padrão, ou quem sabe funcionalidade, para passar estruturas de dados de C para Lua, não só a arvore, que é meu objetivo, mas vetores, matrizes, filas e etc. Pelo o que estou vendo parece que a única forma é realmente passar numero a numero, ou passar todos juntos numa String.

TL:DR
Preciso saber se existe uma forma mais simples de passar estruturas de dados de C para Lua sem que seja valor a valor ou uma enorme String contendo todos valores.

Des dê já obrigado pela atenção !

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para <a onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;" href="javascript:" target="_blank" rel="nofollow" gdf-obfuscated-mailto="KJgj-H5HBAAJ">lua-br+un...@googlegroups.com.
Acesse esse grupo em <a onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow">https://groups.google.com/group/lua-br.
Para mais opções, acesse <a onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" href="https://groups.google.com/d/optout" target="_blank" rel="nofollow">https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

wederson cabral
In reply to this post by Luiz Henrique de Figueiredo
Obrigado por responder!

Eu realmente não tinha pensado nesse tipo de estratégia, é bem simples, e eficiente, obrigado por compartilhar!

Mas.. meu problema não é bem passar o formato da estrutura para Lua, e sim os dados que serão inseridos nela, meu objetivo é passar toda a arvore para Lua de uma forma mais 'eficaz' que valor a valor.

Em segunda-feira, 17 de julho de 2017 20:11:39 UTC-3, Luiz Henrique de Figueiredo escreveu:
> struct Tree{
>  int data;
>  struct Tree *left;
>  struct Tree *right;
> };

Em vez de usar userdata, você pode replicar a árvore usando tabelas.
Não testei o código abaixo mas ele deve funcionar:

static void tree2Lua(struct Tree *t)
{
        if (t==NULL)
                lua_pushnil(L);
        else {
                lua_newtable(L);
                lua_pushint(L,t->data);        lua_setfield(L,-2,"data");
                tree2Lua(t->left);        lua_setfield(L,-2,"left");
                tree2Lua(t->right);        lua_setfield(L,-2,"right");
        }
}

static int Ltree(lua_State *L)
{
        tree2Lua(root);
        return 1;
}

e em algum lugar faça
        lua_register(L,"tree",Ltree);

Depois disso, em Lua você pode fazer
        t=tree()
e obter um table com três campos: data, left, right, como em C.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Denis Dos Santos Silva
In reply to this post by wederson cabral
Wederson talvez a melhor estrategia seja percorrer toda a árvore e envia-la 'montada', já, que não quer ter acesso parcial, uma outra forma seria 'iterar' (ocupa menos memória - já que iria percorrer de forma incremental toda a árvore).



Em domingo, 16 de julho de 2017 10:29:13 UTC-3, wederson cabral escreveu:
Bom dia!

Meu objetivo é passar uma estrutura de arvore(AVL) para Lua, com intenção de mostrar ela de forma gráfica através do Toolkit gráfico IUP.

Eu pensei diversas formas de fazer o mencionado na linha anterior, passar os números informando seu nível, passar todos números no percurso pré-ordem e montar a arvore em Lua mesmo, colocar num arquivo, ou String, o formato 'escrito' da arvore(aquela que usa {} pra definir quem é filho de quem), mas.. nenhuma dessas soluções pareceu 'elegante' de se fazer, todas tem meio que cara de 'gambiarra', e no final das contas eu teria que passar numero a numero de C para LUA com alguns meta dados para identificar onde cada numero está na arvore.

Eu ainda sou um programador iniciante, de certa forma, entendo bem de C e já tenho um bom conhecimento de Lua, mas é a primeira vez que estou fazendo a integração das duas em um projeto grande, de certa forma. 

Então eu gostaria de saber de vocês, desenvolvedores mais experientes, se existe algum padrão, ou quem sabe funcionalidade, para passar estruturas de dados de C para Lua, não só a arvore, que é meu objetivo, mas vetores, matrizes, filas e etc. Pelo o que estou vendo parece que a única forma é realmente passar numero a numero, ou passar todos juntos numa String.

TL:DR
Preciso saber se existe uma forma mais simples de passar estruturas de dados de C para Lua sem que seja valor a valor ou uma enorme String contendo todos valores.

Des dê já obrigado pela atenção !

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Georger Araujo
In reply to this post by wederson cabral
Em domingo, 16 de julho de 2017 10:29:13 UTC-3, wederson cabral escreveu:
Bom dia!

Meu objetivo é passar uma estrutura de arvore(AVL) para Lua, com intenção de mostrar ela de forma gráfica através do Toolkit gráfico IUP.

Eu pensei diversas formas de fazer o mencionado na linha anterior, passar os números informando seu nível, passar todos números no percurso pré-ordem e montar a arvore em Lua mesmo, colocar num arquivo, ou String, o formato 'escrito' da arvore(aquela que usa {} pra definir quem é filho de quem), mas.. nenhuma dessas soluções pareceu 'elegante' de se fazer, todas tem meio que cara de 'gambiarra', e no final das contas eu teria que passar numero a numero de C para LUA com alguns meta dados para identificar onde cada numero está na arvore.

Eu ainda sou um programador iniciante, de certa forma, entendo bem de C e já tenho um bom conhecimento de Lua, mas é a primeira vez que estou fazendo a integração das duas em um projeto grande, de certa forma. 

Então eu gostaria de saber de vocês, desenvolvedores mais experientes, se existe algum padrão, ou quem sabe funcionalidade, para passar estruturas de dados de C para Lua, não só a arvore, que é meu objetivo, mas vetores, matrizes, filas e etc. Pelo o que estou vendo parece que a única forma é realmente passar numero a numero, ou passar todos juntos numa String.

TL:DR
Preciso saber se existe uma forma mais simples de passar estruturas de dados de C para Lua sem que seja valor a valor ou uma enorme String contendo todos valores.

Des dê já obrigado pela atenção !

Expandindo na resposta do @Eric Chiesse:
Vide a subseção 9.4 de [1] e os fontes anexos, que usam Lua 5.1 como biblioteca compartilhada. Testado com Windows, DLL compilada com VS2013.

[1] http://www.keplerproject.org/docs/apostila_lua_2008.pdf

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

main.c (5K) Download Attachment
run_buffer.lua (323 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Alex Queiroz
Olá,

On 18/07/17 04:39, Georger Araujo wrote:
>     cb = buffernew( n );
>     ud = lua_newuserdata( L, sizeof( CircBuffer * ) );
>     *ud = cb;

Por que voce decidiu não deixar Lua gerenciar essa memória?

--
-alex
http://unendli.ch/

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Georger Araujo
Em terça-feira, 18 de julho de 2017 09:06:57 UTC-3, Alex Queiroz escreveu:
Olá,

On 18/07/17 04:39, Georger Araujo wrote:
>     cb = buffernew( n );
>     ud = lua_newuserdata( L, sizeof( CircBuffer * ) );
>     *ud = cb;

Por que voce decidiu não deixar Lua gerenciar essa memória?


Oi,
Não decidi, usei o código da p. 64 do PDF. Na época estava conhecendo a linguagem e não sabia que podia deixar Lua gerenciar a memória.
Fica de exercício para o autor da pergunta, que pode depois mandar aqui na lista. Pontos extras se comparar e contrastar as duas abordagens.

[]s

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

wederson cabral
In reply to this post by Georger Araujo
Obrigado por responder!

Muito obrigado por compartilhar esses exemplos, tenho certeza absoluta que viram bem a calhar durante meus estudos! Infelizmente não posso utilizar desse método no meu projeto, pois todo processo de manipulação da arvore deve ser feito em C, não só as funções de manipulação, mas o 'simulador' que vai ficar chamando as operações de inserção e remoção também deve ser executado em C.. Meu problema está em passar os valores de uma arvore de C para Lua, de uma forma mais prática que valor a valor.

Em terça-feira, 18 de julho de 2017 07:40:03 UTC-3, Georger Araujo escreveu:
Em domingo, 16 de julho de 2017 10:29:13 UTC-3, wederson cabral escreveu:
Bom dia!

Meu objetivo é passar uma estrutura de arvore(AVL) para Lua, com intenção de mostrar ela de forma gráfica através do Toolkit gráfico IUP.

Eu pensei diversas formas de fazer o mencionado na linha anterior, passar os números informando seu nível, passar todos números no percurso pré-ordem e montar a arvore em Lua mesmo, colocar num arquivo, ou String, o formato 'escrito' da arvore(aquela que usa {} pra definir quem é filho de quem), mas.. nenhuma dessas soluções pareceu 'elegante' de se fazer, todas tem meio que cara de 'gambiarra', e no final das contas eu teria que passar numero a numero de C para LUA com alguns meta dados para identificar onde cada numero está na arvore.

Eu ainda sou um programador iniciante, de certa forma, entendo bem de C e já tenho um bom conhecimento de Lua, mas é a primeira vez que estou fazendo a integração das duas em um projeto grande, de certa forma. 

Então eu gostaria de saber de vocês, desenvolvedores mais experientes, se existe algum padrão, ou quem sabe funcionalidade, para passar estruturas de dados de C para Lua, não só a arvore, que é meu objetivo, mas vetores, matrizes, filas e etc. Pelo o que estou vendo parece que a única forma é realmente passar numero a numero, ou passar todos juntos numa String.

TL:DR
Preciso saber se existe uma forma mais simples de passar estruturas de dados de C para Lua sem que seja valor a valor ou uma enorme String contendo todos valores.

Des dê já obrigado pela atenção !

Expandindo na resposta do @Eric Chiesse:
Vide a subseção 9.4 de [1] e os fontes anexos, que usam Lua 5.1 como biblioteca compartilhada. Testado com Windows, DLL compilada com VS2013.

[1] <a onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fwww.keplerproject.org%2Fdocs%2Fapostila_lua_2008.pdf\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGjj4-gVNl6d5tAQ2hLhrToKmUvdg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fwww.keplerproject.org%2Fdocs%2Fapostila_lua_2008.pdf\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGjj4-gVNl6d5tAQ2hLhrToKmUvdg&#39;;return true;" href="http://www.keplerproject.org/docs/apostila_lua_2008.pdf" target="_blank" rel="nofollow">http://www.keplerproject.org/docs/apostila_lua_2008.pdf

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Georger Araujo
Em terça-feira, 18 de julho de 2017 11:50:31 UTC-3, wederson cabral escreveu:
Obrigado por responder!

Muito obrigado por compartilhar esses exemplos, tenho certeza absoluta que viram bem a calhar durante meus estudos! Infelizmente não posso utilizar desse método no meu projeto, pois todo processo de manipulação da arvore deve ser feito em C, não só as funções de manipulação, mas o 'simulador' que vai ficar chamando as operações de inserção e remoção também deve ser executado em C.. Meu problema está em passar os valores de uma arvore de C para Lua, de uma forma mais prática que valor a valor.


No exemplo que mandei, todas as operações sobre a estrutura de dados são feitas por funções em C. As funções de interface chamadas por Lua (terminadas em _l) chamam a função de operação correspondente. O 'simulador' pode ser escrito em Lua e chamar as funções de interface, que por sua vez chamam as funcões de operação.

Quanto a passar de forma prática do código Lua as chaves para as funções de interface, uma possível abordagem seria criar um arquivo texto e utilizar o for gen erico e a função iteradora io.lines (nomedoarquivo) para ler
as linhas do arquivo, conforme descrito na subseção 1.9.4 do PDF que citei antes - que recomendo que leia integralmente e resolva os exercícios.

Por fim, sugiro que prefira bottom-posting a top-posting.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

Alex Queiroz
In reply to this post by wederson cabral
Olá,

On 18/07/17 16:50, wederson cabral wrote:
>
> Muito obrigado por compartilhar esses exemplos, tenho certeza absoluta
> que viram bem a calhar durante meus estudos! Infelizmente não posso
> utilizar desse método no meu projeto, pois todo processo de manipulação
> da arvore deve ser feito em C, não só as funções de manipulação, mas o
> 'simulador' que vai ficar chamando as operações de inserção e remoção
> também deve ser executado em C.. Meu problema está em passar os valores
> de uma arvore de C para Lua, de uma forma mais prática que valor a valor.
>

O seu programa final vai ser em C ou em Lua? Voce diz que precisa
manipular sua árvore com funções em C. Como voce pretende chamar essas
funções C a partir de Lua sem usar a API?

--
-alex
http://unendli.ch/

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

wederson cabral
In reply to this post by Georger Araujo
Obrigado por responder !

Se fosse por mim eu faria todo o projeto em Lua, mas não me foi permitido pelo professor, o simulador infelizmente tem que ser feito em C, a parte que estou fazendo utilizando Lua é um adicional, não estava na proposta original do projeto, caso contrário também estaria fazendo em C.

Sobre o PDF, agora fiquei realmente curioso sobre o seu conteúdo, mas aqui não estou conseguindo abrir, se não for pedir muito poderia me enviar ele via e-mail?

Em terça-feira, 18 de julho de 2017 12:31:41 UTC-3, Georger Araujo escreveu:
Em terça-feira, 18 de julho de 2017 11:50:31 UTC-3, wederson cabral escreveu:
Obrigado por responder!

Muito obrigado por compartilhar esses exemplos, tenho certeza absoluta que viram bem a calhar durante meus estudos! Infelizmente não posso utilizar desse método no meu projeto, pois todo processo de manipulação da arvore deve ser feito em C, não só as funções de manipulação, mas o 'simulador' que vai ficar chamando as operações de inserção e remoção também deve ser executado em C.. Meu problema está em passar os valores de uma arvore de C para Lua, de uma forma mais prática que valor a valor.


No exemplo que mandei, todas as operações sobre a estrutura de dados são feitas por funções em C. As funções de interface chamadas por Lua (terminadas em _l) chamam a função de operação correspondente. O 'simulador' pode ser escrito em Lua e chamar as funções de interface, que por sua vez chamam as funcões de operação.

Quanto a passar de forma prática do código Lua as chaves para as funções de interface, uma possível abordagem seria criar um arquivo texto e utilizar o for gen erico e a função iteradora io.lines (nomedoarquivo) para ler
as linhas do arquivo, conforme descrito na subseção 1.9.4 do PDF que citei antes - que recomendo que leia integralmente e resolva os exercícios.

Por fim, sugiro que prefira bottom-posting a top-posting.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Passando estruturas de C para LUA.

wederson cabral
In reply to this post by Alex Queiroz
Obrigado por responder!

Acho que eu acabei deixando confuso sobre o que é meu projeto, basicamente todo ele será feito em C, Lua entra apenas para montar a forma gráfica de uma arvore já gerado e preenchida pelo código C. Meu objetivo é: Depois do código C gerar e preencher a árvore com valores, eu tenho que passar esse valores para Lua, através da pilha mesmo ou de um arquivo de texto, Lua pega esse valores e exibe a arvore através do toolkit gráfico IUP. A abordagem atual que estou utilizando é: Preencher uma tabela Lua com os valores da árvore(Passando os valores no percurso pré-ordem) depois utilizar esses valores para remontar a arvore e ai sim plotar ela. A minha duvida inicial era se existia uma forma mais prática de passar esses valores da arvore C para Lua 'de uma vez' sem ser valor por valor. 

Em terça-feira, 18 de julho de 2017 12:37:33 UTC-3, Alex Queiroz escreveu:
Olá,

On 18/07/17 16:50, wederson cabral wrote:
>
> Muito obrigado por compartilhar esses exemplos, tenho certeza absoluta
> que viram bem a calhar durante meus estudos! Infelizmente não posso
> utilizar desse método no meu projeto, pois todo processo de manipulação
> da arvore deve ser feito em C, não só as funções de manipulação, mas o
> 'simulador' que vai ficar chamando as operações de inserção e remoção
> também deve ser executado em C.. Meu problema está em passar os valores
> de uma arvore de C para Lua, de uma forma mais prática que valor a valor.
>

O seu programa final vai ser em C ou em Lua? Voce diz que precisa
manipular sua árvore com funções em C. Como voce pretende chamar essas
funções C a partir de Lua sem usar a API?

--
-alex
<a onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Funendli.ch%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHPwP8V667iCz4LPpZhFNAGWrJ9cA&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Funendli.ch%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHPwP8V667iCz4LPpZhFNAGWrJ9cA&#39;;return true;" href="http://unendli.ch/" target="_blank" rel="nofollow">http://unendli.ch/

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
12
Loading...