ProudNet is already set to direcly perform marshaling of a few of the basic collection (array and etc.) types by supporting Proud.CFastArray, std.vector and CAtlArray. Please refer to operator>>, operator<< override from marshaler.h for more details.
Following is the case showing how array type is being declared from PIDL.
If there are any collection types in need of marsharling beyond the basic collection type defined in marshaler.h, override must be set to respond to those collection types. How you can override is guided in Using user-defined class type in RMI. If you want to see the implemented case of override, pleas refer to marshaler.h.
Next is the example of marshaling std.vector. If there are any collection types that ProudNet does not support as default then all you need to do is to create a marshaling routine as referring to below.