HamBook – Rev 54

Subversion Repositories:
Rev:
using System;

namespace HamBook.Radios.Generic
{
    public class ClarifierDirection
    {
        public ClarifierDirection(char symbol) : this()
        {
            Direction = Parse(symbol);
        }

        public ClarifierDirection(string symbol) : this()
        {
            Direction = Parse(symbol);
        }

        public ClarifierDirection()
        {
        }

        public ClarifierDirection(ShiftDirection shiftDirection)
        {
            Direction = shiftDirection;
        }

        public ShiftDirection Direction { get; set; }

        private static ShiftDirection Parse(char symbol)
        {
            switch (symbol)
            {
                case '+':
                    return ShiftDirection.PLUS_SHIFT;
                case '-':
                    return ShiftDirection.MINUS_SHIFT;
                default:
                    throw new ArgumentException();
            }
        }

        private static ShiftDirection Parse(string symbol)
        {
            switch (symbol)
            {
                case "+":
                    return ShiftDirection.PLUS_SHIFT;
                case "-":
                    return ShiftDirection.MINUS_SHIFT;
                default:
                    throw new ArgumentException();
            }
        }

        private char ToChar()
        {
            switch (Direction)
            {
                case ShiftDirection.PLUS_SHIFT:
                    return '+';
                case ShiftDirection.MINUS_SHIFT:
                    return '-';
                default:
                    throw new ArgumentException();
            }
        }

        public static implicit operator ClarifierDirection(char symbol)
        {
            return new ClarifierDirection(symbol);
        }

        public static implicit operator char(ClarifierDirection clarifierDirection)
        {
            return clarifierDirection.ToChar();
        }

        public static implicit operator ClarifierDirection(string symbol)
        {
            return new ClarifierDirection(symbol);
        }

        public static implicit operator string(ClarifierDirection clarifierDirection)
        {
            switch (clarifierDirection.Direction)
            {
                case ShiftDirection.PLUS_SHIFT:
                    return "+";
                case ShiftDirection.MINUS_SHIFT:
                    return "-";
                default:
                    throw new ArgumentException();
            }
        }
    }
}

Generated by GNU Enscript 1.6.5.90.