Example #1
0
            public override void DefaultIn(Node node)
            {
                if (isFirst)
                {
                    isFirst = false;
                }
                else
                {
                    int index = 0;
                    CloneMethod.GetChildTypeIndex getChildTypeIndex = new CloneMethod.GetChildTypeIndex()
                    {
                        Parent = node.Parent(), Child = node
                    };
                    node.Parent().Apply(getChildTypeIndex);
                    index = getChildTypeIndex.Index;
                    CloneMethod.GetChildTypeByIndex getChildTypeByIndex = new CloneMethod.GetChildTypeByIndex()
                    {
                        Child = node, Index = index, Parent = currentClone
                    };
                    currentClone.Apply(getChildTypeByIndex);
                    currentClone = getChildTypeByIndex.Child;
                }

                if (node is ANamedType && data.GenericLinks.ContainsKey((ANamedType)node))
                {
                    TIdentifier name = data.GenericLinks[(ANamedType)node];
                    AStructDecl str  = (AStructDecl)name.Parent();

                    PType type = types[str.GetGenericVars().IndexOf(name)];
                    replacer = Util.MakeClone(type, data);
                }
            }
Example #2
0
            public override void DefaultIn(Node node)
            {
                if (isFirst)
                {
                    isFirst = false;
                }
                else
                {
                    int index = 0;
                    CloneMethod.GetChildTypeIndex getChildTypeIndex = new CloneMethod.GetChildTypeIndex()
                    {
                        Parent = node.Parent(), Child = node
                    };
                    node.Parent().Apply(getChildTypeIndex);
                    index = getChildTypeIndex.Index;
                    CloneMethod.GetChildTypeByIndex getChildTypeByIndex = new CloneMethod.GetChildTypeByIndex()
                    {
                        Child  = node,
                        Index  = index,
                        Parent = currentClone
                    };
                    currentClone.Apply(getChildTypeByIndex);
                    currentClone = getChildTypeByIndex.Child;
                }

                if (node is ANamedType && data.StructTypeLinks.ContainsKey((ANamedType)node))
                {
                    data.StructTypeLinks.Add((ANamedType)currentClone, data.StructTypeLinks[(ANamedType)node]);
                }
            }