/*------------------------------------------------------------------------------------- DefOper.h : Operator definitions Author : Olivier Couvreur 25/08/97 --------------------------------------------------------------------------------------*/ #if !defined(M_DEFINE_OPERATOR) #error You should define M_DEFINE_OPERATOR accordingly before including this file ! #endif /* 6 parameters to define an operator : enum , editor name, script name, function pointers in Operator.c, in params,ultra-able */ /**********************************************************************************************************************************************************************************************************************************************************/ /* Math operator */ M_DEFINE_OPERATOR(eOperator_ScalarPlusScalar ,"+" ,"Operator_Plus" ,fn_p_stScalarOperator ,USE_2_REALS_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_ScalarMinusScalar ,"-" ,"Operator_Minus" ,fn_p_stScalarOperator ,USE_2_REALS_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_ScalarMulScalar ,"*" ,"Operator_Mul" ,fn_p_stScalarOperator ,USE_2_REALS_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_ScalarDivScalar ,"/" ,"Operator_Div" ,fn_p_stScalarOperator ,USE_2_REALS_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_ScalarUnaryMinus ,"_" ,"Operator_UnaryMinus" ,fn_p_stScalarOperator ,USE_REAL_PARAM,USE_REAL_PARAM) /**********************************************************************************************************************************************************************************************************************************************************/ /* Affect operator */ M_DEFINE_OPERATOR(eOperator_PlusAffect ,"+=" ,"Operator_PlusAffect" ,fn_p_stAffectOperator ,USE_ADDR_REAL_PARAM USE_REAL_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_MinusAffect ,"-=" ,"Operator_MinusAffect" ,fn_p_stAffectOperator ,USE_ADDR_REAL_PARAM USE_REAL_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_MulAffect ,"*=" ,"Operator_MulAffect" ,fn_p_stAffectOperator ,USE_ADDR_REAL_PARAM USE_REAL_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_DivAffect ,"/=" ,"Operator_DivAffect" ,fn_p_stAffectOperator ,USE_ADDR_REAL_PARAM USE_REAL_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_PlusPlusAffect ,"++" ,"Operator_PlusPlusAffect" ,fn_p_stAffectOperator ,USE_REAL_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_MinusMinusAffect,"--" ,"Operator_MinusMinusAffect",fn_p_stAffectOperator ,USE_REAL_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_Affect ,":=" ,"Operator_Affect" ,fn_p_stAffectOperator ,"","") /* to define*/ /**********************************************************************************************************************************************************************************************************************************************************/ /* Dot operator */ M_DEFINE_OPERATOR(eOperator_Dot ,"." ,"Operator_Dot" ,fn_p_stDotOperator ,"","") /* to define*/ /**********************************************************************************************************************************************************************************************************************************************************/ /* Vector Dot operator */ M_DEFINE_OPERATOR(eOperator_GetVectorX ,".X" ,".X" ,fn_p_stVectorDotOperator,USE_VECTOR_PARAM,USE_ADDR_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_GetVectorY ,".Y" ,".Y" ,fn_p_stVectorDotOperator,USE_VECTOR_PARAM,USE_ADDR_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_GetVectorZ ,".Z" ,".Z" ,fn_p_stVectorDotOperator,USE_VECTOR_PARAM,USE_ADDR_REAL_PARAM) /**********************************************************************************************************************************************************************************************************************************************************/ /* Vector operator */ M_DEFINE_OPERATOR(eOperator_VectorPlusVector ,"v+" ,"Operator_VectorPlusVector" ,fn_p_stVectorOperator ,USE_2_VECTORS_PARAM ,USE_VECTOR_PARAM) M_DEFINE_OPERATOR(eOperator_VectorMinusVector ,"v-" ,"Operator_VectorMinusVector" ,fn_p_stVectorOperator ,USE_2_VECTORS_PARAM,USE_VECTOR_PARAM) M_DEFINE_OPERATOR(eOperator_VectorMulScalar ,"v*" ,"Operator_VectorMulScalar" ,fn_p_stVectorOperator ,USE_VECTOR_PARAM USE_REAL_PARAM,USE_VECTOR_PARAM) M_DEFINE_OPERATOR(eOperator_VectorDivScalar ,"v/" ,"Operator_VectorDivScalar" ,fn_p_stVectorOperator ,USE_VECTOR_PARAM USE_REAL_PARAM,USE_VECTOR_PARAM) M_DEFINE_OPERATOR(eOperator_VectorUnaryMinus ,"v_" ,"Operator_VectorUnaryMinus" ,fn_p_stVectorOperator ,USE_VECTOR_PARAM,USE_VECTOR_PARAM) /**********************************************************************************************************************************************************************************************************************************************************/ /* Vector Affect operator */ M_DEFINE_OPERATOR(eOperator_SetVectorX ,".X:=" ,".X:=" ,fn_p_stAffectOperator,USE_VECTOR_PARAM USE_REAL_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_SetVectorY ,".Y:=" ,".Y:=" ,fn_p_stAffectOperator,USE_VECTOR_PARAM USE_REAL_PARAM,USE_REAL_PARAM) M_DEFINE_OPERATOR(eOperator_SetVectorZ ,".Z:=" ,".Z:=" ,fn_p_stAffectOperator,USE_VECTOR_PARAM USE_REAL_PARAM,USE_REAL_PARAM) /**********************************************************************************************************************************************************************************************************************************************************/ /* Ultra Operator */ M_DEFINE_OPERATOR(eOperator_Ultra ,".." ,"Operator_Ultra" ,fn_p_stUltraOperator ,USE_PERSO_PARAM ""/*ANY PARAM */,"") /**********************************************************************************************************************************************************************************************************************************************************/ /* Model Cast Operator */ M_DEFINE_OPERATOR(eOperator_ModelCast ,"@" ,"Operator_ModelCast" ,fn_p_stModelCastOperator ,USE_MODEL_PARAM USE_PERSO_PARAM ,USE_PERSO_PARAM) /**********************************************************************************************************************************************************************************************************************************************************/ /* Array Operator */ M_DEFINE_OPERATOR(eOperator_Array ,"[" ,"Operator_Array" ,fn_p_stArrayOperator ,USE_ARRAY_PARAM USE_CONSTANT_PARAM ,"") /**********************************************************************************************************************************************************************************************************************************************************/ /* Affect Array Operator */ M_DEFINE_OPERATOR(eOperator_AffectArray ,":={" ,"Operator_AffectArray" ,fn_p_stAffectOperator ,USE_ARRAY_PARAM USE_CONSTANT_PARAM ,"") #if defined(M_DEFINE_OPERATOR) #undef M_DEFINE_OPERATOR #endif