private PropertyAccessor(PropertyAccessor propToCopyFrom)
     : base(null)
 {
     propToCopyFrom.CloneInto(this);
     AccessorType = propToCopyFrom.AccessorType;
     Language = propToCopyFrom.Language;
     Modifier = propToCopyFrom.Modifier;
 }
Example #2
0
 protected Property(Controller controller, BaseConstruct parentObject, string name, DotNet.DataType dataType, List<string> modifiers, PropertyAccessor getAccessor, PropertyAccessor setAccessor, CodeLanguage language, int nodeIndex)
     : base(controller)
 {
     ParentObject = parentObject;
     Name = name;
     DataType = dataType;
     Modifiers = modifiers;
     GetAccessor = getAccessor;
     SetAccessor = setAccessor;
     Language = language;
     Index = nodeIndex;
 }
        private static void FixAccessor(PropertyAccessor accessor, string textToInsert, int insertionIndex)
        {
            if (accessor != null)
            {
                // Need to set the text range of the get {}
                var accessorText = accessor.ToString().Trim();
                int startIndex = textToInsert.IndexOf(accessorText) + insertionIndex;
                int endIndex = startIndex + accessorText.Length;

                accessor.TextRange.StartOffset = startIndex;
                accessor.TextRange.EndOffset = endIndex;
            }
        }
Example #4
0
 public Indexer(Controller controller, BaseConstruct parentObject, DataType dataType, IEnumerable<Parameter> parameters, PropertyAccessor getAccessor, PropertyAccessor setAccessor, CodeLanguage language, int nodeIndex)
     : base(controller)
 {
     ParentObject = parentObject;
     DataType = dataType;
     Parameters.Clear();
     if (parameters != null)
         Parameters.AddRange(parameters);
     GetAccessor = getAccessor;
     SetAccessor = setAccessor;
     Language = language;
     Index = nodeIndex;
     Name = "this";
 }
Example #5
0
 public Indexer(Controller controller, BaseConstruct parentObject, DataType dataType, IEnumerable <Parameter> parameters, PropertyAccessor getAccessor, PropertyAccessor setAccessor, CodeLanguage language, int nodeIndex)
     : base(controller)
 {
     ParentObject = parentObject;
     DataType     = dataType;
     Parameters.Clear();
     if (parameters != null)
     {
         Parameters.AddRange(parameters);
     }
     GetAccessor = getAccessor;
     SetAccessor = setAccessor;
     Language    = language;
     Index       = nodeIndex;
     Name        = "this";
 }
        private bool IsTheSame(PropertyAccessor comparisonInterfaceAccessor, ComparisonDepth depth)
        {
            if (comparisonInterfaceAccessor == null)
            {
                return(false);
            }

            if (AccessorType == comparisonInterfaceAccessor.AccessorType)
            {
                // Function names are the same, so now compare the class names
                // TODO: Parent comparison
                //if (ParentObject.IsTheSame(comparisonInterfaceAccessor.ParentObject))
                {
                    if (depth == ComparisonDepth.Signature)
                    {
                        return(true);
                    }

                    if (!base.IsTheSame(comparisonInterfaceAccessor, depth))
                    {
                        return(false);
                    }

                    if (depth == ComparisonDepth.Outer)
                    {
                        return(true);
                    }

                    if (Text != comparisonInterfaceAccessor.Text)
                    {
                        ComparisonDifference += GetType().Name + ".Text";
                        return(false);
                    }
                    return(true);
                }
            }
            return(false);
        }
Example #7
0
        /// <summary>
        /// Adds a new child to this IBaseConstruct.
        /// </summary>
        /// <param name="childBC"></param>
        protected override void AddChildInternal(BaseConstruct childBC)
        {
            if (childBC == null)
            {
                throw new InvalidOperationException("Cannot add null child");
            }

            if (childBC is PropertyAccessor)
            {
                PropertyAccessor newAccessor = (PropertyAccessor)childBC;
                if (newAccessor.AccessorType == PropertyAccessor.AccessorTypes.Get)
                {
                    GetAccessor = newAccessor;
                }
                else
                {
                    SetAccessor = newAccessor;
                }
            }
            else
            {
                throw new InvalidOperationException("Cannot add child of type " + childBC.GetType());
            }
        }
        public void Property()
        {
            Property inter = new Property(controller);
            inter.Name = "File";
            inter.Modifiers.Add("public");
            inter.DataType = new DataType(controller, "string");

            PropertyAccessor acc = new PropertyAccessor(controller);
            acc.Modifier = "public";
            acc.BodyText = "{ return file; }";
            acc.AccessorType = PropertyAccessor.AccessorTypes.Get;
            inter.AddChild(acc);

            acc = new PropertyAccessor(controller);
            acc.Modifier = "protected";
            acc.BodyText = "{ file = value; }";
            acc.AccessorType = PropertyAccessor.AccessorTypes.Set;
            inter.AddChild(acc);

            CodeRoot root = CreateClassAndNamespace(inter);

            CodeRootMap map = new CodeRootMap();
            map.AddCodeRoot(root, Version.User);
            map.AddCodeRoot(root, Version.NewGen);
            map.AddCodeRoot(root, Version.PrevGen);

            string result = map.GetMergedCodeRoot().ToString();
            Assert.That(result, Is.EqualTo(root.ToString()));
            Assertions.StringContains(result, "class Class1");
            Assertions.StringContains(result, "[Serializable(true)]");
            Assertions.StringContains(result, "namespace ArchAngel.Tests");
            Assertions.StringContains(result, "public string File");
            Assertions.StringContains(result, "get{ return file; }");
            Assertions.StringContains(result, "set{ file = value; }");
        }
