>>107739554
that is not even remotely difficult or hard to do in plain C and probably even easier in sepples
typedef enum {
SomeMathObjectKind,
OtherMathObjectKind,
} MATHEMATICAL_OBJECT_KIND;
typedef struct {
MATHEMATICAL_OBJECT_KIND Kind;
// put other common properties here
union {
SOME_MATHEMATICAL_OBJECT Some;
OTHER_MATHEMATICAL_OBJECT Other;
} As;
} MATHEMATICAL_OBJECT, *PMATHEMATICAL_OBJECT;
// Caller is responsible for freeing returned object, yada yada
PMATHEMATICAL_OBJECT GetDerivative(
IN PMATHEMATICAL_OBJECT Object)
{
PMATHEMATICAL_OBJECT Derivative;
switch (Object->Kind) {
case SomeMathObjectKind:
// do stuff
break;
case OtherMathObjectKind:
// do other stuff
break;
default:
ASSERT (FALSE);
}
return Derivative;
}