blob: 07dad911a85eeae45556fc715707afa998d48d4b [file] [log] [blame]
// 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_);
name_[len_] = 0;
return *this;
}
private:
char name_[kMaxNameLen];
uint32_t len_;
};
} // namespace f2fs
#endif // THIRD_PARTY_F2FS_NAMESTRING_H_