PolyLink
A library to allow manipulation of geometry from within Mathematica
 All Classes Namespaces Files Functions Variables Properties
WorkingCopy.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 
7 namespace PolyLink
8 {
9 
10  public struct WorkingCopy<T>
11  {
12  private readonly T _original;
13  private readonly T _copy;
14 
15  public WorkingCopy(T original, T copy) : this()
16  {
17  _original = original;
18  _copy = copy;
19  }
20 
21  public T Original
22  {
23  get { return _original; }
24  }
25 
26  public T Copy
27  {
28  get { return _copy; }
29  }
30  }
31 
32  public static class WorkingCopyExtension
33  {
34  public static WorkingCopy<T> WorkingCopy<T>(this T original, Func<T, T> cloner)
35  {
36  return new WorkingCopy<T>(original, cloner(original));
37  }
38  }
39 }