FieldDefSettingsCommand(FieldNode fieldNode, FieldDefOptions options) { this.fieldNode = fieldNode; newOptions = options; origOptions = new FieldDefOptions(fieldNode.FieldDef); origParentNode = (DocumentTreeNodeData)fieldNode.TreeNode.Parent.Data; origParentChildIndex = origParentNode.TreeNode.Children.IndexOf(fieldNode.TreeNode); Debug.Assert(origParentChildIndex >= 0); if (origParentChildIndex < 0) throw new InvalidOperationException(); nameChanged = origOptions.Name != newOptions.Name; if (nameChanged) memberRefInfos = RefFinder.FindMemberRefsToThisModule(fieldNode.GetModule()).Where(a => RefFinder.FieldEqualityComparerInstance.Equals(a, fieldNode.FieldDef)).Select(a => new MemberRefInfo(a)).ToArray(); }
CreateFieldDefCommand(TypeNode ownerNode, FieldDefOptions options) { this.ownerNode = ownerNode; fieldNode = ownerNode.Create(options.CreateFieldDef(ownerNode.TypeDef.Module)); }
public void Restore(FieldNode[] nodes) { Debug.Assert(infos != null); if (infos == null) throw new InvalidOperationException(); Debug.Assert(infos.Length == nodes.Length); if (infos.Length != nodes.Length) throw new InvalidOperationException(); for (int i = infos.Length - 1; i >= 0; i--) { var node = nodes[i]; var info = infos[i]; info.OwnerType.Fields.Insert(info.FieldIndex, node.FieldDef); } infos = null; }
DeleteFieldDefCommand(FieldNode[] fieldNodes) { nodes = new DeletableNodes<FieldNode>(fieldNodes); }
public void Delete(FieldNode[] nodes) { Debug.Assert(infos == null); if (infos != null) throw new InvalidOperationException(); infos = new ModelInfo[nodes.Length]; for (int i = 0; i < infos.Length; i++) { var node = nodes[i]; var info = new ModelInfo(node.FieldDef); infos[i] = info; info.OwnerType.Fields.RemoveAt(info.FieldIndex); } }