HamBook – Rev 54

Subversion Repositories:
Rev:
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.