| 
							- // Copyright 2021 Jean Pierre Cimalando
 - //
 - // Licensed under the Apache License, Version 2.0 (the "License");
 - // you may not use this file except in compliance with the License.
 - // You may obtain a copy of the License at
 - //
 - //     http://www.apache.org/licenses/LICENSE-2.0
 - //
 - // Unless required by applicable law or agreed to in writing, software
 - // distributed under the License is distributed on an "AS IS" BASIS,
 - // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 - // See the License for the specific language governing permissions and
 - // limitations under the License.
 - //
 - // SPDX-License-Identifier: Apache-2.0
 - //
 - 
 - #include "ysfx_reader.hpp"
 - 
 - namespace ysfx {
 - 
 - //------------------------------------------------------------------------------
 - bool text_reader::read_next_line(std::string &line)
 - {
 -     line.clear();
 - 
 -     char next = read_next_char();
 -     if (next == '\0')
 -         return false;
 - 
 -     while (next != '\0' && next != '\r' && next != '\n') {
 -         line.push_back(next);
 -         next = read_next_char();
 -     }
 - 
 -     if (next == '\r') {
 -         next = peek_next_char();
 -         if (next == '\n')
 -             read_next_char();
 -     }
 - 
 -     return true;
 - }
 - 
 - //------------------------------------------------------------------------------
 - char string_text_reader::read_next_char()
 - {
 -     const char *ptr = m_char_ptr;
 - 
 -     if (!ptr || *ptr == '\0')
 -         return '\0';
 - 
 -     char next = *ptr;
 -     m_char_ptr = ptr + 1;
 -     return next;
 - }
 - 
 - char string_text_reader::peek_next_char()
 - {
 -     const char *ptr = m_char_ptr;
 - 
 -     if (!ptr)
 -         return '\0';
 - 
 -     return *ptr;
 - }
 - 
 - //------------------------------------------------------------------------------
 - char stdio_text_reader::read_next_char()
 - {
 -     FILE *stream = m_stream;
 - 
 -     if (!stream)
 -         return '\0';
 - 
 -     int next = fgetc(stream);
 -     if (next == EOF)
 -         return '\0';
 - 
 -     return (unsigned char)next;
 - }
 - 
 - char stdio_text_reader::peek_next_char()
 - {
 -     FILE *stream = m_stream;
 - 
 -     if (!stream)
 -         return '\0';
 - 
 -     int next = fgetc(stream);
 -     if (next == EOF)
 -         return '\0';
 - 
 -     ungetc(next, stream);
 -     return (unsigned char)next;
 - }
 - 
 - } // namespace ysfx
 
 
  |