| // Copyright 2021 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef THIRD_PARTY_F2FS_NAMESTRING_H_ |
| #define THIRD_PARTY_F2FS_NAMESTRING_H_ |
| |
| #include "f2fs_layout.h" |
| |
| namespace f2fs { |
| class NameString final { |
| public: |
| NameString() : len_(0){}; |
| NameString(const NameString &) = default; |
| NameString(std::string_view name) { |
| ZX_ASSERT(name.length() <= kMaxNameLen); |
| len_ = name.length(); |
| memcpy(name_, name.data(), len_); |
| } |
| ~NameString() = default; |
| |
| std::string_view GetStringView() const { return std::string_view(name_, len_); }; |
| char *GetData() { return name_; }; |
| uint32_t GetLen() const { return len_; }; |
| |
| NameString &operator=(std::string_view name) { |
| ZX_ASSERT(name.length() <= kMaxNameLen); |
| len_ = name.length(); |
| memcpy(name_, name.data(), len_); |
| return *this; |
| } |
| |
| private: |
| char name_[kMaxNameLen]; |
| uint32_t len_; |
| }; |
| |
| } // namespace f2fs |
| |
| #endif // THIRD_PARTY_F2FS_NAMESTRING_H_ |