Files
revng-revng/include/revng/Model/NamingConfiguration.h
T
Pietro Fezzardi 0426c773b2 CABIFunctionDefinition: drop array argument/return
This commit bans from the model array types in as argument or return
types in CABIFunctionDefinition.
CABIFunctionDefinition implies we're decompiling towards C, and C does
not support array arguments (passed by copy) nor array return types.

Banning these from the model reduces the number of situations where we
have to emit artificial array wrappers (not present in the model) around
types when printing C code, simplifying the handling of such situations
when translating to clift and in general in the decompilation pipeline.
2025-05-28 17:11:11 +02:00

142 lines
3.8 KiB
C++

#pragma once
//
// This file is distributed under the MIT License. See LICENSE.md for details.
//
#include "revng/Model/Generated/Early/NamingConfiguration.h"
class model::NamingConfiguration
: public model::generated::NamingConfiguration {
public:
using generated::NamingConfiguration::NamingConfiguration;
// TODO: remove these after the support the default TTG values is added.
llvm::StringRef unnamedSegmentPrefix() const {
if (UnnamedSegmentPrefix().empty())
return "segment_";
else
return UnnamedSegmentPrefix();
}
llvm::StringRef unnamedDynamicFunctionPrefix() const {
if (UnnamedDynamicFunctionPrefix().empty())
return "dynamic_function_";
else
return UnnamedDynamicFunctionPrefix();
}
llvm::StringRef unnamedFunctionPrefix() const {
if (UnnamedFunctionPrefix().empty())
return "function_";
else
return UnnamedFunctionPrefix();
}
llvm::StringRef unnamedTypeDefinitionPrefix() const {
if (UnnamedTypeDefinitionPrefix().empty())
return "";
else
return UnnamedTypeDefinitionPrefix();
}
llvm::StringRef unnamedEnumEntryPrefix() const {
if (UnnamedEnumEntryPrefix().empty())
return "enum_entry_";
else
return UnnamedEnumEntryPrefix();
}
llvm::StringRef unnamedStructFieldPrefix() const {
if (UnnamedStructFieldPrefix().empty())
return "offset_";
else
return UnnamedStructFieldPrefix();
}
llvm::StringRef unnamedUnionFieldPrefix() const {
if (UnnamedUnionFieldPrefix().empty())
return "member_";
else
return UnnamedUnionFieldPrefix();
}
llvm::StringRef unnamedFunctionArgumentPrefix() const {
if (UnnamedFunctionArgumentPrefix().empty())
return "argument_";
else
return UnnamedFunctionArgumentPrefix();
}
llvm::StringRef unnamedFunctionRegisterPrefix() const {
if (UnnamedFunctionRegisterPrefix().empty())
return "register_";
else
return UnnamedFunctionRegisterPrefix();
}
llvm::StringRef unnamedLocalVariablePrefix() const {
if (UnnamedLocalVariablePrefix().empty())
return "var_";
else
return UnnamedLocalVariablePrefix();
}
llvm::StringRef unnamedBreakFromLoopVariablePrefix() const {
if (UnnamedBreakFromLoopVariablePrefix().empty())
return "break_from_loop_";
else
return UnnamedBreakFromLoopVariablePrefix();
}
llvm::StringRef undefinedValuePrefix() const {
if (UndefinedValuePrefix().empty())
return "undef_";
else
return UndefinedValuePrefix();
}
llvm::StringRef opaqueCSVValuePrefix() const {
if (OpaqueCSVValuePrefix().empty())
return "revng_undefined_";
else
return OpaqueCSVValuePrefix();
}
llvm::StringRef maximumEnumValuePrefix() const {
if (MaximumEnumValuePrefix().empty())
return "enum_max_value_";
else
return MaximumEnumValuePrefix();
}
llvm::StringRef stackFrameVariableName() const {
if (StackFrameVariableName().empty())
return "stack";
else
return StackFrameVariableName();
}
llvm::StringRef rawStackArgumentName() const {
if (RawStackArgumentName().empty())
return "stack_arguments";
else
return RawStackArgumentName();
}
llvm::StringRef loopStateVariableName() const {
if (LoopStateVariableName().empty())
return "loop_state_var";
else
return LoopStateVariableName();
}
llvm::StringRef structPaddingPrefix() const {
if (StructPaddingPrefix().empty())
return "padding_at_";
else
return StructPaddingPrefix();
}
llvm::StringRef artificialReturnValuePrefix() const {
if (ArtificialReturnValuePrefix().empty())
return "artificial_struct_returned_by_";
else
return ArtificialReturnValuePrefix();
}
};
#include "revng/Model/Generated/Late/NamingConfiguration.h"