Skip to content

Commit 7ae75fb

Browse files
committed
finish refactoring
1 parent e0612d7 commit 7ae75fb

File tree

2 files changed

+264
-199
lines changed

2 files changed

+264
-199
lines changed

llvm/include/llvm/Frontend/HLSL/RootSignatureMetadata.h

Lines changed: 61 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Metadata;
2828
namespace hlsl {
2929
namespace rootsig {
3030

31-
enum class ErrorKind {
31+
enum class RSErrorKind {
3232
Validation,
3333
AppendAfterUnboundedRange,
3434
ShaderRegisterOverflow,
@@ -41,124 +41,97 @@ enum class ErrorKind {
4141

4242
template <typename T>
4343
void formatImpl(raw_string_ostream &Buff,
44-
std::integral_constant<ErrorKind, ErrorKind::Validation>,
45-
StringRef ParamName, T Value) {
46-
Buff << "Invalid value for: " << ParamName << ":" << Value;
47-
}
44+
std::integral_constant<RSErrorKind, RSErrorKind::Validation>,
45+
StringRef ParamName, T Value);
4846

4947
void formatImpl(
5048
raw_string_ostream &Buff,
51-
std::integral_constant<ErrorKind, ErrorKind::AppendAfterUnboundedRange>,
52-
dxil::ResourceClass Type, uint32_t Register, uint32_t Space) {
53-
Buff << "Range " << getResourceClassName(Type) << "(register=" << Register
54-
<< ", space=" << Space << ") "
55-
<< "cannot be appended after an unbounded range ";
56-
}
49+
std::integral_constant<RSErrorKind, RSErrorKind::AppendAfterUnboundedRange>,
50+
dxil::ResourceClass Type, uint32_t Register, uint32_t Space);
5751

5852
void formatImpl(
5953
raw_string_ostream &Buff,
60-
std::integral_constant<ErrorKind, ErrorKind::ShaderRegisterOverflow>,
61-
dxil::ResourceClass Type, uint32_t Register, uint32_t Space) {
62-
Buff << "Overflow for shader register range: " << getResourceClassName(Type)
63-
<< "(register=" << Register << ", space=" << Space << ").";
64-
}
54+
std::integral_constant<RSErrorKind, RSErrorKind::ShaderRegisterOverflow>,
55+
dxil::ResourceClass Type, uint32_t Register, uint32_t Space);
6556

66-
void formatImpl(raw_string_ostream &Buff,
67-
std::integral_constant<ErrorKind, ErrorKind::OffsetOverflow>,
68-
dxil::ResourceClass Type, uint32_t Register, uint32_t Space) {
69-
Buff << "Offset overflow for descriptor range: " << getResourceClassName(Type)
70-
<< "(register=" << Register << ", space=" << Space << ").";
71-
}
57+
void formatImpl(
58+
raw_string_ostream &Buff,
59+
std::integral_constant<RSErrorKind, RSErrorKind::OffsetOverflow>,
60+
dxil::ResourceClass Type, uint32_t Register, uint32_t Space);
7261

7362
void formatImpl(raw_string_ostream &Buff,
74-
std::integral_constant<ErrorKind, ErrorKind::SamplerMixin>,
75-
dxil::ResourceClass Type, uint32_t Location) {
76-
Buff << "Samplers cannot be mixed with other "
77-
<< "resource types in a descriptor table, " << getResourceClassName(Type)
78-
<< "(location=" << Location << ")";
79-
}
63+
std::integral_constant<RSErrorKind, RSErrorKind::SamplerMixin>,
64+
dxil::ResourceClass Type, uint32_t Location);
8065

8166
void formatImpl(
8267
raw_string_ostream &Buff,
83-
std::integral_constant<ErrorKind, ErrorKind::InvalidMetadataFormat>,
84-
StringRef ElementName) {
85-
Buff << "Invalid format for " << ElementName;
86-
}
68+
std::integral_constant<RSErrorKind, RSErrorKind::InvalidMetadataFormat>,
69+
StringRef ElementName);
8770

8871
void formatImpl(
8972
raw_string_ostream &Buff,
90-
std::integral_constant<ErrorKind, ErrorKind::InvalidMetadataValue>,
91-
StringRef ParamName) {
92-
Buff << "Invalid value for " << ParamName;
93-
}
73+
std::integral_constant<RSErrorKind, RSErrorKind::InvalidMetadataValue>,
74+
StringRef ParamName);
9475

95-
void formatImpl(raw_string_ostream &Buff,
96-
std::integral_constant<ErrorKind, ErrorKind::GenericMetadata>,
97-
StringRef Message, MDNode *MD) {
98-
Buff << Message;
99-
if (MD) {
100-
Buff << "\n";
101-
MD->printTree(Buff);
102-
}
103-
}
76+
void formatImpl(
77+
raw_string_ostream &Buff,
78+
std::integral_constant<RSErrorKind, RSErrorKind::GenericMetadata>,
79+
StringRef Message, MDNode *MD);
10480

