Ejemplo n.º 1
0
AggregationInsertRemoveExpression::AggregationInsertRemoveExpression( Expression* a_pLeftExpression, Expression* a_pIndexExpression, AggregationClass* a_pAggregationClass ) 
    : Expression(a_pLeftExpression->getValueType()->replicate(a_pAggregationClass->getAggregateClass()->pointerType()))
    , m_pLeftExpression(a_pLeftExpression)
    , m_pIndexExpression(a_pIndexExpression)
    , m_pAggregationClass(a_pAggregationClass)
    , m_pBufferedPointer(nullptr)
{
    addSubExpression(m_pLeftExpression);
    addSubExpression(m_pIndexExpression);
    reflection::Type* pPointerType = a_pAggregationClass->getAggregateClass()->pointerType();
}
Ejemplo n.º 2
0
PropertyExpression::PropertyExpression( Expression* a_pLeftExpression, Property* a_pProperty ) 
    : LValueExpression(a_pLeftExpression->getValueType()->replicate(a_pProperty->getValueType()->removeConstReference()), a_pProperty->getValueType()->removeConstReference())
    , m_pLeftExpression(a_pLeftExpression)
    , m_pProperty(a_pProperty)
{
    if(NOT(a_pLeftExpression->getValueType()->asReferenceType()))
    {
        setInvalid();
    }
    else if(a_pLeftExpression->getValueType()->removeReference()->removeConst() != a_pProperty->getOwner())
    {
        Class* pLeftClass = a_pLeftExpression->getValueType()->removeReference()->removeConst()->asClass();
        if(pLeftClass)
        {
            Class* pOwnerClass = a_pProperty->getOwner()->asClass();
            if(pOwnerClass)
            {
                if(pLeftClass->getBaseClassOffsetCascade(pOwnerClass) != 0)
                    setInvalid();
            }
            else setInvalid();
        }
        else setInvalid();
    }
    addSubExpression(m_pLeftExpression);
    addReferencedElement(a_pProperty);

    m_pBuffer = m_pValueType->removeReference()->allocate();
    m_pValueType->removeReference()->construct(m_pBuffer);
    m_pValueType->removeReference()->install(m_pBuffer);
    m_pValueType->removeReference()->initialize(m_pBuffer);
}
Ejemplo n.º 3
0
VariableExpression::VariableExpression(Variable* a_pVariable, Expression* a_pChildExpression /*= nullptr*/)
    : LValueExpression(a_pVariable->getValueType())
    , m_pVariable(a_pVariable)
{
    addReferencedElement(a_pVariable);
    if(a_pChildExpression)
        addSubExpression(a_pChildExpression);
}
Ejemplo n.º 4
0
EqTestOp::EqTestOp(Opcode opcode, Expression* lhs, Expression* rhs)
    : m_opcode(opcode)
{
    addSubExpression(lhs);
    addSubExpression(rhs);
}
Ejemplo n.º 5
0
NumericOp::NumericOp(Opcode opcode, Expression* lhs, Expression* rhs)
    : m_opcode(opcode)
{
    addSubExpression(lhs);
    addSubExpression(rhs);
}
Ejemplo n.º 6
0
LogicalOp::LogicalOp(Opcode opcode, Expression* lhs, Expression* rhs)
    : m_opcode(opcode)
{
    addSubExpression(lhs);
    addSubExpression(rhs);
}