[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sc-dev] SC -> c++ interface




On Nov 23, 2004, at 3:20 PM, stefan kersten wrote:

on 2004-11-23 16:45:18 -0300, Charlls Quarra wrote:
I see in SCUM_Prim.cpp that you define some primitives
as "_SCUM_View_DoSomething". Is this simply a naming
convention or the _ are translated as some member
operator into the sc language? I see a similar pattern
in the LangPrimSource

just a naming convention.

An identifier with a preceeding underscore is parsed as a primitive call. So it is a required syntax.

There is a document on writing primitives: SuperCollider3/doc/Primitives.rtf



 Anyhow, this name you feed into the definePrimitive
call is not the same name that those primitives are
known from the sc language. Where the actual names (sc
names of the primitives) are stored?

the name you pass to definePrimitive is what sclang
uses to resolve primitives; it's the key into a lookup table
to retrieve the address of the actual primitive.

so e.g.

definePrimitive(
    base, index++,                 // book keeping
    "_SCUM_Object_SetProperty",    // primitive name
    SCUM_Prim::Object_SetProperty, // function address
    3,                             // num args
    0                              // num varargs
    );

corresponds to

prSetProperty { | key, value |
    _SCUM_Object_SetProperty
    ^this.primitiveFailed
}

the number of required arguments is three because the
receiver is passed on the stack, too.

<sk>
_______________________________________________
sc-dev mailing list
sc-dev@xxxxxxxxxxxxxxx
http://www.create.ucsb.edu/mailman/listinfo/sc-dev