Entrar
¿Nuevo usuario? Inscribirme
smalltalking · Un lugar para el estudio y desarrollo de Ambientes de Objetos virtuales.
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés hacer búsquedas de antiguos mensajes del grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Mensajes 14675 - 14704 de 17205   Más reciente  |  < Más reciente  |  Más antiguo >  |  Más antiguo
Mensajes: Mostrar resúmenes de los mensajes   (Agrupar por tema) Clasificar por fecha v  
#14704 De: mariano ll <malo_gabi1@...>
Fecha: Lun, 20 de Mar, 2006 11:52 am
Asunto: Dudas en dolphin 5
malo_gabi1
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Ante q nada gracias por su ayuda, respuestas y
recomendaciones anteriores.
Acá vuelvo bombardeando una serie de dudas q me han
quedado después de experimentar con los objetos
Gráficos de DOLPHIN 5.
   
1.Como puedo hacer para agregar una caption a una
shell cualquiera. La defino en el view composer, pero
cuando invoco al método show para verla me aparece
como no definida "Untitled".
2.Como hago para poder concatenar dos string en uno
sola.
3.Como hago para mostrar un valor como predefinido en
un combo box. Especifico el modelo (una Ordered
Collection) pero como hago para que uno de los objetos
aparezca como predefinido en la pantalla.

4. Como hago para manejar gráficos estadísticos,
necesito saber si hay alguna clase q lo haga y si es
posible me gustaría ver un ejemplo.

5. Existe alguna clase que maneje ecuaciones
diferenciales. Tuve q cargar "manualmente", un mensaje q lo soportará mediante un método numérico, me gustaría saber si existe alguna en el enorme ambiente que viene en la imagen, para poder obtener resultados mas exactos.
Gracias de nuevo por las respuestas anteriores. Y
esperando que me saquen algunas de estas dudas.


1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

#14703 De: "Lord ZealoN" <lordzealon@...>
Fecha: Sáb, 18 de Mar, 2006 9:48 am
Asunto: Movimiento actual en Squeak
tarzan_y_sus...
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Sinceramente, no recuerdo si este correo lo que voy a comentar, lo llegué a enviar, o simplemente fué algo que pensé escribir y no hice.

Resumiendo. Llevo poco tiempo en squeak, pero, no se si es mi imaginación, pero desde que han habido elecciones, la lista de squeak-dev tiene bastante movimiento.

Es cosa mía o es así?. Squeak "renace"?


Un saludo.

#14702 De: "Alejandro F. Reimondo" <aleReimondo@...>
Fecha: Sáb, 18 de Mar, 2006 3:12 pm
Asunto: Re: [objetos] Objetos C++ con ST
alereimondo
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola kiko,

>   Supongo que no es una traba para poder usar el motor ??.

No me pareció que Diego dijera que algo te impidiera usarlo,
  sino más bien que al usarlo, seguramente deberías lidiar con
  elementos externos, y por eso, por ejemplo, soportar duplicación
  de código/algoritmos/técnicas y/o usar elementos que ya están
  resueltos en tu ambiente, de forma más consistente con él mismo
  (en C y sus derivados no hay convergencia hacia frameworks
  básicos, y es común que las personas deseen innovar hasta en
  cosas elementales).

Una pregunta que me parece interesante plantearnos (usando
  como ejemplo esta situación que a vos te toca), es:
     hay una alternativa equivalente?
     (es decir, podrías usar otra cosa?)

Varias veces me ha pasado que uno usa soportes
  convencionales, por no existir algo resuelto con objetos (de forma
  decorosa y que no se prevea que sufrirá de obsolescencia prematura).

Cómo respuesta, decir, bueno... uno puede hacerlo;
  es muy inocente; y no siempre se puede aplicar
  en la práctica.
Decir que si uno lo hiciera con Smalltalk sería mejor,
  es engañoso; he visto varias cosas desastrosas hechas
  en Smalltalk (incluso en 3D); aunque sin lugar a dudas
  es lo mejor que pudieron hacer sus autores (y esto no
  es una crítica hacia ellos, sino una "justa" evaluación
  de los resultados, ante la óptica de quien al menos se
  sintió tentado de aprovechar los "famosos" frutos de
  sus esfuerzos).

En resumen, hay varias áreas dónde no se ven soluciones
  usando Smalltalk. En mi opinión, porque no hay gente
  con el conocimiento necesario (en Smalltalk) para
  realizarlos de forma eficiente/satisfactoria y a esta
  razón deberíamos sumarle dos mas... [*]
1.- no hay mucha gente "interesada" en superar los limites
  existentes en las técnicas de uso común (la mayoría ni los ve)
  sino más bien en usar lo mismo y así resolver los problemas
  que genera, sin reflexionar sobre las bases (a todo lo hace
  "un objeto" y así hasta el infinito... que triste destino)
2.- un gran porcentaje de gente interesada en Smalltalk,
  lo está, pues así se hace ver. Es un gran porcentaje además,
  el que suma la gente que desea capacitarse, pero es
  universitario (es decir, no puede ocuparse de lleno al tema,
  sino que debe distraer su atención en otras disciplinas,
  incluso en desarrollos que no se hacen con T.O. o se hacen
  con herramientas solo O.O.; que lo mínimo que producen
  son dudas... que no se pueden contestar sin tener
  experiencia real :).

Volviendo al tema, e intentando sintetizar el comentario en
  una frase; me parece que es frecuente hoy, que no tengamos
  alternativas decorosas en algunos contextos de aplicación,
  y que debamos elegir que es lo menos malo.
No siempre es mejor/posible empezar de cero.

hasta pronto,
Ale.

[*] Quienes tenemos algunos años en esto podríamos además
  preguntarnos que hemos hecho (o no) para que esta situación
  sea las que nos toca vivir hoy.