10581
template <typename... ArgsTs>
106-
static void formatErrMsg(raw_string_ostream &Buff, ErrorKind Kind,
107-
ArgsTs... Args) {
82+
inline void formatImpl(raw_string_ostream &Buff, RSErrorKind Kind,
83+
ArgsTs... Args) {
10884
switch (Kind) {
109-
case ErrorKind::Validation:
110-
formatImpl(Buff, std::integral_constant<ErrorKind, ErrorKind::Validation>{},
111-
Args...);
112-
break;
113-
case ErrorKind::AppendAfterUnboundedRange:
114-
formatImpl(Buff,
115-
std::integral_constant<ErrorKind,
116-
ErrorKind::AppendAfterUnboundedRange>{},
117-
Args...);
118-
break;
119-
case ErrorKind::ShaderRegisterOverflow:
120-
formatImpl(
85+
case RSErrorKind::Validation:
86+
return formatImpl(
87+
Buff, std::integral_constant<RSErrorKind, RSErrorKind::Validation>(),
88+
Args...);
89+
case RSErrorKind::AppendAfterUnboundedRange:
90+
return formatImpl(
12191
Buff,
122-
std::integral_constant<ErrorKind, ErrorKind::ShaderRegisterOverflow>{},
92+
std::integral_constant<RSErrorKind,
93+
RSErrorKind::AppendAfterUnboundedRange>(),
12394
Args...);
124-
break;
125-
case ErrorKind::OffsetOverflow:
126-
formatImpl(Buff,
127-
std::integral_constant<ErrorKind, ErrorKind::OffsetOverflow>{},
128-
Args...);
129-
break;
130-
case ErrorKind::SamplerMixin:
131-
formatImpl(Buff,
132-
std::integral_constant<ErrorKind, ErrorKind::SamplerMixin>{},
133-
Args...);
134-
break;
135-
case ErrorKind::GenericMetadata:
136-
formatImpl(Buff,
137-
std::integral_constant<ErrorKind, ErrorKind::GenericMetadata>{},
138-
Args...);
139-
break;
140-
141-
case ErrorKind::InvalidMetadataFormat:
142-
formatImpl(
95+
case RSErrorKind::ShaderRegisterOverflow:
96+
return formatImpl(
14397
Buff,
144-
std::integral_constant<ErrorKind, ErrorKind::InvalidMetadataFormat>{},
98+
std::integral_constant<RSErrorKind,
99+
RSErrorKind::ShaderRegisterOverflow>(),
145100
Args...);
146-
break;
147-
148-
case ErrorKind::InvalidMetadataValue:
149-
formatImpl(
101+
case RSErrorKind::OffsetOverflow:
102+
return formatImpl(
103+
Buff,
104+
std::integral_constant<RSErrorKind, RSErrorKind::OffsetOverflow>(),
105+
Args...);
106+
case RSErrorKind::SamplerMixin:
107+
return formatImpl(
108+
Buff, std::integral_constant<RSErrorKind, RSErrorKind::SamplerMixin>(),
109+
Args...);
110+
case RSErrorKind::InvalidMetadataFormat:
111+
return formatImpl(
112+
Buff,
113+
std::integral_constant<RSErrorKind,
114+
RSErrorKind::InvalidMetadataFormat>(),
115+
Args...);
116+
case RSErrorKind::InvalidMetadataValue:
117+
return formatImpl(
118+
Buff,
119+
std::integral_constant<RSErrorKind,
120+
RSErrorKind::InvalidMetadataValue>(),
121+
Args...);
122+
case RSErrorKind::GenericMetadata:
123+
return formatImpl(
150124
Buff,
151-
std::integral_constant<ErrorKind, ErrorKind::InvalidMetadataValue>{},
125+
std::integral_constant<RSErrorKind, RSErrorKind::GenericMetadata>(),
152126
Args...);
153-
break;
154127
}
155128
}
156129

157130
template <typename... ArgsTs>
158-
static llvm::Error createRSError(ErrorKind Kind, ArgsTs... Args) {
131+
static llvm::Error createRSError(RSErrorKind Kind, ArgsTs... Args) {
159132
std::string Msg;
160133
raw_string_ostream Buff(Msg);
161-
formatErrMsg(Buff, Kind, Args...);
134+
formatImpl(Buff, Kind, Args...);
162135
return createStringError(std::move(Buff.str()), inconvertibleErrorCode());
163136
}
164137

0 commit comments

Comments
 (0)