dynamiC  0.1
dynamic_set.c
Go to the documentation of this file.
1 
15 #include "dynamic.h"
16 
17 #ifdef S2_SET
18 
30 {
31  if (dyn_set_list_len(dyn, len)) {
32  dyn->type = SET;
33  return DYN_TRUE;
34  }
35  return DYN_FALSE;
36 }
37 
49 {
50  dyn_c rslt;
51  DYN_INIT(&rslt);
52  dyn_set_ref(&rslt, element);
53 
54  if (dyn_op_in(&rslt, set)) {
55  if (!dyn_get_bool(&rslt)) {
56  return dyn_list_push(set, element) ? DYN_TRUE : DYN_FALSE;
57  }
58  }
59 
60  return DYN_TRUE;
61 }
62 
63 #endif
represents boolean false
Definition: dynamic_types.h:23
represents boolean true
Definition: dynamic_types.h:24
trilean dyn_set_set_len(dyn_c *dyn, const dyn_ushort len)
Initialize dynamic element as empty set with maximal length.
Definition: dynamic_set.c:29
trilean dyn_set_insert(dyn_c *set, dyn_c *element)
Insert new element into set, if and only if it is not included yet.
Definition: dynamic_set.c:48
Dynamic data types as part of the SelectScript-VM implementation.
trilean dyn_op_in(dyn_c *element, dyn_c *container)
Check if dyn2 is element of dyn1.
Definition: dynamic_op.c:949
set of type dyn_list
Definition: dynamic_types.h:68
#define DYN_INIT(dyn)
Mandatory initialization for dynamic elements (NONE)
Definition: dynamic.h:38
trilean dyn_get_bool(const dyn_c *dyn)
Return boolean value of an dynamic element.
Definition: dynamic.c:241
uint16_t dyn_ushort
16bit unsigned integer
Definition: dynamic_types.h:43
dyn_c * dyn_list_push(dyn_c *list, const dyn_c *element)
Push new element to the end of a list.
Definition: dynamic_list.c:124
trilean
basic return type for truth values
Definition: dynamic_types.h:22
void dyn_set_ref(dyn_c *ref, dyn_c *orig)
Set dynamic element as reference to another dynamic element.
Definition: dynamic.c:149
char type
type definition
trilean dyn_set_list_len(dyn_c *dyn, dyn_ushort len)
Set dynamic element to list with maximal length.
Definition: dynamic_list.c:37
Basic container for dynamic data types.
Definition: dynamic_types.h:98