//===-- runtime/character.cpp -----------------------------------*- 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 // //===----------------------------------------------------------------------===// #include "character.h" #include "terminator.h" #include #include namespace Fortran::runtime { extern "C" { void RTNAME(CharacterConcatenate)(Descriptor & /*temp*/, const Descriptor & /*operand*/, const char * /*sourceFile*/, int /*sourceLine*/) { // TODO } void RTNAME(CharacterConcatenateScalar)( Descriptor & /*temp*/, const char * /*from*/, std::size_t /*byteLength*/) { // TODO } void RTNAME(CharacterAssign)(Descriptor & /*lhs*/, const Descriptor & /*rhs*/, const char * /*sourceFile*/, int /*sourceLine*/) { // TODO } std::size_t RTNAME(CharacterAppend)(char *lhs, std::size_t lhsLength, std::size_t offset, const char *rhs, std::size_t rhsLength) { if (auto n{std::min(lhsLength - offset, rhsLength)}) { std::memcpy(lhs + offset, rhs, n); offset += n; } return offset; } void RTNAME(CharacterPad)(char *lhs, std::size_t length, std::size_t offset) { if (length > offset) { std::memset(lhs + offset, ' ', length - offset); } } } } // namespace Fortran::runtime