aboutsummaryrefslogtreecommitdiff
path: root/gfsm/gfsm/src/libgfsm/tests/arytest2.c
blob: ebef7f53f63403c97cb3067157c0f3edbc3a73cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <glib.h>
#include <stdio.h>
#include <stdlib.h>

void print_array(const char *label, GArray *a) {
  int i;
  printf("Array %s: {", label);
  for (i=0; i < a->len; i++) {
    printf(" %d", g_array_index(a,int,i));
  }
  printf(" }\n");
}

gint compare_int(int *x, int *y) {
  return (*x)-(*y);
  //return (*x < *y ? -1 : (*x > *y ? 1 : 0));
}

int main (int argc, char **argv) {
  GArray *a1, *a2;
  int i, val;

  a1 = g_array_new(FALSE, TRUE, sizeof(int));
  a2 = g_array_new(FALSE, TRUE, sizeof(int));
  for (i=1; i < argc; i++) {
    val = strtol(argv[i],NULL,10);
    g_array_append_val(a1,val);
  }
  print_array("a1", a1);

  //-- insert(0,0)
  val = 0;
  g_array_insert_val(a1,0,val);
  printf("--\n");
  print_array("a1/insert(0,0)",a1);

  //-- copy a1 into a2
  g_array_append_vals(a2,a1->data,a1->len);
  print_array("a2", a2);
  printf("--\n");

  //-- move elements of a1 up one notch
  /*-- NOT ok
  g_array_insert_vals(a1, 1, a1->data, a1->len-1);
  g_array_index(a1,int,0) = 0;
  */

  /*-- ok */
  i = 0;
  g_array_insert_val(a1,0,i);
  print_array("a1/moved", a1);
  printf("--\n");

  //-- sort
  //g_array_sort(a1,NULL); //-- NOT ok
  g_array_sort(a1,(GCompareFunc)compare_int); //-- ok
  print_array("a1/sorted", a1);

  g_array_free(a1,TRUE);
  g_array_free(a2,TRUE);

  return 0;
}