1#ifndef ROSE_BinaryAnalysis_InstructionSemantics_DescriptorParser_H
2#define ROSE_BinaryAnalysis_InstructionSemantics_DescriptorParser_H
4#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h>
5#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/SValue.h>
12namespace BinaryAnalysis {
13namespace InstructionSemantics {
23 ValueKind kind = ValueKind::Invalid;
24 std::string descriptor;
27 return kind == ValueKind::Invalid && descriptor ==
"V";
30 bool isReference()
const {
31 return kind == ValueKind::ObjectReference ||
32 kind == ValueKind::ArrayReference;
35 bool isCategory2()
const {
36 return kind == ValueKind::Integer64 ||
37 kind == ValueKind::Float64;
43 std::vector<DescriptorType> arguments;
64 static DescriptorType parseType(
const std::string&,
size_t &pos,
bool allowVoid);
Parser for JVM field and method descriptors.
static DescriptorType parseFieldDescriptor(const std::string &)
Parse one complete JVM field descriptor.
static MethodDescriptor parseMethodDescriptor(const std::string &)
Parse one complete JVM method descriptor.
ValueKind
Kind of an SValue for emulating JVM and CIL instructions.
A parsed JVM descriptor type.
A parsed JVM method descriptor.
size_t argumentSlotCount() const
Number of local-variable slots occupied by explicit arguments.