Comments

What you can do is write (or find already written) different versions of a function that apply to each type. For example, if adding two points, you could call VuoGenericType1_add which will call VuoPoint2d_add or VuoPoint3d_add or VuoPoint4d_add depending on the type substituted in for VuoGenericType1.

I guess you could even write a group of functions like this to check the data type you're working with:

So you're probably better off writing/using higher-level functions like VuoPoint*d_add that don't just check for the existence of a certain coordinate, but actually accomplish whatever you need to do based on that check.

Or another option would be to eschew generic types and instead implement a separate version of the node class for each data type, like vuo.point.get.VuoPoint2d and vuo.point.get.VuoPoint3d and vuo.point.get.VuoPoint4d.