System.Variants.TCustomVariantType.RightPromotion
Delphi
function RightPromotion(const V: TVarData; const Operator: TVarOp; out RequiredVarType: TVarType): Boolean; virtual;
C++
virtual bool __fastcall RightPromotion(const TVarData &V, const int Operator, /* out */ System::Word &RequiredVarType);
Properties
Type | Visibility | Source | Unit | Parent |
---|---|---|---|---|
function | protected | System.Variants.pas System.Variants.hpp |
System.Variants | TCustomVariantType |
Description
Indicates whether the right argument to a binary operation should be coerced to a different type.
Override RightPromotion to indicate when the right-hand argument for a binary or comparison operation should be implicitly cast to another type before performing the operation. RightPromotion is called when the right-hand Variant in a binary or comparison operation is of this Variant type.
Note: In operations that involve two custom Variants, the left-hand argument's RightPromotion method is called first. The right-hand argument's LeftPromotion method is then called only if the left-hand argument's RightPromotion method returns false.
V is the TVarData record for the left-hand argument of the operation.
Operator indicates the type of operation. It can be any of the operators in the following table:
Value | Operation |
---|---|
opAdd |
addition |
opSubtract |
subtraction |
opMultiply |
multiplication |
opDivide |
floating-point division |
opIntDivide |
integer division |
opModulus |
remainder |
opShiftRight |
right shift |
opShiftRight |
right shift |
opAnd |
bitwise and |
opOr |
bitwise or |
opXor |
bitwise exclusive or |
opCompare |
any comparison operation |
RequiredVarType returns the Variant type code for the type to which the right-hand argument should be cast before performing the operation. If the operation can proceed with the right-hand argument left as-is, RequiredVarType returns the VType field of V.
RightPromotion returns true if the TCustomVariantType descendant can perform the operation (using the BinaryOp, CompareOp, or Compare method) assuming the right-hand argument can be cast to RequiredVarType. It returns false if the TCustomVariantType descendant can't perform the operation.
As implemented in TCustomVariantType, RightPromotion returns the VarType property as RequiredVarType, and returns true.