Can I pass an array of structs from object to object?


    Apr 09 2014 | 11:05 am
    Can I pass an array of structs from object to object? Say I want to pass an array of t_custom which has four integers in the structure. Do I have to extract each integer from the structure and pass it as an array of A_LONGs? Or is there a way to pass the array of structs directly? Thanks

    • Apr 10 2014 | 1:07 pm
      If you're passing data between objects you've written yourself, you can just pass a pointer to the struct. Pointers generally look like longs.
      This is a C-based approach. Java and JavaScript aren't supposed to let you access pointers directly.
    • Apr 19 2014 | 12:32 am
      Thanks for your answer Peter.
      For some reason max crashes every time I try to do this. This is the code:
      In sending object:
      ` t_atom av[2]; atom_setlong(av,(long)((x->MNLength)/2)); //length of the array, 100% correct one atom_setlong(av+1, (long)(x->rMN_outData)); //pointer to an array of structs post("outadress = %d, length %d",x->rMN_outData,(x->MNLength)/2); outlet_anything(x->outlet_4, gensym("IBnote"), 2, av);`
      In receiving object:
      int numOfNotes = atom_getlong(argv);    //getting the length
          post("inadress = %d, length %d",atom_getlong(argv+1),numOfNotes);  //address and length same as the one sent
          sysmem_copyptr((t_Note*)atom_getlong(argv+1), x->ITHN_outData, numOfNotes*sizeof(t_Note));// crashing here
      Is there anything I am doing wrong? The code worked before, when I passed the array using a conventional method, by setting each element of the struct as t_atom and passing an array of atoms. I thought I will try this method as it avoids the need of converting to and from t_Note struct but for some reason it crashes.
    • Apr 19 2014 | 12:52 am
      Ah, found it, I have to initialise x->ITHN_outData first.