IncludeCPP 4.0.2__py3-none-any.whl → 4.3.0__py3-none-any.whl
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.
- includecpp/CHANGELOG.md +142 -0
- includecpp/DOCUMENTATION.md +446 -0
- includecpp/__init__.py +1 -1
- includecpp/__init__.pyi +4 -1
- includecpp/cli/commands.py +700 -86
- includecpp/core/ai_integration.py +46 -13
- includecpp/core/cpp_api_extensions.pyi +350 -0
- includecpp/core/cssl/CSSL_DOCUMENTATION.md +1535 -1316
- includecpp/core/cssl/cssl_builtins.py +230 -23
- includecpp/core/cssl/cssl_languages.py +1757 -0
- includecpp/core/cssl/cssl_parser.py +967 -126
- includecpp/core/cssl/cssl_runtime.py +1133 -84
- includecpp/core/cssl/cssl_syntax.py +88 -4
- includecpp/core/cssl/cssl_types.py +361 -1
- includecpp/core/cssl_bridge.py +194 -8
- includecpp/core/cssl_bridge.pyi +148 -10
- includecpp/generator/parser.cpp +121 -4
- includecpp/generator/parser.h +6 -0
- includecpp/vscode/cssl/package.json +43 -1
- includecpp/vscode/cssl/syntaxes/cssl.tmLanguage.json +178 -19
- includecpp-4.3.0.dist-info/METADATA +277 -0
- {includecpp-4.0.2.dist-info → includecpp-4.3.0.dist-info}/RECORD +26 -22
- includecpp-4.0.2.dist-info/METADATA +0 -908
- {includecpp-4.0.2.dist-info → includecpp-4.3.0.dist-info}/WHEEL +0 -0
- {includecpp-4.0.2.dist-info → includecpp-4.3.0.dist-info}/entry_points.txt +0 -0
- {includecpp-4.0.2.dist-info → includecpp-4.3.0.dist-info}/licenses/LICENSE +0 -0
- {includecpp-4.0.2.dist-info → includecpp-4.3.0.dist-info}/top_level.txt +0 -0
includecpp/generator/parser.h
CHANGED
|
@@ -127,6 +127,7 @@ struct VariableBinding {
|
|
|
127
127
|
};
|
|
128
128
|
|
|
129
129
|
// v2.0: STRUCT() Bindings for Plain-Old-Data types
|
|
130
|
+
// v4.1.1: Added CONSTRUCTOR and METHOD support (same as CLASS)
|
|
130
131
|
struct StructBinding {
|
|
131
132
|
std::string module_name;
|
|
132
133
|
std::string struct_name;
|
|
@@ -135,6 +136,11 @@ struct StructBinding {
|
|
|
135
136
|
bool is_template = false;
|
|
136
137
|
std::string documentation;
|
|
137
138
|
|
|
139
|
+
// v4.1.1: CONSTRUCTOR and METHOD support for STRUCT (same as CLASS)
|
|
140
|
+
std::vector<ConstructorInfo> constructors;
|
|
141
|
+
std::vector<MethodSignature> method_signatures;
|
|
142
|
+
std::vector<std::string> methods; // Simple method names for backward compatibility
|
|
143
|
+
|
|
138
144
|
// Helper methods
|
|
139
145
|
std::string get_full_name() const {
|
|
140
146
|
return struct_name;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "cssl",
|
|
3
3
|
"displayName": "CSSL Language",
|
|
4
4
|
"description": "Professional syntax highlighting, snippets, and language support for CSSL scripts (.cssl, .cssl-pl, .cssl-mod)",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.7.1",
|
|
6
6
|
"publisher": "IncludeCPP",
|
|
7
7
|
"icon": "images/cssl.png",
|
|
8
8
|
"engines": {
|
|
@@ -151,6 +151,48 @@
|
|
|
151
151
|
"description": "Show output panel when running CSSL files"
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
+
},
|
|
155
|
+
"configurationDefaults": {
|
|
156
|
+
"editor.tokenColorCustomizations": {
|
|
157
|
+
"textMateRules": [
|
|
158
|
+
{
|
|
159
|
+
"scope": "storage.modifier.cssl",
|
|
160
|
+
"settings": {
|
|
161
|
+
"fontStyle": "italic"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"scope": "storage.modifier.extends.cssl",
|
|
166
|
+
"settings": {
|
|
167
|
+
"fontStyle": "italic"
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"scope": "storage.modifier.overwrites.cssl",
|
|
172
|
+
"settings": {
|
|
173
|
+
"fontStyle": "italic"
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"scope": "support.type.cssl",
|
|
178
|
+
"settings": {
|
|
179
|
+
"foreground": "#C586C0"
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"scope": "variable.other.declaration.cssl",
|
|
184
|
+
"settings": {
|
|
185
|
+
"foreground": "#9CDCFE"
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"scope": "variable.parameter.cssl",
|
|
190
|
+
"settings": {
|
|
191
|
+
"foreground": "#9CDCFE"
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
}
|
|
154
196
|
}
|
|
155
197
|
}
|
|
156
198
|
}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
{ "include": "#super-call" },
|
|
16
16
|
{ "include": "#sql-types" },
|
|
17
17
|
{ "include": "#keywords" },
|
|
18
|
+
{ "include": "#typed-declarations" },
|
|
18
19
|
{ "include": "#types" },
|
|
19
20
|
{ "include": "#function-modifiers" },
|
|
20
21
|
{ "include": "#injection-operators" },
|
|
@@ -211,17 +212,21 @@
|
|
|
211
212
|
{ "include": "#constructor-definition" },
|
|
212
213
|
{ "include": "#class-method-definition" },
|
|
213
214
|
{ "include": "#class-member-declaration" },
|
|
215
|
+
{ "include": "#typed-declarations" },
|
|
214
216
|
{ "include": "#types" },
|
|
217
|
+
{ "include": "#function-modifiers" },
|
|
215
218
|
{ "include": "#this-access" },
|
|
216
219
|
{ "include": "#captured-references" },
|
|
217
220
|
{ "include": "#global-references" },
|
|
218
221
|
{ "include": "#shared-references" },
|
|
222
|
+
{ "include": "#instance-references" },
|
|
219
223
|
{ "include": "#strings" },
|
|
220
224
|
{ "include": "#numbers" },
|
|
221
225
|
{ "include": "#keywords" },
|
|
222
226
|
{ "include": "#function-calls" },
|
|
223
227
|
{ "include": "#builtins" },
|
|
224
|
-
{ "include": "#operators" }
|
|
228
|
+
{ "include": "#operators" },
|
|
229
|
+
{ "include": "#constants" }
|
|
225
230
|
]
|
|
226
231
|
},
|
|
227
232
|
{
|
|
@@ -241,17 +246,21 @@
|
|
|
241
246
|
{ "include": "#constructor-definition" },
|
|
242
247
|
{ "include": "#class-method-definition" },
|
|
243
248
|
{ "include": "#class-member-declaration" },
|
|
249
|
+
{ "include": "#typed-declarations" },
|
|
244
250
|
{ "include": "#types" },
|
|
251
|
+
{ "include": "#function-modifiers" },
|
|
245
252
|
{ "include": "#this-access" },
|
|
246
253
|
{ "include": "#captured-references" },
|
|
247
254
|
{ "include": "#global-references" },
|
|
248
255
|
{ "include": "#shared-references" },
|
|
256
|
+
{ "include": "#instance-references" },
|
|
249
257
|
{ "include": "#strings" },
|
|
250
258
|
{ "include": "#numbers" },
|
|
251
259
|
{ "include": "#keywords" },
|
|
252
260
|
{ "include": "#function-calls" },
|
|
253
261
|
{ "include": "#builtins" },
|
|
254
|
-
{ "include": "#operators" }
|
|
262
|
+
{ "include": "#operators" },
|
|
263
|
+
{ "include": "#constants" }
|
|
255
264
|
]
|
|
256
265
|
},
|
|
257
266
|
{
|
|
@@ -267,17 +276,21 @@
|
|
|
267
276
|
{ "include": "#constructor-definition" },
|
|
268
277
|
{ "include": "#class-method-definition" },
|
|
269
278
|
{ "include": "#class-member-declaration" },
|
|
279
|
+
{ "include": "#typed-declarations" },
|
|
270
280
|
{ "include": "#types" },
|
|
281
|
+
{ "include": "#function-modifiers" },
|
|
271
282
|
{ "include": "#this-access" },
|
|
272
283
|
{ "include": "#captured-references" },
|
|
273
284
|
{ "include": "#global-references" },
|
|
274
285
|
{ "include": "#shared-references" },
|
|
286
|
+
{ "include": "#instance-references" },
|
|
275
287
|
{ "include": "#strings" },
|
|
276
288
|
{ "include": "#numbers" },
|
|
277
289
|
{ "include": "#keywords" },
|
|
278
290
|
{ "include": "#function-calls" },
|
|
279
291
|
{ "include": "#builtins" },
|
|
280
|
-
{ "include": "#operators" }
|
|
292
|
+
{ "include": "#operators" },
|
|
293
|
+
{ "include": "#constants" }
|
|
281
294
|
]
|
|
282
295
|
}
|
|
283
296
|
]
|
|
@@ -354,11 +367,42 @@
|
|
|
354
367
|
"class-member-declaration": {
|
|
355
368
|
"patterns": [
|
|
356
369
|
{
|
|
370
|
+
"comment": "Generic type member: datastruct<dynamic> Container;",
|
|
371
|
+
"name": "meta.member.generic.cssl",
|
|
372
|
+
"match": "(\\b(?:array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|tuple|set|queue))(<)([^>]+)(>)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
|
|
373
|
+
"captures": {
|
|
374
|
+
"1": { "name": "support.type.cssl" },
|
|
375
|
+
"2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
|
|
376
|
+
"3": { "name": "support.type.cssl" },
|
|
377
|
+
"4": { "name": "punctuation.definition.typeparameters.end.cssl" },
|
|
378
|
+
"5": { "name": "variable.other.declaration.cssl" }
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"comment": "Primitive type member: string ApiID;",
|
|
357
383
|
"name": "meta.member.cssl",
|
|
358
|
-
"match": "\\b(int|string|float|bool|dynamic|auto)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
|
|
384
|
+
"match": "\\b(int|string|float|bool|dynamic|auto|void|json|long|double)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
|
|
359
385
|
"captures": {
|
|
360
|
-
"1": { "name": "
|
|
361
|
-
"2": { "name": "variable.other.
|
|
386
|
+
"1": { "name": "support.type.cssl" },
|
|
387
|
+
"2": { "name": "variable.other.declaration.cssl" }
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"comment": "Container type member without generic: list items;",
|
|
392
|
+
"name": "meta.member.container.cssl",
|
|
393
|
+
"match": "\\b(array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|tuple|set|queue)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
|
|
394
|
+
"captures": {
|
|
395
|
+
"1": { "name": "support.type.cssl" },
|
|
396
|
+
"2": { "name": "variable.other.declaration.cssl" }
|
|
397
|
+
}
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"comment": "Primitive type member with assignment: string ApiID = value;",
|
|
401
|
+
"name": "meta.member.assigned.cssl",
|
|
402
|
+
"match": "\\b(int|string|float|bool|dynamic|auto|void|json|long|double)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*=",
|
|
403
|
+
"captures": {
|
|
404
|
+
"1": { "name": "support.type.cssl" },
|
|
405
|
+
"2": { "name": "variable.other.declaration.cssl" }
|
|
362
406
|
}
|
|
363
407
|
}
|
|
364
408
|
]
|
|
@@ -391,11 +435,11 @@
|
|
|
391
435
|
"patterns": [
|
|
392
436
|
{
|
|
393
437
|
"name": "keyword.control.cssl",
|
|
394
|
-
"match": "\\b(if|else|elif|while|for|foreach|in|range|switch|case|default|break|continue|return|try|catch|finally|throw)\\b"
|
|
438
|
+
"match": "\\b(if|else|elif|while|for|foreach|in|range|switch|case|default|break|continue|return|try|catch|finally|throw|except|always)\\b"
|
|
395
439
|
},
|
|
396
440
|
{
|
|
397
441
|
"name": "storage.type.class.cssl",
|
|
398
|
-
"match": "\\b(class|struct|structure|enum|interface)\\b"
|
|
442
|
+
"match": "\\b(class|struct|structure|enum|interface|bytearrayed)\\b"
|
|
399
443
|
},
|
|
400
444
|
{
|
|
401
445
|
"name": "storage.modifier.extends.cssl",
|
|
@@ -440,10 +484,65 @@
|
|
|
440
484
|
}
|
|
441
485
|
]
|
|
442
486
|
},
|
|
487
|
+
"typed-declarations": {
|
|
488
|
+
"patterns": [
|
|
489
|
+
{
|
|
490
|
+
"comment": "Generic type declaration: datastruct<dynamic> Container; or vector<int> items;",
|
|
491
|
+
"name": "meta.declaration.typed.generic.cssl",
|
|
492
|
+
"match": "(\\b(?:array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|tuple|set|queue))(<)([^>]+)(>)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
|
|
493
|
+
"captures": {
|
|
494
|
+
"1": { "name": "support.type.cssl" },
|
|
495
|
+
"2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
|
|
496
|
+
"3": { "name": "support.type.cssl" },
|
|
497
|
+
"4": { "name": "punctuation.definition.typeparameters.end.cssl" },
|
|
498
|
+
"5": { "name": "variable.other.declaration.cssl" }
|
|
499
|
+
}
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
"comment": "Primitive type declaration: string ID; or int count;",
|
|
503
|
+
"name": "meta.declaration.typed.primitive.cssl",
|
|
504
|
+
"match": "\\b(int|string|float|bool|void|json|dynamic|auto|long|double)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=[;=])",
|
|
505
|
+
"captures": {
|
|
506
|
+
"1": { "name": "support.type.cssl" },
|
|
507
|
+
"2": { "name": "variable.other.declaration.cssl" }
|
|
508
|
+
}
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
"comment": "Container type declaration without generic: list items;",
|
|
512
|
+
"name": "meta.declaration.typed.container.cssl",
|
|
513
|
+
"match": "\\b(array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|tuple|set|queue)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=[;=])",
|
|
514
|
+
"captures": {
|
|
515
|
+
"1": { "name": "support.type.cssl" },
|
|
516
|
+
"2": { "name": "variable.other.declaration.cssl" }
|
|
517
|
+
}
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
"comment": "Generic type in function parameter: func(datastruct<dynamic> param)",
|
|
521
|
+
"name": "meta.parameter.typed.generic.cssl",
|
|
522
|
+
"match": "(\\b(?:array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|tuple|set|queue))(<)([^>]+)(>)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=[,)])",
|
|
523
|
+
"captures": {
|
|
524
|
+
"1": { "name": "support.type.cssl" },
|
|
525
|
+
"2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
|
|
526
|
+
"3": { "name": "support.type.cssl" },
|
|
527
|
+
"4": { "name": "punctuation.definition.typeparameters.end.cssl" },
|
|
528
|
+
"5": { "name": "variable.parameter.cssl" }
|
|
529
|
+
}
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"comment": "Primitive type in function parameter: func(string name)",
|
|
533
|
+
"name": "meta.parameter.typed.primitive.cssl",
|
|
534
|
+
"match": "\\b(int|string|float|bool|void|json|dynamic|auto|long|double)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=[,)])",
|
|
535
|
+
"captures": {
|
|
536
|
+
"1": { "name": "support.type.cssl" },
|
|
537
|
+
"2": { "name": "variable.parameter.cssl" }
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
]
|
|
541
|
+
},
|
|
443
542
|
"types": {
|
|
444
543
|
"patterns": [
|
|
445
544
|
{
|
|
446
|
-
"name": "
|
|
545
|
+
"name": "support.type.cssl",
|
|
447
546
|
"match": "\\b(int|string|float|bool|void|json|dynamic|auto|long|double)\\b"
|
|
448
547
|
},
|
|
449
548
|
{
|
|
@@ -451,27 +550,63 @@
|
|
|
451
550
|
"name": "meta.generic.cssl",
|
|
452
551
|
"match": "(\\b(?:array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|tuple|set|queue))(<)([^>]+)(>)",
|
|
453
552
|
"captures": {
|
|
454
|
-
"1": { "name": "
|
|
553
|
+
"1": { "name": "support.type.cssl" },
|
|
455
554
|
"2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
|
|
456
|
-
"3": { "name": "
|
|
555
|
+
"3": { "name": "support.type.cssl" },
|
|
457
556
|
"4": { "name": "punctuation.definition.typeparameters.end.cssl" }
|
|
458
557
|
}
|
|
459
558
|
},
|
|
460
559
|
{
|
|
461
|
-
"name": "
|
|
560
|
+
"name": "support.type.cssl",
|
|
462
561
|
"match": "\\b(array|vector|stack|list|dictionary|dict|map|datastruct|dataspace|shuffled|iterator|combo|openquote|instance|tuple|set|queue)\\b"
|
|
463
562
|
},
|
|
464
563
|
{
|
|
465
|
-
"name": "
|
|
564
|
+
"name": "support.type.cssl",
|
|
466
565
|
"match": "\\bcombo\\s*<\\s*open\\s*&"
|
|
467
566
|
}
|
|
468
567
|
]
|
|
469
568
|
},
|
|
470
569
|
"function-modifiers": {
|
|
471
570
|
"patterns": [
|
|
571
|
+
{
|
|
572
|
+
"comment": "embedded keyword - italic, darker purple/magenta",
|
|
573
|
+
"name": "keyword.control.embedded.cssl",
|
|
574
|
+
"match": "\\b(embedded)\\s+(?=(class|[a-zA-Z_]))",
|
|
575
|
+
"captures": {
|
|
576
|
+
"1": { "name": "keyword.control.embedded.cssl" }
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
"comment": "embedded function/class name - same color as switch",
|
|
581
|
+
"name": "meta.embedded.definition.cssl",
|
|
582
|
+
"match": "\\b(embedded)\\s+(class\\s+)?([a-zA-Z_][a-zA-Z0-9_]*)",
|
|
583
|
+
"captures": {
|
|
584
|
+
"1": { "name": "keyword.control.embedded.cssl" },
|
|
585
|
+
"2": { "name": "storage.type.class.cssl" },
|
|
586
|
+
"3": { "name": "keyword.control.cssl" }
|
|
587
|
+
}
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
"comment": "open ParamName - ParamName in orange",
|
|
591
|
+
"name": "meta.open.parameter.cssl",
|
|
592
|
+
"match": "\\b(open)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
|
|
593
|
+
"captures": {
|
|
594
|
+
"1": { "name": "storage.modifier.cssl" },
|
|
595
|
+
"2": { "name": "constant.character.escape.infuse.cssl" }
|
|
596
|
+
}
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"comment": "switch(variable) - variable in orange",
|
|
600
|
+
"name": "meta.switch.expression.cssl",
|
|
601
|
+
"match": "\\b(switch)\\s*\\(\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\)",
|
|
602
|
+
"captures": {
|
|
603
|
+
"1": { "name": "keyword.control.cssl" },
|
|
604
|
+
"2": { "name": "constant.character.escape.infuse.cssl" }
|
|
605
|
+
}
|
|
606
|
+
},
|
|
472
607
|
{
|
|
473
608
|
"name": "storage.modifier.cssl",
|
|
474
|
-
"match": "\\b(undefined|open|closed|private|virtual|meta|super|sqlbased|protected|limited)\\b"
|
|
609
|
+
"match": "\\b(undefined|open|closed|private|virtual|meta|super|sqlbased|protected|limited|const|static|final|abstract|readonly)\\b"
|
|
475
610
|
}
|
|
476
611
|
]
|
|
477
612
|
},
|
|
@@ -619,24 +754,48 @@
|
|
|
619
754
|
"instance-references": {
|
|
620
755
|
"patterns": [
|
|
621
756
|
{
|
|
622
|
-
"comment": "instance<\"name\"> - shared instance
|
|
757
|
+
"comment": "instance<\"name\"> varName - shared instance declaration with variable",
|
|
758
|
+
"name": "meta.instance.declaration.cssl",
|
|
759
|
+
"match": "(\\binstance)(<)(\"[^\"]+\")(>)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
|
|
760
|
+
"captures": {
|
|
761
|
+
"1": { "name": "support.type.cssl" },
|
|
762
|
+
"2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
|
|
763
|
+
"3": { "name": "string.quoted.double.cssl" },
|
|
764
|
+
"4": { "name": "punctuation.definition.typeparameters.end.cssl" },
|
|
765
|
+
"5": { "name": "variable.other.declaration.cssl" }
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
"comment": "instance<Type> varName - shared instance declaration with type and variable",
|
|
770
|
+
"name": "meta.instance.declaration.cssl",
|
|
771
|
+
"match": "(\\binstance)(<)([a-zA-Z_][a-zA-Z0-9_]*)(>)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
|
|
772
|
+
"captures": {
|
|
773
|
+
"1": { "name": "support.type.cssl" },
|
|
774
|
+
"2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
|
|
775
|
+
"3": { "name": "support.type.cssl" },
|
|
776
|
+
"4": { "name": "punctuation.definition.typeparameters.end.cssl" },
|
|
777
|
+
"5": { "name": "variable.other.declaration.cssl" }
|
|
778
|
+
}
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
"comment": "instance<\"name\"> - shared instance reference without variable",
|
|
623
782
|
"name": "meta.instance.cssl",
|
|
624
783
|
"match": "(\\binstance)(<)(\"[^\"]+\")(>)",
|
|
625
784
|
"captures": {
|
|
626
|
-
"1": { "name": "
|
|
785
|
+
"1": { "name": "support.type.cssl" },
|
|
627
786
|
"2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
|
|
628
787
|
"3": { "name": "string.quoted.double.cssl" },
|
|
629
788
|
"4": { "name": "punctuation.definition.typeparameters.end.cssl" }
|
|
630
789
|
}
|
|
631
790
|
},
|
|
632
791
|
{
|
|
633
|
-
"comment": "instance<Type> - shared instance reference
|
|
792
|
+
"comment": "instance<Type> - shared instance reference without variable",
|
|
634
793
|
"name": "meta.instance.cssl",
|
|
635
794
|
"match": "(\\binstance)(<)([a-zA-Z_][a-zA-Z0-9_]*)(>)",
|
|
636
795
|
"captures": {
|
|
637
|
-
"1": { "name": "
|
|
796
|
+
"1": { "name": "support.type.cssl" },
|
|
638
797
|
"2": { "name": "punctuation.definition.typeparameters.begin.cssl" },
|
|
639
|
-
"3": { "name": "
|
|
798
|
+
"3": { "name": "support.type.cssl" },
|
|
640
799
|
"4": { "name": "punctuation.definition.typeparameters.end.cssl" }
|
|
641
800
|
}
|
|
642
801
|
}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: IncludeCPP
|
|
3
|
+
Version: 4.3.0
|
|
4
|
+
Summary: Professional C++ Python bindings with type-generic templates, pystubs and native threading
|
|
5
|
+
Home-page: https://github.com/liliassg/IncludeCPP
|
|
6
|
+
Author: Lilias Hatterscheidt
|
|
7
|
+
Author-email: Lilias Hatterscheidt <hatterscheidt.lilias@gmail.com>
|
|
8
|
+
License: MIT
|
|
9
|
+
Project-URL: Repository, https://github.com/liliassg/IncludeCPP
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/liliassg/IncludeCPP/issues
|
|
11
|
+
Keywords: c++,python,bindings,pybind11,template,performance,threading
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: C++
|
|
21
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
22
|
+
Classifier: Operating System :: OS Independent
|
|
23
|
+
Requires-Python: >=3.8
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: pybind11>=2.11.0
|
|
27
|
+
Requires-Dist: click>=8.0.0
|
|
28
|
+
Requires-Dist: typing-extensions>=4.0.0
|
|
29
|
+
Requires-Dist: requests>=2.28.0
|
|
30
|
+
Requires-Dist: colorama>=0.4.0
|
|
31
|
+
Dynamic: author
|
|
32
|
+
Dynamic: home-page
|
|
33
|
+
Dynamic: license-file
|
|
34
|
+
Dynamic: requires-python
|
|
35
|
+
|
|
36
|
+
# IncludeCPP
|
|
37
|
+
|
|
38
|
+
Use C++ code in Python. Write your C++ functions and classes, IncludeCPP generates the Python bindings automatically.
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pip install IncludeCPP
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Quick Start
|
|
45
|
+
|
|
46
|
+
### 1. Create a Project
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
mkdir myproject && cd myproject
|
|
50
|
+
includecpp init
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
This creates:
|
|
54
|
+
- `cpp.proj` - your project settings
|
|
55
|
+
- `include/` - put your C++ files here
|
|
56
|
+
- `plugins/` - binding files go here (auto-generated)
|
|
57
|
+
|
|
58
|
+
### 2. Write Some C++
|
|
59
|
+
|
|
60
|
+
Create `include/math.cpp`:
|
|
61
|
+
|
|
62
|
+
```cpp
|
|
63
|
+
namespace includecpp {
|
|
64
|
+
|
|
65
|
+
int add(int a, int b) {
|
|
66
|
+
return a + b;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
int multiply(int a, int b) {
|
|
70
|
+
return a * b;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Your code must be inside `namespace includecpp`. Everything outside is ignored.
|
|
77
|
+
|
|
78
|
+
### 3. Generate Bindings
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
includecpp plugin math include/math.cpp
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
This scans your C++ and creates `plugins/math.cp` with the binding instructions.
|
|
85
|
+
|
|
86
|
+
### 4. Build
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
includecpp rebuild
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Compiles your C++ into a Python module.
|
|
93
|
+
|
|
94
|
+
### 5. Use in Python
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
from includecpp import math
|
|
98
|
+
|
|
99
|
+
print(math.add(2, 3)) # 5
|
|
100
|
+
print(math.multiply(4, 5)) # 20
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Done. Your C++ code works in Python.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Classes
|
|
108
|
+
|
|
109
|
+
C++ classes work the same way:
|
|
110
|
+
|
|
111
|
+
```cpp
|
|
112
|
+
// include/calculator.cpp
|
|
113
|
+
#include <vector>
|
|
114
|
+
|
|
115
|
+
namespace includecpp {
|
|
116
|
+
|
|
117
|
+
class Calculator {
|
|
118
|
+
public:
|
|
119
|
+
Calculator() : result(0) {}
|
|
120
|
+
|
|
121
|
+
void add(int x) { result += x; }
|
|
122
|
+
void subtract(int x) { result -= x; }
|
|
123
|
+
int getResult() { return result; }
|
|
124
|
+
void reset() { result = 0; }
|
|
125
|
+
|
|
126
|
+
private:
|
|
127
|
+
int result;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Generate and build:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
includecpp plugin calculator include/calculator.cpp
|
|
137
|
+
includecpp rebuild
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Use in Python:
|
|
141
|
+
|
|
142
|
+
```python
|
|
143
|
+
from includecpp import calculator
|
|
144
|
+
|
|
145
|
+
calc = calculator.Calculator()
|
|
146
|
+
calc.add(10)
|
|
147
|
+
calc.add(5)
|
|
148
|
+
calc.subtract(3)
|
|
149
|
+
print(calc.getResult()) # 12
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Development Workflow
|
|
155
|
+
|
|
156
|
+
When you're actively working on your C++:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# Regenerate bindings AND rebuild in one command
|
|
160
|
+
includecpp auto math
|
|
161
|
+
|
|
162
|
+
# Fast rebuild (skips unchanged files, ~0.4s when nothing changed)
|
|
163
|
+
includecpp rebuild --fast
|
|
164
|
+
|
|
165
|
+
# Rebuild everything from scratch
|
|
166
|
+
includecpp rebuild --clean
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## CLI Commands
|
|
172
|
+
|
|
173
|
+
| Command | What it does |
|
|
174
|
+
|---------|-------------|
|
|
175
|
+
| `init` | Create project structure |
|
|
176
|
+
| `plugin <name> <file.cpp>` | Generate bindings from C++ |
|
|
177
|
+
| `auto <name>` | Regenerate bindings + rebuild |
|
|
178
|
+
| `rebuild` | Compile all modules |
|
|
179
|
+
| `rebuild --fast` | Fast incremental build |
|
|
180
|
+
| `rebuild --clean` | Full clean rebuild |
|
|
181
|
+
| `get <name>` | Show module's API |
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Project Configuration
|
|
186
|
+
|
|
187
|
+
The `cpp.proj` file controls your build:
|
|
188
|
+
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"project": "MyProject",
|
|
192
|
+
"include": "/include",
|
|
193
|
+
"plugins": "/plugins",
|
|
194
|
+
"compiler": {
|
|
195
|
+
"standard": "c++17",
|
|
196
|
+
"optimization": "O3"
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Plugin Files (.cp)
|
|
204
|
+
|
|
205
|
+
The `.cp` files tell IncludeCPP what to expose. They're auto-generated, but you can edit them:
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
SOURCE(calculator.cpp) calculator
|
|
209
|
+
|
|
210
|
+
PUBLIC(
|
|
211
|
+
calculator CLASS(Calculator) {
|
|
212
|
+
CONSTRUCTOR()
|
|
213
|
+
METHOD(add)
|
|
214
|
+
METHOD(subtract)
|
|
215
|
+
METHOD(getResult)
|
|
216
|
+
METHOD(reset)
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Common directives:
|
|
222
|
+
- `CLASS(Name)` - expose a class
|
|
223
|
+
- `METHOD(name)` - expose a method
|
|
224
|
+
- `FUNC(name)` - expose a function
|
|
225
|
+
- `FIELD(name)` - expose a member variable
|
|
226
|
+
- `CONSTRUCTOR()` or `CONSTRUCTOR(int, string)` - expose constructor
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Requirements
|
|
231
|
+
|
|
232
|
+
- Python 3.9+
|
|
233
|
+
- C++ compiler (g++, clang++, or MSVC)
|
|
234
|
+
- CMake
|
|
235
|
+
|
|
236
|
+
pybind11 is installed automatically.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## More Help
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
includecpp --doc # Full documentation
|
|
244
|
+
includecpp --changelog # Version history
|
|
245
|
+
includecpp <command> --help
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Experimental Features
|
|
251
|
+
|
|
252
|
+
IncludeCPP also includes experimental features that are still in development:
|
|
253
|
+
|
|
254
|
+
- **CSSL** - A scripting language for runtime code manipulation
|
|
255
|
+
- **AI Commands** - OpenAI-powered code analysis (`includecpp ai`)
|
|
256
|
+
- **CPPY** - Python to C++ conversion (`includecpp cppy`)
|
|
257
|
+
|
|
258
|
+
These are hidden by default. To enable them:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
includecpp settings
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Check "Enable Experimental Features" and save.
|
|
265
|
+
|
|
266
|
+
Warning: Experimental features may have bugs or breaking changes between versions.
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Issues
|
|
271
|
+
|
|
272
|
+
Report bugs at: https://github.com/liliassg/IncludeCPP/issues
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
includecpp bug # Quick bug report
|
|
276
|
+
includecpp update # Update to latest version
|
|
277
|
+
```
|