1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace LuaInterface
- {
- /// <summary>
- /// Base class to provide consistent disposal flow across lua objects. Uses code provided by Yves Duhoux and suggestions by Hans Schmeidenbacher and Qingrui Li
- /// </summary>
- public abstract class LuaBase : IDisposable
- {
- private bool _Disposed;
- protected int _Reference;
- protected LuaState _Interpreter;
- ~LuaBase()
- {
- Dispose(false);
- }
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- public virtual void Dispose(bool disposeManagedResources)
- {
- if (!_Disposed)
- {
- if (disposeManagedResources)
- {
- if (_Reference != 0)
- _Interpreter.dispose(_Reference);
- }
- _Interpreter = null;
- _Disposed = true;
- }
- }
- public override bool Equals(object o)
- {
- if (o is LuaBase)
- {
- LuaBase l = (LuaBase)o;
- return _Interpreter.compareRef(l._Reference, _Reference);
- }
- else return false;
- }
- public override int GetHashCode()
- {
- return _Reference;
- }
- }
- }
|