skir-cc-gen 0.0.1
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/README.md +335 -0
- package/client/BUILD.bazel +33 -0
- package/client/MODULE.bazel +11 -0
- package/client/MODULE.bazel.lock +225 -0
- package/client/skir.cc +2687 -0
- package/client/skir.h +2946 -0
- package/client/skir.testing.h +282 -0
- package/dist/enum_field.d.ts +33 -0
- package/dist/enum_field.d.ts.map +1 -0
- package/dist/enum_field.js +85 -0
- package/dist/enum_field.js.map +1 -0
- package/dist/enum_variant.d.ts +31 -0
- package/dist/enum_variant.d.ts.map +1 -0
- package/dist/enum_variant.js +85 -0
- package/dist/enum_variant.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1627 -0
- package/dist/index.js.map +1 -0
- package/dist/keywords.d.ts +2 -0
- package/dist/keywords.d.ts.map +1 -0
- package/dist/keywords.js +101 -0
- package/dist/keywords.js.map +1 -0
- package/dist/recursivity_resolver.d.ts +58 -0
- package/dist/recursivity_resolver.d.ts.map +1 -0
- package/dist/recursivity_resolver.js +142 -0
- package/dist/recursivity_resolver.js.map +1 -0
- package/dist/type_speller.d.ts +17 -0
- package/dist/type_speller.d.ts.map +1 -0
- package/dist/type_speller.js +87 -0
- package/dist/type_speller.js.map +1 -0
- package/package.json +55 -0
- package/src/enum_variant.ts +126 -0
- package/src/index.ts +2089 -0
- package/src/keywords.ts +100 -0
- package/src/recursivity_resolver.ts +161 -0
- package/src/type_speller.ts +100 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keywords.d.ts","sourceRoot":"","sources":["../src/keywords.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,CAkG1C,CAAC"}
|
package/dist/keywords.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// From https://en.cppreference.com/w/cpp/keyword
|
|
2
|
+
export const CC_KEYWORDS = new Set([
|
|
3
|
+
"alignas",
|
|
4
|
+
"alignof",
|
|
5
|
+
"and",
|
|
6
|
+
"and_eq",
|
|
7
|
+
"asm",
|
|
8
|
+
"atomic_cancel",
|
|
9
|
+
"atomic_commit",
|
|
10
|
+
"atomic_noexcept",
|
|
11
|
+
"auto",
|
|
12
|
+
"bitand",
|
|
13
|
+
"bitor",
|
|
14
|
+
"bool",
|
|
15
|
+
"break",
|
|
16
|
+
"case",
|
|
17
|
+
"catch",
|
|
18
|
+
"char",
|
|
19
|
+
"char8_t",
|
|
20
|
+
"char16_t",
|
|
21
|
+
"char32_t",
|
|
22
|
+
"class",
|
|
23
|
+
"compl",
|
|
24
|
+
"concept",
|
|
25
|
+
"const",
|
|
26
|
+
"consteval",
|
|
27
|
+
"constexpr",
|
|
28
|
+
"constinit",
|
|
29
|
+
"const_cast",
|
|
30
|
+
"continue",
|
|
31
|
+
"co_await",
|
|
32
|
+
"co_return",
|
|
33
|
+
"co_yield",
|
|
34
|
+
"decltype",
|
|
35
|
+
"default",
|
|
36
|
+
"delete",
|
|
37
|
+
"do",
|
|
38
|
+
"double",
|
|
39
|
+
"dynamic_cast",
|
|
40
|
+
"else",
|
|
41
|
+
"enum",
|
|
42
|
+
"explicit",
|
|
43
|
+
"export",
|
|
44
|
+
"extern",
|
|
45
|
+
"false",
|
|
46
|
+
"float",
|
|
47
|
+
"for",
|
|
48
|
+
"friend",
|
|
49
|
+
"goto",
|
|
50
|
+
"if",
|
|
51
|
+
"inline",
|
|
52
|
+
"int",
|
|
53
|
+
"long",
|
|
54
|
+
"mutable",
|
|
55
|
+
"namespace",
|
|
56
|
+
"new",
|
|
57
|
+
"noexcept",
|
|
58
|
+
"not",
|
|
59
|
+
"not_eq",
|
|
60
|
+
"nullptr",
|
|
61
|
+
"operator",
|
|
62
|
+
"or",
|
|
63
|
+
"or_eq",
|
|
64
|
+
"private",
|
|
65
|
+
"protected",
|
|
66
|
+
"public",
|
|
67
|
+
"reflexpr",
|
|
68
|
+
"register",
|
|
69
|
+
"reinterpret_cast",
|
|
70
|
+
"requires",
|
|
71
|
+
"return",
|
|
72
|
+
"short",
|
|
73
|
+
"signed",
|
|
74
|
+
"sizeof",
|
|
75
|
+
"static",
|
|
76
|
+
"static_assert",
|
|
77
|
+
"static_cast",
|
|
78
|
+
"struct",
|
|
79
|
+
"switch",
|
|
80
|
+
"synchronized",
|
|
81
|
+
"template",
|
|
82
|
+
"this",
|
|
83
|
+
"thread_local",
|
|
84
|
+
"throw",
|
|
85
|
+
"true",
|
|
86
|
+
"try",
|
|
87
|
+
"typedef",
|
|
88
|
+
"typeid",
|
|
89
|
+
"typename",
|
|
90
|
+
"union",
|
|
91
|
+
"unsigned",
|
|
92
|
+
"using",
|
|
93
|
+
"virtual",
|
|
94
|
+
"void",
|
|
95
|
+
"volatile",
|
|
96
|
+
"wchar_t",
|
|
97
|
+
"while",
|
|
98
|
+
"xor",
|
|
99
|
+
"xor_eq",
|
|
100
|
+
]);
|
|
101
|
+
//# sourceMappingURL=keywords.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keywords.js","sourceRoot":"","sources":["../src/keywords.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,CAAC,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAS;IAC9D,SAAS;IACT,SAAS;IACT,KAAK;IACL,QAAQ;IACR,KAAK;IACL,eAAe;IACf,eAAe;IACf,iBAAiB;IACjB,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,SAAS;IACT,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,UAAU;IACV,UAAU;IACV,WAAW;IACX,UAAU;IACV,UAAU;IACV,SAAS;IACT,QAAQ;IACR,IAAI;IACJ,QAAQ;IACR,cAAc;IACd,MAAM;IACN,MAAM;IACN,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,KAAK;IACL,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,KAAK;IACL,MAAM;IACN,SAAS;IACT,WAAW;IACX,KAAK;IACL,UAAU;IACV,KAAK;IACL,QAAQ;IACR,SAAS;IACT,UAAU;IACV,IAAI;IACJ,OAAO;IACP,SAAS;IACT,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,kBAAkB;IAClB,UAAU;IACV,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,eAAe;IACf,aAAa;IACb,QAAQ;IACR,QAAQ;IACR,cAAc;IACd,UAAU;IACV,MAAM;IACN,cAAc;IACd,OAAO;IACP,MAAM;IACN,KAAK;IACL,SAAS;IACT,QAAQ;IACR,UAAU;IACV,OAAO;IACP,UAAU;IACV,OAAO;IACP,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,OAAO;IACP,KAAK;IACL,QAAQ;CACT,CAAC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Field, Module, RecordKey, RecordLocation } from "skir-internal";
|
|
2
|
+
/**
|
|
3
|
+
* In C++, a struct type can not refer to itself directly. The only way to create a
|
|
4
|
+
* recursive struct is to use pointers or containers which allocate their elements on
|
|
5
|
+
* the heap, e.g. `std::vector`. Neither `absl::optional` nor `absl::variant` qualify
|
|
6
|
+
* because they allocate the element on the stack.
|
|
7
|
+
*
|
|
8
|
+
* When generating C++ types from recursive Skir types, Skir uses `rec<T>` instead of
|
|
9
|
+
* `T` for the fields which cause the type to be recursive.
|
|
10
|
+
*
|
|
11
|
+
* Consider this example:
|
|
12
|
+
*
|
|
13
|
+
* struct Foo {
|
|
14
|
+
* bar: Bar;
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* struct Bar {
|
|
18
|
+
* foo: Foo?;
|
|
19
|
+
* x: int32;
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* Both Foo and Bar are recursive since Foo refers to Bar and Bar refers to Foo, so Foo
|
|
23
|
+
* indirectly refers to itself and so does Bar.
|
|
24
|
+
*
|
|
25
|
+
* This is the C++ code Skir generates:
|
|
26
|
+
* struct Foo;
|
|
27
|
+
* struct Bar;
|
|
28
|
+
*
|
|
29
|
+
* struct Foo {
|
|
30
|
+
* rec<Bar> bar;
|
|
31
|
+
* };
|
|
32
|
+
*
|
|
33
|
+
* struct Bar {
|
|
34
|
+
* absl::optional<Foo> foo;
|
|
35
|
+
* int32 x = 0;
|
|
36
|
+
* };
|
|
37
|
+
*
|
|
38
|
+
* Because the type of Foo:bar is `rec<Bar>` instead of `Bar`, Foo no longer refers to
|
|
39
|
+
* Bar and thus Foo no longer refers to itself, and Bar no longer refers to itself
|
|
40
|
+
* either: problem solved.
|
|
41
|
+
* The same outcome would have been reached by changing the type of Bar::foo instead of
|
|
42
|
+
* Foo::bar.
|
|
43
|
+
*
|
|
44
|
+
* This class finds the fields of the skir types which should have a `rec<...>` type in
|
|
45
|
+
* their C++ representation.
|
|
46
|
+
*/
|
|
47
|
+
export declare class RecursvityResolver {
|
|
48
|
+
private readonly recursiveFields;
|
|
49
|
+
/**
|
|
50
|
+
* All records declared in the module, reordered sp every record appears after its
|
|
51
|
+
* dependencies.
|
|
52
|
+
*/
|
|
53
|
+
readonly reorderedRecords: readonly RecordLocation[];
|
|
54
|
+
static resolve(recordMap: ReadonlyMap<RecordKey, RecordLocation>, module: Module): RecursvityResolver;
|
|
55
|
+
private constructor();
|
|
56
|
+
isRecursive(field: Field): boolean;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=recursivity_resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recursivity_resolver.d.ts","sourceRoot":"","sources":["../src/recursivity_resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,MAAM,EACN,SAAS,EACT,cAAc,EAEf,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBAAa,kBAAkB;IAuC3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,EAAE,SAAS,cAAc,EAAE;IA3CtD,MAAM,CAAC,OAAO,CACZ,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,EACjD,MAAM,EAAE,MAAM,GACb,kBAAkB;IAkCrB,OAAO;IASP,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CAGnC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In C++, a struct type can not refer to itself directly. The only way to create a
|
|
3
|
+
* recursive struct is to use pointers or containers which allocate their elements on
|
|
4
|
+
* the heap, e.g. `std::vector`. Neither `absl::optional` nor `absl::variant` qualify
|
|
5
|
+
* because they allocate the element on the stack.
|
|
6
|
+
*
|
|
7
|
+
* When generating C++ types from recursive Skir types, Skir uses `rec<T>` instead of
|
|
8
|
+
* `T` for the fields which cause the type to be recursive.
|
|
9
|
+
*
|
|
10
|
+
* Consider this example:
|
|
11
|
+
*
|
|
12
|
+
* struct Foo {
|
|
13
|
+
* bar: Bar;
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* struct Bar {
|
|
17
|
+
* foo: Foo?;
|
|
18
|
+
* x: int32;
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* Both Foo and Bar are recursive since Foo refers to Bar and Bar refers to Foo, so Foo
|
|
22
|
+
* indirectly refers to itself and so does Bar.
|
|
23
|
+
*
|
|
24
|
+
* This is the C++ code Skir generates:
|
|
25
|
+
* struct Foo;
|
|
26
|
+
* struct Bar;
|
|
27
|
+
*
|
|
28
|
+
* struct Foo {
|
|
29
|
+
* rec<Bar> bar;
|
|
30
|
+
* };
|
|
31
|
+
*
|
|
32
|
+
* struct Bar {
|
|
33
|
+
* absl::optional<Foo> foo;
|
|
34
|
+
* int32 x = 0;
|
|
35
|
+
* };
|
|
36
|
+
*
|
|
37
|
+
* Because the type of Foo:bar is `rec<Bar>` instead of `Bar`, Foo no longer refers to
|
|
38
|
+
* Bar and thus Foo no longer refers to itself, and Bar no longer refers to itself
|
|
39
|
+
* either: problem solved.
|
|
40
|
+
* The same outcome would have been reached by changing the type of Bar::foo instead of
|
|
41
|
+
* Foo::bar.
|
|
42
|
+
*
|
|
43
|
+
* This class finds the fields of the skir types which should have a `rec<...>` type in
|
|
44
|
+
* their C++ representation.
|
|
45
|
+
*/
|
|
46
|
+
export class RecursvityResolver {
|
|
47
|
+
static resolve(recordMap, module) {
|
|
48
|
+
const sortedRecords = [...module.records].sort((a, b) => {
|
|
49
|
+
const aKey = a.recordAncestors.map((r) => r.name).join(".");
|
|
50
|
+
const bKey = b.recordAncestors.map((r) => r.name).join(".");
|
|
51
|
+
return aKey.localeCompare(bKey, "en-US");
|
|
52
|
+
});
|
|
53
|
+
const recursiveFields = new Set();
|
|
54
|
+
const recordToDeps = new Map();
|
|
55
|
+
for (const record of sortedRecords) {
|
|
56
|
+
const recordDeps = new Set();
|
|
57
|
+
for (const field of record.record.fields) {
|
|
58
|
+
if (!field.type)
|
|
59
|
+
continue;
|
|
60
|
+
const depsCollector = new DepsCollector(recordMap, module.path, recursiveFields);
|
|
61
|
+
depsCollector.collect(field.type);
|
|
62
|
+
if (depsCollector.deps.has(record.record.key)) {
|
|
63
|
+
recursiveFields.add(field);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
depsCollector.deps.forEach((dep) => recordDeps.add(dep));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
recordToDeps.set(record.record.key, recordDeps);
|
|
70
|
+
}
|
|
71
|
+
const reorderedRecords = reorderRecords(sortedRecords, recordToDeps, recordMap);
|
|
72
|
+
return new RecursvityResolver(recursiveFields, reorderedRecords);
|
|
73
|
+
}
|
|
74
|
+
constructor(recursiveFields,
|
|
75
|
+
/**
|
|
76
|
+
* All records declared in the module, reordered sp every record appears after its
|
|
77
|
+
* dependencies.
|
|
78
|
+
*/
|
|
79
|
+
reorderedRecords) {
|
|
80
|
+
this.recursiveFields = recursiveFields;
|
|
81
|
+
this.reorderedRecords = reorderedRecords;
|
|
82
|
+
}
|
|
83
|
+
isRecursive(field) {
|
|
84
|
+
return this.recursiveFields.has(field);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
class DepsCollector {
|
|
88
|
+
constructor(recordMap, modulePath, recursiveFields) {
|
|
89
|
+
this.recordMap = recordMap;
|
|
90
|
+
this.modulePath = modulePath;
|
|
91
|
+
this.recursiveFields = recursiveFields;
|
|
92
|
+
this.deps = new Set();
|
|
93
|
+
}
|
|
94
|
+
collect(type) {
|
|
95
|
+
switch (type.kind) {
|
|
96
|
+
case "optional":
|
|
97
|
+
// absl::optional allocates its value on the stack.
|
|
98
|
+
this.collect(type.other);
|
|
99
|
+
break;
|
|
100
|
+
case "record": {
|
|
101
|
+
const recordKey = type.key;
|
|
102
|
+
const record = this.recordMap.get(recordKey);
|
|
103
|
+
// We only care about records declared in the module.
|
|
104
|
+
if (record.modulePath !== this.modulePath)
|
|
105
|
+
break;
|
|
106
|
+
if (this.deps.has(recordKey))
|
|
107
|
+
break;
|
|
108
|
+
this.deps.add(recordKey);
|
|
109
|
+
// Wrapper variants of enums are allocated on the heap.
|
|
110
|
+
if (record.record.recordType === "enum")
|
|
111
|
+
break;
|
|
112
|
+
for (const variant of record.record.fields) {
|
|
113
|
+
if (!variant.type)
|
|
114
|
+
continue;
|
|
115
|
+
if (this.recursiveFields.has(variant))
|
|
116
|
+
continue;
|
|
117
|
+
this.collect(variant.type);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function reorderRecords(inputRecords, recordToDeps, recordMap) {
|
|
124
|
+
const result = [];
|
|
125
|
+
const seenRecords = new Set();
|
|
126
|
+
function addRecord(record) {
|
|
127
|
+
const { key } = record.record;
|
|
128
|
+
if (seenRecords.has(key))
|
|
129
|
+
return;
|
|
130
|
+
seenRecords.add(key);
|
|
131
|
+
const deps = recordToDeps.get(key);
|
|
132
|
+
for (const dep of deps) {
|
|
133
|
+
addRecord(recordMap.get(dep));
|
|
134
|
+
}
|
|
135
|
+
result.push(record);
|
|
136
|
+
}
|
|
137
|
+
for (const record of inputRecords) {
|
|
138
|
+
addRecord(record);
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=recursivity_resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recursivity_resolver.js","sourceRoot":"","sources":["../src/recursivity_resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Module, RecordKey, RecordLocation, ResolvedType } from "skir-internal";
|
|
2
|
+
/**
|
|
3
|
+
* Transforms a type found in a `.skir` file into a C++ type.
|
|
4
|
+
*/
|
|
5
|
+
export declare class TypeSpeller {
|
|
6
|
+
readonly recordMap: ReadonlyMap<RecordKey, RecordLocation>;
|
|
7
|
+
private readonly origin;
|
|
8
|
+
private readonly includes;
|
|
9
|
+
constructor(recordMap: ReadonlyMap<RecordKey, RecordLocation>, origin: Module, includes: Set<string>);
|
|
10
|
+
getCcType(type: ResolvedType, opts?: {
|
|
11
|
+
fieldIsRecursive?: boolean;
|
|
12
|
+
forceNamespace?: boolean;
|
|
13
|
+
}): string;
|
|
14
|
+
}
|
|
15
|
+
export declare function modulePathToNamespace(path: string): string;
|
|
16
|
+
export declare function getClassName(record: RecordLocation): string;
|
|
17
|
+
//# sourceMappingURL=type_speller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type_speller.d.ts","sourceRoot":"","sources":["../src/type_speller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,SAAS,EACT,cAAc,EACd,YAAY,EACb,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,qBAAa,WAAW;IAEpB,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFhB,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;IAGxC,SAAS,CACP,IAAI,EAAE,YAAY,EAClB,IAAI,GAAE;QACJ,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;KACrB,GACL,MAAM;CAoEV;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAE3D"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transforms a type found in a `.skir` file into a C++ type.
|
|
3
|
+
*/
|
|
4
|
+
export class TypeSpeller {
|
|
5
|
+
constructor(recordMap, origin, includes) {
|
|
6
|
+
this.recordMap = recordMap;
|
|
7
|
+
this.origin = origin;
|
|
8
|
+
this.includes = includes;
|
|
9
|
+
}
|
|
10
|
+
getCcType(type, opts = {}) {
|
|
11
|
+
switch (type.kind) {
|
|
12
|
+
case "record": {
|
|
13
|
+
const record = this.recordMap.get(type.key);
|
|
14
|
+
let qualifiedName = getClassName(record);
|
|
15
|
+
if (record.modulePath !== this.origin.path || opts.forceNamespace) {
|
|
16
|
+
// The record is located in an imported module.
|
|
17
|
+
const path = record.modulePath;
|
|
18
|
+
if (record.modulePath !== this.origin.path) {
|
|
19
|
+
this.includes.add('"skirout/' + path.replace(/\.skir$/, '.h"'));
|
|
20
|
+
}
|
|
21
|
+
const namespace = modulePathToNamespace(path);
|
|
22
|
+
qualifiedName = `::${namespace}::${qualifiedName}`;
|
|
23
|
+
}
|
|
24
|
+
if (opts.fieldIsRecursive) {
|
|
25
|
+
return `::skir::rec<${qualifiedName}>`;
|
|
26
|
+
}
|
|
27
|
+
return qualifiedName;
|
|
28
|
+
}
|
|
29
|
+
case "array": {
|
|
30
|
+
const itemType = this.getCcType(type.item, opts);
|
|
31
|
+
const { key } = type;
|
|
32
|
+
if (key) {
|
|
33
|
+
const { path } = key;
|
|
34
|
+
let keyType = "";
|
|
35
|
+
for (const pathItem of path) {
|
|
36
|
+
const fieldName = pathItem.name.text;
|
|
37
|
+
const isLastField = pathItem === path.at(-1);
|
|
38
|
+
if (isLastField && key.keyType.kind === "record") {
|
|
39
|
+
keyType = `::skir::get_kind<${keyType}>`;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
keyType = `::skirout::get_${fieldName}<${keyType}>`;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return `::skir::keyed_items<${itemType}, ${keyType}>`;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return `::std::vector<${itemType}>`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
case "optional": {
|
|
52
|
+
const valueType = this.getCcType(type.other, opts);
|
|
53
|
+
return `::absl::optional<${valueType}>`;
|
|
54
|
+
}
|
|
55
|
+
case "primitive": {
|
|
56
|
+
const { primitive } = type;
|
|
57
|
+
switch (primitive) {
|
|
58
|
+
case "bool":
|
|
59
|
+
return "bool";
|
|
60
|
+
case "int32":
|
|
61
|
+
return "::int32_t";
|
|
62
|
+
case "int64":
|
|
63
|
+
return "::int64_t";
|
|
64
|
+
case "uint64":
|
|
65
|
+
return "::uint64_t";
|
|
66
|
+
case "float32":
|
|
67
|
+
return "float";
|
|
68
|
+
case "float64":
|
|
69
|
+
return "double";
|
|
70
|
+
case "timestamp":
|
|
71
|
+
return "::absl::Time";
|
|
72
|
+
case "string":
|
|
73
|
+
return "::std::string";
|
|
74
|
+
case "bytes":
|
|
75
|
+
return "::skir::ByteString";
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export function modulePathToNamespace(path) {
|
|
82
|
+
return "skirout_" + path.replace(/\.skir$/, "").replace("/", "_");
|
|
83
|
+
}
|
|
84
|
+
export function getClassName(record) {
|
|
85
|
+
return record.recordAncestors.map((r) => r.name.text).join("_");
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=type_speller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type_speller.js","sourceRoot":"","sources":["../src/type_speller.ts"],"names":[],"mappings":"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"}
|