@effekt-lang/effekt 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/effekt +0 -0
- package/libraries/common/array.effekt +66 -8
- package/libraries/common/bytearray.effekt +40 -8
- package/libraries/common/ref.effekt +62 -9
- package/libraries/common/stringbuffer.effekt +15 -3
- package/libraries/llvm/main.c +0 -2
- package/licenses/eclipse public license, version 2.0 - epl-2.0.html +2 -2
- package/licenses/mit license - mit-license.html +109 -87
- package/licenses/the bsd license - bsd-license.html +109 -87
- package/licenses/the mit license - mit.html +110 -86
- package/package.json +1 -1
- package/libraries/llvm/array.c +0 -57
- package/libraries/llvm/ref.c +0 -47
package/package.json
CHANGED
package/libraries/llvm/array.c
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
#ifndef EFFEKT_ARRAY_C
|
|
2
|
-
#define EFFEKT_ARRAY_C
|
|
3
|
-
|
|
4
|
-
/** We represent arrays like positive types.
|
|
5
|
-
* The tag is 0 and the obj points to memory with the following layout:
|
|
6
|
-
*
|
|
7
|
-
* +--[ Header ]--+------+------------+
|
|
8
|
-
* | Rc | Eraser | Size | Fields ... |
|
|
9
|
-
* +--------------+------+------------+
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
void c_array_erase_fields(void *envPtr) {
|
|
13
|
-
uint64_t *sizePtr = envPtr;
|
|
14
|
-
struct Pos *dataPtr = envPtr + sizeof(uint64_t);
|
|
15
|
-
uint64_t size = *sizePtr;
|
|
16
|
-
for (uint64_t i = 0; i < size; i++) {
|
|
17
|
-
erasePositive(dataPtr[i]);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
struct Pos c_array_new(const Int size) {
|
|
22
|
-
void *objPtr = calloc(sizeof(struct Header) + sizeof(uint64_t) + size * sizeof(struct Pos), 1);
|
|
23
|
-
struct Header *headerPtr = objPtr;
|
|
24
|
-
uint64_t *sizePtr = objPtr + sizeof(struct Header);
|
|
25
|
-
*headerPtr = (struct Header) { .rc = 0, .eraser = c_array_erase_fields, };
|
|
26
|
-
*sizePtr = size;
|
|
27
|
-
return (struct Pos) {
|
|
28
|
-
.tag = 0,
|
|
29
|
-
.obj = objPtr,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
Int c_array_size(const struct Pos arr) {
|
|
34
|
-
uint64_t *sizePtr = arr.obj + sizeof(struct Header);
|
|
35
|
-
uint64_t size = *sizePtr;
|
|
36
|
-
erasePositive(arr);
|
|
37
|
-
return size;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
struct Pos c_array_get(const struct Pos arr, const Int index) {
|
|
41
|
-
struct Pos *dataPtr = arr.obj + sizeof(struct Header) + sizeof(uint64_t);
|
|
42
|
-
struct Pos element = dataPtr[index];
|
|
43
|
-
sharePositive(element);
|
|
44
|
-
erasePositive(arr);
|
|
45
|
-
return element;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
struct Pos c_array_set(const struct Pos arr, const Int index, const struct Pos value) {
|
|
49
|
-
struct Pos *dataPtr = arr.obj + sizeof(struct Header) + sizeof(uint64_t);
|
|
50
|
-
struct Pos element = dataPtr[index];
|
|
51
|
-
erasePositive(element);
|
|
52
|
-
dataPtr[index] = value;
|
|
53
|
-
erasePositive(arr);
|
|
54
|
-
return Unit;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
#endif
|
package/libraries/llvm/ref.c
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
#ifndef EFFEKT_REF_C
|
|
2
|
-
#define EFFEKT_REF_C
|
|
3
|
-
|
|
4
|
-
/** We represent references like positive types.
|
|
5
|
-
* The tag is 0 and the obj points to memory with the following layout:
|
|
6
|
-
*
|
|
7
|
-
* +--[ Header ]--------------+------------+
|
|
8
|
-
* | ReferenceCount | Eraser | Field |
|
|
9
|
-
* +--------------------------+------------+
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
void c_ref_erase_field(void *envPtr) {
|
|
13
|
-
struct Pos *fieldPtr = envPtr;
|
|
14
|
-
struct Pos element = *fieldPtr;
|
|
15
|
-
erasePositive(element);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
struct Pos c_ref_fresh(const struct Pos value) {
|
|
19
|
-
void *objPtr = malloc(sizeof(struct Header) + sizeof(struct Pos));
|
|
20
|
-
struct Header *headerPtr = objPtr;
|
|
21
|
-
struct Pos *fieldPtr = objPtr + sizeof(struct Header);
|
|
22
|
-
*headerPtr = (struct Header) { .rc = 0, .eraser = c_ref_erase_field, };
|
|
23
|
-
*fieldPtr = value;
|
|
24
|
-
return (struct Pos) {
|
|
25
|
-
.tag = 0,
|
|
26
|
-
.obj = objPtr,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
struct Pos c_ref_get(const struct Pos ref) {
|
|
31
|
-
struct Pos *fieldPtr = ref.obj + sizeof(struct Header);
|
|
32
|
-
struct Pos element = *fieldPtr;
|
|
33
|
-
sharePositive(element);
|
|
34
|
-
erasePositive(ref);
|
|
35
|
-
return element;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
struct Pos c_ref_set(const struct Pos ref, const struct Pos value) {
|
|
39
|
-
struct Pos *fieldPtr = ref.obj + sizeof(struct Header);
|
|
40
|
-
struct Pos element = *fieldPtr;
|
|
41
|
-
erasePositive(element);
|
|
42
|
-
*fieldPtr = value;
|
|
43
|
-
erasePositive(ref);
|
|
44
|
-
return Unit;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
#endif
|