@@ -6883,90 +6883,92 @@ dsc* evlUnicodeVal(thread_db* tdbb, const SysFunction*, const NestValueArray& ar
68836883
68846884const SysFunction SysFunction::functions[] =
68856885 {
6886- {" ABS" , 1 , 1 , setParamsDblDec, makeAbs, evlAbs, NULL },
6887- {" ACOS" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAcos},
6888- {" ACOSH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAcosh},
6889- {" ASCII_CHAR" , 1 , 1 , setParamsInteger, makeAsciiChar, evlAsciiChar, NULL },
6890- {" ASCII_VAL" , 1 , 1 , setParamsAsciiVal, makeShortResult, evlAsciiVal, NULL },
6891- {" ASIN" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAsin},
6892- {" ASINH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAsinh},
6893- {" ATAN" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAtan},
6894- {" ATANH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAtanh},
6895- {" ATAN2" , 2 , 2 , setParamsDouble, makeDoubleResult, evlAtan2, NULL },
6896- {" BASE64_DECODE" , 1 , 1 , NULL , makeDecode64, evlDecode64, NULL },
6897- {" BASE64_ENCODE" , 1 , 1 , NULL , makeEncode64, evlEncode64, NULL },
6898- {" BIN_AND" , 2 , -1 , setParamsBin, makeBin, evlBin, (void *) funBinAnd},
6899- {" BIN_NOT" , 1 , 1 , setParamsBin, makeBin, evlBin, (void *) funBinNot},
6900- {" BIN_OR" , 2 , -1 , setParamsBin, makeBin, evlBin, (void *) funBinOr},
6901- {" BIN_SHL" , 2 , 2 , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShl},
6902- {" BIN_SHR" , 2 , 2 , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShr},
6903- {" BIN_SHL_ROT" , 2 , 2 , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShlRot},
6904- {" BIN_SHR_ROT" , 2 , 2 , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShrRot},
6905- {" BIN_XOR" , 2 , -1 , setParamsBin, makeBin, evlBin, (void *) funBinXor},
6906- {" BLOB_APPEND" , 2 , -1 , setParamsBlobAppend, makeBlobAppend, evlBlobAppend, NULL },
6907- {" CEIL" , 1 , 1 , setParamsDblDec, makeCeilFloor, evlCeil, NULL },
6908- {" CEILING" , 1 , 1 , setParamsDblDec, makeCeilFloor, evlCeil, NULL },
6909- {" CHAR_TO_UUID" , 1 , 1 , setParamsCharToUuid, makeUuid, evlCharToUuid, NULL },
6910- {" COMPARE_DECFLOAT" , 2 , 2 , setParamsDecFloat, makeShortResult, evlCompare, (void *) funCmpDec},
6911- {" COS" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCos},
6912- {" COSH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCosh},
6913- {" COT" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCot},
6914- {" CRYPT_HASH" , 2 , 2 , setParamsHash, makeHash, evlHash, NULL },
6915- {" DATEADD" , 3 , 3 , setParamsDateAdd, makeDateAdd, evlDateAdd, NULL },
6916- {" DATEDIFF" , 3 , 3 , setParamsDateDiff, makeDateDiff, evlDateDiff, NULL },
6917- {" DECRYPT" , CRYPT_ARG_MAX, CRYPT_ARG_MAX, setParamsEncrypt, makeCrypt, evlDecrypt, NULL },
6918- {" ENCRYPT" , CRYPT_ARG_MAX, CRYPT_ARG_MAX, setParamsEncrypt, makeCrypt, evlEncrypt, NULL },
6919- {" EXP" , 1 , 1 , setParamsDblDec, makeDblDecResult, evlExp, NULL },
6920- {" FIRST_DAY" , 2 , 2 , setParamsFirstLastDay, makeFirstLastDayResult, evlFirstLastDay, (void *) funFirstDay},
6921- {" FLOOR" , 1 , 1 , setParamsDblDec, makeCeilFloor, evlFloor, NULL },
6922- {" GEN_UUID" , 0 , 1 , NULL , makeUuid, evlGenUuid, NULL },
6923- {" HASH" , 1 , 2 , setParamsHash, makeHash, evlHash, NULL },
6924- {" HEX_DECODE" , 1 , 1 , NULL , makeDecodeHex, evlDecodeHex, NULL },
6925- {" HEX_ENCODE" , 1 , 1 , NULL , makeEncodeHex, evlEncodeHex, NULL },
6926- {" LAST_DAY" , 2 , 2 , setParamsFirstLastDay, makeFirstLastDayResult, evlFirstLastDay, (void *) funLastDay},
6927- {" LEFT" , 2 , 2 , setParamsSecondInteger, makeLeftRight, evlLeft, NULL },
6928- {" LN" , 1 , 1 , setParamsDblDec, makeDblDecResult, evlLnLog10, (void *) funLnat},
6929- {" LOG" , 2 , 2 , setParamsDblDec, makeDblDecResult, evlLog, NULL },
6930- {" LOG10" , 1 , 1 , setParamsDblDec, makeDblDecResult, evlLnLog10, (void *) funLog10},
6931- {" LPAD" , 2 , 3 , setParamsSecondInteger, makePad, evlPad, (void *) funLPad},
6932- {" MAKE_DBKEY" , 2 , 4 , setParamsMakeDbkey, makeDbkeyResult, evlMakeDbkey, NULL },
6933- {" MAXVALUE" , 1 , -1 , setParamsFromList, makeFromListResult, evlMaxMinValue, (void *) funMaxValue},
6934- {" MINVALUE" , 1 , -1 , setParamsFromList, makeFromListResult, evlMaxMinValue, (void *) funMinValue},
6935- {" MOD" , 2 , 2 , setParamsFromList, makeMod, evlMod, NULL },
6936- {" NORMALIZE_DECFLOAT" , 1 , 1 , setParamsDecFloat, makeDecFloatResult, evlNormDec, NULL },
6937- {" OVERLAY" , 3 , 4 , setParamsOverlay, makeOverlay, evlOverlay, NULL },
6938- {" PI" , 0 , 0 , NULL , makePi, evlPi, NULL },
6939- {" POSITION" , 2 , 3 , setParamsPosition, makeLongResult, evlPosition, NULL },
6940- {" POWER" , 2 , 2 , setParamsDblDec, makeDblDecResult, evlPower, NULL },
6941- {" QUANTIZE" , 2 , 2 , setParamsDecFloat, makeDecFloatResult, evlQuantize, NULL },
6942- {" RAND" , 0 , 0 , NULL , makeDoubleResult, evlRand, NULL },
6943- {RDB_GET_CONTEXT, 2 , 2 , setParamsGetSetContext, makeGetSetContext, evlGetContext, NULL },
6944- {" RDB$GET_TRANSACTION_CN" , 1 , 1 , setParamsInt64, makeGetTranCN, evlGetTranCN, NULL },
6945- {" RDB$ROLE_IN_USE" , 1 , 1 , setParamsAsciiVal, makeBooleanResult, evlRoleInUse, NULL },
6946- {RDB_SET_CONTEXT, 3 , 3 , setParamsGetSetContext, makeGetSetContext, evlSetContext, NULL },
6947- {" RDB$SYSTEM_PRIVILEGE" , 1 , 1 , NULL , makeBooleanResult, evlSystemPrivilege, NULL },
6948- {" REPLACE" , 3 , 3 , setParamsFromList, makeReplace, evlReplace, NULL },
6949- {" REVERSE" , 1 , 1 , NULL , makeReverse, evlReverse, NULL },
6950- {" RIGHT" , 2 , 2 , setParamsSecondInteger, makeLeftRight, evlRight, NULL },
6951- {" ROUND" , 1 , 2 , setParamsRoundTrunc, makeRound, evlRound, NULL },
6952- {" RPAD" , 2 , 3 , setParamsSecondInteger, makePad, evlPad, (void *) funRPad},
6953- {" RSA_DECRYPT" , RSA_CRYPT_ARG_MAX, RSA_CRYPT_ARG_MAX, setParamsRsaEncrypt, makeRsaCrypt, evlRsaDecrypt, NULL },
6954- {" RSA_ENCRYPT" , RSA_CRYPT_ARG_MAX, RSA_CRYPT_ARG_MAX, setParamsRsaEncrypt, makeRsaCrypt, evlRsaEncrypt, NULL },
6955- {" RSA_PRIVATE" , 1 , 1 , setParamsInteger, makeRsaPrivate, evlRsaPrivate, NULL },
6956- {" RSA_PUBLIC" , 1 , 1 , setParamsRsaPublic, makeRsaPublic, evlRsaPublic, NULL },
6957- {" RSA_SIGN_HASH" , RSA_SIGN_ARG_MAX, RSA_SIGN_ARG_MAX, setParamsRsaSign, makeRsaSign, evlRsaSign, NULL },
6958- {" RSA_VERIFY_HASH" , RSA_VERIFY_ARG_MAX, RSA_VERIFY_ARG_MAX, setParamsRsaVerify, makeBoolResult, evlRsaVerify, NULL },
6959- {" SIGN" , 1 , 1 , setParamsDblDec, makeShortResult, evlSign, NULL },
6960- {" SIN" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfSin},
6961- {" SINH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfSinh},
6962- {" SQRT" , 1 , 1 , setParamsDblDec, makeDblDecResult, evlSqrt, NULL },
6963- {" TAN" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfTan},
6964- {" TANH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfTanh},
6965- {" TOTALORDER" , 2 , 2 , setParamsDecFloat, makeShortResult, evlCompare, (void *) funTotalOrd},
6966- {" TRUNC" , 1 , 2 , setParamsRoundTrunc, makeTrunc, evlTrunc, NULL },
6967- {" UNICODE_CHAR" , 1 , 1 , setParamsInteger, makeUnicodeChar, evlUnicodeChar, NULL },
6968- {" UNICODE_VAL" , 1 , 1 , setParamsUnicodeVal, makeLongResult, evlUnicodeVal, NULL },
6969- {" UUID_TO_CHAR" , 1 , 1 , setParamsUuidToChar, makeUuidToChar, evlUuidToChar, NULL },
6886+ // name, minArgCount, maxArgCount, deterministic, setParamsFunc, makeFunc, evlFunc, misc
6887+
6888+ {" ABS" , 1 , 1 , true , setParamsDblDec, makeAbs, evlAbs, NULL },
6889+ {" ACOS" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAcos},
6890+ {" ACOSH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAcosh},
6891+ {" ASCII_CHAR" , 1 , 1 , true , setParamsInteger, makeAsciiChar, evlAsciiChar, NULL },
6892+ {" ASCII_VAL" , 1 , 1 , true , setParamsAsciiVal, makeShortResult, evlAsciiVal, NULL },
6893+ {" ASIN" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAsin},
6894+ {" ASINH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAsinh},
6895+ {" ATAN" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAtan},
6896+ {" ATANH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAtanh},
6897+ {" ATAN2" , 2 , 2 , true , setParamsDouble, makeDoubleResult, evlAtan2, NULL },
6898+ {" BASE64_DECODE" , 1 , 1 , true , NULL , makeDecode64, evlDecode64, NULL },
6899+ {" BASE64_ENCODE" , 1 , 1 , true , NULL , makeEncode64, evlEncode64, NULL },
6900+ {" BIN_AND" , 2 , -1 , true , setParamsBin, makeBin, evlBin, (void *) funBinAnd},
6901+ {" BIN_NOT" , 1 , 1 , true , setParamsBin, makeBin, evlBin, (void *) funBinNot},
6902+ {" BIN_OR" , 2 , -1 , true , setParamsBin, makeBin, evlBin, (void *) funBinOr},
6903+ {" BIN_SHL" , 2 , 2 , true , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShl},
6904+ {" BIN_SHR" , 2 , 2 , true , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShr},
6905+ {" BIN_SHL_ROT" , 2 , 2 , true , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShlRot},
6906+ {" BIN_SHR_ROT" , 2 , 2 , true , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShrRot},
6907+ {" BIN_XOR" , 2 , -1 , true , setParamsBin, makeBin, evlBin, (void *) funBinXor},
6908+ {" BLOB_APPEND" , 2 , -1 , true , setParamsBlobAppend, makeBlobAppend, evlBlobAppend, NULL },
6909+ {" CEIL" , 1 , 1 , true , setParamsDblDec, makeCeilFloor, evlCeil, NULL },
6910+ {" CEILING" , 1 , 1 , true , setParamsDblDec, makeCeilFloor, evlCeil, NULL },
6911+ {" CHAR_TO_UUID" , 1 , 1 , true , setParamsCharToUuid, makeUuid, evlCharToUuid, NULL },
6912+ {" COMPARE_DECFLOAT" , 2 , 2 , true , setParamsDecFloat, makeShortResult, evlCompare, (void *) funCmpDec},
6913+ {" COS" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCos},
6914+ {" COSH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCosh},
6915+ {" COT" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCot},
6916+ {" CRYPT_HASH" , 2 , 2 , true , setParamsHash, makeHash, evlHash, NULL },
6917+ {" DATEADD" , 3 , 3 , true , setParamsDateAdd, makeDateAdd, evlDateAdd, NULL },
6918+ {" DATEDIFF" , 3 , 3 , true , setParamsDateDiff, makeDateDiff, evlDateDiff, NULL },
6919+ {" DECRYPT" , CRYPT_ARG_MAX, CRYPT_ARG_MAX, true , setParamsEncrypt, makeCrypt, evlDecrypt, NULL },
6920+ {" ENCRYPT" , CRYPT_ARG_MAX, CRYPT_ARG_MAX, true , setParamsEncrypt, makeCrypt, evlEncrypt, NULL },
6921+ {" EXP" , 1 , 1 , true , setParamsDblDec, makeDblDecResult, evlExp, NULL },
6922+ {" FIRST_DAY" , 2 , 2 , true , setParamsFirstLastDay, makeFirstLastDayResult, evlFirstLastDay, (void *) funFirstDay},
6923+ {" FLOOR" , 1 , 1 , true , setParamsDblDec, makeCeilFloor, evlFloor, NULL },
6924+ {" GEN_UUID" , 0 , 1 , false , NULL , makeUuid, evlGenUuid, NULL },
6925+ {" HASH" , 1 , 2 , true , setParamsHash, makeHash, evlHash, NULL },
6926+ {" HEX_DECODE" , 1 , 1 , true , NULL , makeDecodeHex, evlDecodeHex, NULL },
6927+ {" HEX_ENCODE" , 1 , 1 , true , NULL , makeEncodeHex, evlEncodeHex, NULL },
6928+ {" LAST_DAY" , 2 , 2 , true , setParamsFirstLastDay, makeFirstLastDayResult, evlFirstLastDay, (void *) funLastDay},
6929+ {" LEFT" , 2 , 2 , true , setParamsSecondInteger, makeLeftRight, evlLeft, NULL },
6930+ {" LN" , 1 , 1 , true , setParamsDblDec, makeDblDecResult, evlLnLog10, (void *) funLnat},
6931+ {" LOG" , 2 , 2 , true , setParamsDblDec, makeDblDecResult, evlLog, NULL },
6932+ {" LOG10" , 1 , 1 , true , setParamsDblDec, makeDblDecResult, evlLnLog10, (void *) funLog10},
6933+ {" LPAD" , 2 , 3 , true , setParamsSecondInteger, makePad, evlPad, (void *) funLPad},
6934+ {" MAKE_DBKEY" , 2 , 4 , true , setParamsMakeDbkey, makeDbkeyResult, evlMakeDbkey, NULL },
6935+ {" MAXVALUE" , 1 , -1 , true , setParamsFromList, makeFromListResult, evlMaxMinValue, (void *) funMaxValue},
6936+ {" MINVALUE" , 1 , -1 , true , setParamsFromList, makeFromListResult, evlMaxMinValue, (void *) funMinValue},
6937+ {" MOD" , 2 , 2 , true , setParamsFromList, makeMod, evlMod, NULL },
6938+ {" NORMALIZE_DECFLOAT" , 1 , 1 , true , setParamsDecFloat, makeDecFloatResult, evlNormDec, NULL },
6939+ {" OVERLAY" , 3 , 4 , true , setParamsOverlay, makeOverlay, evlOverlay, NULL },
6940+ {" PI" , 0 , 0 , true , NULL , makePi, evlPi, NULL },
6941+ {" POSITION" , 2 , 3 , true , setParamsPosition, makeLongResult, evlPosition, NULL },
6942+ {" POWER" , 2 , 2 , true , setParamsDblDec, makeDblDecResult, evlPower, NULL },
6943+ {" QUANTIZE" , 2 , 2 , true , setParamsDecFloat, makeDecFloatResult, evlQuantize, NULL },
6944+ {" RAND" , 0 , 0 , false , NULL , makeDoubleResult, evlRand, NULL },
6945+ {RDB_GET_CONTEXT, 2 , 2 , true , setParamsGetSetContext, makeGetSetContext, evlGetContext, NULL },
6946+ {" RDB$GET_TRANSACTION_CN" , 1 , 1 , false , setParamsInt64, makeGetTranCN, evlGetTranCN, NULL },
6947+ {" RDB$ROLE_IN_USE" , 1 , 1 , true , setParamsAsciiVal, makeBooleanResult, evlRoleInUse, NULL },
6948+ {RDB_SET_CONTEXT, 3 , 3 , false , setParamsGetSetContext, makeGetSetContext, evlSetContext, NULL },
6949+ {" RDB$SYSTEM_PRIVILEGE" , 1 , 1 , true , NULL , makeBooleanResult, evlSystemPrivilege, NULL },
6950+ {" REPLACE" , 3 , 3 , true , setParamsFromList, makeReplace, evlReplace, NULL },
6951+ {" REVERSE" , 1 , 1 , true , NULL , makeReverse, evlReverse, NULL },
6952+ {" RIGHT" , 2 , 2 , true , setParamsSecondInteger, makeLeftRight, evlRight, NULL },
6953+ {" ROUND" , 1 , 2 , true , setParamsRoundTrunc, makeRound, evlRound, NULL },
6954+ {" RPAD" , 2 , 3 , true , setParamsSecondInteger, makePad, evlPad, (void *) funRPad},
6955+ {" RSA_DECRYPT" , RSA_CRYPT_ARG_MAX, RSA_CRYPT_ARG_MAX, true , setParamsRsaEncrypt, makeRsaCrypt, evlRsaDecrypt, NULL },
6956+ {" RSA_ENCRYPT" , RSA_CRYPT_ARG_MAX, RSA_CRYPT_ARG_MAX, true , setParamsRsaEncrypt, makeRsaCrypt, evlRsaEncrypt, NULL },
6957+ {" RSA_PRIVATE" , 1 , 1 , false , setParamsInteger, makeRsaPrivate, evlRsaPrivate, NULL },
6958+ {" RSA_PUBLIC" , 1 , 1 , false , setParamsRsaPublic, makeRsaPublic, evlRsaPublic, NULL },
6959+ {" RSA_SIGN_HASH" , RSA_SIGN_ARG_MAX, RSA_SIGN_ARG_MAX, true , setParamsRsaSign, makeRsaSign, evlRsaSign, NULL },
6960+ {" RSA_VERIFY_HASH" , RSA_VERIFY_ARG_MAX, RSA_VERIFY_ARG_MAX, true , setParamsRsaVerify, makeBoolResult, evlRsaVerify, NULL },
6961+ {" SIGN" , 1 , 1 , true , setParamsDblDec, makeShortResult, evlSign, NULL },
6962+ {" SIN" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfSin},
6963+ {" SINH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfSinh},
6964+ {" SQRT" , 1 , 1 , true , setParamsDblDec, makeDblDecResult, evlSqrt, NULL },
6965+ {" TAN" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfTan},
6966+ {" TANH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfTanh},
6967+ {" TOTALORDER" , 2 , 2 , true , setParamsDecFloat, makeShortResult, evlCompare, (void *) funTotalOrd},
6968+ {" TRUNC" , 1 , 2 , true , setParamsRoundTrunc, makeTrunc, evlTrunc, NULL },
6969+ {" UNICODE_CHAR" , 1 , 1 , true , setParamsInteger, makeUnicodeChar, evlUnicodeChar, NULL },
6970+ {" UNICODE_VAL" , 1 , 1 , true , setParamsUnicodeVal, makeLongResult, evlUnicodeVal, NULL },
6971+ {" UUID_TO_CHAR" , 1 , 1 , true , setParamsUuidToChar, makeUuidToChar, evlUuidToChar, NULL },
69706972 {" " , 0 , 0 , NULL , NULL , NULL , NULL }
69716973 };
69726974
0 commit comments