private static VarLikeConstructUse /*!*/ CreatePropertyVariable(Position pos, CompoundVarUse /*!*/ property, FcnParam parameters) { if (parameters != null) { DirectVarUse direct_use; IndirectVarUse indirect_use; VarLikeConstructUse fcnCall; if ((direct_use = property as DirectVarUse) != null) { QualifiedName method_name = new QualifiedName(new Name(direct_use.VarName.Value), Name.EmptyNames); fcnCall = new DirectFcnCall(pos, method_name, null, property.Position, (List <ActualParam>)parameters.Item2, (List <TypeRef>)parameters.Item1); } else if ((indirect_use = property as IndirectVarUse) != null) { fcnCall = new IndirectFcnCall(pos, indirect_use.VarNameEx, (List <ActualParam>)parameters.Item2, (List <TypeRef>)parameters.Item1); } else { fcnCall = new IndirectFcnCall(pos, (ItemUse)property, (List <ActualParam>)parameters.Item2, (List <TypeRef>)parameters.Item1); } // wrap fcnCall into ItemUse fcnCall = CreateFcnArrayDereference(pos, fcnCall, parameters.Item3); return(fcnCall); } else { return(property); } }
private VariableUse CreateStaticFieldUse(Position position, GenericQualifiedName /*!*/ className, Position classNamePosition, CompoundVarUse /*!*/ field) { return(CreateStaticFieldUse(position, DirectTypeRef.FromGenericQualifiedName(classNamePosition, className), field)); }
private VariableUse CreateStaticFieldUse(Position position, TypeRef /*!*/ typeRef, CompoundVarUse /*!*/ field) { DirectVarUse dvu; IndirectVarUse ivu; if ((dvu = field as DirectVarUse) != null) { return(new DirectStFldUse(position, typeRef, dvu.VarName, field.Position)); } else if ((ivu = field as IndirectVarUse) != null) { return(new IndirectStFldUse(position, typeRef, ivu.VarNameEx)); } else { ItemUse iu = (ItemUse)field; iu.Array = CreateStaticFieldUse(iu.Array.Position, typeRef, (CompoundVarUse)iu.Array); return(iu); } }
private VariableUse CreateStaticFieldUse(Position position, CompoundVarUse /*!*/ className, CompoundVarUse /*!*/ field) { return(CreateStaticFieldUse(position, new IndirectTypeRef(position, className, TypeRef.EmptyList), field)); }