IncludeCPP 4.2.5__tar.gz → 4.6.0__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.
Files changed (82) hide show
  1. includecpp-4.6.0/IncludeCPP.egg-info/PKG-INFO +277 -0
  2. {includecpp-4.2.5 → includecpp-4.6.0}/IncludeCPP.egg-info/SOURCES.txt +18 -0
  3. includecpp-4.6.0/PKG-INFO +277 -0
  4. includecpp-4.6.0/README.md +242 -0
  5. includecpp-4.6.0/includecpp/CHANGELOG.md +164 -0
  6. includecpp-4.6.0/includecpp/DOCUMENTATION.md +446 -0
  7. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/__init__.py +1 -1
  8. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/__init__.pyi +1 -4
  9. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/cli/commands.py +1218 -25
  10. includecpp-4.6.0/includecpp/core/cpp_api_extensions.pyi +354 -0
  11. includecpp-4.6.0/includecpp/core/cssl/__init__.py +364 -0
  12. includecpp-4.6.0/includecpp/core/cssl/cpp/build/api.pyd +0 -0
  13. includecpp-4.6.0/includecpp/core/cssl/cpp/build/cssl_core.pyi +323 -0
  14. includecpp-4.6.0/includecpp/core/cssl/cpp/build/libgcc_s_seh-1.dll +0 -0
  15. includecpp-4.6.0/includecpp/core/cssl/cpp/build/libstdc++-6.dll +0 -0
  16. includecpp-4.6.0/includecpp/core/cssl/cpp/build/libwinpthread-1.dll +0 -0
  17. includecpp-4.6.0/includecpp/core/cssl/cpp/cssl_core.cp +108 -0
  18. includecpp-4.6.0/includecpp/core/cssl/cpp/cssl_lexer.hpp +280 -0
  19. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/cssl_builtins.py +245 -20
  20. includecpp-4.6.0/includecpp/core/cssl/cssl_compiler.py +448 -0
  21. includecpp-4.6.0/includecpp/core/cssl/cssl_optimizer.py +833 -0
  22. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/cssl_parser.py +766 -46
  23. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/cssl_runtime.py +526 -32
  24. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/cssl_syntax.py +17 -0
  25. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/cssl_types.py +321 -0
  26. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl_bridge.py +39 -2
  27. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/generator/parser.cpp +38 -14
  28. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/vscode/cssl/package.json +15 -0
  29. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/vscode/cssl/syntaxes/cssl.tmLanguage.json +134 -2
  30. {includecpp-4.2.5 → includecpp-4.6.0}/pyproject.toml +13 -3
  31. includecpp-4.2.5/IncludeCPP.egg-info/PKG-INFO +0 -1008
  32. includecpp-4.2.5/PKG-INFO +0 -1008
  33. includecpp-4.2.5/README.md +0 -973
  34. includecpp-4.2.5/includecpp/CHANGELOG.md +0 -228
  35. includecpp-4.2.5/includecpp/DOCUMENTATION.md +0 -644
  36. includecpp-4.2.5/includecpp/core/cpp_api_extensions.pyi +0 -350
  37. includecpp-4.2.5/includecpp/core/cssl/__init__.py +0 -47
  38. {includecpp-4.2.5 → includecpp-4.6.0}/IncludeCPP.egg-info/dependency_links.txt +0 -0
  39. {includecpp-4.2.5 → includecpp-4.6.0}/IncludeCPP.egg-info/entry_points.txt +0 -0
  40. {includecpp-4.2.5 → includecpp-4.6.0}/IncludeCPP.egg-info/requires.txt +0 -0
  41. {includecpp-4.2.5 → includecpp-4.6.0}/IncludeCPP.egg-info/top_level.txt +0 -0
  42. {includecpp-4.2.5 → includecpp-4.6.0}/LICENSE +0 -0
  43. {includecpp-4.2.5 → includecpp-4.6.0}/MANIFEST.in +0 -0
  44. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/__main__.py +0 -0
  45. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/cli/__init__.py +0 -0
  46. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/cli/config_parser.py +0 -0
  47. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/__init__.py +0 -0
  48. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/ai_integration.py +0 -0
  49. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/build_manager.py +0 -0
  50. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cpp_api.py +0 -0
  51. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cpp_api.pyi +0 -0
  52. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cppy_converter.py +0 -0
  53. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/CSSL_DOCUMENTATION.md +0 -0
  54. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/CSSL_DOCUMENTATION_NEW.md +0 -0
  55. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/cssl_builtins.pyi +0 -0
  56. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/cssl_events.py +0 -0
  57. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/cssl_languages.py +0 -0
  58. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl/cssl_modules.py +0 -0
  59. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/cssl_bridge.pyi +0 -0
  60. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/error_catalog.py +0 -0
  61. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/error_formatter.py +0 -0
  62. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/exceptions.py +0 -0
  63. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/path_discovery.py +0 -0
  64. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/project_ui.py +0 -0
  65. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/core/settings_ui.py +0 -0
  66. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/generator/__init__.py +0 -0
  67. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/generator/parser.h +0 -0
  68. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/generator/type_resolver.cpp +0 -0
  69. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/generator/type_resolver.h +0 -0
  70. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/py.typed +0 -0
  71. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/templates/cpp.proj.template +0 -0
  72. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/vscode/__init__.py +0 -0
  73. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/vscode/cssl/__init__.py +0 -0
  74. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/vscode/cssl/extension.js +0 -0
  75. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/vscode/cssl/images/cssl.png +0 -0
  76. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/vscode/cssl/images/cssl_pl.png +0 -0
  77. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/vscode/cssl/language-configuration.json +0 -0
  78. {includecpp-4.2.5 → includecpp-4.6.0}/includecpp/vscode/cssl/snippets/cssl.snippets.json +0 -0
  79. {includecpp-4.2.5 → includecpp-4.6.0}/requirements.txt +0 -0
  80. {includecpp-4.2.5 → includecpp-4.6.0}/setup.cfg +0 -0
  81. {includecpp-4.2.5 → includecpp-4.6.0}/setup.py +0 -0
  82. {includecpp-4.2.5 → includecpp-4.6.0}/tests/test_multilang.py +0 -0
