brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 11f4132 Raw
38 lines · c
1//===-- Implementation of a struct to hold a string in menory -------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIBC_SRC___SUPPORT_C_STRING_H10#define LLVM_LIBC_SRC___SUPPORT_C_STRING_H11 12#include "src/__support/CPP/string.h"13#include "src/__support/macros/attributes.h" // for LIBC_INLINE14#include "src/__support/macros/config.h"15 16namespace LIBC_NAMESPACE_DECL {17 18// The CString class is a companion to the cpp::string class. Its use case is as19// a return value for a function that in C would return a char* and a flag for20// if that char* needs to be freed.21class CString {22  cpp::string str;23 24public:25  // These constructors can be implemented iff required.26  CString() = delete;27  CString(const CString &) = delete;28  CString(CString &&) = delete;29 30  LIBC_INLINE CString(cpp::string in_str) : str(in_str) {}31 32  LIBC_INLINE operator const char *() const { return str.c_str(); }33};34 35} // namespace LIBC_NAMESPACE_DECL36 37#endif // LLVM_LIBC_SRC___SUPPORT_C_STRING_H38