C EXAMPLE
#include <somobj.h>
void f1(SOMObject obj, Environment *ev)
{
char *msg;
va_list start_val;
somVaBuf vb;
char *msg1 = "Good Morning";
vb = (somVaBuf)somVaBuf_create(NULL, 0);
somVaBuf_add(vb, (char *)&obj, tk_pointer);
/* target for _set_msg */
somVaBuf_add(vb, (char *)&ev, tk_pointer);
/* next argument */
somVaBuf_add(vb, (char *)&msg1, tk_pointer);
/* final argument */
somVaBuf_get_valist(vb, &start_val);
/* dispatch _set_msg on object */
SOMObject_somDispatch(
obj, /* target for somDispatch */
0, /* says ignore dispatched method result */
somIdFromString("_set_msg"), /* the somId for _set_msg */
start_val); /* target and args for _set_msg */
/* dispatch _get_msg on obj: */
/* Get a fresh copy of the va_list */
somVaBuf_get_valist(vb, &start_val);
SOMObject_somDispatch(
obj,
(somToken *)&msg,
/* address to store dispatched result */
somIdFromString("_get_msg"),
start_val); /* target and arguments for _get_msg */
printf("%s\n", msg);
somVaBuf_destroy(vb);
}
C++ EXAMPLE
#include <somobj.h>
void f1(SOMObject obj, Environment *ev)
{
char *msg;
va_list start_val;
somVaBuf vb;
char *msg1 = "Good Morning";
vb = (somVaBuf)somVaBuf_create(NULL, 0);
somVaBuf_add(vb, (char *)&obj, tk_pointer);
/* target for _set_msg */
somVaBuf_add(vb, (char *)&ev, tk_pointer);
/* next argument */
somVaBuf_add(vb, (char *)&msg1, tk_pointer);
/* final argument */
somVaBuf_get_valist(vb, &start_val);
/* dispatch _set_msg on obj: */
obj->SOMObject_somDispatch(
0, /* says ignore the dispatched method result */
somIdFromString("_set_msg"), /* the somId for _set_msg */
start_val); /* the target and arguments for _set_msg */
/* dispatch _get_msg on obj: */
/* Get a fresh copy of the va_list */
somVaBuf_get_valist(vb, &start_val);
obj->SOMObject_somDispatch(
(somToken *)&msg,
/* address to hold dispatched method result */
somIdFromString("_get_msg"),
start_val); /* the target and arguments for _get_msg */
printf("%s\n", msg);
somVaBuf_destroy(vb);
}