i guess the best you could do is have a proc return a string array, with pre-defined info in each array element.
you could possibly even have a proc that returns info from that array based on a name, instead of a number if you wanted. for example:
//just say this is your proc that returns the "custom data type"
global proc string[] returnInfo( variables... ){
return {"objectName","visibility","parent","material"};
}
//this proc returns info from a string array
global proc string getInfoFromCustomDataType( string $data[], string $which ) {
if( $which == "name" ) return $data[0];
if else( $which == "vis" ) return $data[1];
if else( $which == "parent" ) return $data[2];
if else( $which == "material" ) return $data[3];
else return $data[0];
}
so the first proc returns your "custom data type", and the second proc returns info from that custom typed variable based on a name. i don't really know how c works (i'm just a scripter), but from what little i know, that should be closeish...
to type the returned info, just manually type it when it gets returned. ie:
int $objVisibility = getInfoFromCustomDataType $data "vis";
so even tho the data returned is a string, maya will automatically convert it to an int.