Example #9
0
        /// <summary>
        /// Adds a new child to this IBaseConstruct.
        /// </summary>
        /// <param name="childBC"></param>
        protected override void AddChildInternal(BaseConstruct childBC)
        {
            if (childBC == null)
                throw new InvalidOperationException("Cannot add null child");

            if (childBC is PropertyAccessor)
            {
                PropertyAccessor newAccessor = (PropertyAccessor)childBC;
                if (newAccessor.AccessorType == PropertyAccessor.AccessorTypes.Get)
                    GetAccessor = newAccessor;
                else
                    SetAccessor = newAccessor;
            }
            else
                throw new InvalidOperationException("Cannot add child of type " + childBC.GetType());
        }
Example #10
0
 public VBIndexer(VBController controller, VBBaseConstruct parentObject, VBDataType dataType, IEnumerable<BaseParameter> parameters, PropertyAccessor getAccessor, PropertyAccessor setAccessor, CodeLanguage language, int nodeIndex)
     : base(controller, parentObject, dataType, parameters, getAccessor, setAccessor, language, nodeIndex)
 {
 }
        public void PropertyAccessor_Change_Modifier()
        {
            PropertyAccessor merged1 = new PropertyAccessor(controller);
            PropertyAccessor merged2 = new PropertyAccessor(controller);
            PropertyAccessor merged3 = new PropertyAccessor(controller);
            const string AccessorName = "MyAccessor";
            const string expectedResult = Modifier1 + " get";

            PropertyAccessor changing = new PropertyAccessor(controller, PropertyAccessor.AccessorTypes.Get, AccessorName);
            PropertyAccessor unchanging = new PropertyAccessor(controller, PropertyAccessor.AccessorTypes.Get, AccessorName);
            changing.Modifier = Modifier1;

            Merge_And_Assert(merged1, merged2, merged3, changing, unchanging, expectedResult);
        }
Example #12
0
        private bool IsTheSame(PropertyAccessor comparisonInterfaceAccessor, ComparisonDepth depth)
        {
            if (comparisonInterfaceAccessor == null)
                return false;

            if (AccessorType == comparisonInterfaceAccessor.AccessorType)
            {
                // Function names are the same, so now compare the class names
                // TODO: Parent comparison
                //if (ParentObject.IsTheSame(comparisonInterfaceAccessor.ParentObject))
                {
                    if (depth == ComparisonDepth.Signature)
                    {
                        return true;
                    }

                    if (!base.IsTheSame(comparisonInterfaceAccessor, depth))
                    {
                        return false;
                    }

                    if (depth == ComparisonDepth.Outer)
                    {
                        return true;
                    }

                    if (Text != comparisonInterfaceAccessor.Text)
                    {
                        ComparisonDifference += GetType().Name + ".Text";
                        return false;
                    }
                    return true;
                }
            }
            return false;
        }
        protected CodeRoot CreateIndexer(string parameterName)
        {
            Indexer inter = new Indexer(controller);
            inter.Name = "File";
            inter.DataType = new DataType(controller, "int");
            Parameter param = new Parameter(controller);
            param.Name = parameterName;
            param.DataType = "int";
            inter.Parameters.Add(param);

            PropertyAccessor acc = new PropertyAccessor(controller);
            acc.Modifier = "public";
            acc.BodyText = "{ return file[i]; }";
            acc.AccessorType = PropertyAccessor.AccessorTypes.Get;
            inter.AddChild(acc);

            acc = new PropertyAccessor(controller);
            acc.Modifier = "protected";
            acc.BodyText = "{ file[i] = value; }";
            acc.AccessorType = PropertyAccessor.AccessorTypes.Set;
            inter.AddChild(acc);

            return CreateClassAndNamespace(inter);
        }
        public void PropertyAccessor()
        {
            Property itp = new Property(controller, "Property1", new DataType(controller, "int"), "public");
            PropertyAccessor item1 = new PropertyAccessor(controller, ArchAngel.Providers.CodeProvider.DotNet.PropertyAccessor.AccessorTypes.Get);
            PropertyAccessor item2 = new PropertyAccessor(controller, ArchAngel.Providers.CodeProvider.DotNet.PropertyAccessor.AccessorTypes.Set);

            itp.AddChild(item1);
            itp.AddChild(item2);

            Assert.That(item1.FullyQualifiedDisplayName, Is.EqualTo("Property1.Get Accessor"));
            Assert.That(item2.FullyQualifiedDisplayName, Is.EqualTo("Property1.Set Accessor"));

            Class it = new Class(controller, "Class1");
            it.AddChild(itp);

            Assert.That(item1.FullyQualifiedDisplayName, Is.EqualTo("Class1.Property1.Get Accessor"));
            Assert.That(item2.FullyQualifiedDisplayName, Is.EqualTo("Class1.Property1.Set Accessor"));
        }
 public VBPropertyAccessorPrinter(PropertyAccessor obj)
 {
     this.obj = obj;
 }
 public AddAccessorToPropertyAction(Property propertyToChange, PropertyAccessor newAccessor)
 {
     PropertyToChange = propertyToChange;
     NewAccessor = newAccessor;
 }
