Added Args::StringForEncoding(), Args::StringToGenericRegister() and centralized the parsing of the string to encoding and string to generic register.
Added code the initialize the register context in the OperatingSystemPython plug-in with the new PythonData classes, and added a test OperatingSystemPython module in lldb/examples/python/operating_system.py that we can use for testing.
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@162530 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Interpreter/Args.cpp b/source/Interpreter/Args.cpp
index 5b3b679..63bcb87 100644
--- a/source/Interpreter/Args.cpp
+++ b/source/Interpreter/Args.cpp
@@ -1007,6 +1007,60 @@
return error;
}
+lldb::Encoding
+Args::StringToEncoding (const char *s, lldb::Encoding fail_value)
+{
+ if (s && s[0])
+ {
+ if (strcmp(s, "uint") == 0)
+ return eEncodingUint;
+ else if (strcmp(s, "sint") == 0)
+ return eEncodingSint;
+ else if (strcmp(s, "ieee754") == 0)
+ return eEncodingIEEE754;
+ else if (strcmp(s, "vector") == 0)
+ return eEncodingVector;
+ }
+ return fail_value;
+}
+
+uint32_t
+Args::StringToGenericRegister (const char *s)
+{
+ if (s && s[0])
+ {
+ if (strcmp(s, "pc") == 0)
+ return LLDB_REGNUM_GENERIC_PC;
+ else if (strcmp(s, "sp") == 0)
+ return LLDB_REGNUM_GENERIC_SP;
+ else if (strcmp(s, "fp") == 0)
+ return LLDB_REGNUM_GENERIC_FP;
+ else if (strcmp(s, "ra") == 0)
+ return LLDB_REGNUM_GENERIC_RA;
+ else if (strcmp(s, "flags") == 0)
+ return LLDB_REGNUM_GENERIC_FLAGS;
+ else if (strncmp(s, "arg", 3) == 0)
+ {
+ if (s[3] && s[4] == '\0')
+ {
+ switch (s[3])
+ {
+ case '1': return LLDB_REGNUM_GENERIC_ARG1;
+ case '2': return LLDB_REGNUM_GENERIC_ARG2;
+ case '3': return LLDB_REGNUM_GENERIC_ARG3;
+ case '4': return LLDB_REGNUM_GENERIC_ARG4;
+ case '5': return LLDB_REGNUM_GENERIC_ARG5;
+ case '6': return LLDB_REGNUM_GENERIC_ARG6;
+ case '7': return LLDB_REGNUM_GENERIC_ARG7;
+ case '8': return LLDB_REGNUM_GENERIC_ARG8;
+ }
+ }
+ }
+ }
+ return LLDB_INVALID_REGNUM;
+}
+
+
void
Args::LongestCommonPrefix (std::string &common_prefix)
{