I'm trying to work out how to make PMCs. I'm not finding much documentation,
and I'm not sure what I'm missing. Particularly I'm trying to work out where
I'm allowed to store data, and what flags I might have to set

A basic PMC appears to contain

flags
        of which 8 are private so I could use
a data pointer
        which I can use. I am always responsible for freeing anything there(?)
        and to do this I need to set the active destroy flag(?)
        This flag is not the same as the high priority DOD system(?)
        Does the garbage collector ever consider this pointer?
        Does it ever chase what it points to?
a pobj_t union
        which I can use.
        Given that the nature of a C union means that the floating point value
        occupies the same space as the pointer, do I need to set flags
        depending on whether the pointers point to anything?


The pobj_t union contains one of:

A buffers structure
        I'm not sure how to use this, but I'm not sure if I need to.
        
A pair of pointers
        What's the difference between the _struct_val pointer and the
        _pmc_val pointer? Is the PMC pointer only allowed to point to other
        PMCs, while the other pointer is allowed to point to anything
        non-PMC. If not, why are there two pointers? Does on PMC need two?
        Does the garbage collector consider both pointers? Does it inspect
        whatever they point to?
        Do I need to set any flags, or do I just assign pointers to these?
        When I'm done, do I need to be careful to assign NULL pointers to
        ensure that the GC doesn't think I'm still interested in whatever
        object I used to point to?

A pointer to a parrot string

An integer

A floating point value



I think that's all my questioning for now :-)

Nicholas Clark

Reply via email to