xref: /llvm-project/lldb/test/API/python_api/value/main.c (revision 3707c540d23a5684a1c37b0f7e41c1d8ed7f1f8a)
199451b44SJordan Rupprecht #include <stdio.h>
299451b44SJordan Rupprecht #include <stdint.h>
399451b44SJordan Rupprecht 
499451b44SJordan Rupprecht // This simple program is to test the lldb Python API SBValue.GetChildAtIndex().
599451b44SJordan Rupprecht 
699451b44SJordan Rupprecht int g_my_int = 100;
799451b44SJordan Rupprecht 
899451b44SJordan Rupprecht const char *days_of_week[7] = { "Sunday",
999451b44SJordan Rupprecht                                 "Monday",
1099451b44SJordan Rupprecht                                 "Tuesday",
1199451b44SJordan Rupprecht                                 "Wednesday",
1299451b44SJordan Rupprecht                                 "Thursday",
1399451b44SJordan Rupprecht                                 "Friday",
1499451b44SJordan Rupprecht                                 "Saturday" };
1599451b44SJordan Rupprecht 
1699451b44SJordan Rupprecht const char *weekdays[5] = { "Monday",
1799451b44SJordan Rupprecht                             "Tuesday",
1899451b44SJordan Rupprecht                             "Wednesday",
1999451b44SJordan Rupprecht                             "Thursday",
2099451b44SJordan Rupprecht                             "Friday" };
2199451b44SJordan Rupprecht 
2299451b44SJordan Rupprecht const char **g_table[2] = { days_of_week, weekdays };
2399451b44SJordan Rupprecht 
2499451b44SJordan Rupprecht typedef int MyInt;
2599451b44SJordan Rupprecht 
2699451b44SJordan Rupprecht struct MyStruct
2799451b44SJordan Rupprecht {
2899451b44SJordan Rupprecht   int a;
2999451b44SJordan Rupprecht   int b;
3099451b44SJordan Rupprecht };
3199451b44SJordan Rupprecht 
32f05e2fb0SJim Ingham struct MyBiggerStruct
33f05e2fb0SJim Ingham {
34f05e2fb0SJim Ingham   int a;
35f05e2fb0SJim Ingham   int b;
36f05e2fb0SJim Ingham   int c;
37f05e2fb0SJim Ingham };
38f05e2fb0SJim Ingham 
39*3707c540Sjimingham struct Container
40*3707c540Sjimingham {
41*3707c540Sjimingham   int discriminator;
42*3707c540Sjimingham   union Data {
43*3707c540Sjimingham     struct MyStruct small;
44*3707c540Sjimingham     struct MyBiggerStruct big;
45*3707c540Sjimingham   } data;
46*3707c540Sjimingham };
47*3707c540Sjimingham 
main(int argc,char const * argv[])4899451b44SJordan Rupprecht int main (int argc, char const *argv[])
4999451b44SJordan Rupprecht {
5099451b44SJordan Rupprecht     uint32_t uinthex = 0xE0A35F10;
5199451b44SJordan Rupprecht     int32_t  sinthex = 0xE0A35F10;
5299451b44SJordan Rupprecht 
5399451b44SJordan Rupprecht     int i;
5499451b44SJordan Rupprecht     MyInt a = 12345;
5599451b44SJordan Rupprecht     struct MyStruct s = {11, 22};
56f05e2fb0SJim Ingham     struct MyBiggerStruct f = { 33, 44, 55 };
57*3707c540Sjimingham     struct Container my_container;
58*3707c540Sjimingham     my_container.data.big = f;
5999451b44SJordan Rupprecht     int *my_int_ptr = &g_my_int;
6099451b44SJordan Rupprecht     printf("my_int_ptr points to location %p\n", my_int_ptr);
61710276a2SWalter Erquinigo     int *fixed_int_ptr = (int*)(void*)0xAA;
62710276a2SWalter Erquinigo     int *another_fixed_int_ptr = (int*)(void*)0xAA;
63710276a2SWalter Erquinigo     int *a_null_int_ptr = NULL;
6499451b44SJordan Rupprecht     const char **str_ptr = days_of_week;
6599451b44SJordan Rupprecht     for (i = 0; i < 7; ++i)
6699451b44SJordan Rupprecht         printf("%s\n", str_ptr[i]); // Break at this line
6799451b44SJordan Rupprecht                                     // and do str_ptr_val.GetChildAtIndex(5, lldb.eNoDynamicValues, True).
6899451b44SJordan Rupprecht 
6999451b44SJordan Rupprecht     return 0;
7099451b44SJordan Rupprecht }
71