IncludeCPP 4.0.3__tar.gz → 4.2.5__tar.gz
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-4.0.3 → includecpp-4.2.5}/IncludeCPP.egg-info/PKG-INFO +101 -1
- {includecpp-4.0.3 → includecpp-4.2.5}/IncludeCPP.egg-info/SOURCES.txt +10 -1
- {includecpp-4.0.3 → includecpp-4.2.5}/MANIFEST.in +1 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/PKG-INFO +101 -1
- {includecpp-4.0.3 → includecpp-4.2.5}/README.md +101 -1
- includecpp-4.2.5/includecpp/CHANGELOG.md +228 -0
- includecpp-4.2.5/includecpp/DOCUMENTATION.md +644 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/__init__.py +1 -1
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/__init__.pyi +4 -1
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/cli/commands.py +700 -86
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/ai_integration.py +46 -13
- includecpp-4.2.5/includecpp/core/cpp_api_extensions.pyi +350 -0
- includecpp-4.2.5/includecpp/core/cssl/CSSL_DOCUMENTATION.md +1720 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl/cssl_builtins.py +101 -4
- includecpp-4.2.5/includecpp/core/cssl/cssl_languages.py +1757 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl/cssl_parser.py +626 -110
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl/cssl_runtime.py +710 -49
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl/cssl_syntax.py +88 -4
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl/cssl_types.py +31 -2
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/generator/parser.cpp +121 -4
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/generator/parser.h +6 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/vscode/cssl/syntaxes/cssl.tmLanguage.json +2 -2
- {includecpp-4.0.3 → includecpp-4.2.5}/pyproject.toml +2 -1
- {includecpp-4.0.3 → includecpp-4.2.5}/setup.py +2 -1
- includecpp-4.2.5/tests/test_multilang.py +511 -0
- includecpp-4.0.3/includecpp/core/cssl/CSSL_DOCUMENTATION.md +0 -1501
- {includecpp-4.0.3 → includecpp-4.2.5}/IncludeCPP.egg-info/dependency_links.txt +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/IncludeCPP.egg-info/entry_points.txt +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/IncludeCPP.egg-info/requires.txt +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/IncludeCPP.egg-info/top_level.txt +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/LICENSE +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/__main__.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/cli/__init__.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/cli/config_parser.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/__init__.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/build_manager.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cpp_api.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cpp_api.pyi +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cppy_converter.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl/CSSL_DOCUMENTATION_NEW.md +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl/__init__.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl/cssl_builtins.pyi +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl/cssl_events.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl/cssl_modules.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl_bridge.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/cssl_bridge.pyi +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/error_catalog.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/error_formatter.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/exceptions.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/path_discovery.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/project_ui.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/core/settings_ui.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/generator/__init__.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/generator/type_resolver.cpp +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/generator/type_resolver.h +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/py.typed +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/templates/cpp.proj.template +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/vscode/__init__.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/vscode/cssl/__init__.py +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/vscode/cssl/extension.js +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/vscode/cssl/images/cssl.png +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/vscode/cssl/images/cssl_pl.png +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/vscode/cssl/language-configuration.json +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/vscode/cssl/package.json +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/includecpp/vscode/cssl/snippets/cssl.snippets.json +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/requirements.txt +0 -0
- {includecpp-4.0.3 → includecpp-4.2.5}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: IncludeCPP
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.2.5
|
|
4
4
|
Summary: Professional C++ Python bindings with type-generic templates, pystubs and native threading
|
|
5
5
|
Home-page: https://github.com/liliassg/IncludeCPP
|
|
6
6
|
Author: Lilias Hatterscheidt
|
|
@@ -906,3 +906,103 @@ print(greeter.name) # "Python"
|
|
|
906
906
|
- `python::export(instance)` - Alias
|
|
907
907
|
|
|
908
908
|
All three do the same thing: wrap a CSSL class instance for Python use.
|
|
909
|
+
|
|
910
|
+
## Universal Instances (v4.0.3+)
|
|
911
|
+
|
|
912
|
+
Universal instances are shared containers accessible from CSSL, Python, and C++:
|
|
913
|
+
|
|
914
|
+
```python
|
|
915
|
+
from includecpp import CSSL
|
|
916
|
+
|
|
917
|
+
cssl = CSSL.CsslLang()
|
|
918
|
+
|
|
919
|
+
# Create in CSSL
|
|
920
|
+
cssl.run('''
|
|
921
|
+
instance<"myContainer"> container;
|
|
922
|
+
container.data = "Hello";
|
|
923
|
+
container.count = 42;
|
|
924
|
+
''')
|
|
925
|
+
|
|
926
|
+
# Access from Python
|
|
927
|
+
container = cssl.getInstance("myContainer")
|
|
928
|
+
print(container.data) # "Hello"
|
|
929
|
+
print(container.count) # 42
|
|
930
|
+
|
|
931
|
+
# Modify from Python
|
|
932
|
+
container.newValue = "Added from Python"
|
|
933
|
+
|
|
934
|
+
# Changes reflect in CSSL
|
|
935
|
+
cssl.run('''
|
|
936
|
+
instance<"myContainer"> c;
|
|
937
|
+
printl(c.newValue); // "Added from Python"
|
|
938
|
+
''')
|
|
939
|
+
```
|
|
940
|
+
|
|
941
|
+
### Instance Methods
|
|
942
|
+
|
|
943
|
+
```python
|
|
944
|
+
cssl.getInstance("name") # Get instance (None if not found)
|
|
945
|
+
cssl.createInstance("name") # Create or get instance
|
|
946
|
+
cssl.deleteInstance("name") # Delete instance
|
|
947
|
+
cssl.listInstances() # List all instance names
|
|
948
|
+
```
|
|
949
|
+
|
|
950
|
+
### Method Injection
|
|
951
|
+
|
|
952
|
+
Inject methods into instances using `+<<==`:
|
|
953
|
+
|
|
954
|
+
```cssl
|
|
955
|
+
instance<"api"> api;
|
|
956
|
+
|
|
957
|
+
// Inject a method
|
|
958
|
+
api +<<== {
|
|
959
|
+
void greet(string name) {
|
|
960
|
+
printl("Hello, " + name + "!");
|
|
961
|
+
}
|
|
962
|
+
};
|
|
963
|
+
|
|
964
|
+
api.greet("World"); // Hello, World!
|
|
965
|
+
```
|
|
966
|
+
|
|
967
|
+
## Simplified Module API (v4.0.2+)
|
|
968
|
+
|
|
969
|
+
Create CSSL modules from files with payload binding:
|
|
970
|
+
|
|
971
|
+
```python
|
|
972
|
+
from includecpp import CSSL
|
|
973
|
+
|
|
974
|
+
# Register payload from file
|
|
975
|
+
CSSL.makepayload("api", "lib/api/myapi.cssl-pl")
|
|
976
|
+
|
|
977
|
+
# Create module from file, binding to payload
|
|
978
|
+
mod = CSSL.makemodule("writer", "lib/writer.cssl", bind="api")
|
|
979
|
+
mod.SaySomething("Hello!") # Call functions directly
|
|
980
|
+
```
|
|
981
|
+
|
|
982
|
+
## VSCode Extension
|
|
983
|
+
|
|
984
|
+
IncludeCPP includes a VSCode extension for CSSL syntax highlighting.
|
|
985
|
+
|
|
986
|
+
### Installation
|
|
987
|
+
|
|
988
|
+
```bash
|
|
989
|
+
# Copy extension to VSCode extensions folder
|
|
990
|
+
# Windows: %USERPROFILE%\.vscode\extensions\
|
|
991
|
+
# Linux/Mac: ~/.vscode/extensions/
|
|
992
|
+
|
|
993
|
+
# Or install from included files
|
|
994
|
+
pip show includecpp # Find package location
|
|
995
|
+
# Copy vscode/cssl folder to extensions
|
|
996
|
+
```
|
|
997
|
+
|
|
998
|
+
### Features
|
|
999
|
+
|
|
1000
|
+
- Syntax highlighting for `.cssl`, `.cssl-pl`, `.cssl-mod` files
|
|
1001
|
+
- Snippets for common patterns
|
|
1002
|
+
- Run CSSL files with F5
|
|
1003
|
+
- Proper coloring for:
|
|
1004
|
+
- Keywords and control flow
|
|
1005
|
+
- Data types (purple/lilac)
|
|
1006
|
+
- Variable declarations (light blue)
|
|
1007
|
+
- Injection operators (`<<==`, `<==`)
|
|
1008
|
+
- Global (`@`), shared (`$`), and captured (`%`) references
|
|
@@ -4,6 +4,8 @@ README.md
|
|
|
4
4
|
pyproject.toml
|
|
5
5
|
requirements.txt
|
|
6
6
|
setup.py
|
|
7
|
+
./includecpp/CHANGELOG.md
|
|
8
|
+
./includecpp/DOCUMENTATION.md
|
|
7
9
|
./includecpp/__init__.py
|
|
8
10
|
./includecpp/__init__.pyi
|
|
9
11
|
./includecpp/__main__.py
|
|
@@ -16,6 +18,7 @@ setup.py
|
|
|
16
18
|
./includecpp/core/build_manager.py
|
|
17
19
|
./includecpp/core/cpp_api.py
|
|
18
20
|
./includecpp/core/cpp_api.pyi
|
|
21
|
+
./includecpp/core/cpp_api_extensions.pyi
|
|
19
22
|
./includecpp/core/cppy_converter.py
|
|
20
23
|
./includecpp/core/cssl_bridge.py
|
|
21
24
|
./includecpp/core/cssl_bridge.pyi
|
|
@@ -31,6 +34,7 @@ setup.py
|
|
|
31
34
|
./includecpp/core/cssl/cssl_builtins.py
|
|
32
35
|
./includecpp/core/cssl/cssl_builtins.pyi
|
|
33
36
|
./includecpp/core/cssl/cssl_events.py
|
|
37
|
+
./includecpp/core/cssl/cssl_languages.py
|
|
34
38
|
./includecpp/core/cssl/cssl_modules.py
|
|
35
39
|
./includecpp/core/cssl/cssl_parser.py
|
|
36
40
|
./includecpp/core/cssl/cssl_runtime.py
|
|
@@ -57,6 +61,8 @@ IncludeCPP.egg-info/dependency_links.txt
|
|
|
57
61
|
IncludeCPP.egg-info/entry_points.txt
|
|
58
62
|
IncludeCPP.egg-info/requires.txt
|
|
59
63
|
IncludeCPP.egg-info/top_level.txt
|
|
64
|
+
includecpp/CHANGELOG.md
|
|
65
|
+
includecpp/DOCUMENTATION.md
|
|
60
66
|
includecpp/__init__.py
|
|
61
67
|
includecpp/__init__.pyi
|
|
62
68
|
includecpp/__main__.py
|
|
@@ -69,6 +75,7 @@ includecpp/core/ai_integration.py
|
|
|
69
75
|
includecpp/core/build_manager.py
|
|
70
76
|
includecpp/core/cpp_api.py
|
|
71
77
|
includecpp/core/cpp_api.pyi
|
|
78
|
+
includecpp/core/cpp_api_extensions.pyi
|
|
72
79
|
includecpp/core/cppy_converter.py
|
|
73
80
|
includecpp/core/cssl_bridge.py
|
|
74
81
|
includecpp/core/cssl_bridge.pyi
|
|
@@ -84,6 +91,7 @@ includecpp/core/cssl/__init__.py
|
|
|
84
91
|
includecpp/core/cssl/cssl_builtins.py
|
|
85
92
|
includecpp/core/cssl/cssl_builtins.pyi
|
|
86
93
|
includecpp/core/cssl/cssl_events.py
|
|
94
|
+
includecpp/core/cssl/cssl_languages.py
|
|
87
95
|
includecpp/core/cssl/cssl_modules.py
|
|
88
96
|
includecpp/core/cssl/cssl_parser.py
|
|
89
97
|
includecpp/core/cssl/cssl_runtime.py
|
|
@@ -103,4 +111,5 @@ includecpp/vscode/cssl/package.json
|
|
|
103
111
|
includecpp/vscode/cssl/images/cssl.png
|
|
104
112
|
includecpp/vscode/cssl/images/cssl_pl.png
|
|
105
113
|
includecpp/vscode/cssl/snippets/cssl.snippets.json
|
|
106
|
-
includecpp/vscode/cssl/syntaxes/cssl.tmLanguage.json
|
|
114
|
+
includecpp/vscode/cssl/syntaxes/cssl.tmLanguage.json
|
|
115
|
+
tests/test_multilang.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: IncludeCPP
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.2.5
|
|
4
4
|
Summary: Professional C++ Python bindings with type-generic templates, pystubs and native threading
|
|
5
5
|
Home-page: https://github.com/liliassg/IncludeCPP
|
|
6
6
|
Author: Lilias Hatterscheidt
|
|
@@ -906,3 +906,103 @@ print(greeter.name) # "Python"
|
|
|
906
906
|
- `python::export(instance)` - Alias
|
|
907
907
|
|
|
908
908
|
All three do the same thing: wrap a CSSL class instance for Python use.
|
|
909
|
+
|
|
910
|
+
## Universal Instances (v4.0.3+)
|
|
911
|
+
|
|
912
|
+
Universal instances are shared containers accessible from CSSL, Python, and C++:
|
|
913
|
+
|
|
914
|
+
```python
|
|
915
|
+
from includecpp import CSSL
|
|
916
|
+
|
|
917
|
+
cssl = CSSL.CsslLang()
|
|
918
|
+
|
|
919
|
+
# Create in CSSL
|
|
920
|
+
cssl.run('''
|
|
921
|
+
instance<"myContainer"> container;
|
|
922
|
+
container.data = "Hello";
|
|
923
|
+
container.count = 42;
|
|
924
|
+
''')
|
|
925
|
+
|
|
926
|
+
# Access from Python
|
|
927
|
+
container = cssl.getInstance("myContainer")
|
|
928
|
+
print(container.data) # "Hello"
|
|
929
|
+
print(container.count) # 42
|
|
930
|
+
|
|
931
|
+
# Modify from Python
|
|
932
|
+
container.newValue = "Added from Python"
|
|
933
|
+
|
|
934
|
+
# Changes reflect in CSSL
|
|
935
|
+
cssl.run('''
|
|
936
|
+
instance<"myContainer"> c;
|
|
937
|
+
printl(c.newValue); // "Added from Python"
|
|
938
|
+
''')
|
|
939
|
+
```
|
|
940
|
+
|
|
941
|
+
### Instance Methods
|
|
942
|
+
|
|
943
|
+
```python
|
|
944
|
+
cssl.getInstance("name") # Get instance (None if not found)
|
|
945
|
+
cssl.createInstance("name") # Create or get instance
|
|
946
|
+
cssl.deleteInstance("name") # Delete instance
|
|
947
|
+
cssl.listInstances() # List all instance names
|
|
948
|
+
```
|
|
949
|
+
|
|
950
|
+
### Method Injection
|
|
951
|
+
|
|
952
|
+
Inject methods into instances using `+<<==`:
|
|
953
|
+
|
|
954
|
+
```cssl
|
|
955
|
+
instance<"api"> api;
|
|
956
|
+
|
|
957
|
+
// Inject a method
|
|
958
|
+
api +<<== {
|
|
959
|
+
void greet(string name) {
|
|
960
|
+
printl("Hello, " + name + "!");
|
|
961
|
+
}
|
|
962
|
+
};
|
|
963
|
+
|
|
964
|
+
api.greet("World"); // Hello, World!
|
|
965
|
+
```
|
|
966
|
+
|
|
967
|
+
## Simplified Module API (v4.0.2+)
|
|
968
|
+
|
|
969
|
+
Create CSSL modules from files with payload binding:
|
|
970
|
+
|
|
971
|
+
```python
|
|
972
|
+
from includecpp import CSSL
|
|
973
|
+
|
|
974
|
+
# Register payload from file
|
|
975
|
+
CSSL.makepayload("api", "lib/api/myapi.cssl-pl")
|
|
976
|
+
|
|
977
|
+
# Create module from file, binding to payload
|
|
978
|
+
mod = CSSL.makemodule("writer", "lib/writer.cssl", bind="api")
|
|
979
|
+
mod.SaySomething("Hello!") # Call functions directly
|
|
980
|
+
```
|
|
981
|
+
|
|
982
|
+
## VSCode Extension
|
|
983
|
+
|
|
984
|
+
IncludeCPP includes a VSCode extension for CSSL syntax highlighting.
|
|
985
|
+
|
|
986
|
+
### Installation
|
|
987
|
+
|
|
988
|
+
```bash
|
|
989
|
+
# Copy extension to VSCode extensions folder
|
|
990
|
+
# Windows: %USERPROFILE%\.vscode\extensions\
|
|
991
|
+
# Linux/Mac: ~/.vscode/extensions/
|
|
992
|
+
|
|
993
|
+
# Or install from included files
|
|
994
|
+
pip show includecpp # Find package location
|
|
995
|
+
# Copy vscode/cssl folder to extensions
|
|
996
|
+
```
|
|
997
|
+
|
|
998
|
+
### Features
|
|
999
|
+
|
|
1000
|
+
- Syntax highlighting for `.cssl`, `.cssl-pl`, `.cssl-mod` files
|
|
1001
|
+
- Snippets for common patterns
|
|
1002
|
+
- Run CSSL files with F5
|
|
1003
|
+
- Proper coloring for:
|
|
1004
|
+
- Keywords and control flow
|
|
1005
|
+
- Data types (purple/lilac)
|
|
1006
|
+
- Variable declarations (light blue)
|
|
1007
|
+
- Injection operators (`<<==`, `<==`)
|
|
1008
|
+
- Global (`@`), shared (`$`), and captured (`%`) references
|
|
@@ -870,4 +870,104 @@ print(greeter.name) # "Python"
|
|
|
870
870
|
- `python::wrap(instance)` - Alias
|
|
871
871
|
- `python::export(instance)` - Alias
|
|
872
872
|
|
|
873
|
-
All three do the same thing: wrap a CSSL class instance for Python use.
|
|
873
|
+
All three do the same thing: wrap a CSSL class instance for Python use.
|
|
874
|
+
|
|
875
|
+
## Universal Instances (v4.0.3+)
|
|
876
|
+
|
|
877
|
+
Universal instances are shared containers accessible from CSSL, Python, and C++:
|
|
878
|
+
|
|
879
|
+
```python
|
|
880
|
+
from includecpp import CSSL
|
|
881
|
+
|
|
882
|
+
cssl = CSSL.CsslLang()
|
|
883
|
+
|
|
884
|
+
# Create in CSSL
|
|
885
|
+
cssl.run('''
|
|
886
|
+
instance<"myContainer"> container;
|
|
887
|
+
container.data = "Hello";
|
|
888
|
+
container.count = 42;
|
|
889
|
+
''')
|
|
890
|
+
|
|
891
|
+
# Access from Python
|
|
892
|
+
container = cssl.getInstance("myContainer")
|
|
893
|
+
print(container.data) # "Hello"
|
|
894
|
+
print(container.count) # 42
|
|
895
|
+
|
|
896
|
+
# Modify from Python
|
|
897
|
+
container.newValue = "Added from Python"
|
|
898
|
+
|
|
899
|
+
# Changes reflect in CSSL
|
|
900
|
+
cssl.run('''
|
|
901
|
+
instance<"myContainer"> c;
|
|
902
|
+
printl(c.newValue); // "Added from Python"
|
|
903
|
+
''')
|
|
904
|
+
```
|
|
905
|
+
|
|
906
|
+
### Instance Methods
|
|
907
|
+
|
|
908
|
+
```python
|
|
909
|
+
cssl.getInstance("name") # Get instance (None if not found)
|
|
910
|
+
cssl.createInstance("name") # Create or get instance
|
|
911
|
+
cssl.deleteInstance("name") # Delete instance
|
|
912
|
+
cssl.listInstances() # List all instance names
|
|
913
|
+
```
|
|
914
|
+
|
|
915
|
+
### Method Injection
|
|
916
|
+
|
|
917
|
+
Inject methods into instances using `+<<==`:
|
|
918
|
+
|
|
919
|
+
```cssl
|
|
920
|
+
instance<"api"> api;
|
|
921
|
+
|
|
922
|
+
// Inject a method
|
|
923
|
+
api +<<== {
|
|
924
|
+
void greet(string name) {
|
|
925
|
+
printl("Hello, " + name + "!");
|
|
926
|
+
}
|
|
927
|
+
};
|
|
928
|
+
|
|
929
|
+
api.greet("World"); // Hello, World!
|
|
930
|
+
```
|
|
931
|
+
|
|
932
|
+
## Simplified Module API (v4.0.2+)
|
|
933
|
+
|
|
934
|
+
Create CSSL modules from files with payload binding:
|
|
935
|
+
|
|
936
|
+
```python
|
|
937
|
+
from includecpp import CSSL
|
|
938
|
+
|
|
939
|
+
# Register payload from file
|
|
940
|
+
CSSL.makepayload("api", "lib/api/myapi.cssl-pl")
|
|
941
|
+
|
|
942
|
+
# Create module from file, binding to payload
|
|
943
|
+
mod = CSSL.makemodule("writer", "lib/writer.cssl", bind="api")
|
|
944
|
+
mod.SaySomething("Hello!") # Call functions directly
|
|
945
|
+
```
|
|
946
|
+
|
|
947
|
+
## VSCode Extension
|
|
948
|
+
|
|
949
|
+
IncludeCPP includes a VSCode extension for CSSL syntax highlighting.
|
|
950
|
+
|
|
951
|
+
### Installation
|
|
952
|
+
|
|
953
|
+
```bash
|
|
954
|
+
# Copy extension to VSCode extensions folder
|
|
955
|
+
# Windows: %USERPROFILE%\.vscode\extensions\
|
|
956
|
+
# Linux/Mac: ~/.vscode/extensions/
|
|
957
|
+
|
|
958
|
+
# Or install from included files
|
|
959
|
+
pip show includecpp # Find package location
|
|
960
|
+
# Copy vscode/cssl folder to extensions
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
### Features
|
|
964
|
+
|
|
965
|
+
- Syntax highlighting for `.cssl`, `.cssl-pl`, `.cssl-mod` files
|
|
966
|
+
- Snippets for common patterns
|
|
967
|
+
- Run CSSL files with F5
|
|
968
|
+
- Proper coloring for:
|
|
969
|
+
- Keywords and control flow
|
|
970
|
+
- Data types (purple/lilac)
|
|
971
|
+
- Variable declarations (light blue)
|
|
972
|
+
- Injection operators (`<<==`, `<==`)
|
|
973
|
+
- Global (`@`), shared (`$`), and captured (`%`) references
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# IncludeCPP Changelog
|
|
2
|
+
|
|
3
|
+
## v4.2.5 (2026-01-08)
|
|
4
|
+
|
|
5
|
+
### New Features
|
|
6
|
+
- **Added `embedded` keyword for immediate `&target` replacement**
|
|
7
|
+
- `embedded func() &exit { }` - replaces `exit` immediately at registration
|
|
8
|
+
- `embedded class MyClass &$Target { }` - replaces `$Target` immediately at registration
|
|
9
|
+
- Regular `define func() &target { }` now defers replacement until function is called
|
|
10
|
+
- Regular `class MyClass &$Target { }` now defers replacement until class is instantiated
|
|
11
|
+
- `: overwrites` behavior remains unchanged (always immediate)
|
|
12
|
+
- Added VSCode syntax highlighting for `embedded` keyword
|
|
13
|
+
- **Added `switch` for open parameters** - pattern matching on provided named parameters
|
|
14
|
+
- `case name:` - executes if parameter exists
|
|
15
|
+
- `case name & age:` - executes if both parameters exist (AND)
|
|
16
|
+
- `case name & not age:` - executes if name exists AND age doesn't
|
|
17
|
+
- `except name:` - executes if parameter does NOT exist
|
|
18
|
+
- `default:` - executes if no case matched
|
|
19
|
+
- `always:` - executes after any matching case
|
|
20
|
+
- `finally:` - executes regardless of match (cleanup)
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
- **Fixed `OpenFind<type, "name">` returning function reference instead of value**
|
|
24
|
+
- `OpenFind<dynamic, "task">` now works without `()` parentheses
|
|
25
|
+
- Both `OpenFind<type, "name">` and `OpenFind<type>(index)` work correctly
|
|
26
|
+
|
|
27
|
+
### Behavior Changes
|
|
28
|
+
- **`&target` replacement timing**:
|
|
29
|
+
- `define func() &exit { }` - deferred (only when `func()` is called)
|
|
30
|
+
- `embedded func() &exit { }` - immediate (at registration)
|
|
31
|
+
- `class MyClass &$Game { }` - deferred (only when `new MyClass()` is called)
|
|
32
|
+
- `embedded class MyClass &$Game { }` - immediate (at registration)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## v4.2.4 (2026-01-08)
|
|
37
|
+
|
|
38
|
+
### Bug Fixes
|
|
39
|
+
- **Fixed `%name` priority for `&function` overrides** - `%exit()` now correctly calls the original builtin
|
|
40
|
+
- `define _exit() &exit { %exit(); }` no longer causes infinite recursion
|
|
41
|
+
- Original functions are stored BEFORE replacement for proper `%` capture
|
|
42
|
+
- `_original_functions` is checked FIRST when resolving `%name` references
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## v4.2.3 (2026-01-08)
|
|
47
|
+
|
|
48
|
+
### Bug Fixes
|
|
49
|
+
- Removed pagination from `includecpp cssl doc` - documentation now outputs completely without requiring Enter
|
|
50
|
+
- **Fixed `&builtin` function override** - `define MyFunc() &exit { ... }` now properly replaces builtin functions
|
|
51
|
+
- `&exit`, `&printl`, `&input`, etc. now correctly override the builtin implementations
|
|
52
|
+
- Builtins in scope were incorrectly treated as CSSLClass instances, preventing override
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## v4.2.2 (2026-01-08)
|
|
57
|
+
|
|
58
|
+
### Bug Fixes
|
|
59
|
+
- **Fixed bidirectional `lang$Instance` mutations** - Cross-language instance access now correctly modifies shared objects
|
|
60
|
+
- `js$GameData.score = 1337` now properly updates the original instance
|
|
61
|
+
- All mutations via `lang$Instance.member = value` are now applied bidirectionally
|
|
62
|
+
- Fixed `LANG_INSTANCE_REF` token not being recognized in `parse_program()`, `_parse_statement()`, and `_parse_action_block()`
|
|
63
|
+
- Parser now correctly handles `lang$Instance` as a valid expression start token
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## v4.2.1 (2026-01-08)
|
|
68
|
+
|
|
69
|
+
### CLI Improvements
|
|
70
|
+
- `--doc` and `--doc "term"` now load from local DOCUMENTATION.md
|
|
71
|
+
- `--changelog` now loads from local CHANGELOG.md
|
|
72
|
+
- Added `--changelog --N` (e.g., `--changelog --5`) for showing N releases
|
|
73
|
+
- Added `--changelog --all` for showing all releases
|
|
74
|
+
|
|
75
|
+
### Documentation
|
|
76
|
+
- Added comprehensive DOCUMENTATION.md for CLI reference
|
|
77
|
+
- Added CHANGELOG.md for version history
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## v4.2.0 (2026-01-08)
|
|
82
|
+
|
|
83
|
+
### Multi-Language Support
|
|
84
|
+
- Added `libinclude("language")` for loading language support modules
|
|
85
|
+
- Added `supports <lang>` keyword for writing in other language syntax
|
|
86
|
+
- Added cross-language instance sharing with `lang$InstanceName` syntax
|
|
87
|
+
- Added language transformers for Python, JavaScript, Java, C#, C++
|
|
88
|
+
- Added default parameter values in CSSL functions
|
|
89
|
+
|
|
90
|
+
### SDK Packages
|
|
91
|
+
- Added C++ SDK (`sdk/cpp/includecpp.h`)
|
|
92
|
+
- Added Java SDK (`sdk/java/src/com/includecpp/CSSL.java`)
|
|
93
|
+
- Added C# SDK (`sdk/csharp/IncludeCPP.cs`)
|
|
94
|
+
- Added JavaScript SDK (`sdk/javascript/includecpp.js`)
|
|
95
|
+
- Added `includecpp cssl sdk <lang>` command to generate SDKs
|
|
96
|
+
|
|
97
|
+
### CLI Improvements
|
|
98
|
+
- Added `--doc "searchterm"` for documentation search
|
|
99
|
+
- Added `--changelog --all`, `--changelog --N` for changelog viewing
|
|
100
|
+
- Improved error messages with line context
|
|
101
|
+
|
|
102
|
+
### Bug Fixes
|
|
103
|
+
- Fixed compound assignment operators in Python transformer (-=, +=, *=, /=)
|
|
104
|
+
- Fixed type annotation stripping in `supports python` blocks
|
|
105
|
+
- Fixed self parameter handling in Python method transformation
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## v4.1.0 (2024-12-15)
|
|
110
|
+
|
|
111
|
+
### CodeInfusion System
|
|
112
|
+
- Added `<<==` operator for code injection into functions
|
|
113
|
+
- Added `+<<==` for appending code without replacing
|
|
114
|
+
- Added method appending with `&Class::method` syntax
|
|
115
|
+
- Added `++` append mode for function definitions
|
|
116
|
+
|
|
117
|
+
### Class Improvements
|
|
118
|
+
- Added `overwrites` keyword for method replacement
|
|
119
|
+
- Added `extends Parent::method` for method-level inheritance
|
|
120
|
+
- Added `super()` and `super::method()` calls
|
|
121
|
+
- Added shuffled returns with `shuffled<T>` type
|
|
122
|
+
|
|
123
|
+
### New Containers
|
|
124
|
+
- Added `combo<T>` for filter/search operations
|
|
125
|
+
- Added `iterator<T>` for programmable iterators
|
|
126
|
+
- Added `datastruct<T>` universal container
|
|
127
|
+
|
|
128
|
+
### Python Interop
|
|
129
|
+
- Added `python::pythonize()` for returning CSSL classes to Python
|
|
130
|
+
- Added `python::wrap()` and `python::export()` aliases
|
|
131
|
+
- Added universal instances with `instance<"name">`
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## v4.0.3 (2024-11-20)
|
|
136
|
+
|
|
137
|
+
### Universal Instances
|
|
138
|
+
- Added `instance<"name">` for cross-runtime shared containers
|
|
139
|
+
- Added `cssl.getInstance("name")` Python API
|
|
140
|
+
- Added `cssl.createInstance("name")` Python API
|
|
141
|
+
- Added `cssl.deleteInstance("name")` Python API
|
|
142
|
+
- Added method injection into instances with `+<<==`
|
|
143
|
+
|
|
144
|
+
### Module System
|
|
145
|
+
- Added `CSSL.makemodule()` for creating callable modules
|
|
146
|
+
- Added `CSSL.makepayload()` for payload file registration
|
|
147
|
+
- Added payload binding with `bind=` parameter
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## v4.0.2 (2024-11-01)
|
|
152
|
+
|
|
153
|
+
### Simplified API
|
|
154
|
+
- Added `CSSL.run()` as main entry point
|
|
155
|
+
- Added `CSSL.module()` for creating modules from strings
|
|
156
|
+
- Added `CSSL.script()` for inline payload registration
|
|
157
|
+
- Improved parameter handling with `parameter.get()` and `parameter.return()`
|
|
158
|
+
|
|
159
|
+
### Shared Objects
|
|
160
|
+
- Added `cssl.share(obj, "name")` for Python object sharing
|
|
161
|
+
- Added `$name` syntax for accessing shared objects
|
|
162
|
+
- Changes in CSSL reflect back to Python objects
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## v4.0.0 (2024-10-15)
|
|
167
|
+
|
|
168
|
+
### Major Release
|
|
169
|
+
- Complete rewrite of CSSL parser and runtime
|
|
170
|
+
- Added generic container types (`stack<T>`, `vector<T>`, `map<K,V>`)
|
|
171
|
+
- Added class system with constructors and inheritance
|
|
172
|
+
- Added BruteInjection operators (`<==`, `+<==`, `-<==`)
|
|
173
|
+
- Added global variables with `@name` syntax
|
|
174
|
+
- Added captured variables with `%name` syntax
|
|
175
|
+
|
|
176
|
+
### AI Integration
|
|
177
|
+
- Added `includecpp ai` command group
|
|
178
|
+
- Added AI-assisted code analysis
|
|
179
|
+
- Added AI-powered optimization
|
|
180
|
+
- Added `includecpp ai ask` for project questions
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## v3.2.0 (2024-09-01)
|
|
185
|
+
|
|
186
|
+
### CPPY Conversion
|
|
187
|
+
- Added `includecpp cppy convert` command
|
|
188
|
+
- Added Python to C++ conversion
|
|
189
|
+
- Added C++ to Python conversion
|
|
190
|
+
- Added AI-assisted conversion with `--ai` flag
|
|
191
|
+
- Added type mapping tables
|
|
192
|
+
|
|
193
|
+
### Build Improvements
|
|
194
|
+
- Added `--fast` flag for incremental builds
|
|
195
|
+
- Added object file caching
|
|
196
|
+
- Added SHA256 hash checking for unchanged modules
|
|
197
|
+
- Reduced rebuild time to ~0.4s when unchanged
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## v3.1.0 (2024-08-01)
|
|
202
|
+
|
|
203
|
+
### CLI Enhancements
|
|
204
|
+
- Added `includecpp auto` command
|
|
205
|
+
- Added `includecpp fix` for code analysis
|
|
206
|
+
- Added `--verbose` flag for detailed output
|
|
207
|
+
- Added `-j` flag for parallel jobs
|
|
208
|
+
|
|
209
|
+
### Plugin Format
|
|
210
|
+
- Added `DEPENDS()` for module dependencies
|
|
211
|
+
- Added `TEMPLATE_FUNC()` for template instantiation
|
|
212
|
+
- Added `METHOD_CONST()` for overloaded methods
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## v3.0.0 (2024-07-01)
|
|
217
|
+
|
|
218
|
+
### Initial CSSL
|
|
219
|
+
- Added CSSL scripting language
|
|
220
|
+
- Added basic data types and control flow
|
|
221
|
+
- Added functions and basic classes
|
|
222
|
+
- Added Python interop with shared objects
|
|
223
|
+
|
|
224
|
+
### Core Features
|
|
225
|
+
- C++ to Python binding generation
|
|
226
|
+
- Plugin file format (.cp)
|
|
227
|
+
- CMake-based build system
|
|
228
|
+
- Cross-platform support (Windows, Linux, Mac)
|