예제 #1
0
    public override Object Clone()
    {
        IterateExpImpl theClone = (IterateExpImpl)base.Clone();

        theClone.result = (VariableDeclaration)result.Clone();
        theClone.result.setLoopExp(theClone);
        return(theClone);
    }
예제 #2
0
        public IterateExp createIterateExp(
            CoreClassifier type,
            OclExpression source,
            OclExpression body,
            List <object> iterators,
            VariableDeclaration result)
        {
            IterateExp exp = new IterateExpImpl();

            exp.setFactory(this);

            exp.setType(type);
            exp.setSource(source);
            exp.setBody(body);
            exp.setResult(result);
            exp.setName("iterate");

            if (iterators != null)
            {
                foreach (VariableDeclaration var in iterators)
                {
                    var.setLoopExp(exp);
                    ((IterateExpImpl)exp).addIterator(var);
                }
            }
            result.setBaseExp(exp);
            if (body != null)
            {
                ((OclExpressionImpl)body).setLoopExp(exp);
            }
            if (source != null)
            {
                ((OclExpressionImpl)source).setAppliedProperty(exp);
            }

            return(exp);
        }