README 1.39 KB
Newer Older
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
Embryo of documentation. More details on http://wiki.cs.lth.se/moin/LabComm

*** The LabComm data description language: ***

Primitive types

  sample boolean a_boolean;
  sample byte a_byte;
  sample short a_short;
  sample int an_int;
  sample long a_long;
  sample float a_float;
  sample double a_double;
  sample string a_string;


Arrays

  sample int fixed_array[3];
  sample int variable_array[_];                // Note 1
  sample int fixed_array_of_array[3][4];       // Note 2
  sample int fixed_rectangular_array[3, 4];    // Note 2
  sample int variable_array_of_array[_][_];    // Notes 1 & 2
  sample int variable_rectangular_array[_, _]; // Notes 1 & 2

1 In contrast to C, LabComm supports both fixed and variable (denoted by '_') sized arrays.
2 In contrast to Java, LabComm supports multidimensional arrays and not only arrays of arrays. 


Structures

  sample struct {
    int an_int_field;
    double a_double_field;
  } a_struct;


User defined types

  typedef struct {
    int field_1;
    byte field_2;
  } user_type[_];
  sample user_type a_user_type_instance;
  sample user_type another_user_type_instance;


Example sample declaration (e.g. example.lc)

  sample struct {
    int sequence;
    struct {
      boolean last;
      string data;
    } line[_];
  } log_message;

From an .lc file, the labcomm compiler can generate marshalling and demarshalling code
for C, Java, Python, and C#.