gerbv
selection.c
Go to the documentation of this file.
1 /*
2  * gEDA - GNU Electronic Design Automation
3  *
4  * selection.c -- this file is a part of gerbv.
5  *
6  * Copyright (C) 2014 Sergey Alyoshin <alyoshin.s@gmail.com>
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License as published by the Free
10  * Software Foundation; either version 2 of the License, or (at your option)
11  * any later version.
12  *
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16  * more details.
17  *
18  * You should have received a copy of the GNU General Public License along with
19  * this program; if not, write to the Free Software Foundation, Inc., 51
20  * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22 
28 #include "gerbv.h"
29 
30 GArray *selection_new_array (void)
31 {
32  return g_array_new (FALSE, FALSE, sizeof (gerbv_selection_item_t));
33 }
34 
35 gchar *selection_free_array (gerbv_selection_info_t *sel_info)
36 {
37  return g_array_free (sel_info->selectedNodeArray, FALSE);
38 }
39 
40 guint selection_length (gerbv_selection_info_t *sel_info)
41 {
42  return sel_info->selectedNodeArray->len;
43 }
44 
45 gerbv_selection_item_t selection_get_item_by_index (
46  gerbv_selection_info_t *sel_info, guint idx)
47 {
48  return g_array_index (sel_info->selectedNodeArray,
49  gerbv_selection_item_t, idx);
50 }
51 
52 void selection_clear_item_by_index (
53  gerbv_selection_info_t *sel_info, guint idx)
54 {
55  g_array_remove_index (sel_info->selectedNodeArray, idx);
56 }
57 
58 void selection_clear (gerbv_selection_info_t *sel_info)
59 {
60  if (selection_length(sel_info))
61  g_array_remove_range (sel_info->selectedNodeArray, 0,
62  sel_info->selectedNodeArray->len);
63 }
64 
65 void selection_add_item (gerbv_selection_info_t *sel_info,
66  gerbv_selection_item_t *item)
67 {
68  g_array_append_val (sel_info->selectedNodeArray, *item);
69 }
The main header file for the libgerbv library.