mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-20 18:29:23 +00:00
sem: Split sem::Variable into global, local and parameter
Each of these may contain information specific to their kind. Change-Id: Ic8ac808088132b7bc2e43da6ce46a06571e0fed5 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/59200 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ryan Harrison <rharrison@chromium.org> Reviewed-by: James Price <jrprice@google.com>
This commit is contained in:
@@ -18,39 +18,15 @@
|
||||
#include <vector>
|
||||
|
||||
#include "src/sem/node.h"
|
||||
#include "src/sem/parameter_usage.h"
|
||||
#include "src/sem/sampler_type.h"
|
||||
#include "src/sem/variable.h"
|
||||
#include "src/utils/hash.h"
|
||||
|
||||
namespace tint {
|
||||
|
||||
namespace sem {
|
||||
// Forward declarations
|
||||
class Type;
|
||||
|
||||
/// Parameter describes a single parameter of a call target
|
||||
struct Parameter {
|
||||
/// Parameter type
|
||||
sem::Type* const type;
|
||||
/// Parameter usage
|
||||
ParameterUsage const usage = ParameterUsage::kNone;
|
||||
};
|
||||
|
||||
std::ostream& operator<<(std::ostream& out, Parameter parameter);
|
||||
|
||||
/// Equality operator for Parameters
|
||||
static inline bool operator==(const Parameter& a, const Parameter& b) {
|
||||
return a.type == b.type && a.usage == b.usage;
|
||||
}
|
||||
|
||||
/// Inequality operator for Parameters
|
||||
static inline bool operator!=(const Parameter& a, const Parameter& b) {
|
||||
return !(a == b);
|
||||
}
|
||||
|
||||
/// ParameterList is a list of Parameter
|
||||
using ParameterList = std::vector<Parameter>;
|
||||
|
||||
/// @param parameters the list of parameters
|
||||
/// @param usage the parameter usage to find
|
||||
/// @returns the index of the parameter with the given usage, or -1 if no
|
||||
@@ -85,19 +61,4 @@ class CallTarget : public Castable<CallTarget, Node> {
|
||||
} // namespace sem
|
||||
} // namespace tint
|
||||
|
||||
namespace std {
|
||||
|
||||
/// Custom std::hash specialization for tint::sem::Parameter
|
||||
template <>
|
||||
class hash<tint::sem::Parameter> {
|
||||
public:
|
||||
/// @param p the tint::sem::Parameter to create a hash for
|
||||
/// @return the hash value
|
||||
inline std::size_t operator()(const tint::sem::Parameter& p) const {
|
||||
return tint::utils::Hash(p.type, p.usage);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace std
|
||||
|
||||
#endif // SRC_SEM_CALL_TARGET_H_
|
||||
|
||||
Reference in New Issue
Block a user