diff --git a/src/TensorFlowNET.Core/APIs/c_api.cs b/src/TensorFlowNET.Core/APIs/c_api.cs
index 1656edd0..adf0b86f 100644
--- a/src/TensorFlowNET.Core/APIs/c_api.cs
+++ b/src/TensorFlowNET.Core/APIs/c_api.cs
@@ -59,6 +59,6 @@ namespace Tensorflow
}
[DllImport(TensorFlowLibName)]
- public static unsafe extern IntPtr TF_Version();
+ public static extern IntPtr TF_Version();
}
}
diff --git a/src/TensorFlowNET.Core/Binding.Util.cs b/src/TensorFlowNET.Core/Binding.Util.cs
index da2cdf6e..bfbfa4ec 100644
--- a/src/TensorFlowNET.Core/Binding.Util.cs
+++ b/src/TensorFlowNET.Core/Binding.Util.cs
@@ -308,15 +308,14 @@ namespace Tensorflow
public static IEnumerable TupleToEnumerable(object tuple)
{
Type t = tuple.GetType();
- if(t.IsGenericType && (t.FullName.StartsWith("System.Tuple") || t.FullName.StartsWith("System.ValueTuple")))
+ if (t.IsGenericType && (t.FullName.StartsWith("System.Tuple") || t.FullName.StartsWith("System.ValueTuple")))
{
var flds = t.GetFields();
- for(int i = 0; i < flds.Length;i++)
+ for (int i = 0; i < flds.Length; i++)
{
yield return flds[i].GetValue(tuple);
}
- }
- else
+ } else
{
throw new System.Exception("Expected Tuple.");
}
@@ -329,12 +328,9 @@ namespace Tensorflow
public static bool isinstance(object Item1, object tuple)
{
- var tup = TupleToEnumerable(tuple);
- foreach(var t in tup)
- {
- if(isinstance(Item1, (Type)t))
+ foreach (var t in TupleToEnumerable(tuple))
+ if (isinstance(Item1, (Type) t))
return true;
- }
return false;
}
}
diff --git a/src/TensorFlowNET.Core/Buffers/Buffer.cs b/src/TensorFlowNET.Core/Buffers/Buffer.cs
index dbe576b8..396fb311 100644
--- a/src/TensorFlowNET.Core/Buffers/Buffer.cs
+++ b/src/TensorFlowNET.Core/Buffers/Buffer.cs
@@ -66,7 +66,7 @@ namespace Tensorflow
return buffer.Data;
}
- protected override void DisposeUnManagedState(IntPtr handle)
+ protected override void DisposeUnmanagedResources(IntPtr handle)
=> c_api.TF_DeleteBuffer(handle);
}
}
diff --git a/src/TensorFlowNET.Core/DisposableObject.cs b/src/TensorFlowNET.Core/DisposableObject.cs
index 7e416e6d..8d06f182 100644
--- a/src/TensorFlowNET.Core/DisposableObject.cs
+++ b/src/TensorFlowNET.Core/DisposableObject.cs
@@ -29,49 +29,54 @@ namespace Tensorflow
protected DisposableObject() { }
- public DisposableObject(IntPtr handle)
- {
- _handle = handle;
- }
-
- protected virtual void DisposeManagedState()
- {
- }
-
- protected abstract void DisposeUnManagedState(IntPtr handle);
+ protected DisposableObject(IntPtr handle)
+ => _handle = handle;
- protected virtual void Dispose(bool disposing)
+ private void internal_dispose(bool disposing)
{
if (disposing)
{
+ // dispose managed state (managed objects).
+ DisposeManagedResources();
+
// free unmanaged resources (unmanaged objects) and override a finalizer below.
if (_handle != IntPtr.Zero)
{
- // dispose managed state (managed objects).
- DisposeManagedState();
-
// set large fields to null.
- DisposeUnManagedState(_handle);
+ DisposeUnmanagedResources(_handle);
_handle = IntPtr.Zero;
}
}
}
+ ///
+ /// Dispose any managed resources.
+ ///
+ /// Equivalent to what you would perform inside
+ protected virtual void DisposeManagedResources()
+ {
+ }
+
+ ///
+ /// Dispose any unmanaged resources related to given .
+ ///
+ protected abstract void DisposeUnmanagedResources(IntPtr handle);
+
// override a finalizer only if Dispose(bool disposing) above has code to free unmanaged resources.
~DisposableObject()
{
// Do not change this code. Put cleanup code in Dispose(bool disposing) above.
- Dispose(false);
+ internal_dispose(false);
}
// This code added to correctly implement the disposable pattern.
public void Dispose()
{
// Do not change this code. Put cleanup code in Dispose(bool disposing) above.
- Dispose(true);
+ internal_dispose(true);
// uncomment the following line if the finalizer is overridden above.
GC.SuppressFinalize(this);
}
}
-}
+}
\ No newline at end of file
diff --git a/src/TensorFlowNET.Core/Eager/ContextOptions.cs b/src/TensorFlowNET.Core/Eager/ContextOptions.cs
index 4bffddf6..4bdf04b3 100644
--- a/src/TensorFlowNET.Core/Eager/ContextOptions.cs
+++ b/src/TensorFlowNET.Core/Eager/ContextOptions.cs
@@ -1,8 +1,9 @@
using System;
+using System.IO;
namespace Tensorflow.Eager
{
- public class ContextOptions : IDisposable
+ public class ContextOptions : IDisposable //TODO! Eli: Shouldn't this inherieting DisposableObject?
{
private IntPtr _handle;
diff --git a/src/TensorFlowNET.Core/Graphs/Graph.cs b/src/TensorFlowNET.Core/Graphs/Graph.cs
index 77926dca..6fcc42a4 100644
--- a/src/TensorFlowNET.Core/Graphs/Graph.cs
+++ b/src/TensorFlowNET.Core/Graphs/Graph.cs
@@ -439,12 +439,12 @@ namespace Tensorflow
_unfetchable_ops.Add(op);
}
- protected override void DisposeManagedState()
+ protected override void DisposeManagedResources()
{
ops.default_graph_stack.remove(this);
}
- protected override void DisposeUnManagedState(IntPtr handle)
+ protected override void DisposeUnmanagedResources(IntPtr handle)
{
c_api.TF_DeleteGraph(handle);
}
diff --git a/src/TensorFlowNET.Core/Graphs/ImportGraphDefOptions.cs b/src/TensorFlowNET.Core/Graphs/ImportGraphDefOptions.cs
index 97720206..bdcaf60c 100644
--- a/src/TensorFlowNET.Core/Graphs/ImportGraphDefOptions.cs
+++ b/src/TensorFlowNET.Core/Graphs/ImportGraphDefOptions.cs
@@ -37,7 +37,7 @@ namespace Tensorflow
c_api.TF_ImportGraphDefOptionsAddReturnOutput(_handle, name, index);
}
- protected override void DisposeUnManagedState(IntPtr handle)
+ protected override void DisposeUnmanagedResources(IntPtr handle)
=> c_api.TF_DeleteImportGraphDefOptions(handle);
public static implicit operator IntPtr(ImportGraphDefOptions opts) => opts._handle;
diff --git a/src/TensorFlowNET.Core/Sessions/BaseSession.cs b/src/TensorFlowNET.Core/Sessions/BaseSession.cs
index efe2afd4..b6db7a65 100644
--- a/src/TensorFlowNET.Core/Sessions/BaseSession.cs
+++ b/src/TensorFlowNET.Core/Sessions/BaseSession.cs
@@ -396,7 +396,7 @@ namespace Tensorflow
Dispose();
}
- protected override void DisposeUnManagedState(IntPtr handle)
+ protected override void DisposeUnmanagedResources(IntPtr handle)
{
using (var status = new Status())
{
diff --git a/src/TensorFlowNET.Core/Sessions/SessionOptions.cs b/src/TensorFlowNET.Core/Sessions/SessionOptions.cs
index 8e0a0a74..ed99b7fe 100644
--- a/src/TensorFlowNET.Core/Sessions/SessionOptions.cs
+++ b/src/TensorFlowNET.Core/Sessions/SessionOptions.cs
@@ -32,7 +32,7 @@ namespace Tensorflow
_handle = handle;
}
- protected override void DisposeUnManagedState(IntPtr handle)
+ protected override void DisposeUnmanagedResources(IntPtr handle)
=> c_api.TF_DeleteSessionOptions(handle);
public void SetConfig(ConfigProto config)
diff --git a/src/TensorFlowNET.Core/Status/Status.cs b/src/TensorFlowNET.Core/Status/Status.cs
index 7eb2d7e3..2bdd806a 100644
--- a/src/TensorFlowNET.Core/Status/Status.cs
+++ b/src/TensorFlowNET.Core/Status/Status.cs
@@ -50,7 +50,7 @@ namespace Tensorflow
///
public void Check(bool throwException = false)
{
- if(Code != TF_Code.TF_OK)
+ if (Code != TF_Code.TF_OK)
{
Console.WriteLine(Message);
if (throwException)
@@ -65,7 +65,7 @@ namespace Tensorflow
return status._handle;
}
- protected override void DisposeUnManagedState(IntPtr handle)
+ protected override void DisposeUnmanagedResources(IntPtr handle)
=> c_api.TF_DeleteStatus(handle);
}
-}
+}
\ No newline at end of file
diff --git a/src/TensorFlowNET.Core/Tensors/Tensor.cs b/src/TensorFlowNET.Core/Tensors/Tensor.cs
index d52b9422..66466b22 100644
--- a/src/TensorFlowNET.Core/Tensors/Tensor.cs
+++ b/src/TensorFlowNET.Core/Tensors/Tensor.cs
@@ -392,11 +392,11 @@ namespace Tensorflow
return $"tf.Tensor '{name}' shape=({string.Join(",", shape)}) dtype={dtype}";
}
- protected override void DisposeManagedState()
- {
- }
+ //protected override void DisposeManagedState()
+ //{
+ //}
- protected override void DisposeUnManagedState(IntPtr handle)
+ protected override void DisposeUnmanagedResources(IntPtr handle)
{
if(handle != IntPtr.Zero)
{