blob: a9d682d52f83c8495f37804343a98bbd567d27a0 [file] [log] [blame]
// Copyright 2020 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.
#include <lib/zbitl/item.h>
#include <string_view>
using namespace std::literals;
namespace zbitl {
std::string_view TypeName(uint32_t type) {
#define TYPE(code, name, extension) \
case code: \
return name##sv;
switch (type) { ZBI_ALL_TYPES(TYPE) }
#undef TYPE
return {};
}
std::string_view TypeExtension(uint32_t type) {
#define TYPE(code, name, extension) \
case code: \
return extension##sv;
switch (type) { ZBI_ALL_TYPES(TYPE) }
#undef TYPE
return {};
}
bool TypeIsStorage(uint32_t type) {
// TODO(mcgrathr): Ideally we'd encode this as a mask of type bits or
// something else simple. Short of that, someplace more authoritative than
// here should contain this list. But N.B. that no ZBI_TYPE_STORAGE_* type
// is a long-term stable protocol with boot loaders, so meh.
//
// TODO(mcgrathr): ZBI_TYPE_STORAGE_BOOTFS_FACTORY is misnamed and is not
// actually a "storage" type.
switch (type) {
case ZBI_TYPE_STORAGE_RAMDISK:
case ZBI_TYPE_STORAGE_BOOTFS:
case ZBI_TYPE_STORAGE_KERNEL:
return true;
}
return false;
}
} // namespace zbitl