//===-- runtime/namelist.h --------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // Defines the data structure used for NAMELIST I/O #ifndef FORTRAN_RUNTIME_NAMELIST_H_ #define FORTRAN_RUNTIME_NAMELIST_H_ #include namespace Fortran::runtime { class Descriptor; class IoStatementState; } // namespace Fortran::runtime namespace Fortran::runtime::io { // A NAMELIST group is a named ordered collection of distinct variable names. // It is packaged by lowering into an instance of this class. // If all the items are variables with fixed addresses, the NAMELIST group // description can be in a read-only section. class NamelistGroup { public: struct Item { const char *name; // NUL-terminated lower-case const Descriptor &descriptor; }; const char *groupName; // NUL-terminated lower-case std::size_t items; const Item *item; // in original declaration order }; // Look ahead on input for an identifier followed by a '=', '(', or '%' // character; for use in disambiguating a name-like value (e.g. F or T) from a // NAMELIST group item name. Always false when not reading a NAMELIST. bool IsNamelistName(IoStatementState &); } // namespace Fortran::runtime::io #endif // FORTRAN_RUNTIME_NAMELIST_H_