struct target_type *dm_get_target_type(const char *name) { struct target_type *tt = get_target_type(name); if (!tt) { load_module(name); tt = get_target_type(name); } return tt; }
static void adjust_value_for_child_access (struct value **value, struct type **type, int *was_ptr, int lookup_actual_type) { gdb_assert (type && *type); if (was_ptr) *was_ptr = 0; *type = check_typedef (*type); /* The type of value stored in varobj, that is passed to us, is already supposed to be reference-stripped. */ gdb_assert (TYPE_CODE (*type) != TYPE_CODE_REF); /* Pointers to structures are treated just like structures when accessing children. Don't dererences pointers to other types. */ if (TYPE_CODE (*type) == TYPE_CODE_PTR) { struct type *target_type = get_target_type (*type); if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT || TYPE_CODE (target_type) == TYPE_CODE_UNION) { if (value && *value) { TRY { *value = value_ind (*value); } CATCH (except, RETURN_MASK_ERROR) { *value = NULL; } END_CATCH } *type = target_type; if (was_ptr) *was_ptr = 1; } }
int main(int argc, char *argv[]) { IAnjutaProject *project = NULL; AnjutaProjectNode *node; AnjutaProjectNode *child; AnjutaProjectNode *sibling; AnjutaProjectNode *root = NULL; char **command; GOptionContext *context; GError *error = NULL; /* Initialize program */ g_type_init (); /* Parse options */ context = g_option_context_new ("list [args]"); g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); g_option_context_set_summary (context, "test new autotools project manger"); if (!g_option_context_parse (context, &argc, &argv, &error)) { exit (1); } if (argc < 2) { printf ("PROJECT: %s", g_option_context_get_help (context, TRUE, NULL)); exit (1); } open_output (); /* Execute commands */ for (command = &argv[1]; *command != NULL; command++) { if (g_ascii_strcasecmp (*command, "load") == 0) { GFile *file = g_file_new_for_commandline_arg (*(++command)); if (project == NULL) { gint best = 0; gint probe; GType type; GTypeModule *module; /* Register project types */ module = g_object_new (dummy_type_module_get_type (), NULL); amp_project_register (module); /* Check for project type */ probe = amp_project_probe (file, NULL); if (probe > best) { best = probe; type = AMP_TYPE_PROJECT; } if (best == 0) { print_error ("Error: No backend for loading project in %s", *command); break; } else { project = IANJUTA_PROJECT (amp_project_new (file, NULL, NULL)); } } root = ianjuta_project_get_root (project, &error); ianjuta_project_load_node (project, root, &error); g_object_unref (file); } else if (g_ascii_strcasecmp (*command, "list") == 0) { list_root (project, root); } else if (g_ascii_strcasecmp (*command, "move") == 0) { if (AMP_IS_PROJECT (project)) { amp_project_move (AMP_PROJECT (project), *(++command)); } } else if (g_ascii_strcasecmp (*command, "save") == 0) { ianjuta_project_save_node (project, root, NULL); } else if (g_ascii_strcasecmp (*command, "remove") == 0) { node = get_node (project, root, *(++command)); ianjuta_project_remove_node (project, node, NULL); } else if (g_ascii_strcasecmp (*command, "dump") == 0) { if (g_ascii_strcasecmp (command[1], "makefile") == 0) { node = get_node (project, root, command[2]); amp_project_dump (AMP_PROJECT (project), node, DUMP_MAKEFILE); command +=2; } else if (g_ascii_strcasecmp (command[1], "configure") == 0) { amp_project_dump (AMP_PROJECT (project), root, DUMP_CONFIGURE); command +=1; } else { print_error ("Error: unknown command %s %s", *command, command[1]); break; } } else if (g_ascii_strcasecmp (command[0], "add") == 0) { node = get_node (project, root, command[2]); if (g_ascii_strcasecmp (command[1], "group") == 0) { if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "before") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_before (project, node, sibling, ANJUTA_PROJECT_GROUP, NULL, command[3], &error); command += 2; } else if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "after") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_after (project, node, sibling, ANJUTA_PROJECT_GROUP, NULL, command[3], &error); command += 2; } else { child = ianjuta_project_add_node_before (project, node, NULL, ANJUTA_PROJECT_GROUP, NULL, command[3], &error); } } else if (g_ascii_strcasecmp (command[1], "target") == 0) { if ((command[5] != NULL) && (g_ascii_strcasecmp (command[5], "before") == 0)) { sibling = get_node (project, root, command[6]); child = ianjuta_project_add_node_before (project, node, sibling, ANJUTA_PROJECT_TARGET | get_target_type (project, command[4]), NULL, command[3], &error); command += 2; } else if ((command[5] != NULL) && (g_ascii_strcasecmp (command[5], "after") == 0)) { sibling = get_node (project, root, command[6]); child = ianjuta_project_add_node_after (project, node, sibling, ANJUTA_PROJECT_TARGET | get_target_type (project, command[4]), NULL, command[3], &error); command += 2; } else { child = ianjuta_project_add_node_before (project, node, NULL, ANJUTA_PROJECT_TARGET | get_target_type (project, command[4]), NULL, command[3], &error); } command++; } else if (g_ascii_strcasecmp (command[1], "source") == 0) { GFile *file = get_file (node, command[3]); if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "before") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_before (project, node, sibling, ANJUTA_PROJECT_SOURCE, file, NULL, &error); command += 2; } else if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "after") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_after (project, node, sibling, ANJUTA_PROJECT_SOURCE, file, NULL, &error); command += 2; } else { child = ianjuta_project_add_node_before (project, node, NULL, ANJUTA_PROJECT_SOURCE, file, NULL, &error); } g_object_unref (file); } else if (g_ascii_strcasecmp (command[1], "module") == 0) { if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "before") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_before (project, node, sibling, ANJUTA_PROJECT_MODULE, NULL, command[3], &error); command += 2; } else if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "after") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_after (project, node, sibling, ANJUTA_PROJECT_MODULE, NULL, command[3], &error); command += 2; } else { child = ianjuta_project_add_node_before (project, node, NULL, ANJUTA_PROJECT_MODULE, NULL, command[3], &error); } } else if (g_ascii_strcasecmp (command[1], "package") == 0) { if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "before") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_before (project, node, sibling, ANJUTA_PROJECT_PACKAGE, NULL, command[3], &error); command += 2; } else if ((command[4] != NULL) && (g_ascii_strcasecmp (command[4], "after") == 0)) { sibling = get_node (project, root, command[5]); child = ianjuta_project_add_node_after (project, node, sibling, ANJUTA_PROJECT_PACKAGE, NULL, command[3], &error); command += 2; } else { child = ianjuta_project_add_node_before (project, node, NULL, ANJUTA_PROJECT_PACKAGE, NULL, command[3], &error); } } else { print_error ("Error: unknown command %s", *command); break; } command += 3; } else if (g_ascii_strcasecmp (command[0], "set") == 0) { if (AMP_IS_PROJECT (project)) { AnjutaProjectPropertyInfo *info; node = get_node (project, root, command[1]); info = get_project_property (project, node, command[2]); if (info != NULL) { gchar *value = g_shell_unquote (command[3], NULL); ianjuta_project_set_property (project, node, info->id, NULL, value, NULL); g_free (value); } } command += 3; } else if (g_ascii_strcasecmp (command[0], "clear") == 0) { if (AMP_IS_PROJECT (project)) { AnjutaProjectPropertyInfo *info; node = get_node (project, root, command[1]); info = get_project_property (project, node, command[2]); if (info != NULL) { ianjuta_project_remove_property (project, node, info->id, NULL, NULL); } } command += 2; } else { print_error ("Error: unknown command %s", *command); break; } amp_project_wait_ready (project); if (error != NULL) { print_error ("Error: %s", error->message == NULL ? "unknown error" : error->message); g_error_free (error); error = NULL; } } /* Free objects */ if (project) g_object_unref (project); close_output (); return (0); }