Example #17
0
 protected Property(Controller controller, BaseConstruct parentObject, string name, DotNet.DataType dataType, List <string> modifiers, PropertyAccessor getAccessor, PropertyAccessor setAccessor, CodeLanguage language, int nodeIndex)
     : base(controller)
 {
     ParentObject = parentObject;
     Name         = name;
     DataType     = dataType;
     Modifiers    = modifiers;
     GetAccessor  = getAccessor;
     SetAccessor  = setAccessor;
     Language     = language;
     Index        = nodeIndex;
 }
 public RemoveAccessorFromPropertyAction(Property propertyToChange, PropertyAccessor accessorToRemove)
 {
     PropertyToChange = propertyToChange;
     AccessorToRemove = accessorToRemove;
 }
        public void PropertyAccessor_()
        {
            PropertyAccessor inter = new PropertyAccessor(controller);
            inter.Name = "File";
            inter.Modifier = "protected";
            inter.BodyText = "lkajsdflkjasdlkfjasldfj";
            inter.AccessorType = PropertyAccessor.AccessorTypes.Set;

            Assert.That(inter.IsTheSame(inter.Clone(), ComparisonDepth.Outer), Is.True);
            Assert.That(string.IsNullOrEmpty(((PropertyAccessor)inter.Clone()).BodyText), Is.True);
        }
Example #20
0
        private void Process_Property_Accessor(PropertyDeclaration node, PropertyAccessor.AccessorTypes accessorType)
        {
            PropertyAccessor accessor = new PropertyAccessor(controller);
            accessor.AccessorType = accessorType;

            AccessorDeclaration accessorDec = accessorType == PropertyAccessor.AccessorTypes.Get
                                                  ? node.GetAccessor
                                                  : node.SetAccessor;
            if ((node.Modifiers & Modifiers.Abstract) != 0 || accessorDec.BlockStatement == null)
            { // BlockStatement will be null in abstract classes.
                accessor.BodyText = ";";
            }
            else
                ProcessBodyText(node, accessor, accessorDec.BlockStatement.Statements, node.Comments);
            SetupBaseConstruct(accessorDec.StartOffset, accessorDec.EndOffset, "", accessor, accessorDec.AttributeSections);
            objectStack.Pop(); // This is here on purpose. This method is not handled as part of the giant
            // switch statement, so we need to clean up after ourselves.
        }
Example #21
0
        protected override void RemoveChildObjectInternal(BaseConstruct childBC)
        {
            if (childBC == null)
                throw new InvalidOperationException("Cannot remove null child");

            if (childBC is PropertyAccessor)
            {
                PropertyAccessor accessor = (PropertyAccessor)childBC;
                if (accessor == GetAccessor)
                    GetAccessor = null;
                else if (accessor == SetAccessor)
                    SetAccessor = null;
                else
                    throw new InvalidOperationException("The accessor does not belong to this Property");
            }
            else
                throw new InvalidOperationException("Cannot remove child of type " + childBC.GetType());
        }
Example #22
0
 private bool IsTheSame(PropertyAccessor comparisonFunction)
 {
     return IsTheSame(comparisonFunction, ComparisonDepth.Signature);
 }
 public ChangePropertyAccessorModifierAction(PropertyAccessor propertyToChange, string newModifier)
 {
     AccessorToChange = propertyToChange;
     NewModifier = newModifier;
 }
 private bool IsTheSame(PropertyAccessor comparisonFunction)
 {
     return(IsTheSame(comparisonFunction, ComparisonDepth.Signature));
 }