コード例 #1
0
ファイル: InputOutput.cs プロジェクト: tuxmania87/ChessLib
        public string ReadWord(InputOutputMutex action = InputOutputMutex.None)
        {
            if (_index < 0 || _index == _words.Length)
            {
                _index = -1;
                var line = ReadLine(action);
                _words = line.Split(SplitChar, StringSplitOptions.RemoveEmptyEntries);
            }

            _index++;
            return(_index < _words.Length
                ? _words[_index]
                : string.Empty);
        }
コード例 #2
0
ファイル: InputOutput.cs プロジェクト: tuxmania87/ChessLib
        public async Task WriteAsync(string cad, InputOutputMutex action = InputOutputMutex.None)
        {
            if (action.IsWaitable())
            {
                _mutex.WaitOne();
            }

            await Output.WriteAsync(cad);

            if (action.IsReleasable())
            {
                _mutex.ReleaseMutex();
            }
        }
コード例 #3
0
ファイル: InputOutput.cs プロジェクト: tuxmania87/ChessLib
        public void Write(string cad, InputOutputMutex action = InputOutputMutex.None)
        {
            if (action.IsWaitable())
            {
                _mutex.WaitOne();
            }

            Output.Write(cad);

            if (action.IsReleasable())
            {
                _mutex.ReleaseMutex();
            }
        }
コード例 #4
0
ファイル: InputOutput.cs プロジェクト: tuxmania87/ChessLib
        public async Task <string> ReadWordAsync(InputOutputMutex action = InputOutputMutex.None)
        {
            if (_index < 0 || _index == _words.Length)
            {
                _index       = -1;
                LastLineRead = await ReadLineAsync(action);

                _words = LastLineRead.Split(SplitChar, StringSplitOptions.RemoveEmptyEntries);
            }

            _index++;
            return(_index < _words.Length
                ? _words[_index]
                : string.Empty);
        }
コード例 #5
0
ファイル: InputOutput.cs プロジェクト: tuxmania87/ChessLib
        public async Task <string> ReadLineAsync(InputOutputMutex action = InputOutputMutex.None)
        {
            if (action.IsWaitable())
            {
                _mutex.WaitOne();
            }

            var line = await Input.ReadLineAsync();

            if (action.IsReleasable())
            {
                _mutex.ReleaseMutex();
            }

            return(line);
        }
コード例 #6
0
ファイル: InputOutput.cs プロジェクト: tuxmania87/ChessLib
        public string ReadLine(InputOutputMutex action = InputOutputMutex.None)
        {
            if (action.IsWaitable())
            {
                _mutex.WaitOne();
            }

            var line = Input.ReadLine();

            if (action.IsReleasable())
            {
                _mutex.ReleaseMutex();
            }

            return(line);
        }
コード例 #7
0
 private static bool InBetween(this InputOutputMutex v, InputOutputMutex min, InputOutputMutex max) => (uint)v - (uint)min <= (uint)max - (uint)min;
コード例 #8
0
 public static bool IsWaitable(this InputOutputMutex @this) => @this.InBetween(InputOutputMutex.Atomic, InputOutputMutex.Relax);
コード例 #9
0
 public static bool IsReleasable(this InputOutputMutex @this) => @this.InBetween(InputOutputMutex.Acquire, InputOutputMutex.Atomic);
コード例 #10
0
ファイル: InputOutput.cs プロジェクト: tuxmania87/ChessLib
 public Task WriteLineAsync(string cad, InputOutputMutex action = InputOutputMutex.None)
 => WriteAsync($"{cad}{Environment.NewLine}", action);
コード例 #11
0
ファイル: InputOutput.cs プロジェクト: tuxmania87/ChessLib
 public void WriteLine(string cad, InputOutputMutex action = InputOutputMutex.None)
 => Write($"{cad}{Environment.NewLine}", action);