SOM

 view release on metacpan or  search on metacpan

SOM.xs  view on Meta::CPAN


int
ttk_objref()

SOMClass *
tSOMClass()

SOMClass *
tSOMObject()

SOMClass *
tSOMClassMgr()

SOMObject *
tSOMClassMgrObject()

MODULE = SOM		PACKAGE = SOM	PREFIX = PSOM_

BOOT:
 somEnvironmentNew();
 main_ev = somGetGlobalEnvironment();
 newXS("SOM::bootstrap_DSOM", boot_DSOM, file);
 newXS("SOM::bootstrap_SOMIr", boot_SOMIr, file);
 newXS("SOM::bootstrap_SOMObject", boot_SOMObject, file);

SOMClass *
PSOM_Find_Class(name, major = 0, minor = 0, dll = 0)
    char *name;
    int major;
    int minor;
    char *dll;

MODULE = SOM		PACKAGE = SOMClassPtr	PREFIX = PSOM_

SOMObject *
PSOM_NewObject(classobj)
    SOMClass *classobj

MODULE = SOM		PACKAGE = SOMObjectPtr	PREFIX = _som

SOMClass *
_somGetClass(obj)
    SOMObject *obj

char *
_somGetClassName(obj)
    SOMObject *obj

MODULE = SOM		PACKAGE = SOMObjectPtr	PREFIX = PSOM_

int
PSOM_Dispatch0(obj, meth)
    SOMObject *obj;
    char *meth;

int
PSOM_Dispatch_templ(obj, meth, templ, ...)
    SOMObject *obj;
    char *meth;
    char *templ;
PPCODE:
  {
    union { short s; unsigned short us; long l; unsigned long ul;
	    char c; unsigned char uc; float f; double d; char *cp; void *vp;
	    SOMObject *op;
    } ret_buffer, par_buffer;
    va_list start_val;
    MYsomVaBuf vb;
    somToken *ret = 0;
    char *t = templ;
    int is_oidl = 0;
    int i = 3;			/* ordinal of a parameter */
    somId methId = SOM_IdFromString(meth);
    int rc;
    SV *retsv;
    IV tmp;

    if (!*t)
	croak("A zero length template");

    if (*t++ == 'o')
	is_oidl = 1;

    if (!*t)
	croak("No return specifier in a template");

    /* Return value: */
    switch (*t - tk_shift_) {
    case tk_pointer:
    case tk_TypeCode:
    default:
	croak("Do not know how to treat specifier '%c'==%d for return value in '%s'",
	      (*t ? *t : '?'), (int)(*t - tk_shift_), templ);
    case tk_void:
	break;
    case tk_short:
    case tk_ushort:
    case tk_long:
    case tk_ulong:
    case tk_float:
    case tk_double:
    case tk_char:
    case tk_boolean:
    case tk_octet:
    case tk_enum:
    case tk_string:
    case tk_objref:
//    case tk_pointer:
	ret = (somToken *)&ret_buffer;
    }

    vb = (MYsomVaBuf)MYsomVaBuf_create(NULL, 0);
    if (!vb)
	croak("Cannot create VaBuf");
    MYsomVaBuf_add(vb, (char *)&obj, tk_pointer);
    if (!is_oidl)
	MYsomVaBuf_add(vb, (char *)&main_ev, tk_pointer);
    while (*++t) {
	int type = *t - tk_shift_;
	STRLEN n_a;



( run in 0.432 second using v1.01-cache-2.11-cpan-5511b514fd6 )