DNA Calib 1.1
Project brief
RenameResourceCommand.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "dnacalib/TypeDefs.h"
8
9#include <cstdint>
10#include <cstring>
11
12namespace dnac {
13
14template<class TDerived>
15class RenameResourceCommand : public CommandImplBase<TDerived> {
16 private:
18
19 enum class Configuration {
20 Unconfigured,
21 SearchAndRename,
22 RenameByIndex
23 };
24
25 public:
27 Super{memRes_},
28 oldName{memRes_},
29 newName{memRes_},
30 index{},
31 config{Configuration::Unconfigured} {
32 }
33
34 virtual ~RenameResourceCommand() = default;
35
38
41
42 void setName(std::uint16_t index_, const char* newName_) {
43 index = index_;
44 newName = newName_;
46 }
47
48 void setName(const char* oldName_, const char* newName_) {
49 oldName = oldName_;
50 newName = newName_;
52 }
53
54 void run(DNACalibDNAReaderImpl* output) {
56 rename(output);
58 searchAndRename(output);
59 }
60 }
61
62 private:
64 for (std::uint16_t i = 0u; i < getNameCount(output); ++i) {
65 const auto name = getNameByIndex(output, i);
66 if (name == oldName) {
67 setNameByIndex(output, i, newName.c_str());
68 return;
69 }
70 }
71 }
72
74 setNameByIndex(output, index, newName.c_str());
75 }
76
77 virtual std::uint16_t getNameCount(const dna::Reader* input) const = 0;
78 virtual StringView getNameByIndex(const dna::Reader* input, std::uint16_t index_) const = 0;
79 virtual void setNameByIndex(dna::Writer* output, std::uint16_t index_, const char* name) = 0;
80
81 private:
84 std::uint16_t index;
86
87};
88
89} // namespace dnac
The abstract Reader which its implementations are expected to inherit.
Definition: Reader.h:21
Definition: StringView.h:9
The abstract Writer which its implementations are expected to inherit.
Definition: Writer.h:23
Definition: CommandImplBase.h:11
Definition: DNACalibDNAReaderImpl.h:14
Definition: RenameResourceCommand.h:15
void setName(const char *oldName_, const char *newName_)
Definition: RenameResourceCommand.h:48
virtual std::uint16_t getNameCount(const dna::Reader *input) const =0
Configuration config
Definition: RenameResourceCommand.h:85
RenameResourceCommand(const RenameResourceCommand &)=default
String< char > oldName
Definition: RenameResourceCommand.h:82
RenameResourceCommand & operator=(const RenameResourceCommand &)=default
void setName(std::uint16_t index_, const char *newName_)
Definition: RenameResourceCommand.h:42
String< char > newName
Definition: RenameResourceCommand.h:83
void rename(DNACalibDNAReaderImpl *output)
Definition: RenameResourceCommand.h:73
Configuration
Definition: RenameResourceCommand.h:19
RenameResourceCommand(RenameResourceCommand &&)=default
virtual StringView getNameByIndex(const dna::Reader *input, std::uint16_t index_) const =0
RenameResourceCommand & operator=(RenameResourceCommand &&)=default
virtual ~RenameResourceCommand()=default
RenameResourceCommand(MemoryResource *memRes_)
Definition: RenameResourceCommand.h:26
std::uint16_t index
Definition: RenameResourceCommand.h:84
void run(DNACalibDNAReaderImpl *output)
Definition: RenameResourceCommand.h:54
virtual void setNameByIndex(dna::Writer *output, std::uint16_t index_, const char *name)=0
void searchAndRename(DNACalibDNAReaderImpl *output)
Definition: RenameResourceCommand.h:63
MemoryResource is an abstract class that allows the implementation of polymorphic allocators.
Definition: MemoryResource.h:17
Definition: Command.h:8
std::basic_string< T, std::char_traits< T >, Allocator > String
Definition: include/pma/TypeDefs.h:26