----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Friday, March 17, 2006 4:54 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola diego
>
>   OK , ahora me queda claro a que te referias .
>   Supongo que no es una traba para poder usar el motor ??.
>
>   saludos kiko
>
> Diego Fernandez <diegof79@...> escribió:
>   A "alto nivel" me refiero a que Nebula no solo provee graficos 3d (ala
OpenGL), si no que ademas tiene modeladas muchas abstracciones como file
I/O, threads, etc
(http://nebuladevice.cubik.org/documentation/nebula2/modules.shtml)
>
> El tema es que vas a tener que decidir donde hacer un "corte", por
ejemplo: usas el file i/o del framework ó usas los streams de St? Pero el
framework me da una rutina en C que lee archivos de 3ds max, por que no la
voy a usar?
>
> La cagada es que como C++ no es un ambiente de objetos puede que tu
programa se haga dificil de debuggear y diseñar (C++ no es amigable para la
prueba y error... ni para el manejo de memoria :( ).
>
> Por eso cuando se usa una librería C, se trata que la "logica" de mapeo
sea la minima posible, asi haces el 99% en St y en C te queda todo lo que
sea de "bajo nivel" (como hablar con el driver de video).
> Esa "estrategia" simplifica mucho el desarrollo: como las rutinas de mapeo
en C son de bajo nivel podes testearlas bien las compilas una vez y te
olvidas de volver a C por mucho tiempo :) (incluso hasta los malloc/free te
conviene manejarlos en St)
> Asi es como hacen muchos St para interactuar con el sistema operativo (por
ejemplo Squeak solo tiene implementado en la VM el BltBit el resto del
framework grafico esta en St, VAST usa el API de Windows para las ventanas
pero trata que ese mapeo sea minimo --SWT en Java hace lo mismo--, VW
tambien hace algo asi con la UI).
>
>   On 3/16/06, kikote gregoris <kikogregoris@... > wrote:
Hola diego
>
>   Que es lo que te hace pensar que nebula tiene características de alto
nivel que me puedan complicar la vida ??.
>   Yo leí la documentación y sin ser un experto en ingles no encontré nada
que me haga pensar en lo que comentas .
>
>   saludos kiko
>
>
> Diego Fernandez < diegof79@...> escribió:
>
>
>     La verdad que no sé nada de formas automaticas de hacer esas cosas :(
> (tengo entendido que habia una herramienta para VAST que leia archivos .h
y generaba la interfaz minima para comunicarse desde ST, tambien creo hay
algo parecido en VW con lo de CConect, pero nunca use ninguna de las dos
:(... y nunca use MT)
>
> Con respecto a Nebula, tene en cuenta lo siguiente:
> Por lo poquito que vi de la documentacion, Nebula es un API de "alto"
nivel. Es decir no hace solo rendering 3d con OpenGL si no que tambien
modela muchas cosas para el manejo de esos "mundos" 3d.
> Esto tiene una gran contra: vas a estar siempre luchando entre dos
lenguajes C++ y ST, ya que probablemente quieres tener este modelo de
"mundos" en ST :(
> Es mas recomendable utilizar C solo para cosas de "bajo" nivel (por ej. el
rendering con OpenGL) y modelar el resto en ST, te va a hacer la vida más
facil por que el mapeo con cosas en C de mas "bajo" nivel lo podes hacer
casi 1 a 1 (y probablemente en MT ya hay cosas para usar OpenGL)
>
>   On 3/13/06, kikote gregoris < kikogregoris@...> wrote:
Hola diego
>
>   Muy buena la explicación , la verdad es que no tenia  idea de todo este
quilombo.
>   Voy a investigar un poco mas la cuestión , para que me quede bien claro.
>   Sobre nebula es cierto que tiene como vos decís "bindings" para usar con
phyton , lua (que no se que carajo es) , rubi y tcl.
>   Alejandro decía que había una manera media automática para hacer estas
cosas , sabes algo sobre eso.??
>
> Diego Fernandez < diegof79@...> escribió:
>
>     (quizas lo que sigue es una explicación muy boluda de cosas que ya
sabes, pero que son nesarias para entender por que interactuar con C++ es
más complejo que interactuar con C)
>
> Aunque tengas pocos conocimientos de C/C++ ya sabes que este lenguaje
(como muchos otros), hace una diferencia grande entre "tiempo de desarrollo"
(cuando escribis el programa en formato texto) y "tiempo de ejecución"
(cuando el programa se interpreta en formato binario).
> En esa traducción de texto a binario se divide en dos etapas: compilar
(traducir el texto a binario) y linkear (enlazar diferentes partes ya
compiladas del programa). Asi por ejemplo cuando escribis:
>
> suma(2, 2);
>
> Cuando compilas se crea una referencia a la función suma que tiene una
"firma" particular: nombre la función + tipos de los parametros (en ingles
es signature, pero no sé si firma seria la traduccion correcta).
> Luego el linker lo que hace es unir estas referencias, asi por ejemplo
"suma" se une con algo cuya firma seria: suma(int, int) (es por eso que
aunque la funcion suma este implementada en una librería y no estes
compilando el codigo fuente para suma, es necesario declarar la función,
ver: http://en.wikipedia.org/wiki/Linker )
>
> Ahora... C++:
> C++ agrega dos caracteristicas: "objetos" y la posibilidad de declarar
funciones con diferentes aridades, por ejemplo:
> suma(int, int);
> suma(long, long);
>
> Para distintiguir estas declaraciones el compilador lo que hace es
codificar la "firma" de las funciones (esto se llama name mangling, ver
http://en.wikipedia.org/wiki/Name_mangling ). O sea suma en el archivo
objeto puede convertirse en:
> suma_int_int
> suma_long_long
>
> Este namemangling tambien se utilizar para diferenciar los metodos en un
"objeto".
> Lo del namemangling no representa mucha dificultad que digamos, es
cuestion de ver que nombre final tiene la función en la DLL (no se como es
en Windows pero en Unix/Linux se puede usar "nm" para ver los simbolos que
exporta un shared library).
>
> Lo más complicado es que en C++ los objetos no son como en St, no hay una
recepcion de mensajes.
> Cuando se compila el compilador accede directamente a los metodos (la
direccion en memoria), a menos que se declare el metodo como "virtual", en
cuyo caso se accede al metodo mediante una tabla que apunta a la direccion
donde esta la implementacion del metodo (vtable).
>
> Te estaras preguntando para que sirve saber todos estos detalles.
>
> Cuando haces una DLL se exportan ciertos simbolos para que estos puedan
ser accedidos mediante un linker ó "dinamicamente" mediante API para manejar
DLLs.
> El linker maneja automaticamente todo este problema del namemangling, pero
que pasa cuando accedes dinamicamente a las funciones de la DLL?
> Ahi estas limitado al acceso que te da el API para DLLs (ver
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/ge\
tprocaddress.asp)
> que nombre usas para acceder a la función si esta tiene "multiples
firmas", ó si es un metodo?
> Y si es un metodo "virtual"? Ahi ademas deberias conocer la estructura
interna que usa el compilador para representar los objetos y hacer el lookup
en el vtable.... En definitiva un quilombo!!
> (de nuevo este quilombo lo resuelve el compilador de C++ cuando usas
librerias en C++, por eso tambien hay problemas de compatibilidad entre
diferentes compiladores de C++, esa la razón por la cual las APIs de los
sistemas operativos suelen estar escritas en C)
> Por eso es mucho más facil hacer el "wrapper" en C, por ejemplo si estas
en C++:
> extern "C" int sumaInt(int a, int b) {
>      return suma(a, b)
> }
> extern "C" long sumaLong(long, long) { ... }
>
> El extern "C" es para que cuando se genere la tabla de simbolos se
utilizen simbolos compatibles con las convenciones de C. A eso se refiere
Alejandro con hacer un wrapper.
> (si no me equivoco Nebula tiene "bindings" para ser utilizado con Python ó
TCL asi que debe tener wrappers de este tipo)
>
>
>   On 3/9/06, kikote gregoris < kikogregoris@...> wrote:
Hola ALe
>
>
>   Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
>   Con respecto a exponer un API , podrías decirme como hacer esto con
algun ejemplo bien pabo, si no te jode .
>   Mi conocimiento sobre C y C++ es escaso.
>
>   Otra cosa que quiere decir:
>
>
>   De esta forma uno usa desde C la funcionalidad
> y no se complica con el uso de componentes
> e interfaces altamente fraccionadas
>
>
>     saludos kiko
>
> "Alejandro F. Reimondo" < aleReimondo@...> escribió:
>
>
>   Hola,
>
> >   Que es eso de hacer un wrappers
> > intermedios en C ???.
>
> Exponer el conjunto de funciones para ser
> usadas desde C u otra plataforma por medios
> tradicionales.
> Normalmente, los componentes de la librería se
> ven como punteros que son vueltos a pasar
> a la librería (que los genera) sin importar si
> son estructuras o componentes Cpuspus.
> De esta forma uno usa desde C la funcionalidad
> y no se complica con el uso de componentes
> e interfaces altamente fraccionadas.
>
> >   Otra cosa que no entendí es :
> >   Hoy en día es muy raro encontrar que quien
> > expone una librería lo hace solo
> > en C++ (y no expone una API);
>
> Normalmente quien hace una librería expone
> una API para ser usada desde C.
> Exponer componentes, en el caso de C++ (y
> otros LOOs) te fuerza a usar la misma plataforma
> de desarrollo del autor (lo que sería un mal
> menor, al compararlo frente a lo que implica usar
> sus componentes :-P ).
>
> suerte con Nebula2,
> hasta pronto,
> Ale.
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" < kikogregoris@...>
> To: < smalltalking@...>
> Sent: Wednesday, March 08, 2006 4:54 PM
> Subject: Re: [objetos] Objetos C++ con ST
>
>
> > Hola Ale
> >
> >   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
> esta desarrollado enteramente en C++, el motor es Free y se puden bajar
> todos los fuentes http://nebuladevice.cubik.org/
> >
> >   En algún momento pregunte si era conveniente el desarrollar un engine
en
> st , lo cual sigo pensando que seria la mejor solución .El problema es que
> esto me aleja de mi objetivo primario que es desarrollar un game ,
charlando
> con los desarrolladores de games de junin Oniric , me recomendaron que
tome
> la alternativa mas corta pues ellos tomaron la mas larga y no me lo
> recomendaron para empezar.
> >
> >   Es por eso que quería saber como hacer la conexión con objetos c++,
vos
> decís que es parecido a lo que se hace con objetos COM , tengo entendido
que
> los COM y los C++ son compatibles a nivel binario nada mas , cual es la
> diferencia entre ambos.
> >   En MT la comunicación con COM es bastante fácil , ya que hay todo un
> mecanismo bien definido para tal caso.
> >
> >   Que es eso de hacer un wrappers
> > intermedios en C ???.
> >
> >   Otra cosa que no entendi es :
> >
> >   Hoy en día es muy raro encontrar que quien expone una librería lo hace
> solo
> > en C++ (y no expone una API);
> >
> >   saludos kiko
> >
> >
> >
> > "Alejandro F. Reimondo" < aleReimondo@...> escribió:
> >   kiko,
> >
> > Seguramente en MT tenes una opción muy transparente para usar elementos
de
> > C++... pues el compilador es estático y preparado para integrarse bien
con
> > windows.
> > Fijate como se accede a objetos COM y seguramente allí tendrás guías de
> como
> > hacer lo que necesitas (no dejes de preguntar en la lista de usuarios
del
> MT
> > para ser bien asistido en esta duda).
> >
> > En un momento (hace casi 10 años) me toco hacer una conexión como la que
> te
> > estás planteando (con un Smalltalk mío) para acceder a rutinas de
> compresión
> > por fractales (algo que estaba por "ponerse de moda" para comprimir
> > imágenes, en ese entonces).
> > El usar objetos C++ es algo menos frecuente de lo que parece.
> > En ese momento lo que hice fue definir los métodos que tenia la DLL como
> api
> > calls (buscando la dirección del binding con el nombre mangleado y
> > atachandoselo al método Smalltalk explícitamente), con un diseño similar
> al
> > que tiene VS.
> > Así accedía a las funciones de instanciación del objeto C++.
> > Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
> virtual
> > y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> > (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> > mapeando la tabla virtual con métodos definidos como API y a los que le
> > pichicateaba la dirección de las funciones encontradas en la tabla
> virtual.
> >
> > Como te imaginarás todo funcionaba de maravillas... pero luego de
hacerlo
> > (cosa indispensable para mantener mi sanidad y no tener que hacer
wrappers
> > intermedios en C) llegue a la conclusión que no era algo digno de
> recomendar
> > :-)
> >
> > Hoy en día es muy raro encontrar que quien expone una librería lo hace
> solo
> > en C++ (y no expone una API); pero si es ese tu caso; te recomendaría
que
> > evalúes si podes evitar usarlo (para no heredar la obsolescencia
> > característica de este tipo de librerías).
> >
> > suerte,
> > Ale.
> >
> >
> >
> >
> >
> > ----- Original Message -----
> > From: "kikote gregoris" < kikogregoris@... >
> > To: < smalltalking@...>
> > Sent: Monday, March 06, 2006 4:52 PM
> > Subject: [objetos] Objetos C++ con ST
> >
> >
> > > Hola gente
> > >
> > >   Queira saber como se puede interactuar con una dll que contiene un
> > objeto c++ ?.
>
>   > >   Algo bien simple , una clase que contiene el metodo
>
> > >    int suma(int x , int y) .
> > >
> > >   Lo quiero hacer desde el MT .
> > >
> > >   saludos kiko
> > >
> > >
> > > ---------------------------------
> > >  1GB gratis, Antivirus y Antispam
> > >  Correo Yahoo!, el mejor correo web del mundo
> > >  Abrí tu cuenta aquí
> >
> >
> >
> > Para más información sobre la Asociación escribir a
info@...
> >
> > Smalltalking es un espacio colaborativo creado para el estudio y
> desarrollo en Ambientes de Objetos.
> > Se sustenta gracias a la participación de sus socios.
> >
> > Las reglas de etiqueta sobre la lista están en
> http://www.smalltalking.net/join/netiquete.htm
> >
> >
> >
> >
> > ---------------------------------
> >   Enlaces de Yahoo! Grupos
> >
> >    Para visitar el sitio web del grupo, andá a:
> > http://ar.groups.yahoo.com/group/smalltalking/
> >
> >    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> > smalltalking-unsubscribe@...
> >
> >    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
> Yahoo!.
> >
> >
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
>
>
>
>
>
> ---------------------------------
>   A tu celular ¿no le falta algo?
> Usá Yahoo! Messenger y Correo Yahoo! en tu teléfono celular .
> Más información aquí.
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
>
>
>
>
>
> ---------------------------------
>
>   1GB gratis, Antivirus y Antispam
> Correo Yahoo!, el mejor correo web del mundo
> Abrí tu cuenta aquí
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
>
>
>
>
>
> ---------------------------------
>
>   1GB gratis, Antivirus y Antispam
> Correo Yahoo!, el mejor correo web del mundo
> Abrí tu cuenta aquí
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  Horóscopos, Salud y belleza, Chistes, Consejos de amor.
>  El contenido más divertido para tu celular está en
> Yahoo! Móvil

#14701 De: kikote gregoris <kikogregoris@...>
Fecha: Vie, 17 de Mar, 2006 7:54 pm
Asunto: Re: [objetos] Objetos C++ con ST
kikogregoris
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola diego
 
OK , ahora me queda claro a que te referias .
Supongo que no es una traba para poder usar el motor ??.
 
saludos kiko

Diego Fernandez <diegof79@...> escribió:
A "alto nivel" me refiero a que Nebula no solo provee graficos 3d (ala OpenGL), si no que ademas tiene modeladas muchas abstracciones como file I/O, threads, etc (http://nebuladevice.cubik.org/documentation/nebula2/modules.shtml)

El tema es que vas a tener que decidir donde hacer un "corte", por ejemplo: usas el file i/o del framework ó usas los streams de St? Pero el framework me da una rutina en C que lee archivos de 3ds max, por que no la voy a usar?

La cagada es que como C++ no es un ambiente de objetos puede que tu programa se haga dificil de debuggear y diseñar (C++ no es amigable para la prueba y error... ni para el manejo de memoria :( ).

Por eso cuando se usa una librería C, se trata que la "logica" de mapeo sea la minima posible, asi haces el 99% en St y en C te queda todo lo que sea de "bajo nivel" (como hablar con el driver de video).
Esa "estrategia" simplifica mucho el desarrollo: como las rutinas de mapeo en C son de bajo nivel podes testearlas bien las compilas una vez y te olvidas de volver a C por mucho tiempo :) (incluso hasta los malloc/free te conviene manejarlos en St)
Asi es como hacen muchos St para interactuar con el sistema operativo (por ejemplo Squeak solo tiene implementado en la VM el BltBit el resto del framework grafico esta en St, VAST usa el API de Windows para las ventanas pero trata que ese mapeo sea minimo --SWT en Java hace lo mismo--, VW tambien hace algo asi con la UI).

On 3/16/06, kikote gregoris <kikogregoris@... > wrote:
Hola diego
 
Que es lo que te hace pensar que nebula tiene características de alto nivel que me puedan complicar la vida ??.
Yo leí la documentación y sin ser un experto en ingles no encontré nada que me haga pensar en lo que comentas .
 
saludos kiko


Diego Fernandez < diegof79@...> escribió:
La verdad que no sé nada de formas automaticas de hacer esas cosas :(
(tengo entendido que habia una herramienta para VAST que leia archivos .h y generaba la interfaz minima para comunicarse desde ST, tambien creo hay algo parecido en VW con lo de CConect, pero nunca use ninguna de las dos :(... y nunca use MT)

Con respecto a Nebula, tene en cuenta lo siguiente:
Por lo poquito que vi de la documentacion, Nebula es un API de "alto" nivel. Es decir no hace solo rendering 3d con OpenGL si no que tambien modela muchas cosas para el manejo de esos "mundos" 3d.
Esto tiene una gran contra: vas a estar siempre luchando entre dos lenguajes C++ y ST, ya que probablemente quieres tener este modelo de "mundos" en ST :(
Es mas recomendable utilizar C solo para cosas de "bajo" nivel (por ej. el rendering con OpenGL) y modelar el resto en ST, te va a hacer la vida más facil por que el mapeo con cosas en C de mas "bajo" nivel lo podes hacer casi 1 a 1 (y probablemente en MT ya hay cosas para usar OpenGL)

On 3/13/06, kikote gregoris < kikogregoris@...> wrote:
Hola diego
 
Muy buena la explicación , la verdad es que no tenia  idea de todo este quilombo.
Voy a investigar un poco mas la cuestión , para que me quede bien claro.
Sobre nebula es cierto que tiene como vos decís "bindings" para usar con phyton , lua (que no se que carajo es) , rubi y tcl.
Alejandro decía que había una manera media automática para hacer estas cosas , sabes algo sobre eso.??

Diego Fernandez < diegof79@...> escribió:
(quizas lo que sigue es una explicación muy boluda de cosas que ya sabes, pero que son nesarias para entender por que interactuar con C++ es más complejo que interactuar con C)

Aunque tengas pocos conocimientos de C/C++ ya sabes que este lenguaje (como muchos otros), hace una diferencia grande entre "tiempo de desarrollo" (cuando escribis el programa en formato texto) y "tiempo de ejecución" (cuando el programa se interpreta en formato binario).
En esa traducción de texto a binario se divide en dos etapas: compilar (traducir el texto a binario) y linkear (enlazar diferentes partes ya compiladas del programa). Asi por ejemplo cuando escribis:

suma(2, 2);

Cuando compilas se crea una referencia a la función suma que tiene una "firma" particular: nombre la función + tipos de los parametros (en ingles es signature, pero no sé si firma seria la traduccion correcta).
Luego el linker lo que hace es unir estas referencias, asi por ejemplo "suma" se une con algo cuya firma seria: suma(int, int) (es por eso que aunque la funcion suma este implementada en una librería y no estes compilando el codigo fuente para suma, es necesario declarar la función, ver: http://en.wikipedia.org/wiki/Linker )

Ahora... C++:
C++ agrega dos caracteristicas: "objetos" y la posibilidad de declarar funciones con diferentes aridades, por ejemplo:
suma(int, int);
suma(long, long);

Para distintiguir estas declaraciones el compilador lo que hace es codificar la "firma" de las funciones (esto se llama name mangling, ver http://en.wikipedia.org/wiki/Name_mangling ). O sea suma en el archivo objeto puede convertirse en:
suma_int_int
suma_long_long

Este namemangling tambien se utilizar para diferenciar los metodos en un "objeto".
Lo del namemangling no representa mucha dificultad que digamos, es cuestion de ver que nombre final tiene la función en la DLL (no se como es en Windows pero en Unix/Linux se puede usar "nm" para ver los simbolos que exporta un shared library).

Lo más complicado es que en C++ los objetos no son como en St, no hay una recepcion de mensajes.
Cuando se compila el compilador accede directamente a los metodos (la direccion en memoria), a menos que se declare el metodo como "virtual", en cuyo caso se accede al metodo mediante una tabla que apunta a la direccion donde esta la implementacion del metodo (vtable).

Te estaras preguntando para que sirve saber todos estos detalles.

Cuando haces una DLL se exportan ciertos simbolos para que estos puedan ser accedidos mediante un linker ó "dinamicamente" mediante API para manejar DLLs.
El linker maneja automaticamente todo este problema del namemangling, pero que pasa cuando accedes dinamicamente a las funciones de la DLL?
Ahi estas limitado al acceso que te da el API para DLLs (ver http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocaddress.asp)
que nombre usas para acceder a la función si esta tiene "multiples firmas", ó si es un metodo?
Y si es un metodo "virtual"? Ahi ademas deberias conocer la estructura interna que usa el compilador para representar los objetos y hacer el lookup en el vtable.... En definitiva un quilombo!!
(de nuevo este quilombo lo resuelve el compilador de C++ cuando usas librerias en C++, por eso tambien hay problemas de compatibilidad entre diferentes compiladores de C++, esa la razón por la cual las APIs de los sistemas operativos suelen estar escritas en C)
Por eso es mucho más facil hacer el "wrapper" en C, por ejemplo si estas en C++:
extern "C" int sumaInt(int a, int b) {
     return suma(a, b)
}
extern "C" long sumaLong(long, long) { ... }

El extern "C" es para que cuando se genere la tabla de simbolos se utilizen simbolos compatibles con las convenciones de C. A eso se refiere Alejandro con hacer un wrapper.
(si no me equivoco Nebula tiene "bindings" para ser utilizado con Python ó TCL asi que debe tener wrappers de este tipo)


On 3/9/06, kikote gregoris < kikogregoris@...> wrote:
Hola ALe
 
 
Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
Con respecto a exponer un API , podrías decirme como hacer esto con algun ejemplo bien pabo, si no te jode .
Mi conocimiento sobre C y C++ es escaso.
 
Otra cosa que quiere decir:
 
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas
 
saludos kiko

"Alejandro F. Reimondo" < aleReimondo@...> escribió:
Hola,

>   Que es eso de hacer un wrappers
> intermedios en C ???.

Exponer el conjunto de funciones para ser
usadas desde C u otra plataforma por medios
tradicionales.
Normalmente, los componentes de la librería se
ven como punteros que son vueltos a pasar
a la librería (que los genera) sin importar si
son estructuras o componentes Cpuspus.
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas.

>   Otra cosa que no entendí es :
>   Hoy en día es muy raro encontrar que quien
> expone una librería lo hace solo
> en C++ (y no expone una API);

Normalmente quien hace una librería expone
una API para ser usada desde C.
Exponer componentes, en el caso de C++ (y
otros LOOs) te fuerza a usar la misma plataforma
de desarrollo del autor (lo que sería un mal
menor, al compararlo frente a lo que implica usar
sus componentes :-P ).

suerte con Nebula2,
hasta pronto,
Ale.




----- Original Message -----
From: "kikote gregoris" < kikogregoris@...>
To: < smalltalking@...>
Sent: Wednesday, March 08, 2006 4:54 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola Ale
>
>   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
esta desarrollado enteramente en C++, el motor es Free y se puden bajar
todos los fuentes http://nebuladevice.cubik.org/
>
>   En algún momento pregunte si era conveniente el desarrollar un engine en
st , lo cual sigo pensando que seria la mejor solución .El problema es que
esto me aleja de mi objetivo primario que es desarrollar un game , charlando
con los desarrolladores de games de junin Oniric , me recomendaron que tome
la alternativa mas corta pues ellos tomaron la mas larga y no me lo
recomendaron para empezar.
>
>   Es por eso que quería saber como hacer la conexión con objetos c++, vos
decís que es parecido a lo que se hace con objetos COM , tengo entendido que
los COM y los C++ son compatibles a nivel binario nada mas , cual es la
diferencia entre ambos.
>   En MT la comunicación con COM es bastante fácil , ya que hay todo un
mecanismo bien definido para tal caso.
>
>   Que es eso de hacer un wrappers
> intermedios en C ???.
>
>   Otra cosa que no entendi es :
>
>   Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API);
>
>   saludos kiko
>
>
>
> "Alejandro F. Reimondo" < aleReimondo@...> escribió:
>   kiko,
>
> Seguramente en MT tenes una opción muy transparente para usar elementos de
> C++... pues el compilador es estático y preparado para integrarse bien con
> windows.
> Fijate como se accede a objetos COM y seguramente allí tendrás guías de
como
> hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del
MT
> para ser bien asistido en esta duda).
>
> En un momento (hace casi 10 años) me toco hacer una conexión como la que
te
> estás planteando (con un Smalltalk mío) para acceder a rutinas de
compresión
> por fractales (algo que estaba por "ponerse de moda" para comprimir
> imágenes, en ese entonces).
> El usar objetos C++ es algo menos frecuente de lo que parece.
> En ese momento lo que hice fue definir los métodos que tenia la DLL como
api
> calls (buscando la dirección del binding con el nombre mangleado y
> atachandoselo al método Smalltalk explícitamente), con un diseño similar
al
> que tiene VS.
> Así accedía a las funciones de instanciación del objeto C++.
> Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
virtual
> y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> mapeando la tabla virtual con métodos definidos como API y a los que le
> pichicateaba la dirección de las funciones encontradas en la tabla
virtual.
>
> Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
> (cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
> intermedios en C) llegue a la conclusión que no era algo digno de
recomendar
> :-)
>
> Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
> evalúes si podes evitar usarlo (para no heredar la obsolescencia
> característica de este tipo de librerías).
>
> suerte,
> Ale.
>
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" < kikogregoris@... >
> To: < smalltalking@...>
> Sent: Monday, March 06, 2006 4:52 PM
> Subject: [objetos] Objetos C++ con ST
>
>
> > Hola gente
> >
> >   Queira saber como se puede interactuar con una dll que contiene un
> objeto c++ ?.
> >   Algo bien simple , una clase que contiene el metodo

> >    int suma(int x , int y) .
> >
> >   Lo quiero hacer desde el MT .
> >
> >   saludos kiko
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí



A tu celular ¿no le falta algo?
Usá Yahoo! Messenger y Correo Yahoo! en tu teléfono celular .
Más información aquí.


Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



Horóscopos, Salud y belleza, Chistes, Consejos de amor.
El contenido más divertido para tu celular está en
Yahoo! Móvil

#14700 De: kikote gregoris <kikogregoris@...>
Fecha: Vie, 17 de Mar, 2006 7:45 pm
Asunto: Re: [objetos] Presentación
kikogregoris
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola
 
Soy jose gregoris , de la ciudad de junin ( Argentina ) y me alegro que puedas participar de la lista .
 
saludos kiko

Lord ZealoN <lordzealon@...> escribió:
Hola a todos.
 
Recién comienzo en este mundillo de smalltalk/Squeak y buscando webs sobre di con este grupo.
 
Mi Nombre es Giuseppe Luigi, tengo 23 años, y actualmente desempeño la labor de Técnico de Sistemas (aunque soy más de desarrollo).
 
Tengo experiencia en diversos lenguajes, y es la primera vez que me aventuro en algo del estilo de squeak.
 
Sólamente quería enviaros un saludo desde España.


1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

#14699 De: "Lord ZealoN" <lordzealon@...>
Fecha: Vie, 17 de Mar, 2006 5:48 pm
Asunto: Presentación
tarzan_y_sus...
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola a todos.
 
Recién comienzo en este mundillo de smalltalk/Squeak y buscando webs sobre di con este grupo.
 
Mi Nombre es Giuseppe Luigi, tengo 23 años, y actualmente desempeño la labor de Técnico de Sistemas (aunque soy más de desarrollo).
 
Tengo experiencia en diversos lenguajes, y es la primera vez que me aventuro en algo del estilo de squeak.
 
Sólamente quería enviaros un saludo desde España.

#14698 De: "Diego Fernandez" <diegof79@...>
Fecha: Vie, 17 de Mar, 2006 2:00 am
Asunto: Re: [objetos] Objetos C++ con ST
diegof79
Sin conexión Sin conexión
Enviar correo Enviar correo
 
A "alto nivel" me refiero a que Nebula no solo provee graficos 3d (ala OpenGL), si no que ademas tiene modeladas muchas abstracciones como file I/O, threads, etc (http://nebuladevice.cubik.org/documentation/nebula2/modules.shtml)

El tema es que vas a tener que decidir donde hacer un "corte", por ejemplo: usas el file i/o del framework ó usas los streams de St? Pero el framework me da una rutina en C que lee archivos de 3ds max, por que no la voy a usar?

La cagada es que como C++ no es un ambiente de objetos puede que tu programa se haga dificil de debuggear y diseñar (C++ no es amigable para la prueba y error... ni para el manejo de memoria :( ).

Por eso cuando se usa una librería C, se trata que la "logica" de mapeo sea la minima posible, asi haces el 99% en St y en C te queda todo lo que sea de "bajo nivel" (como hablar con el driver de video).
Esa "estrategia" simplifica mucho el desarrollo: como las rutinas de mapeo en C son de bajo nivel podes testearlas bien las compilas una vez y te olvidas de volver a C por mucho tiempo :) (incluso hasta los malloc/free te conviene manejarlos en St)
Asi es como hacen muchos St para interactuar con el sistema operativo (por ejemplo Squeak solo tiene implementado en la VM el BltBit el resto del framework grafico esta en St, VAST usa el API de Windows para las ventanas pero trata que ese mapeo sea minimo --SWT en Java hace lo mismo--, VW tambien hace algo asi con la UI).

On 3/16/06, kikote gregoris <kikogregoris@... > wrote:
Hola diego
 
Que es lo que te hace pensar que nebula tiene características de alto nivel que me puedan complicar la vida ??.
Yo leí la documentación y sin ser un experto en ingles no encontré nada que me haga pensar en lo que comentas .
 
saludos kiko


Diego Fernandez < diegof79@...> escribió:
La verdad que no sé nada de formas automaticas de hacer esas cosas :(
(tengo entendido que habia una herramienta para VAST que leia archivos .h y generaba la interfaz minima para comunicarse desde ST, tambien creo hay algo parecido en VW con lo de CConect, pero nunca use ninguna de las dos :(... y nunca use MT)

Con respecto a Nebula, tene en cuenta lo siguiente:
Por lo poquito que vi de la documentacion, Nebula es un API de "alto" nivel. Es decir no hace solo rendering 3d con OpenGL si no que tambien modela muchas cosas para el manejo de esos "mundos" 3d.
Esto tiene una gran contra: vas a estar siempre luchando entre dos lenguajes C++ y ST, ya que probablemente quieres tener este modelo de "mundos" en ST :(
Es mas recomendable utilizar C solo para cosas de "bajo" nivel (por ej. el rendering con OpenGL) y modelar el resto en ST, te va a hacer la vida más facil por que el mapeo con cosas en C de mas "bajo" nivel lo podes hacer casi 1 a 1 (y probablemente en MT ya hay cosas para usar OpenGL)

On 3/13/06, kikote gregoris < kikogregoris@...> wrote:
Hola diego
 
Muy buena la explicación , la verdad es que no tenia  idea de todo este quilombo.
Voy a investigar un poco mas la cuestión , para que me quede bien claro.
Sobre nebula es cierto que tiene como vos decís "bindings" para usar con phyton , lua (que no se que carajo es) , rubi y tcl.
Alejandro decía que había una manera media automática para hacer estas cosas , sabes algo sobre eso.??

Diego Fernandez < diegof79@...> escribió:
(quizas lo que sigue es una explicación muy boluda de cosas que ya sabes, pero que son nesarias para entender por que interactuar con C++ es más complejo que interactuar con C)

Aunque tengas pocos conocimientos de C/C++ ya sabes que este lenguaje (como muchos otros), hace una diferencia grande entre "tiempo de desarrollo" (cuando escribis el programa en formato texto) y "tiempo de ejecución" (cuando el programa se interpreta en formato binario).
En esa traducción de texto a binario se divide en dos etapas: compilar (traducir el texto a binario) y linkear (enlazar diferentes partes ya compiladas del programa). Asi por ejemplo cuando escribis:

suma(2, 2);

Cuando compilas se crea una referencia a la función suma que tiene una "firma" particular: nombre la función + tipos de los parametros (en ingles es signature, pero no sé si firma seria la traduccion correcta).
Luego el linker lo que hace es unir estas referencias, asi por ejemplo "suma" se une con algo cuya firma seria: suma(int, int) (es por eso que aunque la funcion suma este implementada en una librería y no estes compilando el codigo fuente para suma, es necesario declarar la función, ver: http://en.wikipedia.org/wiki/Linker )

Ahora... C++:
C++ agrega dos caracteristicas: "objetos" y la posibilidad de declarar funciones con diferentes aridades, por ejemplo:
suma(int, int);
suma(long, long);

Para distintiguir estas declaraciones el compilador lo que hace es codificar la "firma" de las funciones (esto se llama name mangling, ver http://en.wikipedia.org/wiki/Name_mangling ). O sea suma en el archivo objeto puede convertirse en:
suma_int_int
suma_long_long

Este namemangling tambien se utilizar para diferenciar los metodos en un "objeto".
Lo del namemangling no representa mucha dificultad que digamos, es cuestion de ver que nombre final tiene la función en la DLL (no se como es en Windows pero en Unix/Linux se puede usar "nm" para ver los simbolos que exporta un shared library).

Lo más complicado es que en C++ los objetos no son como en St, no hay una recepcion de mensajes.
Cuando se compila el compilador accede directamente a los metodos (la direccion en memoria), a menos que se declare el metodo como "virtual", en cuyo caso se accede al metodo mediante una tabla que apunta a la direccion donde esta la implementacion del metodo (vtable).

Te estaras preguntando para que sirve saber todos estos detalles.

Cuando haces una DLL se exportan ciertos simbolos para que estos puedan ser accedidos mediante un linker ó "dinamicamente" mediante API para manejar DLLs.
El linker maneja automaticamente todo este problema del namemangling, pero que pasa cuando accedes dinamicamente a las funciones de la DLL?
Ahi estas limitado al acceso que te da el API para DLLs (ver http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocaddress.asp)
que nombre usas para acceder a la función si esta tiene "multiples firmas", ó si es un metodo?
Y si es un metodo "virtual"? Ahi ademas deberias conocer la estructura interna que usa el compilador para representar los objetos y hacer el lookup en el vtable.... En definitiva un quilombo!!
(de nuevo este quilombo lo resuelve el compilador de C++ cuando usas librerias en C++, por eso tambien hay problemas de compatibilidad entre diferentes compiladores de C++, esa la razón por la cual las APIs de los sistemas operativos suelen estar escritas en C)
Por eso es mucho más facil hacer el "wrapper" en C, por ejemplo si estas en C++:
extern "C" int sumaInt(int a, int b) {
     return suma(a, b)
}
extern "C" long sumaLong(long, long) { ... }

El extern "C" es para que cuando se genere la tabla de simbolos se utilizen simbolos compatibles con las convenciones de C. A eso se refiere Alejandro con hacer un wrapper.
(si no me equivoco Nebula tiene "bindings" para ser utilizado con Python ó TCL asi que debe tener wrappers de este tipo)


On 3/9/06, kikote gregoris < kikogregoris@...> wrote:
Hola ALe
 
 
Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
Con respecto a exponer un API , podrías decirme como hacer esto con algun ejemplo bien pabo, si no te jode .
Mi conocimiento sobre C y C++ es escaso.
 
Otra cosa que quiere decir:
 
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas
 
saludos kiko

"Alejandro F. Reimondo" < aleReimondo@...> escribió:
Hola,

>   Que es eso de hacer un wrappers
> intermedios en C ???.

Exponer el conjunto de funciones para ser
usadas desde C u otra plataforma por medios
tradicionales.
Normalmente, los componentes de la librería se
ven como punteros que son vueltos a pasar
a la librería (que los genera) sin importar si
son estructuras o componentes Cpuspus.
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas.

>   Otra cosa que no entendí es :
>   Hoy en día es muy raro encontrar que quien
> expone una librería lo hace solo
> en C++ (y no expone una API);

Normalmente quien hace una librería expone
una API para ser usada desde C.
Exponer componentes, en el caso de C++ (y
otros LOOs) te fuerza a usar la misma plataforma
de desarrollo del autor (lo que sería un mal
menor, al compararlo frente a lo que implica usar
sus componentes :-P ).

suerte con Nebula2,
hasta pronto,
Ale.




----- Original Message -----
From: "kikote gregoris" < kikogregoris@...>
To: < smalltalking@...>
Sent: Wednesday, March 08, 2006 4:54 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola Ale
>
>   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
esta desarrollado enteramente en C++, el motor es Free y se puden bajar
todos los fuentes http://nebuladevice.cubik.org/
>
>   En algún momento pregunte si era conveniente el desarrollar un engine en
st , lo cual sigo pensando que seria la mejor solución .El problema es que
esto me aleja de mi objetivo primario que es desarrollar un game , charlando
con los desarrolladores de games de junin Oniric , me recomendaron que tome
la alternativa mas corta pues ellos tomaron la mas larga y no me lo
recomendaron para empezar.
>
>   Es por eso que quería saber como hacer la conexión con objetos c++, vos
decís que es parecido a lo que se hace con objetos COM , tengo entendido que
los COM y los C++ son compatibles a nivel binario nada mas , cual es la
diferencia entre ambos.
>   En MT la comunicación con COM es bastante fácil , ya que hay todo un
mecanismo bien definido para tal caso.
>
>   Que es eso de hacer un wrappers
> intermedios en C ???.
>
>   Otra cosa que no entendi es :
>
>   Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API);
>
>   saludos kiko
>
>
>
> "Alejandro F. Reimondo" < aleReimondo@...> escribió:
>   kiko,
>
> Seguramente en MT tenes una opción muy transparente para usar elementos de
> C++... pues el compilador es estático y preparado para integrarse bien con
> windows.
> Fijate como se accede a objetos COM y seguramente allí tendrás guías de
como
> hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del
MT
> para ser bien asistido en esta duda).
>
> En un momento (hace casi 10 años) me toco hacer una conexión como la que
te
> estás planteando (con un Smalltalk mío) para acceder a rutinas de
compresión
> por fractales (algo que estaba por "ponerse de moda" para comprimir
> imágenes, en ese entonces).
> El usar objetos C++ es algo menos frecuente de lo que parece.
> En ese momento lo que hice fue definir los métodos que tenia la DLL como
api
> calls (buscando la dirección del binding con el nombre mangleado y
> atachandoselo al método Smalltalk explícitamente), con un diseño similar
al
> que tiene VS.
> Así accedía a las funciones de instanciación del objeto C++.
> Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
virtual
> y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> mapeando la tabla virtual con métodos definidos como API y a los que le
> pichicateaba la dirección de las funciones encontradas en la tabla
virtual.
>
> Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
> (cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
> intermedios en C) llegue a la conclusión que no era algo digno de
recomendar
> :-)
>
> Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
> evalúes si podes evitar usarlo (para no heredar la obsolescencia
> característica de este tipo de librerías).
>
> suerte,
> Ale.
>
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" < kikogregoris@... >
> To: < smalltalking@...>
> Sent: Monday, March 06, 2006 4:52 PM
> Subject: [objetos] Objetos C++ con ST
>
>
> > Hola gente
> >
> >   Queira saber como se puede interactuar con una dll que contiene un
> objeto c++ ?.
> >   Algo bien simple , una clase que contiene el metodo

> >    int suma(int x , int y) .
> >
> >   Lo quiero hacer desde el MT .
> >
> >   saludos kiko
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí



A tu celular ¿no le falta algo?
Usá Yahoo! Messenger y Correo Yahoo! en tu teléfono celular .
Más información aquí.


Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



#14697 De: kikote gregoris <kikogregoris@...>
Fecha: Jue, 16 de Mar, 2006 8:24 pm
Asunto: Re: [objetos] Objetos C++ con ST
kikogregoris
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola diego
 
Que es lo que te hace pensar que nebula tiene características de alto nivel que me puedan complicar la vida ??.
Yo leí la documentación y sin ser un experto en ingles no encontré nada que me haga pensar en lo que comentas .
 
saludos kiko

Diego Fernandez <diegof79@...> escribió:
La verdad que no sé nada de formas automaticas de hacer esas cosas :(
(tengo entendido que habia una herramienta para VAST que leia archivos .h y generaba la interfaz minima para comunicarse desde ST, tambien creo hay algo parecido en VW con lo de CConect, pero nunca use ninguna de las dos :(... y nunca use MT)

Con respecto a Nebula, tene en cuenta lo siguiente:
Por lo poquito que vi de la documentacion, Nebula es un API de "alto" nivel. Es decir no hace solo rendering 3d con OpenGL si no que tambien modela muchas cosas para el manejo de esos "mundos" 3d.
Esto tiene una gran contra: vas a estar siempre luchando entre dos lenguajes C++ y ST, ya que probablemente quieres tener este modelo de "mundos" en ST :(
Es mas recomendable utilizar C solo para cosas de "bajo" nivel (por ej. el rendering con OpenGL) y modelar el resto en ST, te va a hacer la vida más facil por que el mapeo con cosas en C de mas "bajo" nivel lo podes hacer casi 1 a 1 (y probablemente en MT ya hay cosas para usar OpenGL)

On 3/13/06, kikote gregoris <kikogregoris@...> wrote:
Hola diego
 
Muy buena la explicación , la verdad es que no tenia  idea de todo este quilombo.
Voy a investigar un poco mas la cuestión , para que me quede bien claro.
Sobre nebula es cierto que tiene como vos decís "bindings" para usar con phyton , lua (que no se que carajo es) , rubi y tcl.
Alejandro decía que había una manera media automática para hacer estas cosas , sabes algo sobre eso.??

Diego Fernandez <diegof79@...> escribió:
(quizas lo que sigue es una explicación muy boluda de cosas que ya sabes, pero que son nesarias para entender por que interactuar con C++ es más complejo que interactuar con C)

Aunque tengas pocos conocimientos de C/C++ ya sabes que este lenguaje (como muchos otros), hace una diferencia grande entre "tiempo de desarrollo" (cuando escribis el programa en formato texto) y "tiempo de ejecución" (cuando el programa se interpreta en formato binario).
En esa traducción de texto a binario se divide en dos etapas: compilar (traducir el texto a binario) y linkear (enlazar diferentes partes ya compiladas del programa). Asi por ejemplo cuando escribis:

suma(2, 2);

Cuando compilas se crea una referencia a la función suma que tiene una "firma" particular: nombre la función + tipos de los parametros (en ingles es signature, pero no sé si firma seria la traduccion correcta).
Luego el linker lo que hace es unir estas referencias, asi por ejemplo "suma" se une con algo cuya firma seria: suma(int, int) (es por eso que aunque la funcion suma este implementada en una librería y no estes compilando el codigo fuente para suma, es necesario declarar la función, ver: http://en.wikipedia.org/wiki/Linker)

Ahora... C++:
C++ agrega dos caracteristicas: "objetos" y la posibilidad de declarar funciones con diferentes aridades, por ejemplo:
suma(int, int);
suma(long, long);

Para distintiguir estas declaraciones el compilador lo que hace es codificar la "firma" de las funciones (esto se llama name mangling, ver http://en.wikipedia.org/wiki/Name_mangling). O sea suma en el archivo objeto puede convertirse en:
suma_int_int
suma_long_long

Este namemangling tambien se utilizar para diferenciar los metodos en un "objeto".
Lo del namemangling no representa mucha dificultad que digamos, es cuestion de ver que nombre final tiene la función en la DLL (no se como es en Windows pero en Unix/Linux se puede usar "nm" para ver los simbolos que exporta un shared library).

Lo más complicado es que en C++ los objetos no son como en St, no hay una recepcion de mensajes.
Cuando se compila el compilador accede directamente a los metodos (la direccion en memoria), a menos que se declare el metodo como "virtual", en cuyo caso se accede al metodo mediante una tabla que apunta a la direccion donde esta la implementacion del metodo (vtable).

Te estaras preguntando para que sirve saber todos estos detalles.

Cuando haces una DLL se exportan ciertos simbolos para que estos puedan ser accedidos mediante un linker ó "dinamicamente" mediante API para manejar DLLs.
El linker maneja automaticamente todo este problema del namemangling, pero que pasa cuando accedes dinamicamente a las funciones de la DLL?
Ahi estas limitado al acceso que te da el API para DLLs (ver http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocaddress.asp)
que nombre usas para acceder a la función si esta tiene "multiples firmas", ó si es un metodo?
Y si es un metodo "virtual"? Ahi ademas deberias conocer la estructura interna que usa el compilador para representar los objetos y hacer el lookup en el vtable.... En definitiva un quilombo!!
(de nuevo este quilombo lo resuelve el compilador de C++ cuando usas librerias en C++, por eso tambien hay problemas de compatibilidad entre diferentes compiladores de C++, esa la razón por la cual las APIs de los sistemas operativos suelen estar escritas en C)
Por eso es mucho más facil hacer el "wrapper" en C, por ejemplo si estas en C++:
extern "C" int sumaInt(int a, int b) {
     return suma(a, b)
}
extern "C" long sumaLong(long, long) { ... }

El extern "C" es para que cuando se genere la tabla de simbolos se utilizen simbolos compatibles con las convenciones de C. A eso se refiere Alejandro con hacer un wrapper.
(si no me equivoco Nebula tiene "bindings" para ser utilizado con Python ó TCL asi que debe tener wrappers de este tipo)


On 3/9/06, kikote gregoris < kikogregoris@...> wrote:
Hola ALe
 
 
Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
Con respecto a exponer un API , podrías decirme como hacer esto con algun ejemplo bien pabo, si no te jode .
Mi conocimiento sobre C y C++ es escaso.
 
Otra cosa que quiere decir:
 
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas
 
saludos kiko

"Alejandro F. Reimondo" < aleReimondo@...> escribió:
Hola,

>   Que es eso de hacer un wrappers
> intermedios en C ???.

Exponer el conjunto de funciones para ser
usadas desde C u otra plataforma por medios
tradicionales.
Normalmente, los componentes de la librería se
ven como punteros que son vueltos a pasar
a la librería (que los genera) sin importar si
son estructuras o componentes Cpuspus.
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas.

>   Otra cosa que no entendí es :
>   Hoy en día es muy raro encontrar que quien
> expone una librería lo hace solo
> en C++ (y no expone una API);

Normalmente quien hace una librería expone
una API para ser usada desde C.
Exponer componentes, en el caso de C++ (y
otros LOOs) te fuerza a usar la misma plataforma
de desarrollo del autor (lo que sería un mal
menor, al compararlo frente a lo que implica usar
sus componentes :-P ).

suerte con Nebula2,
hasta pronto,
Ale.




----- Original Message -----
From: "kikote gregoris" < kikogregoris@...>
To: < smalltalking@...>
Sent: Wednesday, March 08, 2006 4:54 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola Ale
>
>   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
esta desarrollado enteramente en C++, el motor es Free y se puden bajar
todos los fuentes http://nebuladevice.cubik.org/
>
>   En algún momento pregunte si era conveniente el desarrollar un engine en
st , lo cual sigo pensando que seria la mejor solución .El problema es que
esto me aleja de mi objetivo primario que es desarrollar un game , charlando
con los desarrolladores de games de junin Oniric , me recomendaron que tome
la alternativa mas corta pues ellos tomaron la mas larga y no me lo
recomendaron para empezar.
>
>   Es por eso que quería saber como hacer la conexión con objetos c++, vos
decís que es parecido a lo que se hace con objetos COM , tengo entendido que
los COM y los C++ son compatibles a nivel binario nada mas , cual es la
diferencia entre ambos.
>   En MT la comunicación con COM es bastante fácil , ya que hay todo un
mecanismo bien definido para tal caso.
>
>   Que es eso de hacer un wrappers
> intermedios en C ???.
>
>   Otra cosa que no entendi es :
>
>   Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API);
>
>   saludos kiko
>
>
>
> "Alejandro F. Reimondo" < aleReimondo@...> escribió:
>   kiko,
>
> Seguramente en MT tenes una opción muy transparente para usar elementos de
> C++... pues el compilador es estático y preparado para integrarse bien con
> windows.
> Fijate como se accede a objetos COM y seguramente allí tendrás guías de
como
> hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del
MT
> para ser bien asistido en esta duda).
>
> En un momento (hace casi 10 años) me toco hacer una conexión como la que
te
> estás planteando (con un Smalltalk mío) para acceder a rutinas de
compresión
> por fractales (algo que estaba por "ponerse de moda" para comprimir
> imágenes, en ese entonces).
> El usar objetos C++ es algo menos frecuente de lo que parece.
> En ese momento lo que hice fue definir los métodos que tenia la DLL como
api
> calls (buscando la dirección del binding con el nombre mangleado y
> atachandoselo al método Smalltalk explícitamente), con un diseño similar
al
> que tiene VS.
> Así accedía a las funciones de instanciación del objeto C++.
> Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
virtual
> y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> mapeando la tabla virtual con métodos definidos como API y a los que le
> pichicateaba la dirección de las funciones encontradas en la tabla
virtual.
>
> Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
> (cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
> intermedios en C) llegue a la conclusión que no era algo digno de
recomendar
> :-)
>
> Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
> evalúes si podes evitar usarlo (para no heredar la obsolescencia
> característica de este tipo de librerías).
>
> suerte,
> Ale.
>
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" < kikogregoris@... >
> To: < smalltalking@...>
> Sent: Monday, March 06, 2006 4:52 PM
> Subject: [objetos] Objetos C++ con ST
>
>
> > Hola gente
> >
> >   Queira saber como se puede interactuar con una dll que contiene un
> objeto c++ ?.
> >   Algo bien simple , una clase que contiene el metodo

> >    int suma(int x , int y) .
> >
> >   Lo quiero hacer desde el MT .
> >
> >   saludos kiko
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí



A tu celular ¿no le falta algo?
Usá Yahoo! Messenger y Correo Yahoo! en tu teléfono celular.
Más información aquí.


Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

#14696 De: mariano ll <malo_gabi1@...>
Fecha: Mar, 14 de Mar, 2006 8:16 pm
Asunto: (Sin asunto)
malo_gabi1
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Lista:
Ante q nada gracias por su ayuda, respuestas y
recomendaciones anteriores.
Acá vuelvo bombardeando una serie de dudas q me han
quedado después de experimentar con los objetos
Gráficos de DOLPHIN 5.

1. Como puedo hacer para agregar una caption a una
shell cualquiera. La defino en el view composer, pero
cuando invoco al método show para verla me aparece
como no definida &#8220;Untitled&#8221;.
2. Como hago para poder concatenar dos string en uno
sola.
3. Como hago para mostrar un valor como predefinido en
un combo box. Especifico el modelo (una Ordered
Collection) pero como hago para que uno de los objetos
aparezca como predefinido en la pantalla.
4. Como hago para manejar gráficos estadísticos,
necesito saber si hay alguna clase q lo haga y si es
posible me gustaría ver un ejemplo.
5. Existe alguna clase que maneje ecuaciones
diferenciales. Tuve q cargar
&#8220;manualmente&#8221;, un mensaje q lo soportará
mediante un método numérico, me gustaría saber si
existe alguna en el enorme ambiente que viene en la
imagen, para poder obtener resultados mas exactos.

Gracias de nuevo por las respuestas anteriores. Y
esperando que me saquen algunas de estas dudas.








___________________________________________________________
1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
http://correo.yahoo.com.ar

#14695 De: "Luke LAut SkyFernadezWalker" <evaklo@...>
Fecha: Mar, 14 de Mar, 2006 2:53 pm
Asunto: Vista
nodoycuentas
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola, como ya les había comentado antes, estoy haciendo un trabajo en VisualWorks. Y ahora estoy con un pequeño problema.

Tengo una clase mapa dando vueltas y es una representación de un mapa =P. El mapa tiene adentro una matriz y cada componente de la misma es un tipo de contenido. Lo que yo quiero hacer es: tomar/crear un mapa cualquiera, y que una GUI me lo muestre. Creo que ahora hay 2 tipos de celdas, la idea sería que me muestre negro o rojo dependiendo del contenido de la celda.

El tema es que en VW no sé que elemento del canvas tengo que utilizar para empezar a ver. Si alguien me da una punta estaré agradecido.

Mucha suerte!

Lautaro Fernández

#14694 De: "Diego Fernandez" <diegof79@...>
Fecha: Lun, 13 de Mar, 2006 6:23 pm
Asunto: Re: [objetos] Objetos C++ con ST
diegof79
Sin conexión Sin conexión
Enviar correo Enviar correo
 
La verdad que no sé nada de formas automaticas de hacer esas cosas :(
(tengo entendido que habia una herramienta para VAST que leia archivos .h y generaba la interfaz minima para comunicarse desde ST, tambien creo hay algo parecido en VW con lo de CConect, pero nunca use ninguna de las dos :(... y nunca use MT)

Con respecto a Nebula, tene en cuenta lo siguiente:
Por lo poquito que vi de la documentacion, Nebula es un API de "alto" nivel. Es decir no hace solo rendering 3d con OpenGL si no que tambien modela muchas cosas para el manejo de esos "mundos" 3d.
Esto tiene una gran contra: vas a estar siempre luchando entre dos lenguajes C++ y ST, ya que probablemente quieres tener este modelo de "mundos" en ST :(
Es mas recomendable utilizar C solo para cosas de "bajo" nivel (por ej. el rendering con OpenGL) y modelar el resto en ST, te va a hacer la vida más facil por que el mapeo con cosas en C de mas "bajo" nivel lo podes hacer casi 1 a 1 (y probablemente en MT ya hay cosas para usar OpenGL)

On 3/13/06, kikote gregoris <kikogregoris@...> wrote:
Hola diego
 
Muy buena la explicación , la verdad es que no tenia  idea de todo este quilombo.
Voy a investigar un poco mas la cuestión , para que me quede bien claro.
Sobre nebula es cierto que tiene como vos decís "bindings" para usar con phyton , lua (que no se que carajo es) , rubi y tcl.
Alejandro decía que había una manera media automática para hacer estas cosas , sabes algo sobre eso.??

Diego Fernandez <diegof79@...> escribió:
(quizas lo que sigue es una explicación muy boluda de cosas que ya sabes, pero que son nesarias para entender por que interactuar con C++ es más complejo que interactuar con C)

Aunque tengas pocos conocimientos de C/C++ ya sabes que este lenguaje (como muchos otros), hace una diferencia grande entre "tiempo de desarrollo" (cuando escribis el programa en formato texto) y "tiempo de ejecución" (cuando el programa se interpreta en formato binario).
En esa traducción de texto a binario se divide en dos etapas: compilar (traducir el texto a binario) y linkear (enlazar diferentes partes ya compiladas del programa). Asi por ejemplo cuando escribis:

suma(2, 2);

Cuando compilas se crea una referencia a la función suma que tiene una "firma" particular: nombre la función + tipos de los parametros (en ingles es signature, pero no sé si firma seria la traduccion correcta).
Luego el linker lo que hace es unir estas referencias, asi por ejemplo "suma" se une con algo cuya firma seria: suma(int, int) (es por eso que aunque la funcion suma este implementada en una librería y no estes compilando el codigo fuente para suma, es necesario declarar la función, ver: http://en.wikipedia.org/wiki/Linker)

Ahora... C++:
C++ agrega dos caracteristicas: "objetos" y la posibilidad de declarar funciones con diferentes aridades, por ejemplo:
suma(int, int);
suma(long, long);

Para distintiguir estas declaraciones el compilador lo que hace es codificar la "firma" de las funciones (esto se llama name mangling, ver http://en.wikipedia.org/wiki/Name_mangling). O sea suma en el archivo objeto puede convertirse en:
suma_int_int
suma_long_long

Este namemangling tambien se utilizar para diferenciar los metodos en un "objeto".
Lo del namemangling no representa mucha dificultad que digamos, es cuestion de ver que nombre final tiene la función en la DLL (no se como es en Windows pero en Unix/Linux se puede usar "nm" para ver los simbolos que exporta un shared library).

Lo más complicado es que en C++ los objetos no son como en St, no hay una recepcion de mensajes.
Cuando se compila el compilador accede directamente a los metodos (la direccion en memoria), a menos que se declare el metodo como "virtual", en cuyo caso se accede al metodo mediante una tabla que apunta a la direccion donde esta la implementacion del metodo (vtable).

Te estaras preguntando para que sirve saber todos estos detalles.

Cuando haces una DLL se exportan ciertos simbolos para que estos puedan ser accedidos mediante un linker ó "dinamicamente" mediante API para manejar DLLs.
El linker maneja automaticamente todo este problema del namemangling, pero que pasa cuando accedes dinamicamente a las funciones de la DLL?
Ahi estas limitado al acceso que te da el API para DLLs (ver http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocaddress.asp)
que nombre usas para acceder a la función si esta tiene "multiples firmas", ó si es un metodo?
Y si es un metodo "virtual"? Ahi ademas deberias conocer la estructura interna que usa el compilador para representar los objetos y hacer el lookup en el vtable.... En definitiva un quilombo!!
(de nuevo este quilombo lo resuelve el compilador de C++ cuando usas librerias en C++, por eso tambien hay problemas de compatibilidad entre diferentes compiladores de C++, esa la razón por la cual las APIs de los sistemas operativos suelen estar escritas en C)
Por eso es mucho más facil hacer el "wrapper" en C, por ejemplo si estas en C++:
extern "C" int sumaInt(int a, int b) {
     return suma(a, b)
}
extern "C" long sumaLong(long, long) { ... }

El extern "C" es para que cuando se genere la tabla de simbolos se utilizen simbolos compatibles con las convenciones de C. A eso se refiere Alejandro con hacer un wrapper.
(si no me equivoco Nebula tiene "bindings" para ser utilizado con Python ó TCL asi que debe tener wrappers de este tipo)


On 3/9/06, kikote gregoris < kikogregoris@...> wrote:
Hola ALe
 
 
Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
Con respecto a exponer un API , podrías decirme como hacer esto con algun ejemplo bien pabo, si no te jode .
Mi conocimiento sobre C y C++ es escaso.
 
Otra cosa que quiere decir:
 
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas
 
saludos kiko

"Alejandro F. Reimondo" < aleReimondo@...> escribió:
Hola,

>   Que es eso de hacer un wrappers
> intermedios en C ???.

Exponer el conjunto de funciones para ser
usadas desde C u otra plataforma por medios
tradicionales.
Normalmente, los componentes de la librería se
ven como punteros que son vueltos a pasar
a la librería (que los genera) sin importar si
son estructuras o componentes Cpuspus.
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas.

>   Otra cosa que no entendí es :
>   Hoy en día es muy raro encontrar que quien
> expone una librería lo hace solo
> en C++ (y no expone una API);

Normalmente quien hace una librería expone
una API para ser usada desde C.
Exponer componentes, en el caso de C++ (y
otros LOOs) te fuerza a usar la misma plataforma
de desarrollo del autor (lo que sería un mal
menor, al compararlo frente a lo que implica usar
sus componentes :-P ).

suerte con Nebula2,
hasta pronto,
Ale.




----- Original Message -----
From: "kikote gregoris" < kikogregoris@...>
To: < smalltalking@...>
Sent: Wednesday, March 08, 2006 4:54 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola Ale
>
>   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
esta desarrollado enteramente en C++, el motor es Free y se puden bajar
todos los fuentes http://nebuladevice.cubik.org/
>
>   En algún momento pregunte si era conveniente el desarrollar un engine en
st , lo cual sigo pensando que seria la mejor solución .El problema es que
esto me aleja de mi objetivo primario que es desarrollar un game , charlando
con los desarrolladores de games de junin Oniric , me recomendaron que tome
la alternativa mas corta pues ellos tomaron la mas larga y no me lo
recomendaron para empezar.
>
>   Es por eso que quería saber como hacer la conexión con objetos c++, vos
decís que es parecido a lo que se hace con objetos COM , tengo entendido que
los COM y los C++ son compatibles a nivel binario nada mas , cual es la
diferencia entre ambos.
>   En MT la comunicación con COM es bastante fácil , ya que hay todo un
mecanismo bien definido para tal caso.
>
>   Que es eso de hacer un wrappers
> intermedios en C ???.
>
>   Otra cosa que no entendi es :
>
>   Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API);
>
>   saludos kiko
>
>
>
> "Alejandro F. Reimondo" < aleReimondo@...> escribió:
>   kiko,
>
> Seguramente en MT tenes una opción muy transparente para usar elementos de
> C++... pues el compilador es estático y preparado para integrarse bien con
> windows.
> Fijate como se accede a objetos COM y seguramente allí tendrás guías de
como
> hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del
MT
> para ser bien asistido en esta duda).
>
> En un momento (hace casi 10 años) me toco hacer una conexión como la que
te
> estás planteando (con un Smalltalk mío) para acceder a rutinas de
compresión
> por fractales (algo que estaba por "ponerse de moda" para comprimir
> imágenes, en ese entonces).
> El usar objetos C++ es algo menos frecuente de lo que parece.
> En ese momento lo que hice fue definir los métodos que tenia la DLL como
api
> calls (buscando la dirección del binding con el nombre mangleado y
> atachandoselo al método Smalltalk explícitamente), con un diseño similar
al
> que tiene VS.
> Así accedía a las funciones de instanciación del objeto C++.
> Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
virtual
> y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> mapeando la tabla virtual con métodos definidos como API y a los que le
> pichicateaba la dirección de las funciones encontradas en la tabla
virtual.
>
> Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
> (cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
> intermedios en C) llegue a la conclusión que no era algo digno de
recomendar
> :-)
>
> Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
> evalúes si podes evitar usarlo (para no heredar la obsolescencia
> característica de este tipo de librerías).
>
> suerte,
> Ale.
>
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" < kikogregoris@... >
> To: < smalltalking@...>
> Sent: Monday, March 06, 2006 4:52 PM
> Subject: [objetos] Objetos C++ con ST
>
>
> > Hola gente
> >
> >   Queira saber como se puede interactuar con una dll que contiene un
> objeto c++ ?.
> >   Algo bien simple , una clase que contiene el metodo

> >    int suma(int x , int y) .
> >
> >   Lo quiero hacer desde el MT .
> >
> >   saludos kiko
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí



A tu celular ¿no le falta algo?
Usá Yahoo! Messenger y Correo Yahoo! en tu teléfono celular.
Más información aquí.


Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



#14693 De: kikote gregoris <kikogregoris@...>
Fecha: Lun, 13 de Mar, 2006 5:55 pm
Asunto: Re: [objetos] Objetos C++ con ST
kikogregoris
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola diego
 
Muy buena la explicación , la verdad es que no tenia  idea de todo este quilombo.
Voy a investigar un poco mas la cuestión , para que me quede bien claro.
Sobre nebula es cierto que tiene como vos decís "bindings" para usar con phyton , lua (que no se que carajo es) , rubi y tcl.
Alejandro decía que había una manera media automática para hacer estas cosas , sabes algo sobre eso.??

Diego Fernandez <diegof79@...> escribió:
(quizas lo que sigue es una explicación muy boluda de cosas que ya sabes, pero que son nesarias para entender por que interactuar con C++ es más complejo que interactuar con C)

Aunque tengas pocos conocimientos de C/C++ ya sabes que este lenguaje (como muchos otros), hace una diferencia grande entre "tiempo de desarrollo" (cuando escribis el programa en formato texto) y "tiempo de ejecución" (cuando el programa se interpreta en formato binario).
En esa traducción de texto a binario se divide en dos etapas: compilar (traducir el texto a binario) y linkear (enlazar diferentes partes ya compiladas del programa). Asi por ejemplo cuando escribis:

suma(2, 2);

Cuando compilas se crea una referencia a la función suma que tiene una "firma" particular: nombre la función + tipos de los parametros (en ingles es signature, pero no sé si firma seria la traduccion correcta).
Luego el linker lo que hace es unir estas referencias, asi por ejemplo "suma" se une con algo cuya firma seria: suma(int, int) (es por eso que aunque la funcion suma este implementada en una librería y no estes compilando el codigo fuente para suma, es necesario declarar la función, ver: http://en.wikipedia.org/wiki/Linker)

Ahora... C++:
C++ agrega dos caracteristicas: "objetos" y la posibilidad de declarar funciones con diferentes aridades, por ejemplo:
suma(int, int);
suma(long, long);

Para distintiguir estas declaraciones el compilador lo que hace es codificar la "firma" de las funciones (esto se llama name mangling, ver http://en.wikipedia.org/wiki/Name_mangling). O sea suma en el archivo objeto puede convertirse en:
suma_int_int
suma_long_long

Este namemangling tambien se utilizar para diferenciar los metodos en un "objeto".
Lo del namemangling no representa mucha dificultad que digamos, es cuestion de ver que nombre final tiene la función en la DLL (no se como es en Windows pero en Unix/Linux se puede usar "nm" para ver los simbolos que exporta un shared library).

Lo más complicado es que en C++ los objetos no son como en St, no hay una recepcion de mensajes.
Cuando se compila el compilador accede directamente a los metodos (la direccion en memoria), a menos que se declare el metodo como "virtual", en cuyo caso se accede al metodo mediante una tabla que apunta a la direccion donde esta la implementacion del metodo (vtable).

Te estaras preguntando para que sirve saber todos estos detalles.

Cuando haces una DLL se exportan ciertos simbolos para que estos puedan ser accedidos mediante un linker ó "dinamicamente" mediante API para manejar DLLs.
El linker maneja automaticamente todo este problema del namemangling, pero que pasa cuando accedes dinamicamente a las funciones de la DLL?
Ahi estas limitado al acceso que te da el API para DLLs (ver http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocaddress.asp)
que nombre usas para acceder a la función si esta tiene "multiples firmas", ó si es un metodo?
Y si es un metodo "virtual"? Ahi ademas deberias conocer la estructura interna que usa el compilador para representar los objetos y hacer el lookup en el vtable.... En definitiva un quilombo!!
(de nuevo este quilombo lo resuelve el compilador de C++ cuando usas librerias en C++, por eso tambien hay problemas de compatibilidad entre diferentes compiladores de C++, esa la razón por la cual las APIs de los sistemas operativos suelen estar escritas en C)
Por eso es mucho más facil hacer el "wrapper" en C, por ejemplo si estas en C++:
extern "C" int sumaInt(int a, int b) {
     return suma(a, b)
}
extern "C" long sumaLong(long, long) { ... }

El extern "C" es para que cuando se genere la tabla de simbolos se utilizen simbolos compatibles con las convenciones de C. A eso se refiere Alejandro con hacer un wrapper.
(si no me equivoco Nebula tiene "bindings" para ser utilizado con Python ó TCL asi que debe tener wrappers de este tipo)


On 3/9/06, kikote gregoris <kikogregoris@...> wrote:
Hola ALe
 
 
Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
Con respecto a exponer un API , podrías decirme como hacer esto con algun ejemplo bien pabo, si no te jode .
Mi conocimiento sobre C y C++ es escaso.
 
Otra cosa que quiere decir:
 
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas
 
saludos kiko

"Alejandro F. Reimondo" <aleReimondo@...> escribió:
Hola,

>   Que es eso de hacer un wrappers
> intermedios en C ???.

Exponer el conjunto de funciones para ser
usadas desde C u otra plataforma por medios
tradicionales.
Normalmente, los componentes de la librería se
ven como punteros que son vueltos a pasar
a la librería (que los genera) sin importar si
son estructuras o componentes Cpuspus.
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas.

>   Otra cosa que no entendí es :
>   Hoy en día es muy raro encontrar que quien
> expone una librería lo hace solo
> en C++ (y no expone una API);

Normalmente quien hace una librería expone
una API para ser usada desde C.
Exponer componentes, en el caso de C++ (y
otros LOOs) te fuerza a usar la misma plataforma
de desarrollo del autor (lo que sería un mal
menor, al compararlo frente a lo que implica usar
sus componentes :-P ).

suerte con Nebula2,
hasta pronto,
Ale.




----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: < smalltalking@...>
Sent: Wednesday, March 08, 2006 4:54 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola Ale
>
>   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
esta desarrollado enteramente en C++, el motor es Free y se puden bajar
todos los fuentes http://nebuladevice.cubik.org/
>
>   En algún momento pregunte si era conveniente el desarrollar un engine en
st , lo cual sigo pensando que seria la mejor solución .El problema es que
esto me aleja de mi objetivo primario que es desarrollar un game , charlando
con los desarrolladores de games de junin Oniric , me recomendaron que tome
la alternativa mas corta pues ellos tomaron la mas larga y no me lo
recomendaron para empezar.
>
>   Es por eso que quería saber como hacer la conexión con objetos c++, vos
decís que es parecido a lo que se hace con objetos COM , tengo entendido que
los COM y los C++ son compatibles a nivel binario nada mas , cual es la
diferencia entre ambos.
>   En MT la comunicación con COM es bastante fácil , ya que hay todo un
mecanismo bien definido para tal caso.
>
>   Que es eso de hacer un wrappers
> intermedios en C ???.
>
>   Otra cosa que no entendi es :
>
>   Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API);
>
>   saludos kiko
>
>
>
> "Alejandro F. Reimondo" < aleReimondo@...> escribió:
>   kiko,
>
> Seguramente en MT tenes una opción muy transparente para usar elementos de
> C++... pues el compilador es estático y preparado para integrarse bien con
> windows.
> Fijate como se accede a objetos COM y seguramente allí tendrás guías de
como
> hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del
MT
> para ser bien asistido en esta duda).
>
> En un momento (hace casi 10 años) me toco hacer una conexión como la que
te
> estás planteando (con un Smalltalk mío) para acceder a rutinas de
compresión
> por fractales (algo que estaba por "ponerse de moda" para comprimir
> imágenes, en ese entonces).
> El usar objetos C++ es algo menos frecuente de lo que parece.
> En ese momento lo que hice fue definir los métodos que tenia la DLL como
api
> calls (buscando la dirección del binding con el nombre mangleado y
> atachandoselo al método Smalltalk explícitamente), con un diseño similar
al
> que tiene VS.
> Así accedía a las funciones de instanciación del objeto C++.
> Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
virtual
> y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> mapeando la tabla virtual con métodos definidos como API y a los que le
> pichicateaba la dirección de las funciones encontradas en la tabla
virtual.
>
> Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
> (cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
> intermedios en C) llegue a la conclusión que no era algo digno de
recomendar
> :-)
>
> Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
> evalúes si podes evitar usarlo (para no heredar la obsolescencia
> característica de este tipo de librerías).
>
> suerte,
> Ale.
>
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" <kikogregoris@... >
> To: <smalltalking@...>
> Sent: Monday, March 06, 2006 4:52 PM
> Subject: [objetos] Objetos C++ con ST
>
>
> > Hola gente
> >
> >   Queira saber como se puede interactuar con una dll que contiene un
> objeto c++ ?.
> >   Algo bien simple , una clase que contiene el metodo

> >    int suma(int x , int y) .
> >
> >   Lo quiero hacer desde el MT .
> >
> >   saludos kiko
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí



A tu celular ¿no le falta algo?
Usá Yahoo! Messenger y Correo Yahoo! en tu teléfono celular.
Más información aquí.


Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

#14692 De: "Esteban A. Maringolo" <eMaringolo@...>
Fecha: Lun, 13 de Mar, 2006 2:02 pm
Asunto: Re: [objetos] Objetos C++ con ST
emaringolo
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Diego Fernandez escribió:
> (quizas lo que sigue es una explicación muy boluda de cosas que ya
> sabes, pero que son nesarias para entender por que interactuar con C++
> es más complejo que interactuar con C)

Diego, muy buena tu explicación. Gracias.

--
Esteban

#14691 De: "Diego Fernandez" <diegof79@...>
Fecha: Lun, 13 de Mar, 2006 1:13 pm
Asunto: Re: [objetos] Objetos C++ con ST
diegof79
Sin conexión Sin conexión
Enviar correo Enviar correo
 
(quizas lo que sigue es una explicación muy boluda de cosas que ya sabes, pero que son nesarias para entender por que interactuar con C++ es más complejo que interactuar con C)

Aunque tengas pocos conocimientos de C/C++ ya sabes que este lenguaje (como muchos otros), hace una diferencia grande entre "tiempo de desarrollo" (cuando escribis el programa en formato texto) y "tiempo de ejecución" (cuando el programa se interpreta en formato binario).
En esa traducción de texto a binario se divide en dos etapas: compilar (traducir el texto a binario) y linkear (enlazar diferentes partes ya compiladas del programa). Asi por ejemplo cuando escribis:

suma(2, 2);

Cuando compilas se crea una referencia a la función suma que tiene una "firma" particular: nombre la función + tipos de los parametros (en ingles es signature, pero no sé si firma seria la traduccion correcta).
Luego el linker lo que hace es unir estas referencias, asi por ejemplo "suma" se une con algo cuya firma seria: suma(int, int) (es por eso que aunque la funcion suma este implementada en una librería y no estes compilando el codigo fuente para suma, es necesario declarar la función, ver: http://en.wikipedia.org/wiki/Linker)

Ahora... C++:
C++ agrega dos caracteristicas: "objetos" y la posibilidad de declarar funciones con diferentes aridades, por ejemplo:
suma(int, int);
suma(long, long);

Para distintiguir estas declaraciones el compilador lo que hace es codificar la "firma" de las funciones (esto se llama name mangling, ver http://en.wikipedia.org/wiki/Name_mangling). O sea suma en el archivo objeto puede convertirse en:
suma_int_int
suma_long_long

Este namemangling tambien se utilizar para diferenciar los metodos en un "objeto".
Lo del namemangling no representa mucha dificultad que digamos, es cuestion de ver que nombre final tiene la función en la DLL (no se como es en Windows pero en Unix/Linux se puede usar "nm" para ver los simbolos que exporta un shared library).

Lo más complicado es que en C++ los objetos no son como en St, no hay una recepcion de mensajes.
Cuando se compila el compilador accede directamente a los metodos (la direccion en memoria), a menos que se declare el metodo como "virtual", en cuyo caso se accede al metodo mediante una tabla que apunta a la direccion donde esta la implementacion del metodo (vtable).

Te estaras preguntando para que sirve saber todos estos detalles.

Cuando haces una DLL se exportan ciertos simbolos para que estos puedan ser accedidos mediante un linker ó "dinamicamente" mediante API para manejar DLLs.
El linker maneja automaticamente todo este problema del namemangling, pero que pasa cuando accedes dinamicamente a las funciones de la DLL?
Ahi estas limitado al acceso que te da el API para DLLs (ver http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocaddress.asp)
que nombre usas para acceder a la función si esta tiene "multiples firmas", ó si es un metodo?
Y si es un metodo "virtual"? Ahi ademas deberias conocer la estructura interna que usa el compilador para representar los objetos y hacer el lookup en el vtable.... En definitiva un quilombo!!
(de nuevo este quilombo lo resuelve el compilador de C++ cuando usas librerias en C++, por eso tambien hay problemas de compatibilidad entre diferentes compiladores de C++, esa la razón por la cual las APIs de los sistemas operativos suelen estar escritas en C)
Por eso es mucho más facil hacer el "wrapper" en C, por ejemplo si estas en C++:
extern "C" int sumaInt(int a, int b) {
     return suma(a, b)
}
extern "C" long sumaLong(long, long) { ... }

El extern "C" es para que cuando se genere la tabla de simbolos se utilizen simbolos compatibles con las convenciones de C. A eso se refiere Alejandro con hacer un wrapper.
(si no me equivoco Nebula tiene "bindings" para ser utilizado con Python ó TCL asi que debe tener wrappers de este tipo)


On 3/9/06, kikote gregoris <kikogregoris@...> wrote:
Hola ALe
 
 
Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
Con respecto a exponer un API , podrías decirme como hacer esto con algun ejemplo bien pabo, si no te jode .
Mi conocimiento sobre C y C++ es escaso.
 
Otra cosa que quiere decir:
 
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas
 
saludos kiko

"Alejandro F. Reimondo" <aleReimondo@...> escribió:
Hola,

>   Que es eso de hacer un wrappers
> intermedios en C ???.

Exponer el conjunto de funciones para ser
usadas desde C u otra plataforma por medios
tradicionales.
Normalmente, los componentes de la librería se
ven como punteros que son vueltos a pasar
a la librería (que los genera) sin importar si
son estructuras o componentes Cpuspus.
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas.

>   Otra cosa que no entendí es :
>   Hoy en día es muy raro encontrar que quien
> expone una librería lo hace solo
> en C++ (y no expone una API);

Normalmente quien hace una librería expone
una API para ser usada desde C.
Exponer componentes, en el caso de C++ (y
otros LOOs) te fuerza a usar la misma plataforma
de desarrollo del autor (lo que sería un mal
menor, al compararlo frente a lo que implica usar
sus componentes :-P ).

suerte con Nebula2,
hasta pronto,
Ale.




----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: < smalltalking@...>
Sent: Wednesday, March 08, 2006 4:54 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola Ale
>
>   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
esta desarrollado enteramente en C++, el motor es Free y se puden bajar
todos los fuentes http://nebuladevice.cubik.org/
>
>   En algún momento pregunte si era conveniente el desarrollar un engine en
st , lo cual sigo pensando que seria la mejor solución .El problema es que
esto me aleja de mi objetivo primario que es desarrollar un game , charlando
con los desarrolladores de games de junin Oniric , me recomendaron que tome
la alternativa mas corta pues ellos tomaron la mas larga y no me lo
recomendaron para empezar.
>
>   Es por eso que quería saber como hacer la conexión con objetos c++, vos
decís que es parecido a lo que se hace con objetos COM , tengo entendido que
los COM y los C++ son compatibles a nivel binario nada mas , cual es la
diferencia entre ambos.
>   En MT la comunicación con COM es bastante fácil , ya que hay todo un
mecanismo bien definido para tal caso.
>
>   Que es eso de hacer un wrappers
> intermedios en C ???.
>
>   Otra cosa que no entendi es :
>
>   Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API);
>
>   saludos kiko
>
>
>
> "Alejandro F. Reimondo" < aleReimondo@...> escribió:
>   kiko,
>
> Seguramente en MT tenes una opción muy transparente para usar elementos de
> C++... pues el compilador es estático y preparado para integrarse bien con
> windows.
> Fijate como se accede a objetos COM y seguramente allí tendrás guías de
como
> hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del
MT
> para ser bien asistido en esta duda).
>
> En un momento (hace casi 10 años) me toco hacer una conexión como la que
te
> estás planteando (con un Smalltalk mío) para acceder a rutinas de
compresión
> por fractales (algo que estaba por "ponerse de moda" para comprimir
> imágenes, en ese entonces).
> El usar objetos C++ es algo menos frecuente de lo que parece.
> En ese momento lo que hice fue definir los métodos que tenia la DLL como
api
> calls (buscando la dirección del binding con el nombre mangleado y
> atachandoselo al método Smalltalk explícitamente), con un diseño similar
al
> que tiene VS.
> Así accedía a las funciones de instanciación del objeto C++.
> Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
virtual
> y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> mapeando la tabla virtual con métodos definidos como API y a los que le
> pichicateaba la dirección de las funciones encontradas en la tabla
virtual.
>
> Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
> (cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
> intermedios en C) llegue a la conclusión que no era algo digno de
recomendar
> :-)
>
> Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
> evalúes si podes evitar usarlo (para no heredar la obsolescencia
> característica de este tipo de librerías).
>
> suerte,
> Ale.
>
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" <kikogregoris@... >
> To: <smalltalking@...>
> Sent: Monday, March 06, 2006 4:52 PM
> Subject: [objetos] Objetos C++ con ST
>
>
> > Hola gente
> >
> >   Queira saber como se puede interactuar con una dll que contiene un
> objeto c++ ?.
> >   Algo bien simple , una clase que contiene el metodo

> >    int suma(int x , int y) .
> >
> >   Lo quiero hacer desde el MT .
> >
> >   saludos kiko
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí



A tu celular ¿no le falta algo?
Usá Yahoo! Messenger y Correo Yahoo! en tu teléfono celular.
Más información aquí.


Para más información sobre la Asociación escribir a info@...

Smalltalking es un espacio colaborativo creado para el estudio y desarrollo en Ambientes de Objetos.
Se sustenta gracias a la participación de sus socios.

Las reglas de etiqueta sobre la lista están en http://www.smalltalking.net/join/netiquete.htm




Enlaces de Yahoo! Grupos



#14690 De: "Alejandro F. Reimondo" <aleReimondo@...>
Fecha: Vie, 10 de Mar, 2006 11:01 pm
Asunto: Re: [objetos] Objetos C++ con ST
alereimondo
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola,

Si uno usa herramientas que solo permiten trabajar
  Orientado a Objetos (y hacer diseño OO),
  no hay posibilidad de distinguir entre componente
  y objeto; y la única forma de diseño que parece
  (y es) posible es el diseñar arquitecturas
  con elementos intercambiables (componentes).
La oportunidad de participar de emprendimientos
  dónde se use un ambiente (y se use no
  solo de forma OO) es lo que va dejando más en
  claro, con el tiempo y el uso, las diferencias.

El participar en esta lista, permite enterarnos
  de que hay más formas de desarrollo (de sistemas
  y personales), que las que se habla comúnmente en
  las universidades, los libros, artículos de Internet, etc.
Pero el participar de esta lista no permite mucho
  más que el enterarse o el "poder hablar del tema"
  (nutrirse de terminología) para repetir como un loro :-)
  o, peor aún, para criticar (en otros lugares) lo que decimos acá.

Que se puede hacer y dónde para desarrollarse en estos temas?
O al menos entender un poco mejor de que se trata?

1.- realizar actividades de desarrollo. Por ejemplo, participar
  de desarrollos y proyectos en los que se conozca participan
  personas con conocimiento del tema (al decir, conocimiento
  del tema, no me refiero a "estudio del tema", sino a desarrollo
  personal) [**]
2.- participar de eventos y emprendimientos cortos (de los
  que hemos hecho muy pocos en este último tiempo, por
  falta de interés por parte de quienes aquí estamos subscriptos)

Que NO es recomendable hacer?

1.- solo escuchar lo que yo digo y sentarse a "reflexionar"
  sobre mis palabras (es injusto para conmigo).

Solo una recomendación mas... sobre cómo escuchar
  los comentarios de otras personas (profesionales y no
  tanto) :

Al escuchar sus palabras (aunque suenen técnicas),
  pregúntense:
   - desde que posición habla? (es decir, que ha hecho en
     el tema y para que estos temas se desarrollen de
     forma pública y civilizada)
   - que interés tiene al hablar del tema?

Seguramente estas, son cosas que todos nosotros tenemos
  en cuenta; pero deseo comentarlas, pues he visto que a
  menudo se pasan por alto y se analiza
  solamente el texto (las palabras) como si estas no
  estuvieran relacionadas con quien las dice. [*]

No se si con esto respondí a tus inquietudes;
  espero al menos haber dejado en claro cómo
  creo que podrías hacer para que no sigan existiendo;
  y no perder esta oportunidad que te dá el saber
  que podés hacer una diferencia entre esos términos.

hasta pronto,
Ale.

[*] En los temas de fé, sociales e incluso en los más
  técnicos, la utilidad de una frase (por ejemplo el distinguir
  entre que es un objeto y que no) esta directamente relacionada
  con el que la formula, luego con quien la escucha y por
  último, con su contenido. :-) no?
[**] Aquí hay implícita una problemática de huevo y gallina;
  pues uno no puede evaluar la experiencia de alguien,
  en un tema dónde no hay muchas oportunidades de
  calificación relativa (es algo muy frecuente que la gente
  se disocia, para no poder ser evaluadas sus acciones,
  o que se disuelva en pseudo problemas personales
  simulados la falta de compromiso).


----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Friday, March 10, 2006 5:06 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola ale
>
>   En un articulo tuyo explicas las diferencias entre un objeto ST y un
componente , el echo es que estoy confundido ya que en algunos lugares
llaman componentes a las componetes visuales que se pueden pegar en un
formulario , como en delphy o c++ builder y no aclaran bien que es ubjeto y
que no lo es.
>
>   saludos kiko
>
> "Alejandro F. Reimondo" <aleReimondo@...> escribió:
>   Hola,
>
> >   Cual es la estructura de un objeto C++
>
> Ninguna. En C++ no se puede trabajar con objetos.
> En C++ u otro LOO se puede ambicionar como
> máximo el trabajar OO; es decir, con componentes.
> Varias veces tocamos estos temas en la lista (lo digo,
> por si deseas releer mails históricos :-)
>
> > y que lo diferencia con un ST,
>
> En el caso particular de Smalltalk/MT, donde el
> compilador es estático, es posible que el compilador
> pueda generar estructuras incluso compatibles.
> Si es así, lo mas conveniente es leer la documentación
> del MT y si no... leer la documentación de tu
> plataforma Cpuspus.
>
> hasta pronto,
> Ale.
>
> ----- Original Message -----
> From: "kikote gregoris" <kikogregoris@...>
> To: <smalltalking@...>
> Sent: Thursday, March 09, 2006 5:51 PM
> Subject: Re: [objetos] Objetos C++ con ST
>
>
> > Hola ALe
> >
> >   Cual es la estructura de un objeto C++ y que lo diferencia con un ST,
> >   En los manuales de MT hay un esquema que muestra al objeto ST con una
> direccion basica seguida de la direccion de los campos y luego un puntero
a
> un diccionario de metodos .
> >
> >
> >   saludos kiko
> >
> > "Alejandro F. Reimondo" <aleReimondo@...> escribió:
> >   Hola,
> >
> > >   Que es eso de hacer un wrappers
> > > intermedios en C ???.
> >
> > Exponer el conjunto de funciones para ser
> > usadas desde C u otra plataforma por medios
> > tradicionales.
> > Normalmente, los componentes de la librería se
> > ven como punteros que son vueltos a pasar
> > a la librería (que los genera) sin importar si
> > son estructuras o componentes Cpuspus.
> > De esta forma uno usa desde C la funcionalidad
> > y no se complica con el uso de componentes
> > e interfaces altamente fraccionadas.
> >
> > >   Otra cosa que no entendí es :
> > >   Hoy en día es muy raro encontrar que quien
> > > expone una librería lo hace solo
> > > en C++ (y no expone una API);
> >
> > Normalmente quien hace una librería expone
> > una API para ser usada desde C.
> > Exponer componentes, en el caso de C++ (y
> > otros LOOs) te fuerza a usar la misma plataforma
> > de desarrollo del autor (lo que sería un mal
> > menor, al compararlo frente a lo que implica usar
> > sus componentes :-P ).
> >
> > suerte con Nebula2,
> > hasta pronto,
> > Ale.
> >
> >
> >
> >
> > ----- Original Message -----
> > From: "kikote gregoris" <kikogregoris@...>
> > To: <smalltalking@...>
> > Sent: Wednesday, March 08, 2006 4:54 PM
> > Subject: Re: [objetos] Objetos C++ con ST
> >
> >
> > > Hola Ale
> > >
> > >   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 ,
que
> > esta desarrollado enteramente en C++, el motor es Free y se puden bajar
> > todos los fuentes http://nebuladevice.cubik.org/
> > >
> > >   En algún momento pregunte si era conveniente el desarrollar un
engine
> en
> > st , lo cual sigo pensando que seria la mejor solución .El problema es
que
> > esto me aleja de mi objetivo primario que es desarrollar un game ,
> charlando
> > con los desarrolladores de games de junin Oniric , me recomendaron que
> tome
> > la alternativa mas corta pues ellos tomaron la mas larga y no me lo
> > recomendaron para empezar.
> > >
> > >   Es por eso que quería saber como hacer la conexión con objetos c++,
> vos
> > decís que es parecido a lo que se hace con objetos COM , tengo entendido
> que
> > los COM y los C++ son compatibles a nivel binario nada mas , cual es la
> > diferencia entre ambos.
> > >   En MT la comunicación con COM es bastante fácil , ya que hay todo un
> > mecanismo bien definido para tal caso.
> > >
> > >   Que es eso de hacer un wrappers
> > > intermedios en C ???.
> > >
> > >   Otra cosa que no entendi es :
> > >
> > >   Hoy en día es muy raro encontrar que quien expone una librería lo
hace
> > solo
> > > en C++ (y no expone una API);
> > >
> > >   saludos kiko
> > >
> > >
> > >
> > > "Alejandro F. Reimondo" <aleReimondo@...> escribió:
> > >   kiko,
> > >
> > > Seguramente en MT tenes una opción muy transparente para usar
elementos
> de
> > > C++... pues el compilador es estático y preparado para integrarse bien
> con
> > > windows.
> > > Fijate como se accede a objetos COM y seguramente allí tendrás guías
de
> > como
> > > hacer lo que necesitas (no dejes de preguntar en la lista de usuarios
> del
> > MT
> > > para ser bien asistido en esta duda).
> > >
> > > En un momento (hace casi 10 años) me toco hacer una conexión como la
que
> > te
> > > estás planteando (con un Smalltalk mío) para acceder a rutinas de
> > compresión
> > > por fractales (algo que estaba por "ponerse de moda" para comprimir
> > > imágenes, en ese entonces).
> > > El usar objetos C++ es algo menos frecuente de lo que parece.
> > > En ese momento lo que hice fue definir los métodos que tenia la DLL
como
> > api
> > > calls (buscando la dirección del binding con el nombre mangleado y
> > > atachandoselo al método Smalltalk explícitamente), con un diseño
similar
> > al
> > > que tiene VS.
> > > Así accedía a las funciones de instanciación del objeto C++.
> > > Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
> > virtual
> > > y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> > > (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> > > mapeando la tabla virtual con métodos definidos como API y a los que
le
> > > pichicateaba la dirección de las funciones encontradas en la tabla
> > virtual.
> > >
> > > Como te imaginarás todo funcionaba de maravillas... pero luego de
> hacerlo
> > > (cosa indispensable para mantener mi sanidad y no tener que hacer
> wrappers
> > > intermedios en C) llegue a la conclusión que no era algo digno de
> > recomendar
> > > :-)
> > >
> > > Hoy en día es muy raro encontrar que quien expone una librería lo hace
> > solo
> > > en C++ (y no expone una API); pero si es ese tu caso; te recomendaría
> que
> > > evalúes si podes evitar usarlo (para no heredar la obsolescencia
> > > característica de este tipo de librerías).
> > >
> > > suerte,
> > > Ale.
> > >
> > >
> > >
> > >
> > >
> > > ----- Original Message -----
> > > From: "kikote gregoris" <kikogregoris@...>
> > > To: <smalltalking@...>
> > > Sent: Monday, March 06, 2006 4:52 PM
> > > Subject: [objetos] Objetos C++ con ST
> > >
> > >
> > > > Hola gente
> > > >
> > > >   Queira saber como se puede interactuar con una dll que contiene un
> > > objeto c++ ?.
> > > >   Algo bien simple , una clase     que contiene el metodo
> > > >    int suma(int x , int y) .
> > > >
> > > >   Lo quiero hacer desde el MT .
> > > >
> > > >   saludos kiko
> > > >
> > > >
> > > > ---------------------------------
> > > >  1GB gratis, Antivirus y Antispam
> > > >  Correo Yahoo!, el mejor correo web del mundo
> > > >  Abrí tu cuenta aquí
> > >
> > >
> > >
> > > Para más información sobre la Asociación escribir a
> info@...
> > >
> > > Smalltalking es un espacio colaborativo creado para el estudio y
> > desarrollo en Ambientes de Objetos.
> > > Se sustenta gracias a la participación de sus socios.
> > >
> > > Las reglas de etiqueta sobre la lista están en
> > http://www.smalltalking.net/join/netiquete.htm
> > >
> > >
> > >
> > >
> > > ---------------------------------
> > >   Enlaces de Yahoo! Grupos
> > >
> > >    Para visitar el sitio web del grupo, andá a:
> > > http://ar.groups.yahoo.com/group/smalltalking/
> > >
> > >    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> > > smalltalking-unsubscribe@...
> > >
> > >    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio
de
> > Yahoo!.
> > >
> > >
> > >
> > >
> > > ---------------------------------
> > >  1GB gratis, Antivirus y Antispam
> > >  Correo Yahoo!, el mejor correo web del mundo
> > >  Abrí tu cuenta aquí
> >
> >
> >
> > Para más información sobre la Asociación escribir a
info@...
> >
> > Smalltalking es un espacio colaborativo creado para el estudio y
> desarrollo en Ambientes de Objetos.
> > Se sustenta gracias a la participación de sus socios.
> >
> > Las reglas de etiqueta sobre la lista están en
> http://www.smalltalking.net/join/netiquete.htm
> >
> >
> >
> >
> > ---------------------------------
> >   Enlaces de Yahoo! Grupos
> >
> >    Para visitar el sitio web del grupo, andá a:
> > http://ar.groups.yahoo.com/group/smalltalking/
> >
> >    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> > smalltalking-unsubscribe@...
> >
> >    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
> Yahoo!.
> >
> >
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  Horóscopos, Salud y belleza, Chistes, Consejos de amor.
>  El contenido más divertido para tu celular está en
> Yahoo! Móvil

#14689 De: kikote gregoris <kikogregoris@...>
Fecha: Vie, 10 de Mar, 2006 8:28 pm
Asunto: Re: [objetos] Objetos C++ con ST
kikogregoris
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola ale
 
Estas diciendo que se me va a complicar trabajando con este engine ???.
La eleccion del mismo es por que es free y no encontre otra alternativa free para  outdoor.
 
saludos kiko

"Alejandro F. Reimondo" <aleReimondo@...> escribió:
Hola kiko,

>   Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
>   Con respecto a exponer un API , podrías decirme como hacer
> esto con algun ejemplo bien pabo, si no te jode .

Hace una DLL que use la librería y expone una funcion API por cada
funcionalidad que desees usar.
Creo que hay herrameinats que automatizan (al menos parcialmente)
esa labor.

>   Otra cosa que quiere decir:
>   De esta forma uno usa desde C la funcionalidad
> y no se complica con el uso de componentes
> e interfaces altamente fraccionadas

Por lo general como producir usando un lenguaje de bajo nivel,
como C++ es muy costoso; acostumbra a pasar que quedan
en el olvido, o fuera de las posibilidades del desarrollo;
el realizar un gran unmero de ciclos antes de publicar una interfáz.

Esto tiene como efecto posterior,:
1.- por lo general no se preservan las interfaces entre versiones
de una librería; sino que cada programa que las usa se adapta
bajo costos de quien la usa. (esto es consistente con la forma
en que se acostumbra a producir con LOOs, en términos generales...
aunque hay alguna excepcion)
2.- por lo general se expone hasta el mas minimo detalle de
funcionalidad; sin poder evaluar el costo que esto implica
a futuro.

Trabajando en un ambiente de forma adecuada, no se
observan estos efectos.

hasta pronto
Ale.


----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Thursday, March 09, 2006 5:25 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola ALe
>
>
>   Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
>   Con respecto a exponer un API , podrías decirme como hacer esto con
algun ejemplo bien pabo, si no te jode .
>   Mi conocimiento sobre C y C++ es escaso.
>
>   Otra cosa que quiere decir:
>
>   De esta forma uno usa desde C la funcionalidad
> y no se complica con el uso de componentes
> e interfaces altamente fraccionadas
>
>   saludos kiko
>
> "Alejandro F. Reimondo" <aleReimondo@...> escribió:
>   Hola,
>
> >   Que es eso de hacer un wrappers
> > intermedios en C ???.
>
> Exponer el conjunto de funciones para ser
> usadas desde C u otra plataforma por medios
> tradicionales.
> Normalmente, los componentes de la librería se
> ven como punteros que son vueltos a pasar
> a la librería (que los genera) sin importar si
> son estructuras o componentes Cpuspus.
> De esta forma uno usa desde C la funcionalidad
> y no se complica con el uso de componentes
> e interfaces altamente fraccionadas.
>
> >   Otra cosa que no entendí es :
> >   Hoy en día es muy raro encontrar que quien
> > expone una librería lo hace solo
> > en C++ (y no expone una API);
>
> Normalmente quien hace una librería expone
> una API para ser usada desde C.
> Exponer componentes, en el caso de C++ (y
> otros LOOs) te fuerza a usar la misma plataforma
> de desarrollo del autor (lo que sería un mal
> menor, al compararlo frente a lo que implica usar
> sus componentes :-P ).
>
> suerte con Nebula2,
> hasta pronto,
> Ale.
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" <kikogregoris@...>
> To: <smalltalking@...>
> Sent: Wednesday, March 08, 2006 4:54 PM
> Subject: Re: [objetos] Objetos C++ con ST
>
>
> > Hola Ale
> >
> >   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
> esta desarrollado enteramente en C++, el motor es Free y se puden bajar
> todos los fuentes http://nebuladevice.cubik.org/
> >
> >   En algún momento pregunte si era conveniente el desarrollar un engine
en
> st , lo cual sigo pensando que seria la mejor solución .El problema es que
> esto me aleja de mi objetivo primario que es desarrollar un game ,
charlando
> con los desarrolladores de games de junin Oniric , me recomendaron que
tome
> la alternativa mas corta pues ellos tomaron la mas larga y no me lo
> recomendaron para empezar.
> >
> >   Es por eso que quería saber como hacer la conexión con objetos c++,
vos
> decís que es parecido a lo que se hace con objetos COM , tengo entendido
que
> los COM y los C++ son compatibles a nivel binario nada mas , cual es la
> diferencia entre ambos.
> >   En MT la comunicación con COM es bastante fácil , ya que hay todo un
> mecanismo bien definido para tal caso.
> >
> >   Que es eso de hacer un wrappers
> > intermedios en C ???.
> >
> >   Otra cosa que no entendi es :
> >
> >   Hoy en día es muy raro encontrar que quien expone una librería lo hace
> solo
> > en C++ (y no expone una API);
> >
> >   saludos kiko
> >
> >
> >
> > "Alejandro F. Reimondo" <aleReimondo@...> escribió:
> >   kiko,
> >
> > Seguramente en MT tenes una opción muy transparente para usar elementos
de
> > C++... pues el compilador es estático y preparado para integrarse bien
con
> > windows.
> > Fijate como se accede a objetos COM y seguramente allí tendrás guías de
> como
> > hacer lo que necesitas (no dejes de preguntar en la lista de usuarios
del
> MT
> > para ser bien asistido en esta duda).
> >
> > En un momento (hace casi 10 años) me toco hacer una conexión como la que
> te
> > estás planteando (con un Smalltalk mío) para acceder a rutinas de
> compresión
> > por fractales (algo que estaba por "ponerse de moda" para comprimir
> > imágenes, en ese entonces).
> > El usar objetos C++ es algo menos frecuente de lo que parece.
> > En ese momento lo que hice fue definir los métodos que tenia la DLL como
> api
> > calls (buscando la dirección del binding con el nombre mangleado y
> > atachandoselo al método Smalltalk explícitamente), con un diseño similar
> al
> > que tiene VS.
> > Así accedía a las funciones de instanciación del objeto C++.
> > Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
> virtual
> > y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> > (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> > mapeando la tabla virtual con métodos definidos como API y a los que le
> > pichicateaba la dirección de las funciones encontradas en la tabla
> virtual.
> >
> > Como te imaginarás todo funcionaba de maravillas... pero luego de
hacerlo
> > (cosa indispensable para mantener mi sanidad y no tener que hacer
wrappers
> > intermedios en C) llegue a la conclusión que no era algo digno de
> recomendar
> > :-)
> >
> > Hoy en día es muy raro encontrar que quien expone una librería lo hace
> solo
> > en C++ (y no expone una API); pero si es ese tu caso; te recomendaría
que
> > evalúes si podes evitar usarlo (para no heredar la obsolescencia
> > característica de este tipo de librerías).
> >
> > suerte,
> > Ale.
> >
> >
> >
> >
> >
> > ----- Original Message -----
> > From: "kikote gregoris" <kikogregoris@...>
> > To: <smalltalking@...>
> > Sent: Monday, March 06, 2006 4:52 PM
> > Subject: [objetos] Objetos C++ con ST
> >
> >
> > > Hola gente
> > >
> > >   Queira saber como se puede interactuar con una dll que contiene un
> > objeto c++ ?.
> > >   Algo bien simple , una clase     que contiene el metodo
> > >    int suma(int x , int y) .
> > >
> > >   Lo quiero hacer desde el MT .
> > >
> > >   saludos kiko
> > >
> > >
> > > ---------------------------------
> > >  1GB gratis, Antivirus y Antispam
> > >  Correo Yahoo!, el mejor correo web del mundo
> > >  Abrí tu cuenta aquí
> >
> >
> >
> > Para más información sobre la Asociación escribir a
info@...
> >
> > Smalltalking es un espacio colaborativo creado para el estudio y
> desarrollo en Ambientes de Objetos.
> > Se sustenta gracias a la participación de sus socios.
> >
> > Las reglas de etiqueta sobre la lista están en
> http://www.smalltalking.net/join/netiquete.htm
> >
> >
> >
> >
> > ---------------------------------
> >   Enlaces de Yahoo! Grupos
> >
> >    Para visitar el sitio web del grupo, andá a:
> > http://ar.groups.yahoo.com/group/smalltalking/
> >
> >    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> > smalltalking-unsubscribe@...
> >
> >    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
> Yahoo!.
> >
> >
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  A tu celular ¿no le falta algo?
>  Usá Yahoo! Messenger y Correo Yahoo! en tu teléfono celular.
>  Más información aquí.



Horóscopos, Salud y belleza, Chistes, Consejos de amor.
El contenido más divertido para tu celular está en
Yahoo! Móvil

#14688 De: kikote gregoris <kikogregoris@...>
Fecha: Vie, 10 de Mar, 2006 8:06 pm
Asunto: Re: [objetos] Objetos C++ con ST
kikogregoris
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola ale
 
En un articulo tuyo explicas las diferencias entre un objeto ST y un componente , el echo es que estoy confundido ya que en algunos lugares llaman componentes a las componetes visuales que se pueden pegar en un formulario , como en delphy o c++ builder y no aclaran bien que es ubjeto y que no lo es.
 
saludos kiko

"Alejandro F. Reimondo" <aleReimondo@...> escribió:
Hola,

>   Cual es la estructura de un objeto C++

Ninguna. En C++ no se puede trabajar con objetos.
En C++ u otro LOO se puede ambicionar como
máximo el trabajar OO; es decir, con componentes.
Varias veces tocamos estos temas en la lista (lo digo,
por si deseas releer mails históricos :-)

> y que lo diferencia con un ST,

En el caso particular de Smalltalk/MT, donde el
compilador es estático, es posible que el compilador
pueda generar estructuras incluso compatibles.
Si es así, lo mas conveniente es leer la documentación
del MT y si no... leer la documentación de tu
plataforma Cpuspus.

hasta pronto,
Ale.

----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Thursday, March 09, 2006 5:51 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola ALe
>
>   Cual es la estructura de un objeto C++ y que lo diferencia con un ST,
>   En los manuales de MT hay un esquema que muestra al objeto ST con una
direccion basica seguida de la direccion de los campos y luego un puntero a
un diccionario de metodos .
>
>
>   saludos kiko
>
> "Alejandro F. Reimondo" <aleReimondo@...> escribió:
>   Hola,
>
> >   Que es eso de hacer un wrappers
> > intermedios en C ???.
>
> Exponer el conjunto de funciones para ser
> usadas desde C u otra plataforma por medios
> tradicionales.
> Normalmente, los componentes de la librería se
> ven como punteros que son vueltos a pasar
> a la librería (que los genera) sin importar si
> son estructuras o componentes Cpuspus.
> De esta forma uno usa desde C la funcionalidad
> y no se complica con el uso de componentes
> e interfaces altamente fraccionadas.
>
> >   Otra cosa que no entendí es :
> >   Hoy en día es muy raro encontrar que quien
> > expone una librería lo hace solo
> > en C++ (y no expone una API);
>
> Normalmente quien hace una librería expone
> una API para ser usada desde C.
> Exponer componentes, en el caso de C++ (y
> otros LOOs) te fuerza a usar la misma plataforma
> de desarrollo del autor (lo que sería un mal
> menor, al compararlo frente a lo que implica usar
> sus componentes :-P ).
>
> suerte con Nebula2,
> hasta pronto,
> Ale.
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" <kikogregoris@...>
> To: <smalltalking@...>
> Sent: Wednesday, March 08, 2006 4:54 PM
> Subject: Re: [objetos] Objetos C++ con ST
>
>
> > Hola Ale
> >
> >   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
> esta desarrollado enteramente en C++, el motor es Free y se puden bajar
> todos los fuentes http://nebuladevice.cubik.org/
> >
> >   En algún momento pregunte si era conveniente el desarrollar un engine
en
> st , lo cual sigo pensando que seria la mejor solución .El problema es que
> esto me aleja de mi objetivo primario que es desarrollar un game ,
charlando
> con los desarrolladores de games de junin Oniric , me recomendaron que
tome
> la alternativa mas corta pues ellos tomaron la mas larga y no me lo
> recomendaron para empezar.
> >
> >   Es por eso que quería saber como hacer la conexión con objetos c++,
vos
> decís que es parecido a lo que se hace con objetos COM , tengo entendido
que
> los COM y los C++ son compatibles a nivel binario nada mas , cual es la
> diferencia entre ambos.
> >   En MT la comunicación con COM es bastante fácil , ya que hay todo un
> mecanismo bien definido para tal caso.
> >
> >   Que es eso de hacer un wrappers
> > intermedios en C ???.
> >
> >   Otra cosa que no entendi es :
> >
> >   Hoy en día es muy raro encontrar que quien expone una librería lo hace
> solo
> > en C++ (y no expone una API);
> >
> >   saludos kiko
> >
> >
> >
> > "Alejandro F. Reimondo" <aleReimondo@...> escribió:
> >   kiko,
> >
> > Seguramente en MT tenes una opción muy transparente para usar elementos
de
> > C++... pues el compilador es estático y preparado para integrarse bien
con
> > windows.
> > Fijate como se accede a objetos COM y seguramente allí tendrás guías de
> como
> > hacer lo que necesitas (no dejes de preguntar en la lista de usuarios
del
> MT
> > para ser bien asistido en esta duda).
> >
> > En un momento (hace casi 10 años) me toco hacer una conexión como la que
> te
> > estás planteando (con un Smalltalk mío) para acceder a rutinas de
> compresión
> > por fractales (algo que estaba por "ponerse de moda" para comprimir
> > imágenes, en ese entonces).
> > El usar objetos C++ es algo menos frecuente de lo que parece.
> > En ese momento lo que hice fue definir los métodos que tenia la DLL como
> api
> > calls (buscando la dirección del binding con el nombre mangleado y
> > atachandoselo al método Smalltalk explícitamente), con un diseño similar
> al
> > que tiene VS.
> > Así accedía a las funciones de instanciación del objeto C++.
> > Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
> virtual
> > y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> > (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> > mapeando la tabla virtual con métodos definidos como API y a los que le
> > pichicateaba la dirección de las funciones encontradas en la tabla
> virtual.
> >
> > Como te imaginarás todo funcionaba de maravillas... pero luego de
hacerlo
> > (cosa indispensable para mantener mi sanidad y no tener que hacer
wrappers
> > intermedios en C) llegue a la conclusión que no era algo digno de
> recomendar
> > :-)
> >
> > Hoy en día es muy raro encontrar que quien expone una librería lo hace
> solo
> > en C++ (y no expone una API); pero si es ese tu caso; te recomendaría
que
> > evalúes si podes evitar usarlo (para no heredar la obsolescencia
> > característica de este tipo de librerías).
> >
> > suerte,
> > Ale.
> >
> >
> >
> >
> >
> > ----- Original Message -----
> > From: "kikote gregoris" <kikogregoris@...>
> > To: <smalltalking@...>
> > Sent: Monday, March 06, 2006 4:52 PM
> > Subject: [objetos] Objetos C++ con ST
> >
> >
> > > Hola gente
> > >
> > >   Queira saber como se puede interactuar con una dll que contiene un
> > objeto c++ ?.
> > >   Algo bien simple , una clase     que contiene el metodo
> > >    int suma(int x , int y) .
> > >
> > >   Lo quiero hacer desde el MT .
> > >
> > >   saludos kiko
> > >
> > >
> > > ---------------------------------
> > >  1GB gratis, Antivirus y Antispam
> > >  Correo Yahoo!, el mejor correo web del mundo
> > >  Abrí tu cuenta aquí
> >
> >
> >
> > Para más información sobre la Asociación escribir a
info@...
> >
> > Smalltalking es un espacio colaborativo creado para el estudio y
> desarrollo en Ambientes de Objetos.
> > Se sustenta gracias a la participación de sus socios.
> >
> > Las reglas de etiqueta sobre la lista están en
> http://www.smalltalking.net/join/netiquete.htm
> >
> >
> >
> >
> > ---------------------------------
> >   Enlaces de Yahoo! Grupos
> >
> >    Para visitar el sitio web del grupo, andá a:
> > http://ar.groups.yahoo.com/group/smalltalking/
> >
> >    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> > smalltalking-unsubscribe@...
> >
> >    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
> Yahoo!.
> >
> >
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí



Horóscopos, Salud y belleza, Chistes, Consejos de amor.
El contenido más divertido para tu celular está en
Yahoo! Móvil

#14687 De: "Alejandro F. Reimondo" <aleReimondo@...>
Fecha: Jue, 9 de Mar, 2006 10:23 pm
Asunto: Re: [objetos] Objetos C++ con ST
alereimondo
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola,

>   Cual es la estructura de un objeto C++

Ninguna. En C++ no se puede trabajar con objetos.
En C++ u otro LOO se puede ambicionar como
  máximo el trabajar OO; es decir, con componentes.
Varias veces tocamos estos temas en la lista (lo digo,
  por si deseas releer mails históricos :-)

> y que lo diferencia con un ST,

En el caso particular de Smalltalk/MT, donde el
  compilador es estático, es posible que el compilador
  pueda generar estructuras incluso compatibles.
Si es así, lo mas conveniente es leer la documentación
  del MT y si no... leer la documentación de tu
  plataforma Cpuspus.

hasta pronto,
Ale.

----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Thursday, March 09, 2006 5:51 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola ALe
>
>   Cual es la estructura de un objeto C++ y que lo diferencia con un ST,
>   En los manuales de MT hay un esquema que muestra al objeto ST con una
direccion basica seguida de la direccion de los campos y luego un puntero a
un diccionario de metodos .
>
>
>   saludos kiko
>
> "Alejandro F. Reimondo" <aleReimondo@...> escribió:
>   Hola,
>
> >   Que es eso de hacer un wrappers
> > intermedios en C ???.
>
> Exponer el conjunto de funciones para ser
> usadas desde C u otra plataforma por medios
> tradicionales.
> Normalmente, los componentes de la librería se
> ven como punteros que son vueltos a pasar
> a la librería (que los genera) sin importar si
> son estructuras o componentes Cpuspus.
> De esta forma uno usa desde C la funcionalidad
> y no se complica con el uso de componentes
> e interfaces altamente fraccionadas.
>
> >   Otra cosa que no entendí es :
> >   Hoy en día es muy raro encontrar que quien
> > expone una librería lo hace solo
> > en C++ (y no expone una API);
>
> Normalmente quien hace una librería expone
> una API para ser usada desde C.
> Exponer componentes, en el caso de C++ (y
> otros LOOs) te fuerza a usar la misma plataforma
> de desarrollo del autor (lo que sería un mal
> menor, al compararlo frente a lo que implica usar
> sus componentes :-P ).
>
> suerte con Nebula2,
> hasta pronto,
> Ale.
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" <kikogregoris@...>
> To: <smalltalking@...>
> Sent: Wednesday, March 08, 2006 4:54 PM
> Subject: Re: [objetos] Objetos C++ con ST
>
>
> > Hola Ale
> >
> >   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
> esta desarrollado enteramente en C++, el motor es Free y se puden bajar
> todos los fuentes http://nebuladevice.cubik.org/
> >
> >   En algún momento pregunte si era conveniente el desarrollar un engine
en
> st , lo cual sigo pensando que seria la mejor solución .El problema es que
> esto me aleja de mi objetivo primario que es desarrollar un game ,
charlando
> con los desarrolladores de games de junin Oniric , me recomendaron que
tome
> la alternativa mas corta pues ellos tomaron la mas larga y no me lo
> recomendaron para empezar.
> >
> >   Es por eso que quería saber como hacer la conexión con objetos c++,
vos
> decís que es parecido a lo que se hace con objetos COM , tengo entendido
que
> los COM y los C++ son compatibles a nivel binario nada mas , cual es la
> diferencia entre ambos.
> >   En MT la comunicación con COM es bastante fácil , ya que hay todo un
> mecanismo bien definido para tal caso.
> >
> >   Que es eso de hacer un wrappers
> > intermedios en C ???.
> >
> >   Otra cosa que no entendi es :
> >
> >   Hoy en día es muy raro encontrar que quien expone una librería lo hace
> solo
> > en C++ (y no expone una API);
> >
> >   saludos kiko
> >
> >
> >
> > "Alejandro F. Reimondo" <aleReimondo@...> escribió:
> >   kiko,
> >
> > Seguramente en MT tenes una opción muy transparente para usar elementos
de
> > C++... pues el compilador es estático y preparado para integrarse bien
con
> > windows.
> > Fijate como se accede a objetos COM y seguramente allí tendrás guías de
> como
> > hacer lo que necesitas (no dejes de preguntar en la lista de usuarios
del
> MT
> > para ser bien asistido en esta duda).
> >
> > En un momento (hace casi 10 años) me toco hacer una conexión como la que
> te
> > estás planteando (con un Smalltalk mío) para acceder a rutinas de
> compresión
> > por fractales (algo que estaba por "ponerse de moda" para comprimir
> > imágenes, en ese entonces).
> > El usar objetos C++ es algo menos frecuente de lo que parece.
> > En ese momento lo que hice fue definir los métodos que tenia la DLL como
> api
> > calls (buscando la dirección del binding con el nombre mangleado y
> > atachandoselo al método Smalltalk explícitamente), con un diseño similar
> al
> > que tiene VS.
> > Así accedía a las funciones de instanciación del objeto C++.
> > Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
> virtual
> > y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> > (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> > mapeando la tabla virtual con métodos definidos como API y a los que le
> > pichicateaba la dirección de las funciones encontradas en la tabla
> virtual.
> >
> > Como te imaginarás todo funcionaba de maravillas... pero luego de
hacerlo
> > (cosa indispensable para mantener mi sanidad y no tener que hacer
wrappers
> > intermedios en C) llegue a la conclusión que no era algo digno de
> recomendar
> > :-)
> >
> > Hoy en día es muy raro encontrar que quien expone una librería lo hace
> solo
> > en C++ (y no expone una API); pero si es ese tu caso; te recomendaría
que
> > evalúes si podes evitar usarlo (para no heredar la obsolescencia
> > característica de este tipo de librerías).
> >
> > suerte,
> > Ale.
> >
> >
> >
> >
> >
> > ----- Original Message -----
> > From: "kikote gregoris" <kikogregoris@...>
> > To: <smalltalking@...>
> > Sent: Monday, March 06, 2006 4:52 PM
> > Subject: [objetos] Objetos C++ con ST
> >
> >
> > > Hola gente
> > >
> > >   Queira saber como se puede interactuar con una dll que contiene un
> > objeto c++ ?.
> > >   Algo bien simple , una clase     que contiene el metodo
> > >    int suma(int x , int y) .
> > >
> > >   Lo quiero hacer desde el MT .
> > >
> > >   saludos kiko
> > >
> > >
> > > ---------------------------------
> > >  1GB gratis, Antivirus y Antispam
> > >  Correo Yahoo!, el mejor correo web del mundo
> > >  Abrí tu cuenta aquí
> >
> >
> >
> > Para más información sobre la Asociación escribir a
info@...
> >
> > Smalltalking es un espacio colaborativo creado para el estudio y
> desarrollo en Ambientes de Objetos.
> > Se sustenta gracias a la participación de sus socios.
> >
> > Las reglas de etiqueta sobre la lista están en
> http://www.smalltalking.net/join/netiquete.htm
> >
> >
> >
> >
> > ---------------------------------
> >   Enlaces de Yahoo! Grupos
> >
> >    Para visitar el sitio web del grupo, andá a:
> > http://ar.groups.yahoo.com/group/smalltalking/
> >
> >    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> > smalltalking-unsubscribe@...
> >
> >    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
> Yahoo!.
> >
> >
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí

#14686 De: "Alejandro F. Reimondo" <aleReimondo@...>
Fecha: Jue, 9 de Mar, 2006 10:18 pm
Asunto: Re: [objetos] Objetos C++ con ST
alereimondo
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola kiko,

>   Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
>   Con respecto a exponer un API , podrías decirme como hacer
> esto con algun ejemplo bien pabo, si no te jode .

Hace una DLL que use la librería y expone una funcion API por cada
  funcionalidad que desees usar.
Creo que hay herrameinats que automatizan (al menos parcialmente)
  esa labor.

>   Otra cosa que quiere decir:
>   De esta forma uno usa desde C la funcionalidad
> y no se complica con el uso de componentes
> e interfaces altamente fraccionadas

Por lo general como producir usando un lenguaje de bajo nivel,
  como C++ es muy costoso; acostumbra a pasar que quedan
  en el olvido, o fuera de las posibilidades del desarrollo;
  el realizar un gran unmero de ciclos antes de publicar una interfáz.

Esto tiene como efecto posterior,:
1.- por lo general no se preservan las interfaces entre versiones
  de una librería; sino que cada programa que las usa se adapta
  bajo costos de quien la usa. (esto es consistente con la forma
  en que se acostumbra a producir con LOOs, en términos generales...
  aunque hay alguna excepcion)
2.- por lo general se expone hasta el mas minimo detalle de
  funcionalidad; sin poder evaluar el costo que esto implica
  a futuro.

Trabajando en un ambiente de forma adecuada, no se
  observan estos efectos.

hasta pronto
Ale.


----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Thursday, March 09, 2006 5:25 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola ALe
>
>
>   Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
>   Con respecto a exponer un API , podrías decirme como hacer esto con
algun ejemplo bien pabo, si no te jode .
>   Mi conocimiento sobre C y C++ es escaso.
>
>   Otra cosa que quiere decir:
>
>   De esta forma uno usa desde C la funcionalidad
> y no se complica con el uso de componentes
> e interfaces altamente fraccionadas
>
>   saludos kiko
>
> "Alejandro F. Reimondo" <aleReimondo@...> escribió:
>   Hola,
>
> >   Que es eso de hacer un wrappers
> > intermedios en C ???.
>
> Exponer el conjunto de funciones para ser
> usadas desde C u otra plataforma por medios
> tradicionales.
> Normalmente, los componentes de la librería se
> ven como punteros que son vueltos a pasar
> a la librería (que los genera) sin importar si
> son estructuras o componentes Cpuspus.
> De esta forma uno usa desde C la funcionalidad
> y no se complica con el uso de componentes
> e interfaces altamente fraccionadas.
>
> >   Otra cosa que no entendí es :
> >   Hoy en día es muy raro encontrar que quien
> > expone una librería lo hace solo
> > en C++ (y no expone una API);
>
> Normalmente quien hace una librería expone
> una API para ser usada desde C.
> Exponer componentes, en el caso de C++ (y
> otros LOOs) te fuerza a usar la misma plataforma
> de desarrollo del autor (lo que sería un mal
> menor, al compararlo frente a lo que implica usar
> sus componentes :-P ).
>
> suerte con Nebula2,
> hasta pronto,
> Ale.
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" <kikogregoris@...>
> To: <smalltalking@...>
> Sent: Wednesday, March 08, 2006 4:54 PM
> Subject: Re: [objetos] Objetos C++ con ST
>
>
> > Hola Ale
> >
> >   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
> esta desarrollado enteramente en C++, el motor es Free y se puden bajar
> todos los fuentes http://nebuladevice.cubik.org/
> >
> >   En algún momento pregunte si era conveniente el desarrollar un engine
en
> st , lo cual sigo pensando que seria la mejor solución .El problema es que
> esto me aleja de mi objetivo primario que es desarrollar un game ,
charlando
> con los desarrolladores de games de junin Oniric , me recomendaron que
tome
> la alternativa mas corta pues ellos tomaron la mas larga y no me lo
> recomendaron para empezar.
> >
> >   Es por eso que quería saber como hacer la conexión con objetos c++,
vos
> decís que es parecido a lo que se hace con objetos COM , tengo entendido
que
> los COM y los C++ son compatibles a nivel binario nada mas , cual es la
> diferencia entre ambos.
> >   En MT la comunicación con COM es bastante fácil , ya que hay todo un
> mecanismo bien definido para tal caso.
> >
> >   Que es eso de hacer un wrappers
> > intermedios en C ???.
> >
> >   Otra cosa que no entendi es :
> >
> >   Hoy en día es muy raro encontrar que quien expone una librería lo hace
> solo
> > en C++ (y no expone una API);
> >
> >   saludos kiko
> >
> >
> >
> > "Alejandro F. Reimondo" <aleReimondo@...> escribió:
> >   kiko,
> >
> > Seguramente en MT tenes una opción muy transparente para usar elementos
de
> > C++... pues el compilador es estático y preparado para integrarse bien
con
> > windows.
> > Fijate como se accede a objetos COM y seguramente allí tendrás guías de
> como
> > hacer lo que necesitas (no dejes de preguntar en la lista de usuarios
del
> MT
> > para ser bien asistido en esta duda).
> >
> > En un momento (hace casi 10 años) me toco hacer una conexión como la que
> te
> > estás planteando (con un Smalltalk mío) para acceder a rutinas de
> compresión
> > por fractales (algo que estaba por "ponerse de moda" para comprimir
> > imágenes, en ese entonces).
> > El usar objetos C++ es algo menos frecuente de lo que parece.
> > En ese momento lo que hice fue definir los métodos que tenia la DLL como
> api
> > calls (buscando la dirección del binding con el nombre mangleado y
> > atachandoselo al método Smalltalk explícitamente), con un diseño similar
> al
> > que tiene VS.
> > Así accedía a las funciones de instanciación del objeto C++.
> > Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
> virtual
> > y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> > (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> > mapeando la tabla virtual con métodos definidos como API y a los que le
> > pichicateaba la dirección de las funciones encontradas en la tabla
> virtual.
> >
> > Como te imaginarás todo funcionaba de maravillas... pero luego de
hacerlo
> > (cosa indispensable para mantener mi sanidad y no tener que hacer
wrappers
> > intermedios en C) llegue a la conclusión que no era algo digno de
> recomendar
> > :-)
> >
> > Hoy en día es muy raro encontrar que quien expone una librería lo hace
> solo
> > en C++ (y no expone una API); pero si es ese tu caso; te recomendaría
que
> > evalúes si podes evitar usarlo (para no heredar la obsolescencia
> > característica de este tipo de librerías).
> >
> > suerte,
> > Ale.
> >
> >
> >
> >
> >
> > ----- Original Message -----
> > From: "kikote gregoris" <kikogregoris@...>
> > To: <smalltalking@...>
> > Sent: Monday, March 06, 2006 4:52 PM
> > Subject: [objetos] Objetos C++ con ST
> >
> >
> > > Hola gente
> > >
> > >   Queira saber como se puede interactuar con una dll que contiene un
> > objeto c++ ?.
> > >   Algo bien simple , una clase     que contiene el metodo
> > >    int suma(int x , int y) .
> > >
> > >   Lo quiero hacer desde el MT .
> > >
> > >   saludos kiko
> > >
> > >
> > > ---------------------------------
> > >  1GB gratis, Antivirus y Antispam
> > >  Correo Yahoo!, el mejor correo web del mundo
> > >  Abrí tu cuenta aquí
> >
> >
> >
> > Para más información sobre la Asociación escribir a
info@...
> >
> > Smalltalking es un espacio colaborativo creado para el estudio y
> desarrollo en Ambientes de Objetos.
> > Se sustenta gracias a la participación de sus socios.
> >
> > Las reglas de etiqueta sobre la lista están en
> http://www.smalltalking.net/join/netiquete.htm
> >
> >
> >
> >
> > ---------------------------------
> >   Enlaces de Yahoo! Grupos
> >
> >    Para visitar el sitio web del grupo, andá a:
> > http://ar.groups.yahoo.com/group/smalltalking/
> >
> >    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> > smalltalking-unsubscribe@...
> >
> >    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
> Yahoo!.
> >
> >
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  A tu celular ¿no le falta algo?
>  Usá Yahoo! Messenger y Correo Yahoo! en tu teléfono celular.
>  Más información aquí.

#14685 De: kikote gregoris <kikogregoris@...>
Fecha: Jue, 9 de Mar, 2006 8:51 pm
Asunto: Re: [objetos] Objetos C++ con ST
kikogregoris
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola ALe
 
Cual es la estructura de un objeto C++ y que lo diferencia con un ST,
En los manuales de MT hay un esquema que muestra al objeto ST con una direccion basica seguida de la direccion de los campos y luego un puntero a un diccionario de metodos .
 
 
saludos kiko

"Alejandro F. Reimondo" <aleReimondo@...> escribió:
Hola,

>   Que es eso de hacer un wrappers
> intermedios en C ???.

Exponer el conjunto de funciones para ser
usadas desde C u otra plataforma por medios
tradicionales.
Normalmente, los componentes de la librería se
ven como punteros que son vueltos a pasar
a la librería (que los genera) sin importar si
son estructuras o componentes Cpuspus.
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas.

>   Otra cosa que no entendí es :
>   Hoy en día es muy raro encontrar que quien
> expone una librería lo hace solo
> en C++ (y no expone una API);

Normalmente quien hace una librería expone
una API para ser usada desde C.
Exponer componentes, en el caso de C++ (y
otros LOOs) te fuerza a usar la misma plataforma
de desarrollo del autor (lo que sería un mal
menor, al compararlo frente a lo que implica usar
sus componentes :-P ).

suerte con Nebula2,
hasta pronto,
Ale.




----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Wednesday, March 08, 2006 4:54 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola Ale
>
>   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
esta desarrollado enteramente en C++, el motor es Free y se puden bajar
todos los fuentes http://nebuladevice.cubik.org/
>
>   En algún momento pregunte si era conveniente el desarrollar un engine en
st , lo cual sigo pensando que seria la mejor solución .El problema es que
esto me aleja de mi objetivo primario que es desarrollar un game , charlando
con los desarrolladores de games de junin Oniric , me recomendaron que tome
la alternativa mas corta pues ellos tomaron la mas larga y no me lo
recomendaron para empezar.
>
>   Es por eso que quería saber como hacer la conexión con objetos c++, vos
decís que es parecido a lo que se hace con objetos COM , tengo entendido que
los COM y los C++ son compatibles a nivel binario nada mas , cual es la
diferencia entre ambos.
>   En MT la comunicación con COM es bastante fácil , ya que hay todo un
mecanismo bien definido para tal caso.
>
>   Que es eso de hacer un wrappers
> intermedios en C ???.
>
>   Otra cosa que no entendi es :
>
>   Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API);
>
>   saludos kiko
>
>
>
> "Alejandro F. Reimondo" <aleReimondo@...> escribió:
>   kiko,
>
> Seguramente en MT tenes una opción muy transparente para usar elementos de
> C++... pues el compilador es estático y preparado para integrarse bien con
> windows.
> Fijate como se accede a objetos COM y seguramente allí tendrás guías de
como
> hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del
MT
> para ser bien asistido en esta duda).
>
> En un momento (hace casi 10 años) me toco hacer una conexión como la que
te
> estás planteando (con un Smalltalk mío) para acceder a rutinas de
compresión
> por fractales (algo que estaba por "ponerse de moda" para comprimir
> imágenes, en ese entonces).
> El usar objetos C++ es algo menos frecuente de lo que parece.
> En ese momento lo que hice fue definir los métodos que tenia la DLL como
api
> calls (buscando la dirección del binding con el nombre mangleado y
> atachandoselo al método Smalltalk explícitamente), con un diseño similar
al
> que tiene VS.
> Así accedía a las funciones de instanciación del objeto C++.
> Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
virtual
> y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> mapeando la tabla virtual con métodos definidos como API y a los que le
> pichicateaba la dirección de las funciones encontradas en la tabla
virtual.
>
> Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
> (cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
> intermedios en C) llegue a la conclusión que no era algo digno de
recomendar
> :-)
>
> Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
> evalúes si podes evitar usarlo (para no heredar la obsolescencia
> característica de este tipo de librerías).
>
> suerte,
> Ale.
>
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" <kikogregoris@...>
> To: <smalltalking@...>
> Sent: Monday, March 06, 2006 4:52 PM
> Subject: [objetos] Objetos C++ con ST
>
>
> > Hola gente
> >
> >   Queira saber como se puede interactuar con una dll que contiene un
> objeto c++ ?.
> >   Algo bien simple , una clase que contiene el metodo
> >    int suma(int x , int y) .
> >
> >   Lo quiero hacer desde el MT .
> >
> >   saludos kiko
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí



1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

#14684 De: kikote gregoris <kikogregoris@...>
Fecha: Jue, 9 de Mar, 2006 8:25 pm
Asunto: Re: [objetos] Objetos C++ con ST
kikogregoris
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola ALe
 
 
Los fuentes estan para hacer lo que uno quiere , no hay una DLL echa .
Con respecto a exponer un API , podrías decirme como hacer esto con algun ejemplo bien pabo, si no te jode .
Mi conocimiento sobre C y C++ es escaso.
 
Otra cosa que quiere decir:
 
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas
 
saludos kiko

"Alejandro F. Reimondo" <aleReimondo@...> escribió:
Hola,

>   Que es eso de hacer un wrappers
> intermedios en C ???.

Exponer el conjunto de funciones para ser
usadas desde C u otra plataforma por medios
tradicionales.
Normalmente, los componentes de la librería se
ven como punteros que son vueltos a pasar
a la librería (que los genera) sin importar si
son estructuras o componentes Cpuspus.
De esta forma uno usa desde C la funcionalidad
y no se complica con el uso de componentes
e interfaces altamente fraccionadas.

>   Otra cosa que no entendí es :
>   Hoy en día es muy raro encontrar que quien
> expone una librería lo hace solo
> en C++ (y no expone una API);

Normalmente quien hace una librería expone
una API para ser usada desde C.
Exponer componentes, en el caso de C++ (y
otros LOOs) te fuerza a usar la misma plataforma
de desarrollo del autor (lo que sería un mal
menor, al compararlo frente a lo que implica usar
sus componentes :-P ).

suerte con Nebula2,
hasta pronto,
Ale.




----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Wednesday, March 08, 2006 4:54 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola Ale
>
>   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
esta desarrollado enteramente en C++, el motor es Free y se puden bajar
todos los fuentes http://nebuladevice.cubik.org/
>
>   En algún momento pregunte si era conveniente el desarrollar un engine en
st , lo cual sigo pensando que seria la mejor solución .El problema es que
esto me aleja de mi objetivo primario que es desarrollar un game , charlando
con los desarrolladores de games de junin Oniric , me recomendaron que tome
la alternativa mas corta pues ellos tomaron la mas larga y no me lo
recomendaron para empezar.
>
>   Es por eso que quería saber como hacer la conexión con objetos c++, vos
decís que es parecido a lo que se hace con objetos COM , tengo entendido que
los COM y los C++ son compatibles a nivel binario nada mas , cual es la
diferencia entre ambos.
>   En MT la comunicación con COM es bastante fácil , ya que hay todo un
mecanismo bien definido para tal caso.
>
>   Que es eso de hacer un wrappers
> intermedios en C ???.
>
>   Otra cosa que no entendi es :
>
>   Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API);
>
>   saludos kiko
>
>
>
> "Alejandro F. Reimondo" <aleReimondo@...> escribió:
>   kiko,
>
> Seguramente en MT tenes una opción muy transparente para usar elementos de
> C++... pues el compilador es estático y preparado para integrarse bien con
> windows.
> Fijate como se accede a objetos COM y seguramente allí tendrás guías de
como
> hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del
MT
> para ser bien asistido en esta duda).
>
> En un momento (hace casi 10 años) me toco hacer una conexión como la que
te
> estás planteando (con un Smalltalk mío) para acceder a rutinas de
compresión
> por fractales (algo que estaba por "ponerse de moda" para comprimir
> imágenes, en ese entonces).
> El usar objetos C++ es algo menos frecuente de lo que parece.
> En ese momento lo que hice fue definir los métodos que tenia la DLL como
api
> calls (buscando la dirección del binding con el nombre mangleado y
> atachandoselo al método Smalltalk explícitamente), con un diseño similar
al
> que tiene VS.
> Así accedía a las funciones de instanciación del objeto C++.
> Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
virtual
> y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> mapeando la tabla virtual con métodos definidos como API y a los que le
> pichicateaba la dirección de las funciones encontradas en la tabla
virtual.
>
> Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
> (cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
> intermedios en C) llegue a la conclusión que no era algo digno de
recomendar
> :-)
>
> Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
> evalúes si podes evitar usarlo (para no heredar la obsolescencia
> característica de este tipo de librerías).
>
> suerte,
> Ale.
>
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" <kikogregoris@...>
> To: <smalltalking@...>
> Sent: Monday, March 06, 2006 4:52 PM
> Subject: [objetos] Objetos C++ con ST
>
>
> > Hola gente
> >
> >   Queira saber como se puede interactuar con una dll que contiene un
> objeto c++ ?.
> >   Algo bien simple , una clase que contiene el metodo
> >    int suma(int x , int y) .
> >
> >   Lo quiero hacer desde el MT .
> >
> >   saludos kiko
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí



A tu celular ¿no le falta algo?
Usá Yahoo! Messenger y Correo Yahoo! en tu teléfono celular.
Más información aquí.

#14683 De: "Alejandro F. Reimondo" <aleReimondo@...>
Fecha: Mié, 8 de Mar, 2006 9:46 pm
Asunto: Re: [objetos] Objetos C++ con ST
alereimondo
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola,

>   Que es eso de hacer un wrappers
> intermedios en C ???.

Exponer el conjunto de funciones para ser
  usadas desde C u otra plataforma por medios
  tradicionales.
Normalmente, los componentes de la librería se
  ven como punteros que son vueltos a pasar
  a la librería (que los genera) sin importar si
  son estructuras o componentes Cpuspus.
De esta forma uno usa desde C la funcionalidad
  y no se complica con el uso de componentes
  e interfaces altamente fraccionadas.

>   Otra cosa que no entendí es :
>   Hoy en día es muy raro encontrar que quien
> expone una librería lo hace solo
> en C++ (y no expone una API);

Normalmente quien hace una librería expone
  una API para ser usada desde C.
Exponer componentes, en el caso de C++ (y
  otros LOOs) te fuerza a usar la misma plataforma
  de desarrollo del autor (lo que sería un mal
  menor, al compararlo frente a lo que implica usar
  sus componentes :-P ).

suerte con Nebula2,
hasta pronto,
Ale.




----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Wednesday, March 08, 2006 4:54 PM
Subject: Re: [objetos] Objetos C++ con ST


> Hola Ale
>
>   Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que
esta desarrollado enteramente en C++, el motor es Free y se puden bajar
todos los fuentes http://nebuladevice.cubik.org/
>
>   En algún momento pregunte si era conveniente el desarrollar un engine en
st , lo cual sigo pensando que seria la mejor solución .El problema es que
esto me aleja de mi objetivo primario que es desarrollar un game , charlando
con los desarrolladores de games de junin Oniric , me recomendaron que tome
la alternativa mas corta pues ellos tomaron la mas larga y no me lo
recomendaron para empezar.
>
>   Es por eso que quería saber como hacer la conexión con objetos c++, vos
decís que es parecido a lo que se hace con objetos COM , tengo entendido que
los COM y los C++ son compatibles a nivel binario nada mas , cual es la
diferencia entre ambos.
>   En MT la comunicación con COM es bastante fácil , ya que hay todo un
mecanismo bien definido para tal caso.
>
>   Que es eso de hacer un wrappers
> intermedios en C ???.
>
>   Otra cosa que no entendi es :
>
>   Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API);
>
>   saludos kiko
>
>
>
> "Alejandro F. Reimondo" <aleReimondo@...> escribió:
>   kiko,
>
> Seguramente en MT tenes una opción muy transparente para usar elementos de
> C++... pues el compilador es estático y preparado para integrarse bien con
> windows.
> Fijate como se accede a objetos COM y seguramente allí tendrás guías de
como
> hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del
MT
> para ser bien asistido en esta duda).
>
> En un momento (hace casi 10 años) me toco hacer una conexión como la que
te
> estás planteando (con un Smalltalk mío) para acceder a rutinas de
compresión
> por fractales (algo que estaba por "ponerse de moda" para comprimir
> imágenes, en ese entonces).
> El usar objetos C++ es algo menos frecuente de lo que parece.
> En ese momento lo que hice fue definir los métodos que tenia la DLL como
api
> calls (buscando la dirección del binding con el nombre mangleado y
> atachandoselo al método Smalltalk explícitamente), con un diseño similar
al
> que tiene VS.
> Así accedía a las funciones de instanciación del objeto C++.
> Luego de crearlo (y tener el miserable puntero :) accedía a la tabla
virtual
> y mapeaba la estructura del objeto cpuspus a una estructura dinámica
> (parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
> mapeando la tabla virtual con métodos definidos como API y a los que le
> pichicateaba la dirección de las funciones encontradas en la tabla
virtual.
>
> Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
> (cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
> intermedios en C) llegue a la conclusión que no era algo digno de
recomendar
> :-)
>
> Hoy en día es muy raro encontrar que quien expone una librería lo hace
solo
> en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
> evalúes si podes evitar usarlo (para no heredar la obsolescencia
> característica de este tipo de librerías).
>
> suerte,
> Ale.
>
>
>
>
>
> ----- Original Message -----
> From: "kikote gregoris" <kikogregoris@...>
> To: <smalltalking@...>
> Sent: Monday, March 06, 2006 4:52 PM
> Subject: [objetos] Objetos C++ con ST
>
>
> > Hola gente
> >
> >   Queira saber como se puede interactuar con una dll que contiene un
> objeto c++ ?.
> >   Algo bien simple , una clase XXX que contiene el metodo
> >    int suma(int x , int y) .
> >
> >   Lo quiero hacer desde el MT .
> >
> >   saludos kiko
> >
> >
> > ---------------------------------
> >  1GB gratis, Antivirus y Antispam
> >  Correo Yahoo!, el mejor correo web del mundo
> >  Abrí tu cuenta aquí
>
>
>
> Para más información sobre la Asociación escribir a info@...
>
> Smalltalking es un espacio colaborativo creado para el estudio y
desarrollo en Ambientes de Objetos.
> Se sustenta gracias a la participación de sus socios.
>
> Las reglas de etiqueta sobre la lista están en
http://www.smalltalking.net/join/netiquete.htm
>
>
>
>
> ---------------------------------
>   Enlaces de Yahoo! Grupos
>
>    Para visitar el sitio web del grupo, andá a:
> http://ar.groups.yahoo.com/group/smalltalking/
>
>    Para cancelar tu suscripción a este grupo, enviá un mensaje a:
> smalltalking-unsubscribe@...
>
>    El uso de Yahoo! Grupos está sujeto a las Condiciones del servicio de
Yahoo!.
>
>
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí

#14682 De: kikote gregoris <kikogregoris@...>
Fecha: Mié, 8 de Mar, 2006 7:54 pm
Asunto: Re: [objetos] Objetos C++ con ST
kikogregoris
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola Ale
 
Bueno se trata de usar un Engine 3d que se llama Nebula Device 2 , que esta desarrollado enteramente en C++, el motor es Free y se puden bajar todos los fuentes http://nebuladevice.cubik.org/
 
En algún momento pregunte si era conveniente el desarrollar un engine en st , lo cual sigo pensando que seria la mejor solución .El problema es que esto me aleja de mi objetivo primario que es desarrollar un game , charlando con los desarrolladores de games de junin Oniric , me recomendaron que tome la alternativa mas corta pues ellos tomaron la mas larga y no me lo recomendaron para empezar.
 
Es por eso que quería saber como hacer la conexión con objetos c++, vos decís que es parecido a lo que se hace con objetos COM , tengo entendido que los COM y los C++ son compatibles a nivel binario nada mas , cual es la diferencia entre ambos.
En MT la comunicación con COM es bastante fácil , ya que hay todo un mecanismo bien definido para tal caso.
 
Que es eso de hacer un wrappers
intermedios en C ???.
 
Otra cosa que no entendi es :
 
Hoy en día es muy raro encontrar que quien expone una librería lo hace solo
en C++ (y no expone una API);
 
saludos kiko
 


"Alejandro F. Reimondo" <aleReimondo@...> escribió:
kiko,

Seguramente en MT tenes una opción muy transparente para usar elementos de
C++... pues el compilador es estático y preparado para integrarse bien con
windows.
Fijate como se accede a objetos COM y seguramente allí tendrás guías de como
hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del MT
para ser bien asistido en esta duda).

En un momento (hace casi 10 años) me toco hacer una conexión como la que te
estás planteando (con un Smalltalk mío) para acceder a rutinas de compresión
por fractales (algo que estaba por "ponerse de moda" para comprimir
imágenes, en ese entonces).
El usar objetos C++ es algo menos frecuente de lo que parece.
En ese momento lo que hice fue definir los métodos que tenia la DLL como api
calls (buscando la dirección del binding con el nombre mangleado y
atachandoselo al método Smalltalk explícitamente), con un diseño similar al
que tiene VS.
Así accedía a las funciones de instanciación del objeto C++.
Luego de crearlo (y tener el miserable puntero :) accedía a la tabla virtual
y mapeaba la estructura del objeto cpuspus a una estructura dinámica
(parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
mapeando la tabla virtual con métodos definidos como API y a los que le
pichicateaba la dirección de las funciones encontradas en la tabla virtual.

Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
(cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
intermedios en C) llegue a la conclusión que no era algo digno de recomendar
:-)

Hoy en día es muy raro encontrar que quien expone una librería lo hace solo
en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
evalúes si podes evitar usarlo (para no heredar la obsolescencia
característica de este tipo de librerías).

suerte,
Ale.





----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Monday, March 06, 2006 4:52 PM
Subject: [objetos] Objetos C++ con ST


> Hola gente
>
>   Queira saber como se puede interactuar con una dll que contiene un
objeto c++ ?.
>   Algo bien simple , una clase XXX que contiene el metodo
>    int suma(int x , int y) .
>
>   Lo quiero hacer desde el MT .
>
>   saludos kiko
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí



1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

#14681 De: "Alejandro F. Reimondo" <aleReimondo@...>
Fecha: Mar, 7 de Mar, 2006 9:53 pm
Asunto: Re: AW: Runtime obesity
alereimondo
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hi (again),

My last email was on image gestation...
  e.g. the use of the objects in the runing environment
  to build a new environment from bigbang objects.
Another interesting point to explore is the creation
  of a custom VM to run the generated images...
The tool that generates the new image and dump
  it on disk, also knows what primitives are really
  requiered and, if we have a model of the VM in
  the image, we can also write the VM code adapted
  to minimum requitrements for generated image.
The reduction of VM size (and customization of VM
  according to runtime schemas) is as important as
  image size when images are reduced.

best,
Ale.



----- Original Message -----
From: "Alejandro F. Reimondo" <aleReimondo@...>
To: "Bruce Badger" <bwbadger@...>
Cc: "smalltalking" <smalltalking@...>; <vwnc@...>
Sent: Tuesday, March 07, 2006 6:32 PM
Subject: Re: AW: Runtime obesity


> Hi all,
>
> An interesting path to be explored can be the generation
>  of images inside running images (called image gestation).
>
> I have built many images and cross-VM images
>  (e.g. building new smalltalk 3D ambiences for
>  entertrainment industry, when we didn´t have
>  a running VM), resulting in interesting images
>  from 80kb -for helloWorld on console- to
>  complete running application environments.
>
> The technique start from gestation of a minimum
>  environment inside a running host; and use the
>  host´s tools (browsers and inspectors, & automated
>  nutrition tools) to put methods inside the child image.
> Then a system tracer is run to dump child image
>  contents (patching and cutting references to host
>  image) and doing custom primitive transforms if
>  required (e.g. when generating cross image development)
>
> I have encountered that building images by gestation
>  is much more easy than shrinking running images;
>  because you build the image in a constructive
>  manner (on real running requirements) and not by
>  reduction.
>
> One of the most valuable nutrient tools has been
>  method tracers that register method activations.
> They can be used to record the methods requiered
>  while evaluating an expression in the host image,
>  and then inject the collected methods (and classes)
>  onto the child image.
>
> More details and samples can be found at
>  http://www.aleReimondo.com.ar/ImageGestation
>
> best,
> Ale.
>
>
> ----- Original Message -----
> From: "Bruce Badger" <bwbadger@...>
> To: "Vwnc" <vwnc@...>
> Sent: Tuesday, March 07, 2006 5:24 PM
> Subject: Re: AW: Runtime obesity
>
>
> On 08/03/06, Charles A. Monteiro <charles@...> wrote:
>
> > So I'm game if anybody is interested, Bruce perhaps :)
>
> Sure!
>
> I think a build-up BOF would be fairly short, though:
>
>  Users: "We want a smaller better understood base.im"
>
>  Cincom: "We know.  We're working on it."
>
>  All: "Beer!"
>
> Perhaps a BOF on "Deployment" would be the way to go.  Then we can
> talk about the base.im for the first 10 seconds, and then talk about
> RTP and perhaps get input from people using other Smalltalk
> implementations too.
>
> All the best,
>    Bruce
> --
> Make the most of your skills - with OpenSkills
> http://www.openskills.org/
>

#14680 De: "Alejandro F. Reimondo" <aleReimondo@...>
Fecha: Mar, 7 de Mar, 2006 9:32 pm
Asunto: Re: AW: Runtime obesity
alereimondo
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hi all,

An interesting path to be explored can be the generation
  of images inside running images (called image gestation).

I have built many images and cross-VM images
  (e.g. building new smalltalk 3D ambiences for
  entertrainment industry, when we didn´t have
  a running VM), resulting in interesting images
  from 80kb -for helloWorld on console- to
  complete running application environments.

The technique start from gestation of a minimum
  environment inside a running host; and use the
  host´s tools (browsers and inspectors, & automated
  nutrition tools) to put methods inside the child image.
Then a system tracer is run to dump child image
  contents (patching and cutting references to host
  image) and doing custom primitive transforms if
  required (e.g. when generating cross image development)

I have encountered that building images by gestation
  is much more easy than shrinking running images;
  because you build the image in a constructive
  manner (on real running requirements) and not by
  reduction.

One of the most valuable nutrient tools has been
  method tracers that register method activations.
They can be used to record the methods requiered
  while evaluating an expression in the host image,
  and then inject the collected methods (and classes)
  onto the child image.

More details and samples can be found at
  http://www.aleReimondo.com.ar/ImageGestation

best,
Ale.


----- Original Message -----
From: "Bruce Badger" <bwbadger@...>
To: "Vwnc" <vwnc@...>
Sent: Tuesday, March 07, 2006 5:24 PM
Subject: Re: AW: Runtime obesity


On 08/03/06, Charles A. Monteiro <charles@...> wrote:

> So I'm game if anybody is interested, Bruce perhaps :)

Sure!

I think a build-up BOF would be fairly short, though:

  Users: "We want a smaller better understood base.im"

  Cincom: "We know.  We're working on it."

  All: "Beer!"

Perhaps a BOF on "Deployment" would be the way to go.  Then we can
talk about the base.im for the first 10 seconds, and then talk about
RTP and perhaps get input from people using other Smalltalk
implementations too.

All the best,
    Bruce
--
Make the most of your skills - with OpenSkills
http://www.openskills.org/

#14679 De: Andres Fortier <andres@...>
Fecha: Mar, 7 de Mar, 2006 8:23 pm
Asunto: Re: [objetos] Variables globales
andres@...
Enviar correo Enviar correo
 
Lautaro,
	 fijate en las clases ObjectMemory y Snapshot para ver el manejo de la
imagen.

Para hacer que guarde cada x segundos, podrías tirar un thread para que
se quede ocioso por x segundos y luego genere un snapshot. Algo del
estilo de:
[[true]
	 whileTrue:[
		    (Delay forSeconds: x) wait.
		    ObjectMemory snapshot.
			 ]] forkAt:....

De todas formas no se hasta que punto es bueno hacer eso, podrías llegar
a guardar la imagen justo cuando te mandaste algún moco y se te rompió.
Creo que si vas a hacer algo de ese estilo lo mejor sería ir guardandola
en un archivo temporal y sólo guardar la imagen final "a mano". Asimismo
fijate que lo que perdiste por el corte de luz probablemente lo puedas
recuperar usando el change set (fijate en los docs que vienen con el VW).

Por el tema de los shortcuts globales habia un parcel que algo de eso
manejaba (creo que se llama MagicKeys). Fijate si con ese parcel se
puede hacer lo que querés. Si no te resulta, en algún momento creo que
hice algo del estilo, pero no me acuerdo en que versión de VW ni que tan
testeado estaba.

Saludos,
          Andrés

---------------------------------------------------------
Mis padres no solían pegarme; lo hicieron sólo una vez:
empezaron en Febrero de 1940 y terminaron en Mayo del 43.

    Woody Allen

Luke LAut SkyFernadezWalker wrote:
> Buenas gentes, quiero hacer que mi visualworks labure salvando la imagen
> haciendo una combinaciòn de teclas(por ejemplo Ctrl + Alt + g). Pero no doy
> con la tecla de donde lo tengo que hacer. Esto viene porque el entorno no es
> còmodo para salvar, es decir que es tediosísimo tener que ir hasta el ícono.
> Y por no hacerlo hace un rato se cortó la luz de mi casa y perdí varios
> mensajes de desplazamiento de matrices(imaginarán que a mì me cuesta, pero
> hago lo que puedo jejeje)
>
> Bueno, si saben cómo hacerlo 1000 gracias.
> AAhhh, me gustaría hacer un salvado automático(por ejemplo cada 3 minutos
> que pise la imagen.)
>
>
> 2000 gracias!
>
> Lautaro Fernández
>

#14678 De: "Alejandro F. Reimondo" <aleReimondo@...>
Fecha: Mar, 7 de Mar, 2006 4:01 pm
Asunto: Re: [objetos] Variables globales
alereimondo
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola Lautaro,

>Buenas gentes, quiero hacer que mi
> visualworks labure salvando la imagen
>haciendo una combinación de teclas(por
> ejemplo Ctrl + Alt + g).

Eso debería ser muy simple de hacer, fijate
  un poco como se manejan las teclas...
Una opción mas simple y útil, es colocar en el
  Transcript (u otra ventana de textos que uses
  a menudo mientras trabajas) la expresión
  que mas convenga para guardar el estado de
  tu trabajo (si trabajas con un image monolítico,
  y grabas el image, puede ser el saveImage...
  sino podes grabar solo tu proyecto, etc...
  como mas se adecúe a la modalidad de trabajo
  que actualmente usas)

>Pero no doy con la tecla de donde lo tengo
> que hacer. Esto viene porque el entorno no es
> cómodo para salvar, es decir que es tediosísimo
> tener que ir hasta el ícono.

Tené paciencia y busca un poco mas (busca
  también en los manuales). El resultado que
  obtendrás de la búsqueda será mucho mas valioso
  que el saber cómo/dónde hacerlo.
Disfrutalo... no consumas tus momentos con tu
  ambiente, tratá de abordarlo de a poco
  como a una buena lectura.

>Y por no hacerlo hace un rato se cortó la luz
> de mi casa y perdí varios mensajes de desplazamiento
> de matrices(imaginarán que a mì me cuesta, pero
> hago lo que puedo jejeje)

En todos los ambientes, hay un log de cambios que
  vas haciendo sobre el ambiente, fijate como recuperar
  lo que habías hecho e inyectalo en la imagen que
  habías grabado por última vez...

Normalmente nos ocurre a todos que a veces (en
  nuestra actividad explorativa y constructiva) hacemos
  daño a una parte del ambiente y nos damos cuenta
  tarde... como para intentar repararlo (de forma instantánea).
Si grabas el image en ese momento estarás grabando
  un sistema con la patología...

Ese es el punto débil de tu idea (que a todos se nos
  ocurre cuando se nos corta la luz :) y la solución
  a este problema es recuperar las acciones desde
  el log de cambios producidos antes del Apocalipsis :-)

En el trabajo diario y despreocupado en un ambiente,
  uno realiza acciones de forma instantánea y en distintas
  partes del sistema.
Eso es muy sano y positivo al momento de realizar
  la actividad constructiva de un sistema con objetos;
  pero cuando uno detecta un problema (grave)
  es importante evaluar la conveniencia de los dos
  caminos posibles:
     1.- tratar de repararlo.
     2.- salir del image sin grabar (matar a todos)
        y restaurar lo valioso de los últimos cambios.

Espero te sea de utilidad estos comentarios y te
  motiven a usar esta modalidad; ya que es la más
  conveniente en la mayoría de los ámbitos de trabajo.

En algunos casos los cambios son guardados en archivos
  de texto simple en formato chunk (fijate en los manuales
  cómo es este formato simple, pues es muy recomendable
  que lo entiendas).
En otros casos, cuando se usan herramientas de trabajo grupal,
  los cambios se manejan por la herramienta y se almacenan
  en un repositorio de código los me´todos cambiados y en
  un archivo de texto (aparte) las evaluaciones hechas sobre
  el sistema.

Para restaurar el estado de un sistema de objetos, no
  alcanza el código (seguramente ya conocerás sobre
  este detalle) sino que es MUY importante restaurar
  el estado de los objetos que los componen (cosa a
  veces mas compleja que poner métodos en clases :).
Esta restauración de la consistencia de los objetos
  del sistema es algo de mucho valor que estas poniendo
  en tu ambiente y son una de las cosas que muestran
  claramente que al trabajar en un ambiente de objetos
  (como Smalltalk) uno no escribe solo programas...
  ni alcanza con formular un lenguaje.

>Bueno, si saben cómo hacerlo 1000 gracias.
>AAhhh, me gustaría hacer un salvado
> automático(por ejemplo cada 3 minutos
>que pise la imagen.)

Seguramente te habrá sorprendido la razón
  de porqué esa facilidad no estaba en un Smalltalk...
no?
Espero mi mail sirva para entender que hay otras
  opciones.

hasta pronto,
Ale.


----- Original Message -----
From: "Luke LAut SkyFernadezWalker" <evaklo@...>
To: <smalltalking@...>
Sent: Tuesday, March 07, 2006 11:58 AM
Subject: [objetos] Variables globales


Buenas gentes, quiero hacer que mi visualworks labure salvando la imagen
haciendo una combinaciòn de teclas(por ejemplo Ctrl + Alt + g). Pero no doy
con la tecla de donde lo tengo que hacer. Esto viene porque el entorno no es
còmodo para salvar, es decir que es tediosísimo tener que ir hasta el ícono.
Y por no hacerlo hace un rato se cortó la luz de mi casa y perdí varios
mensajes de desplazamiento de matrices(imaginarán que a mì me cuesta, pero
hago lo que puedo jejeje)

Bueno, si saben cómo hacerlo 1000 gracias.
AAhhh, me gustaría hacer un salvado automático(por ejemplo cada 3 minutos
que pise la imagen.)


2000 gracias!

Lautaro Fernández

#14677 De: "Luke LAut SkyFernadezWalker" <evaklo@...>
Fecha: Mar, 7 de Mar, 2006 2:58 pm
Asunto: Variables globales
nodoycuentas
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Buenas gentes, quiero hacer que mi visualworks labure salvando la imagen haciendo una combinaciòn de teclas(por ejemplo Ctrl + Alt + g). Pero no doy con la tecla de donde lo tengo que hacer. Esto viene porque el entorno no es còmodo para salvar, es decir que es tediosísimo tener que ir hasta el ícono.
Y por no hacerlo hace un rato se cortó la luz de mi casa y perdí varios mensajes de desplazamiento de matrices(imaginarán que a mì me cuesta, pero hago lo que puedo jejeje)

Bueno, si saben cómo hacerlo 1000 gracias.
AAhhh, me gustaría hacer un salvado automático(por ejemplo cada 3 minutos que pise la imagen.)


2000 gracias!

Lautaro Fernández

#14676 De: "Alejandro F. Reimondo" <aleReimondo@...>
Fecha: Mar, 7 de Mar, 2006 11:00 am
Asunto: Re: [objetos] Objetos C++ con ST
alereimondo
Sin conexión Sin conexión
Enviar correo Enviar correo
 
kiko,

Seguramente en MT tenes una opción muy transparente para usar elementos de
C++... pues el compilador es estático y preparado para integrarse bien con
windows.
Fijate como se accede a objetos COM y seguramente allí tendrás guías de como
hacer lo que necesitas (no dejes de preguntar en la lista de usuarios del MT
para ser bien asistido en esta duda).

En un momento (hace casi 10 años) me toco hacer una conexión como la que te
estás planteando (con un Smalltalk mío) para acceder a rutinas de compresión
por fractales (algo que estaba por "ponerse de moda" para comprimir
imágenes, en ese entonces).
El usar objetos C++ es algo menos frecuente de lo que parece.
En ese momento lo que hice fue definir los métodos que tenia la DLL como api
calls (buscando la dirección del binding con el nombre mangleado y
atachandoselo al método Smalltalk explícitamente), con un diseño similar al
que tiene VS.
Así accedía a las funciones de instanciación del objeto C++.
Luego de crearlo (y tener el miserable puntero :) accedía a la tabla virtual
y mapeaba la estructura del objeto cpuspus a una estructura dinámica
(parecida a las SelfDefinedStructures en VS) y a una clase Smalltalk
mapeando la tabla virtual con métodos definidos como API y a los que le
pichicateaba la dirección de las funciones encontradas en la tabla virtual.

Como te imaginarás todo funcionaba de maravillas... pero luego de hacerlo
(cosa indispensable para mantener mi sanidad y no tener que hacer wrappers
intermedios en C) llegue a la conclusión que no era algo digno de recomendar
:-)

Hoy en día es muy raro encontrar que quien expone una librería lo hace solo
en C++ (y no expone una API); pero si es ese tu caso; te recomendaría que
evalúes si podes evitar usarlo (para no heredar la obsolescencia
característica de este tipo de librerías).

suerte,
Ale.





----- Original Message -----
From: "kikote gregoris" <kikogregoris@...>
To: <smalltalking@...>
Sent: Monday, March 06, 2006 4:52 PM
Subject: [objetos] Objetos C++ con ST


> Hola gente
>
>   Queira saber como se puede interactuar con una dll que contiene un
objeto c++ ?.
>   Algo bien simple , una clase XXX que contiene el metodo
>    int suma(int x , int y) .
>
>   Lo quiero hacer desde el MT .
>
>   saludos kiko
>
>
> ---------------------------------
>  1GB gratis, Antivirus y Antispam
>  Correo Yahoo!, el mejor correo web del mundo
>  Abrí tu cuenta aquí

#14675 De: kikote gregoris <kikogregoris@...>
Fecha: Lun, 6 de Mar, 2006 7:52 pm
Asunto: Objetos C++ con ST
kikogregoris
Sin conexión Sin conexión
Enviar correo Enviar correo
 
Hola gente
 
Queira saber como se puede interactuar con una dll que contiene un objeto c++ ?.
Algo bien simple , una clase XXX que contiene el metodo
 int suma(int x , int y) .
 
Lo quiero hacer desde el MT .
 
saludos kiko


1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
Abrí tu cuenta aquí

Mensajes 14675 - 14704 de 17205   Más reciente  |  < Más reciente  |  Más antiguo >  |  Más antiguo
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda