Index: flang/runtime/environment.h =================================================================== --- flang/runtime/environment.h +++ flang/runtime/environment.h @@ -41,12 +41,37 @@ }; extern ExecutionEnvironment executionEnvironment; +class Descriptor; + extern "C" { // 16.9.51 COMMAND_ARGUMENT_COUNT // // Lowering may need to cast the result to match the precision of the default // integer kind. CppTypeFor RTNAME(ArgumentCount)(); + +// 16.9.83 GET_COMMAND_ARGUMENT +// We're breaking up the interface into several different functions, since most +// of the parameters are optional. + +// Try to get the value of the n'th argument. +// The \p value descriptor is only read/written into if it is already allocated. +// Returns a STATUS as described in the standard. +CppTypeFor RTNAME(ArgumentValue)( + CppTypeFor n, Descriptor &value); + +// Try to get the value of the n'th argument. Write up an error message +// otherwise. +// The \p value descriptor is only read/written into if it is already allocated. +// Returns a STATUS as described in the standard. +CppTypeFor RTNAME(ArgumentValueVerbose)( + CppTypeFor n, Descriptor &value, + Descriptor &errmsg); + +// Try to get the significant length of the n'th argument. +// Returns 0 if it doesn't manage. +CppTypeFor RTNAME(ArgumentLength)( + CppTypeFor n); } } // namespace Fortran::runtime