+gdb::unique_xmalloc_ptr<char>
+language_defn::watch_location_expression (struct type *type,
+ CORE_ADDR addr) const
+{
+ /* Generates an expression that assumes a C like syntax is valid. */
+ type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
+ std::string name = type_to_string (type);
+ return gdb::unique_xmalloc_ptr<char>
+ (xstrprintf ("* (%s *) %s", name.c_str (), core_addr_to_string (addr)));
+}
+
+/* See language.h. */
+
+void
+language_defn::value_print (struct value *val, struct ui_file *stream,
+ const struct value_print_options *options) const
+{
+ return c_value_print (val, stream, options);
+}
+
+/* See language.h. */
+
+int
+language_defn::parser (struct parser_state *ps) const
+{
+ return c_parse (ps);
+}
+
+/* See language.h. */
+
+void
+language_defn::value_print_inner
+ (struct value *val, struct ui_file *stream, int recurse,
+ const struct value_print_options *options) const
+{
+ return c_value_print_inner (val, stream, recurse, options);
+}
+
+/* See language.h. */
+
+void
+language_defn::emitchar (int ch, struct type *chtype,
+ struct ui_file * stream, int quoter) const
+{
+ c_emit_char (ch, chtype, stream, quoter);
+}
+
+/* See language.h. */
+
+void
+language_defn::printstr (struct ui_file *stream, struct type *elttype,
+ const gdb_byte *string, unsigned int length,
+ const char *encoding, int force_ellipses,
+ const struct value_print_options *options) const
+{
+ c_printstr (stream, elttype, string, length, encoding, force_ellipses,
+ options);
+}
+
+/* See language.h. */
+
+void
+language_defn::print_typedef (struct type *type, struct symbol *new_symbol,
+ struct ui_file *stream) const
+{
+ c_print_typedef (type, new_symbol, stream);
+}
+
+/* See language.h. */
+