return NULL;
}
+/* Return non-zero if TYPE should be passed (and returned) by
+ reference at the language level. */
+int
+language_pass_by_reference (struct type *type)
+{
+ return current_language->la_pass_by_reference (type);
+}
+
+/* Return zero; by default, types are passed by value at the language
+ level. The target ABI may pass or return some structs by reference
+ independent of this. */
+int
+default_pass_by_reference (struct type *type)
+{
+ return 0;
+}
+
/* Return the default string containing the list of characters
delimiting words. This is a reasonable default value that
most languages should be able to use. */
{
"unknown",
language_unknown,
- NULL,
range_check_off,
type_check_off,
array_row_major,
unk_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */
- NULL,
default_word_break_characters,
unknown_language_arch_info, /* la_language_arch_info. */
default_print_array_index,
+ default_pass_by_reference,
LANG_MAGIC
};
{
"auto",
language_auto,
- NULL,
range_check_off,
type_check_off,
array_row_major,
unk_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */
- NULL,
default_word_break_characters,
unknown_language_arch_info, /* la_language_arch_info. */
default_print_array_index,
+ default_pass_by_reference,
LANG_MAGIC
};
{
"local",
language_auto,
- NULL,
range_check_off,
type_check_off,
case_sensitive_on,
unk_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */
- NULL,
default_word_break_characters,
unknown_language_arch_info, /* la_language_arch_info. */
default_print_array_index,
+ default_pass_by_reference,
LANG_MAGIC
};
\f
{
struct language_gdbarch *ld = gdbarch_data (gdbarch,
language_gdbarch_data);
- if (ld->arch_info[la->la_language].string_char_type != NULL)
- return ld->arch_info[la->la_language].string_char_type;
- else
- return (*la->string_char_type);
+ return ld->arch_info[la->la_language].string_char_type;
}
struct type *
{
struct language_gdbarch *ld = gdbarch_data (gdbarch,
language_gdbarch_data);
- if (ld->arch_info[la->la_language].primitive_type_vector != NULL)
- {
- struct type *const *p;
- for (p = ld->arch_info[la->la_language].primitive_type_vector;
- (*p) != NULL;
- p++)
- {
- if (strcmp (TYPE_NAME (*p), name) == 0)
- return (*p);
- }
- }
- else
+ struct type *const *p;
+ for (p = ld->arch_info[la->la_language].primitive_type_vector;
+ (*p) != NULL;
+ p++)
{
- struct type **const *p;
- for (p = current_language->la_builtin_type_vector; *p != NULL; p++)
- {
- if (strcmp (TYPE_NAME (**p), name) == 0)
- return (**p);
- }
+ if (strcmp (TYPE_NAME (*p), name) == 0)
+ return (*p);
}
return (NULL);
}