@@ -0,0 +1,277 @@
1
+ Metadata-Version: 2.4
2
+ Name: IncludeCPP
3
+ Version: 4.6.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
+ ```
@@ -33,13 +33,22 @@ setup.py
33
33
  ./includecpp/core/cssl/__init__.py
34
34
  ./includecpp/core/cssl/cssl_builtins.py
35
35
  ./includecpp/core/cssl/cssl_builtins.pyi
36
+ ./includecpp/core/cssl/cssl_compiler.py
36
37
  ./includecpp/core/cssl/cssl_events.py
37
38
  ./includecpp/core/cssl/cssl_languages.py
38
39
  ./includecpp/core/cssl/cssl_modules.py
40
+ ./includecpp/core/cssl/cssl_optimizer.py
39
41
  ./includecpp/core/cssl/cssl_parser.py
40
42
  ./includecpp/core/cssl/cssl_runtime.py
41
43
  ./includecpp/core/cssl/cssl_syntax.py
42
44
  ./includecpp/core/cssl/cssl_types.py
45
+ ./includecpp/core/cssl/cpp/cssl_core.cp
46
+ ./includecpp/core/cssl/cpp/cssl_lexer.hpp
47
+ ./includecpp/core/cssl/cpp/build/api.pyd
48
+ ./includecpp/core/cssl/cpp/build/cssl_core.pyi
49
+ ./includecpp/core/cssl/cpp/build/libgcc_s_seh-1.dll
50
+ ./includecpp/core/cssl/cpp/build/libstdc++-6.dll
51
+ ./includecpp/core/cssl/cpp/build/libwinpthread-1.dll
43
52
  ./includecpp/generator/__init__.py
44
53
  ./includecpp/generator/parser.cpp
45
54
  ./includecpp/generator/parser.h
@@ -90,13 +99,22 @@ includecpp/core/cssl/CSSL_DOCUMENTATION_NEW.md
90
99
  includecpp/core/cssl/__init__.py
91
100
  includecpp/core/cssl/cssl_builtins.py
92
101
  includecpp/core/cssl/cssl_builtins.pyi
102
+ includecpp/core/cssl/cssl_compiler.py
93
103
  includecpp/core/cssl/cssl_events.py
94
104
  includecpp/core/cssl/cssl_languages.py
95
105
  includecpp/core/cssl/cssl_modules.py
106
+ includecpp/core/cssl/cssl_optimizer.py
96
107
  includecpp/core/cssl/cssl_parser.py
97
108
  includecpp/core/cssl/cssl_runtime.py
98
109
  includecpp/core/cssl/cssl_syntax.py
99
110
  includecpp/core/cssl/cssl_types.py
111
+ includecpp/core/cssl/cpp/cssl_core.cp
112
+ includecpp/core/cssl/cpp/cssl_lexer.hpp
113
+ includecpp/core/cssl/cpp/build/api.pyd
114
+ includecpp/core/cssl/cpp/build/cssl_core.pyi
115
+ includecpp/core/cssl/cpp/build/libgcc_s_seh-1.dll
116
+ includecpp/core/cssl/cpp/build/libstdc++-6.dll
117
+ includecpp/core/cssl/cpp/build/libwinpthread-1.dll
100
118
  includecpp/generator/__init__.py
101
119
  includecpp/generator/parser.cpp
102
120
  includecpp/generator/parser.h
@@ -0,0 +1,277 @@
1
+ Metadata-Version: 2.4
2
+ Name: IncludeCPP
3
+ Version: 4.6.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
+ ```