Logo Hardware.com.br
jose_silva_neto
jose_silva_n... General de Pijama Registrado
4.6K Mensagens 98 Curtidas

Como programar um wrapper

#1 Por jose_silva_n... 25/10/2007 - 15:17
Boa tarde,

Vou explicar primeiro usando um exemplo: pense na biblioteca gtk (uma biblioteca gráfica), ela foi escrita originalmente para ser usada a partir de programas escritos em C; suponha que eu queira usar essa biblioteca em python, um wrapper da gtk para ser usada em python seria uma camada de tradução que pegaria as chamadas da gtk escritas em python e as traduziria para a gtk original.
Minha pergunta é "simples": alguém sabe o básico sobre isso ? Já pesquisei muito sobre isso via google e não encontrei nada didático. Qualquer ajuda é bem vinda, é um conhecimento fundamental para mim; gostaria muito de aprender.

Fiquem com Deus

Kali
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas
#2 Por tpcvasco
25/10/2007 - 15:27
Bom, oq vc quer é aprender realmente como se faz um wrapper, ou simplesmente usar GTK no Python?
Se for a primeira opção, não sei... Se for a segunda, tenta esse site:
http://www.pygtk.org/

Como ele é open-source, de repente te ajuda tb com a primeira opção ;-)
"Milhouse: - Médicos e bombeiros são heróis.
Bart Simpson: - Olha, as casas continuam pegando fogo e as pessoas continuam doentes. Os verdadeiros heróis são os Schwarzenegger's, os Stallone's, e, em menores proporções, os Vandame's..."
jose_silva_neto
jose_silva_n... General de Pijama Registrado
4.6K Mensagens 98 Curtidas
#3 Por jose_silva_n...
25/10/2007 - 15:49
tpcvasco disse:
Bom, oq vc quer é aprender realmente como se faz um wrapper, ou simplesmente usar GTK no Python?
Se for a primeira opção, não sei... Se for a segunda, tenta esse site:
http://www.pygtk.org/

Como ele é open-source, de repente te ajuda tb com a primeira opção ;-)


Teoria e implementação do wrapper, e for dummies (meu caso).


Fique com Deus

Kali
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#4 Por Fergo
26/10/2007 - 01:58
Creio que um pré-requisito para isso seria a linguagem dar suporte a módulos externos (dll, por exemplo). Nunca trabalhei com python, então não sei se ele possui esse recurso.
Se ele tiver suporte, acho que a forma mais direta de fazer isso seria criar a biclioteca e nela programar as sua funções como "criar_botao", "criar_janela", sendo que você passaria as informações necessárias (tamanho, posição) através dos argumentos de cada função. É bom ter o cuidado de usar tipos de dados nos argumentos das funções que ambas as linguagens possuem.

Essa idéia é basicamente o que ocorre com o VisualBasic6 acessando módulos externos (API do Windows ou qualquer outra DLL que você saiba o que chamar). Apesar de o VB possuir todos os recursos para criar uma janela, é possível fazer isso acessando externamente a API do Windows através do código:

[code=rich]
Declare Function "nome da função" Lib "nome da biblioteca" (argumentos) As "return type"
[/code]Tomando como exemplo GetDC presente na User32.dll, é possível acessá-la diretamente pelo VB pelo comando:
[code=rich]
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
[/code]Claro, os exemplos aqui foram do VB, mas foi para exemplificar a idéia de como poderia ser feito um "wrapper" básico (tenho quase certeza que o python acessa bibliotecas externas também).

[]s
Fergo
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
jose_silva_neto
jose_silva_n... General de Pijama Registrado
4.6K Mensagens 98 Curtidas
#5 Por jose_silva_n...
26/10/2007 - 07:07
Fergo disse:
Creio que um pré-requisito para isso seria a linguagem dar suporte a módulos externos (dll, por exemplo). Nunca trabalhei com python, então não sei se ele possui esse recurso.
Se ele tiver suporte, acho que a forma mais direta de fazer isso seria criar a biclioteca e nela programar as sua funções como "criar_botao", "criar_janela", sendo que você passaria as informações necessárias (tamanho, posição) através dos argumentos de cada função. É bom ter o cuidado de usar tipos de dados nos argumentos das funções que ambas as linguagens possuem.

