namespace cpp_namespace {
  struct CppStruct {
    int field = 1111;

    int function() {
      return 2222;
    }
  };

  union CppUnion {
    char field_char;
    short field_short;
    int field_int;
  };

  CppStruct GetCppStruct() {
    return CppStruct();
  }

  CppStruct global;

  CppStruct *GetCppStructPtr() {
    return &global;
  }
}

int global = 3333;

int main()
{
  cpp_namespace::CppStruct cpp_struct = cpp_namespace::GetCppStruct();
  cpp_struct.function();

  int field = 4444;

  cpp_namespace::CppUnion cpp_union;
  cpp_union.field_int = 5555;

  int cpp_scalar = 6666;

  cpp_namespace::CppStruct cpp_array[16];

  cpp_namespace::CppStruct *cpp_pointer = cpp_namespace::GetCppStructPtr();

  return 0; // Break here
}
