HamBook – Rev 54
?pathlinks?
using System;
namespace HamBook.Radios.Generic
{
public class SplitState
{
public SplitState(string state) : this()
{
State = Parse(state);
}
public SplitState(int state) : this()
{
State = Parse(state);
}
public SplitState()
{
}
public int State { get; set; }
public static bool TryParse(string state, out SplitState splitState)
{
switch (state)
{
case "On":
case "Off":
case "+5kHz":
splitState = new SplitState(state);
return true;
default:
splitState = null;
return false;
}
}
public static bool TryParse(int state, out SplitState splitState)
{
switch (state)
{
case 0:
case 1:
case 2:
splitState = new SplitState(state);
return true;
default:
splitState = null;
return false;
}
}
private int Parse(string state)
{
switch (state)
{
case "Off":
return 0;
case "On":
return 1;
case "+5kHz":
return 2;
default:
throw new ArgumentException();
}
}
private int Parse(int state)
{
switch (state)
{
case 0:
case 1:
case 2:
return state;
default:
throw new ArgumentException();
}
}
public static implicit operator SplitState(string state)
{
return new SplitState(state);
}
public static implicit operator string(SplitState state)
{
switch (state.State)
{
case 0:
return "Off";
case 1:
return "On";
case 2:
return "+5kHz";
default:
throw new ArgumentException();
}
}
public static implicit operator SplitState(int state)
{
return new SplitState(state);
}
public static implicit operator int(SplitState state)
{
return state.State;
}
}
}
Generated by GNU Enscript 1.6.5.90.