Essa idéia é basicamente o que ocorre com o VisualBasic6 acessando módulos externos (API do Windows ou qualquer outra DLL que você saiba o que chamar). Apesar de o VB possuir todos os recursos para criar uma janela, é possível fazer isso acessando externamente a API do Windows através do código:

[code=rich]
Declare Function "nome da função" Lib "nome da biblioteca" (argumentos) As "return type"
[/code]Tomando como exemplo GetDC presente na User32.dll, é possível acessá-la diretamente pelo VB pelo comando:
[code=rich]
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
[/code]Claro, os exemplos aqui foram do VB, mas foi para exemplificar a idéia de como poderia ser feito um "wrapper" básico (tenho quase certeza que o python acessa bibliotecas externas também).

[]s
Fergo


Muito obrigado.

Fique com Deus

Kali
jcferranti
jcferranti General de Pijama Registrado
4.7K Mensagens 162 Curtidas
#6 Por jcferranti
26/10/2007 - 15:43
kalicrates disse:
Boa tarde,

Vou explicar primeiro usando um exemplo: pense na biblioteca gtk (uma biblioteca gráfica), ela foi escrita originalmente para ser usada a partir de programas escritos em C; suponha que eu queira usar essa biblioteca em python, um wrapper da gtk para ser usada em python seria uma camada de tradução que pegaria as chamadas da gtk escritas em python e as traduziria para a gtk original.
Minha pergunta é "simples": alguém sabe o básico sobre isso ? Já pesquisei muito sobre isso via google e não encontrei nada didático. Qualquer ajuda é bem vinda, é um conhecimento fundamental para mim; gostaria muito de aprender.

Fiquem com Deus

Kali


Pode ser uma questão idiota, mas: Já tentou entrar em contato com algum grupo de desenvolvimento de um wrapper? Tipo, o mesmo do seu exemplo, python + GTK.
Casa:MS Windows Seven (empolgando)
Trampo: MS Windows Seven (desapontando)

Quer um Fórum exclusivamente sobre Open Source? Aqui: www.linuxbsd.com.br/forum
jose_silva_neto
jose_silva_n... General de Pijama Registrado
4.6K Mensagens 98 Curtidas
#7 Por jose_silva_n...
26/10/2007 - 16:34
jcferranti disse:
Pode ser uma questão idiota, mas: Já tentou entrar em contato com algum grupo de desenvolvimento de um wrapper? Tipo, o mesmo do seu exemplo, python + GTK.


Boa tarde,

De idiota a sua idéia não tem nada; há uns 3 anos atrás eu queria entender como funciona o apt , depois de muito pesquisar, acabei escrevendo para um dos projetistas iniciais, perguntei sobre documentação de alto nível sobre essa ferramenta (um diagrama de classes por exemplo), o sujeito me respondeu que não existia...só encarando 5 MB de código fonte mesmo...rsrsrs
Felizmente, é um ponto de vista (pobre ao meu ver) localizado...já pensou se os engenheiros não usassem diagramas ? Estariam f...rsrsrs
A programação (pelo menos a do mundo SL) tem muito ainda a evoluir em termos de apresentação conceitual de sistemas. Só um exemplo adicional, vi faz pouco tempo um vídeo sobre uma sonda com propulsão iônica projetada pela NASA, várias vezes apareciam os projetistas discutindo em cima de cálculos e diagramas estruturais ; é outro nível, o mundo da programação ainda possui muita inércia em termos diagramáticos e conceituais.


Fique com Deus

Kali
scarvenger
scarvenger Membro Senior Registrado
306 Mensagens 4 Curtidas
#8 Por scarvenger
26/10/2007 - 21:41
Bom, não sei se precisa ainda mas por exemplo: a biblioteca Boost do C++ possui um módulo para criar wrappers de código C++ para python [http://www.boost.org/libs/python/doc/]... Para criar um wrapper C++/Java pode-se usar JNI, e o resto é bastante como o fergo falou.
Fedora Core 7 + Beryl
Microsoft Windows XP Servive Pack 2

The Blog:
http://scarvenger.wordpress.com/
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal