File: tstring_list_ops.c

package info (click to toggle)
sollya 8.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 17,592 kB
  • sloc: ansic: 124,655; yacc: 7,543; lex: 2,440; makefile: 888; cpp: 77
file content (52 lines) | stat: -rw-r--r-- 1,783 bytes parent folder | download | duplicates (4)
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
#include <sollya.h>
#include <stdlib.h>
#include <string.h>

char *tstring_list_ops_make_char_ptr(char *x) {
  char *res;

  res = (char *) calloc(strlen(x) + 1, sizeof(char));
  if (res == NULL) exit(1);
  
  strcpy(res, x);

  return res;
}

int main(void) {
  sollya_string_list_t list1, iter, list2;
  char *a, *b, *c, *d, *e;
  int i;

  sollya_lib_init();

  a = tstring_list_ops_make_char_ptr("of");
  b = tstring_list_ops_make_char_ptr("milk");
  c = tstring_list_ops_make_char_ptr("and");
  d = tstring_list_ops_make_char_ptr("honey");
  e = tstring_list_ops_make_char_ptr("land"); 
  
  list1 = sollya_lib_construct_string_list(a, sollya_lib_construct_string_list(b, sollya_lib_construct_string_list(c, sollya_lib_construct_string_list(d, NULL))));
  
  for (iter = list1, i = 0; !sollya_lib_is_empty_string_list(iter); iter = sollya_lib_get_string_list_tail(iter), i++) {
    sollya_lib_printf("%d-th element in list1 before copy and modification of the copy: \"%s\"\n", i, sollya_lib_get_string_list_head(iter));
  }

  list2 = sollya_lib_copy_string_list(list1);
  list2 = sollya_lib_construct_string_list(e, list2);
  
  for (iter = list1, i = 0; !sollya_lib_is_empty_string_list(iter); iter = sollya_lib_get_string_list_tail(iter), i++) {
    sollya_lib_printf("%d-th element in list1 after copy and modification of the copy: \"%s\"\n", i, sollya_lib_get_string_list_head(iter));
  }

  for (iter = list2, i = 0; !sollya_lib_is_empty_string_list(iter); iter = sollya_lib_get_string_list_tail(iter), i++) {
    sollya_lib_printf("%d-th element in list2 after copy and modification of the copy: \"%s\"\n", i, sollya_lib_get_string_list_head(iter));
  }

  sollya_lib_clear_string_list(list1);
  sollya_lib_clear_string_list(list2);

  sollya_lib_close();

  return 0;
}