mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-24 10:38:02 +02:00
Moving corlib files out of "System" directory into root
This commit is contained in:
parent
4cd58262e4
commit
7dbfd15292
179 changed files with 3 additions and 0 deletions
102
BeefLibs/corlib/src/Nullable.bf
Normal file
102
BeefLibs/corlib/src/Nullable.bf
Normal file
|
@ -0,0 +1,102 @@
|
|||
using System.Reflection;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace System
|
||||
{
|
||||
public struct Nullable<T> where T : struct
|
||||
{
|
||||
#region Sync with runtime code
|
||||
internal T mValue;
|
||||
internal bool mHasValue;
|
||||
#endregion
|
||||
|
||||
public this(T value)
|
||||
{
|
||||
mHasValue = true;
|
||||
mValue = value;
|
||||
}
|
||||
|
||||
public bool HasValue
|
||||
{
|
||||
get { return mHasValue; }
|
||||
}
|
||||
|
||||
public T Value
|
||||
{
|
||||
get
|
||||
{
|
||||
Debug.Assert(mHasValue, "Value cannot be retrieved on a null nullable.");
|
||||
return mValue;
|
||||
}
|
||||
}
|
||||
|
||||
public ref T ValueRef
|
||||
{
|
||||
get mut
|
||||
{
|
||||
Debug.Assert(mHasValue, "Value cannot be retrieved on a null nullable.");
|
||||
return ref mValue;
|
||||
}
|
||||
}
|
||||
|
||||
/*public override bool Equals(object other)
|
||||
{
|
||||
if (other == null)
|
||||
return mHasValue == false;
|
||||
if (!(other is Nullable<T>))
|
||||
return false;
|
||||
|
||||
return Equals((Nullable<T>)other);
|
||||
}
|
||||
|
||||
bool Equals(Nullable<T> other)
|
||||
{
|
||||
if (other.mHasValue != mHasValue)
|
||||
return false;
|
||||
|
||||
if (mHasValue == false)
|
||||
return true;
|
||||
|
||||
return other.mValue.Equals(mValue);
|
||||
}*/
|
||||
|
||||
/*public override int GetHashCode()
|
||||
{
|
||||
if (!mHasValue)
|
||||
return 0;
|
||||
|
||||
return mValue.GetHashCode();
|
||||
}*/
|
||||
|
||||
public T GetValueOrDefault()
|
||||
{
|
||||
return mValue;
|
||||
}
|
||||
|
||||
public T GetValueOrDefault(T defaultValue)
|
||||
{
|
||||
return mHasValue ? mValue : defaultValue;
|
||||
}
|
||||
|
||||
public override void ToString(String str)
|
||||
{
|
||||
if (mHasValue)
|
||||
mValue.ToString(str);
|
||||
else
|
||||
str.Clear();
|
||||
}
|
||||
|
||||
public static implicit operator Nullable<T>(T value)
|
||||
{
|
||||
return Nullable<T>(value);
|
||||
}
|
||||
|
||||
public static explicit operator T(Nullable<T> value)
|
||||
{
|
||||
Debug.Assert(value.mHasValue, "Value cannot be retrieved on a null nullable.");
|
||||
return value.mValue;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue