- struct value *(*la_read_var_value) (struct symbol *var,
- const struct block *var_block,
- struct frame_info *frame);
-
- /* PC is possibly an unknown languages trampoline.
- If that PC falls in a trampoline belonging to this language,
- return the address of the first pc in the real function, or 0
- if it isn't a language tramp for this language. */
- CORE_ADDR (*skip_trampoline) (struct frame_info *, CORE_ADDR);
-
- /* Now come some hooks for lookup_symbol. */
-
- /* If this is non-NULL, specifies the name that of the implicit
- local variable that refers to the current object instance. */
-
- const char *la_name_of_this;
-
- /* This is a function that lookup_symbol will call when it gets to
- the part of symbol lookup where C looks up static and global
- variables. */
-
- struct block_symbol (*la_lookup_symbol_nonlocal)
- (const struct language_defn *,
- const char *,
- const struct block *,
- const domain_enum);
-
- /* Find the definition of the type with the given name. */
- struct type *(*la_lookup_transparent_type) (const char *);
-
- /* Return demangled language symbol, or NULL. */
- char *(*la_demangle) (const char *mangled, int options);
-
- /* Demangle a symbol according to this language's rules. Unlike
- la_demangle, this does not take any options.
-
- *DEMANGLED will be set by this function.
-
- If this function returns 0, then *DEMANGLED must always be set
- to NULL.
-
- If this function returns 1, the implementation may set this to
- a xmalloc'd string holding the demangled form. However, it is
- not required to. The string, if any, is owned by the caller.
-
- The resulting string should be of the form that will be
- installed into a symbol. */
- int (*la_sniff_from_mangled_name) (const char *mangled, char **demangled);
-
- /* Return class name of a mangled method name or NULL. */
- char *(*la_class_name_from_physname) (const char *physname);
-
- /* Table for printing expressions. */
-
- const struct op_print *la_op_print_tab;
-
- /* Zero if the language has first-class arrays. True if there are no
- array values, and array objects decay to pointers, as in C. */
-
- char c_style_arrays;
-
- /* Index to use for extracting the first element of a string. */
- char string_lower_bound;
-
- /* The list of characters forming word boundaries. */
- const char *(*la_word_break_characters) (void);
-
- /* Add to the completion tracker all symbols which are possible
- completions for TEXT. WORD is the entire command on which the
- completion is being made. If CODE is TYPE_CODE_UNDEF, then all
- symbols should be examined; otherwise, only STRUCT_DOMAIN
- symbols whose type has a code of CODE should be matched. */
- void (*la_collect_symbol_completion_matches)
- (completion_tracker &tracker,
- complete_symbol_mode mode,
- const char *text,
- const char *word,
- enum type_code code);
-
- /* The per-architecture (OS/ABI) language information. */
- void (*la_language_arch_info) (struct gdbarch *,
- struct language_arch_info *);
-
- /* Print the index of an element of an array. */
- void (*la_print_array_index) (struct value *index_value,
- struct ui_file *stream,
- const struct value_print_options *options);
-
- /* Return non-zero if TYPE should be passed (and returned) by
- reference at the language level. */
- int (*la_pass_by_reference) (struct type *type);
-
- /* Obtain a string from the inferior, storing it in a newly allocated
- buffer in BUFFER, which should be freed by the caller. If the
- in- and out-parameter *LENGTH is specified at -1, the string is
- read until a null character of the appropriate width is found -
- otherwise the string is read to the length of characters specified.
- On completion, *LENGTH will hold the size of the string in characters.
- If a *LENGTH of -1 was specified it will count only actual
- characters, excluding any eventual terminating null character.
- Otherwise *LENGTH will include all characters - including any nulls.
- CHARSET will hold the encoding used in the string. */
- void (*la_get_string) (struct value *value, gdb_byte **buffer, int *length,
- struct type **chartype, const char **charset);
-
- /* Return an expression that can be used for a location
- watchpoint. TYPE is a pointer type that points to the memory
- to watch, and ADDR is the address of the watched memory. */
- gdb::unique_xmalloc_ptr<char> (*la_watch_location_expression)
- (struct type *type, CORE_ADDR addr);
-
- /* Return a pointer to the function that should be used to match
- a symbol name against LOOKUP_NAME. This is mostly for languages
- such as Ada where the matching algorithm depends on LOOKUP_NAME.
-
- This field may be NULL, in which case strcmp_iw will be used
- to perform the matching. */
- symbol_name_cmp_ftype (*la_get_symbol_name_cmp) (const char *lookup_name);
-
- /* Find all symbols in the current program space matching NAME in
- DOMAIN, according to this language's rules.
-
- The search is done in BLOCK only.
- The caller is responsible for iterating up through superblocks
- if desired.
-
- For each one, call CALLBACK with the symbol. If CALLBACK
- returns false, the iteration ends at that point.
-
- This field may not be NULL. If the language does not need any
- special processing here, 'iterate_over_symbols' should be
- used as the definition. */
- void (*la_iterate_over_symbols)
- (const struct block *block, const char *name, domain_enum domain,
- gdb::function_view<symbol_found_callback_ftype> callback);
-
- /* Various operations on varobj. */
- const struct lang_varobj_ops *la_varobj_ops;
-
- /* If this language allows compilation from the gdb command line,
- this method should be non-NULL. When called it should return
- an instance of struct gcc_context appropriate to the language.
- When defined this method must never return NULL; instead it
- should throw an exception on failure. The returned compiler
- instance is owned by its caller and must be deallocated by
- calling its 'destroy' method. */
-
- struct compile_instance *(*la_get_compile_instance) (void);
-
- /* This method must be defined if 'la_get_gcc_context' is defined.
- If 'la_get_gcc_context' is not defined, then this method is
- ignored.
-
- This takes the user-supplied text and returns a new bit of code
- to compile.
-
- INST is the compiler instance being used.
- INPUT is the user's input text.
- GDBARCH is the architecture to use.
- EXPR_BLOCK is the block in which the expression is being
- parsed.
- EXPR_PC is the PC at which the expression is being parsed. */
-
- std::string (*la_compute_program) (struct compile_instance *inst,
- const char *input,
- struct gdbarch *gdbarch,
- const struct block *expr_block,
- CORE_ADDR expr_pc);