How to implement ConvertFromGv for general objects

On 30/05/2013 at 05:19, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   R13 
Platform:   Windows  ;   
Language(s) :     C++  ;  XPRESSO  ;

---------
Hello,

I'm trying to make my custom data type and want to convert a general object (ID_GV_VALUE_TYPE_GENERAL_OBJECT) to the my type. I'm following the example of cinema4dsdk sample project, but I'm getting an AccessViolation crash in ConvertFromGv method.

The example in cinema4dsdk defines a magic structure GvObject and uses it to cast the src parameter of ConvertFromGv method. This is the code:

struct GvObject
{
  BaseList2D*    object;
  LONG                type;
};

virtual GvError ConvertFromGv(LONG type,const void *const src,LONG cpu_id,CustomDataType *dst)
{
      iExampleDataType *d = (iExampleDataType* )dst;
      switch (type)
      {
...
          case 400006000: // ID_GV_VALUE_TYPE_GENERAL_OBJECT
              {
                  GvObject *s = &((GvObject* )src)[cpu_id];
                  if (s->object) d->sdata = s->object->GetName();
                  else d->sdata = "<<no object>>";

d->ldata = -1;

return GV_CALC_ERR_NONE;                   
              }
      }
...
}

It seems that this is not the right structure of the src void pointer.
Does anybody know what is the structure of the src pointer in case of ID_GV_VALUE_TYPE_GENERAL_OBJECT type (for Cinema4D R13 version)?

Thank you.