IncludeCPP 2.4.2__tar.gz → 2.4.7__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 (36) hide show
  1. includecpp-2.4.7/IncludeCPP.egg-info/PKG-INFO +353 -0
  2. includecpp-2.4.7/PKG-INFO +353 -0
  3. includecpp-2.4.7/README.md +317 -0
  4. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/__init__.py +1 -1
  5. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/cli/commands.py +424 -23
  6. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/build_manager.py +139 -21
  7. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/generator/parser.cpp +61 -3
  8. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/generator/parser.h +6 -0
  9. {includecpp-2.4.2 → includecpp-2.4.7}/pyproject.toml +1 -1
  10. {includecpp-2.4.2 → includecpp-2.4.7}/setup.py +1 -1
  11. includecpp-2.4.2/IncludeCPP.egg-info/PKG-INFO +0 -356
  12. includecpp-2.4.2/PKG-INFO +0 -356
  13. includecpp-2.4.2/README.md +0 -320
  14. {includecpp-2.4.2 → includecpp-2.4.7}/IncludeCPP.egg-info/SOURCES.txt +0 -0
  15. {includecpp-2.4.2 → includecpp-2.4.7}/IncludeCPP.egg-info/dependency_links.txt +0 -0
  16. {includecpp-2.4.2 → includecpp-2.4.7}/IncludeCPP.egg-info/entry_points.txt +0 -0
  17. {includecpp-2.4.2 → includecpp-2.4.7}/IncludeCPP.egg-info/requires.txt +0 -0
  18. {includecpp-2.4.2 → includecpp-2.4.7}/IncludeCPP.egg-info/top_level.txt +0 -0
  19. {includecpp-2.4.2 → includecpp-2.4.7}/LICENSE +0 -0
  20. {includecpp-2.4.2 → includecpp-2.4.7}/MANIFEST.in +0 -0
  21. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/__init__.pyi +0 -0
  22. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/__main__.py +0 -0
  23. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/cli/__init__.py +0 -0
  24. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/cli/config_parser.py +0 -0
  25. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/__init__.py +0 -0
  26. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/cpp_api.py +0 -0
  27. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/cpp_api.pyi +0 -0
  28. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/error_formatter.py +0 -0
  29. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/exceptions.py +0 -0
  30. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/path_discovery.py +0 -0
  31. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/generator/__init__.py +0 -0
  32. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/generator/type_resolver.cpp +0 -0
  33. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/generator/type_resolver.h +0 -0
  34. {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/templates/cpp.proj.template +0 -0
  35. {includecpp-2.4.2 → includecpp-2.4.7}/requirements.txt +0 -0
  36. {includecpp-2.4.2 → includecpp-2.4.7}/setup.cfg +0 -0
@@ -0,0 +1,353 @@
1
+ Metadata-Version: 2.4
2
+ Name: IncludeCPP
3
+ Version: 2.4.7
4
+ Summary: Professional C++ Python bindings with type-generic templates, pystubs and native threading
5
+ Home-page: https://github.com/includecpp/includecpp
6
+ Author: IncludeCPP Team
7
+ Author-email: IncludeCPP Team <contact@includecpp.dev>
8
+ License: MIT
9
+ Project-URL: Homepage, https://github.com/includecpp/includecpp
10
+ Project-URL: Documentation, https://includecpp.readthedocs.io
11
+ Project-URL: Repository, https://github.com/includecpp/includecpp
12
+ Project-URL: Bug Tracker, https://github.com/includecpp/includecpp/issues
13
+ Keywords: c++,python,bindings,pybind11,template,performance,threading
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: C++
24
+ Classifier: License :: OSI Approved :: MIT License
25
+ Classifier: Operating System :: OS Independent
26
+ Requires-Python: >=3.8
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Requires-Dist: pybind11>=2.11.0
30
+ Requires-Dist: click>=8.0.0
31
+ Requires-Dist: typing-extensions>=4.0.0
32
+ Dynamic: author
33
+ Dynamic: home-page
34
+ Dynamic: license-file
35
+ Dynamic: requires-python
36
+
37
+ # IncludeCPP - C++ Performance in Python, Zero Hassle
38
+
39
+ Write performance-critical code in C++, use it in Python like native modules. No boilerplate, no manual bindings, no complexity.
40
+
41
+ ## Installation
42
+
43
+ ```bash
44
+ pip install IncludeCPP
45
+ ```
46
+
47
+ ## Quick Start
48
+
49
+ ### 1. Initialize Project
50
+ ```bash
51
+ python -m includecpp init
52
+ ```
53
+
54
+ Creates:
55
+ - `cpp.proj` - Configuration
56
+ - `include/` - C++ source files
57
+ - `plugins/` - Module definitions
58
+
59
+ **First-time Setup:** When you run `init` for the first time on your system, IncludeCPP automatically registers the global `includecpp` command. After that, you can use `includecpp <command>` instead of `python -m includecpp <command>` (restart your terminal for Windows).
60
+
61
+ ### 2. Auto-Generate Plugin Definition
62
+
63
+ ```bash
64
+ python -m includecpp plugin fast_list include/fast_list.cpp include/fast_list.h
65
+ ```
66
+
67
+ Automatically generates `plugins/fast_list.cp` by analyzing your C++ code. Detects classes, methods, constructors (including parametrized ones), functions, and structs.
68
+
69
+ ### 3. Build
70
+
71
+ ```bash
72
+ python -m includecpp rebuild
73
+ ```
74
+
75
+ ### 4. Use in Python
76
+
77
+ ```python
78
+ from includecpp import CppApi
79
+
80
+ api = CppApi()
81
+ fast_list = api.include("fast_list")
82
+
83
+ my_list = fast_list.FastList()
84
+ my_list.append(42)
85
+ ```
86
+
87
+ ## CLI Commands
88
+
89
+ ### `init`
90
+ Initialize new IncludeCPP project.
91
+
92
+ ```bash
93
+ includecpp init
94
+ ```
95
+
96
+ ### `plugin`
97
+ Auto-generate `.cp` plugin definition from C++ files.
98
+
99
+ ```bash
100
+ includecpp plugin <name> <file1.cpp> [file2.h] [...]
101
+ ```
102
+
103
+ **Options:**
104
+ - `-p, --private <func>` - Exclude function from public API
105
+
106
+ **Example:**
107
+ ```bash
108
+ includecpp plugin math_tools include/math.cpp include/math.h -p InternalHelper
109
+ ```
110
+
111
+ ### `rebuild`
112
+ Build or rebuild C++ modules.
113
+
114
+ ```bash
115
+ includecpp rebuild [OPTIONS]
116
+ ```
117
+
118
+ **Options:**
119
+ - `--clean` - Force clean rebuild (ignore incremental cache)
120
+ - `--full` - Complete rebuild including generator and all caches
121
+ - `--verbose` - Detailed build output
122
+ - `--no-incremental` - Disable incremental builds
123
+ - `--parallel/--no-parallel` - Enable/disable parallel compilation (default: enabled)
124
+ - `-j, --jobs <N>` - Max parallel jobs (default: 4)
125
+ - `-m, --modules <name>` - Rebuild specific modules only
126
+
127
+ **Examples:**
128
+ ```bash
129
+ includecpp rebuild --full --verbose
130
+ includecpp rebuild -m crypto -m networking
131
+ ```
132
+
133
+ ### `install` / `minstall`
134
+ Install community modules from GitHub.
135
+
136
+ ```bash
137
+ includecpp install <module_name>
138
+ includecpp install --list-all
139
+ ```
140
+
141
+ Downloads from `https://github.com/liliassg/IncludeCPP/tree/main/minstall/<module_name>`
142
+
143
+ ### `update`
144
+ Update IncludeCPP to latest version or manage versions.
145
+
146
+ ```bash
147
+ includecpp update # Upgrade to latest version
148
+ includecpp update --version # Show installed version
149
+ includecpp update --all # List all available PyPI versions
150
+ includecpp update 2.4.0 # Install specific version
151
+ ```
152
+
153
+ ### `reboot`
154
+ Reinstall current IncludeCPP version (uninstall + install).
155
+
156
+ ```bash
157
+ includecpp reboot
158
+ ```
159
+
160
+ Useful for fixing corrupted installations.
161
+
162
+ ### `get`
163
+ Display detailed module API information.
164
+
165
+ ```bash
166
+ includecpp get <module_name>
167
+ ```
168
+
169
+ Shows classes, methods, functions, structs with type information.
170
+
171
+ ### `bug`
172
+ Report bugs to GitHub or view existing issues.
173
+
174
+ ```bash
175
+ includecpp bug # Report a new bug
176
+ includecpp bug --get # List open bugs from GitHub
177
+ ```
178
+
179
+ ### `--doc`
180
+ Show documentation with color highlighting.
181
+
182
+ ```bash
183
+ includecpp --doc
184
+ ```
185
+
186
+ Fetches and displays the latest README from PyPI.
187
+
188
+ ## Plugin Definition Syntax (.cp files)
189
+
190
+ ### Classes with Constructors
191
+
192
+ ```
193
+ module CLASS(MyClass) {
194
+ CONSTRUCTOR() # Default constructor
195
+ CONSTRUCTOR(int, double) # Parametrized constructor
196
+ METHOD(doSomething)
197
+ FIELD(value)
198
+ }
199
+ ```
200
+
201
+ ### Functions
202
+
203
+ ```
204
+ module FUNCTION(calculate)
205
+ ```
206
+
207
+ ### Template Functions
208
+
209
+ ```
210
+ module TEMPLATE_FUNC(maximum) TYPES(int, float, double)
211
+ ```
212
+
213
+ ### Structs
214
+
215
+ ```
216
+ module STRUCT(Point) TYPES(int, float) {
217
+ FIELD(T, x)
218
+ FIELD(T, y)
219
+ }
220
+ ```
221
+
222
+ ### Dependencies
223
+
224
+ ```
225
+ DEPENDS(math_utils, geometry)
226
+ ```
227
+
228
+ ### Multi-File Modules
229
+
230
+ ```
231
+ SOURCE(module.cpp helpers.cpp utils.cpp) my_module
232
+ ```
233
+
234
+ ## Features
235
+
236
+ ### VSCode IntelliSense Support
237
+ Automatic `.pyi` stub generation for full IDE autocomplete.
238
+
239
+ **Enable/Disable** in `cpp.proj`:
240
+ ```json
241
+ {
242
+ "CPI-IntelliSense": true
243
+ }
244
+ ```
245
+
246
+ Provides:
247
+ - Function signatures with types
248
+ - Class methods and attributes
249
+ - Constructor overloads
250
+ - Module-level exports
251
+ - Full VSCode/PyCharm autocomplete
252
+
253
+ ### Parametrized Constructors (v2.4.3+)
254
+
255
+ C++ constructors with parameters are automatically bound:
256
+
257
+ ```cpp
258
+ class Vector2D {
259
+ public:
260
+ Vector2D(); // Default
261
+ Vector2D(double x, double y); // Parametrized
262
+ };
263
+ ```
264
+
265
+ ```
266
+ geometry CLASS(Vector2D) {
267
+ CONSTRUCTOR()
268
+ CONSTRUCTOR(double, double)
269
+ METHOD(length)
270
+ }
271
+ ```
272
+
273
+ ```python
274
+ v = geometry.Vector2D(3.0, 4.0) # Works!
275
+ ```
276
+
277
+ ### Incremental Builds
278
+
279
+ SHA256-based change detection. Only rebuilds modified modules.
280
+
281
+ ### Cross-Platform
282
+
283
+ - Windows (MSVC, MinGW, g++)
284
+ - Linux (g++, clang++)
285
+ - macOS (clang++)
286
+
287
+ ## Type Support
288
+
289
+ - **Basic:** `int`, `float`, `double`, `bool`, `string`
290
+ - **STL:** `vector`, `map`, `set`, `array`, `pair`
291
+ - **Custom:** Structs, classes, templates
292
+
293
+ ## Configuration
294
+
295
+ `cpp.proj`:
296
+
297
+ ```json
298
+ {
299
+ "project": "MyProject",
300
+ "version": "1.0.0",
301
+ "include": "/include",
302
+ "plugins": "/plugins",
303
+ "compiler": {
304
+ "standard": "c++17",
305
+ "optimization": "O3",
306
+ "flags": ["-Wall", "-pthread"]
307
+ },
308
+ "types": {
309
+ "common": ["int", "float", "double", "string"]
310
+ },
311
+ "threading": {
312
+ "enabled": true,
313
+ "max_workers": 8
314
+ },
315
+ "CPI-IntelliSense": true
316
+ }
317
+ ```
318
+
319
+ ## Python API
320
+
321
+ ```python
322
+ from includecpp import CppApi
323
+
324
+ api = CppApi(auto_update=True)
325
+ module = api.include("my_module")
326
+
327
+ # API Methods
328
+ api.need_update("module_name") # Check if rebuild needed
329
+ api.update("module_name") # Rebuild single module
330
+ api.list_modules() # List available modules
331
+ api.exists("module_name") # Check if module exists
332
+ ```
333
+
334
+ ## Requirements
335
+
336
+ - **Python:** 3.8+
337
+ - **C++ Compiler:** g++, clang++, or MSVC
338
+ - **CMake:** 3.15+ (optional, falls back to direct compilation)
339
+ - **pybind11:** Installed automatically
340
+
341
+ ## Build System
342
+
343
+ - **AppData Storage:** Builds stored in `%APPDATA%\IncludeCPP` (Windows) or `~/.local/share/includecpp` (Linux)
344
+ - **Clean Projects:** Source directory stays clean
345
+ - **Incremental:** SHA256-based change detection
346
+ - **Parallel:** Multi-threaded compilation
347
+ - **Caching:** Reuses unchanged binaries
348
+
349
+ ---
350
+
351
+ **License:** MIT
352
+ **Version:** 2.4.7
353
+ **Repository:** https://github.com/liliassg/IncludeCPP
@@ -0,0 +1,353 @@
1
+ Metadata-Version: 2.4
2
+ Name: IncludeCPP
3
+ Version: 2.4.7
4
+ Summary: Professional C++ Python bindings with type-generic templates, pystubs and native threading
5
+ Home-page: https://github.com/includecpp/includecpp
6
+ Author: IncludeCPP Team
7
+ Author-email: IncludeCPP Team <contact@includecpp.dev>
8
+ License: MIT
9
+ Project-URL: Homepage, https://github.com/includecpp/includecpp
10
+ Project-URL: Documentation, https://includecpp.readthedocs.io
11
+ Project-URL: Repository, https://github.com/includecpp/includecpp
12
+ Project-URL: Bug Tracker, https://github.com/includecpp/includecpp/issues
13
+ Keywords: c++,python,bindings,pybind11,template,performance,threading
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: C++
24
+ Classifier: License :: OSI Approved :: MIT License
25
+ Classifier: Operating System :: OS Independent
26
+ Requires-Python: >=3.8
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Requires-Dist: pybind11>=2.11.0
30
+ Requires-Dist: click>=8.0.0
31
+ Requires-Dist: typing-extensions>=4.0.0
32
+ Dynamic: author
33
+ Dynamic: home-page
34
+ Dynamic: license-file
35
+ Dynamic: requires-python
36
+
37
+ # IncludeCPP - C++ Performance in Python, Zero Hassle
38
+
39
+ Write performance-critical code in C++, use it in Python like native modules. No boilerplate, no manual bindings, no complexity.
40
+
41
+ ## Installation
42
+
43
+ ```bash
44
+ pip install IncludeCPP
45
+ ```
46
+
47
+ ## Quick Start
48
+
49
+ ### 1. Initialize Project
50
+ ```bash
51
+ python -m includecpp init
52
+ ```
53
+
54
+ Creates:
55
+ - `cpp.proj` - Configuration
56
+ - `include/` - C++ source files
57
+ - `plugins/` - Module definitions
58
+
59
+ **First-time Setup:** When you run `init` for the first time on your system, IncludeCPP automatically registers the global `includecpp` command. After that, you can use `includecpp <command>` instead of `python -m includecpp <command>` (restart your terminal for Windows).
60
+
61
+ ### 2. Auto-Generate Plugin Definition
62
+
63
+ ```bash
64
+ python -m includecpp plugin fast_list include/fast_list.cpp include/fast_list.h
65
+ ```
66
+
67
+ Automatically generates `plugins/fast_list.cp` by analyzing your C++ code. Detects classes, methods, constructors (including parametrized ones), functions, and structs.
68
+
69
+ ### 3. Build
70
+
71
+ ```bash
72
+ python -m includecpp rebuild
73
+ ```
74
+
75
+ ### 4. Use in Python
76
+
77
+ ```python
78
+ from includecpp import CppApi
79
+
80
+ api = CppApi()
81
+ fast_list = api.include("fast_list")
82
+
83
+ my_list = fast_list.FastList()
84
+ my_list.append(42)
85
+ ```
86
+
87
+ ## CLI Commands
88
+
89
+ ### `init`
90
+ Initialize new IncludeCPP project.
91
+
92
+ ```bash
93
+ includecpp init
94
+ ```
95
+
96
+ ### `plugin`
97
+ Auto-generate `.cp` plugin definition from C++ files.
98
+
99
+ ```bash
100
+ includecpp plugin <name> <file1.cpp> [file2.h] [...]
101
+ ```
102
+
103
+ **Options:**
104
+ - `-p, --private <func>` - Exclude function from public API
105
+
106
+ **Example:**
107
+ ```bash
108
+ includecpp plugin math_tools include/math.cpp include/math.h -p InternalHelper
109
+ ```
110
+
111
+ ### `rebuild`
112
+ Build or rebuild C++ modules.
113
+
114
+ ```bash
115
+ includecpp rebuild [OPTIONS]
116
+ ```
117
+
118
+ **Options:**
119
+ - `--clean` - Force clean rebuild (ignore incremental cache)
120
+ - `--full` - Complete rebuild including generator and all caches
121
+ - `--verbose` - Detailed build output
122
+ - `--no-incremental` - Disable incremental builds
123
+ - `--parallel/--no-parallel` - Enable/disable parallel compilation (default: enabled)
124
+ - `-j, --jobs <N>` - Max parallel jobs (default: 4)
125
+ - `-m, --modules <name>` - Rebuild specific modules only
126
+
127
+ **Examples:**
128
+ ```bash
129
+ includecpp rebuild --full --verbose
130
+ includecpp rebuild -m crypto -m networking
131
+ ```
132
+
133
+ ### `install` / `minstall`
134
+ Install community modules from GitHub.
135
+
136
+ ```bash
137
+ includecpp install <module_name>
138
+ includecpp install --list-all
139
+ ```
140
+
141
+ Downloads from `https://github.com/liliassg/IncludeCPP/tree/main/minstall/<module_name>`
142
+
143
+ ### `update`
144
+ Update IncludeCPP to latest version or manage versions.
145
+
146
+ ```bash
147
+ includecpp update # Upgrade to latest version
148
+ includecpp update --version # Show installed version
149
+ includecpp update --all # List all available PyPI versions
150
+ includecpp update 2.4.0 # Install specific version
151
+ ```
152
+
153
+ ### `reboot`
154
+ Reinstall current IncludeCPP version (uninstall + install).
155
+
156
+ ```bash
157
+ includecpp reboot
158
+ ```
159
+
160
+ Useful for fixing corrupted installations.
161
+
162
+ ### `get`
163
+ Display detailed module API information.
164
+
165
+ ```bash
166
+ includecpp get <module_name>
167
+ ```
168
+
169
+ Shows classes, methods, functions, structs with type information.
170
+
171
+ ### `bug`
172
+ Report bugs to GitHub or view existing issues.
173
+
174
+ ```bash
175
+ includecpp bug # Report a new bug
176
+ includecpp bug --get # List open bugs from GitHub
177
+ ```
178
+
179
+ ### `--doc`
180
+ Show documentation with color highlighting.
181
+
182
+ ```bash
183
+ includecpp --doc
184
+ ```
185
+
186
+ Fetches and displays the latest README from PyPI.
187
+
188
+ ## Plugin Definition Syntax (.cp files)
189
+
190
+ ### Classes with Constructors
191
+
192
+ ```
193
+ module CLASS(MyClass) {
194
+ CONSTRUCTOR() # Default constructor
195
+ CONSTRUCTOR(int, double) # Parametrized constructor
196
+ METHOD(doSomething)
197
+ FIELD(value)
198
+ }
199
+ ```
200
+
201
+ ### Functions
202
+
203
+ ```
204
+ module FUNCTION(calculate)
205
+ ```
206
+
207
+ ### Template Functions
208
+
209
+ ```
210
+ module TEMPLATE_FUNC(maximum) TYPES(int, float, double)
211
+ ```
212
+
213
+ ### Structs
214
+
215
+ ```
216
+ module STRUCT(Point) TYPES(int, float) {
217
+ FIELD(T, x)
218
+ FIELD(T, y)
219
+ }
220
+ ```
221
+
222
+ ### Dependencies
223
+
224
+ ```
225
+ DEPENDS(math_utils, geometry)
226
+ ```
227
+
228
+ ### Multi-File Modules
229
+
230
+ ```
231
+ SOURCE(module.cpp helpers.cpp utils.cpp) my_module
232
+ ```
233
+
234
+ ## Features
235
+
236
+ ### VSCode IntelliSense Support
237
+ Automatic `.pyi` stub generation for full IDE autocomplete.
238
+
239
+ **Enable/Disable** in `cpp.proj`:
240
+ ```json
241
+ {
242
+ "CPI-IntelliSense": true
243
+ }
244
+ ```
245
+
246
+ Provides:
247
+ - Function signatures with types
248
+ - Class methods and attributes
249
+ - Constructor overloads
250
+ - Module-level exports
251
+ - Full VSCode/PyCharm autocomplete
252
+
253
+ ### Parametrized Constructors (v2.4.3+)
254
+
255
+ C++ constructors with parameters are automatically bound:
256
+
257
+ ```cpp
258
+ class Vector2D {
259
+ public:
260
+ Vector2D(); // Default
261
+ Vector2D(double x, double y); // Parametrized
262
+ };
263
+ ```
264
+
265
+ ```
266
+ geometry CLASS(Vector2D) {
267
+ CONSTRUCTOR()
268
+ CONSTRUCTOR(double, double)
269
+ METHOD(length)
270
+ }
271
+ ```
272
+
273
+ ```python
274
+ v = geometry.Vector2D(3.0, 4.0) # Works!
275
+ ```
276
+
277
+ ### Incremental Builds
278
+
279
+ SHA256-based change detection. Only rebuilds modified modules.
280
+
281
+ ### Cross-Platform
282
+
283
+ - Windows (MSVC, MinGW, g++)
284
+ - Linux (g++, clang++)
285
+ - macOS (clang++)
286
+
287
+ ## Type Support
288
+
289
+ - **Basic:** `int`, `float`, `double`, `bool`, `string`
290
+ - **STL:** `vector`, `map`, `set`, `array`, `pair`
291
+ - **Custom:** Structs, classes, templates
292
+
293
+ ## Configuration
294
+
295
+ `cpp.proj`:
296
+
297
+ ```json
298
+ {
299
+ "project": "MyProject",
300
+ "version": "1.0.0",
301
+ "include": "/include",
302
+ "plugins": "/plugins",
303
+ "compiler": {
304
+ "standard": "c++17",
305
+ "optimization": "O3",
306
+ "flags": ["-Wall", "-pthread"]
307
+ },
308
+ "types": {
309
+ "common": ["int", "float", "double", "string"]
310
+ },
311
+ "threading": {
312
+ "enabled": true,
313
+ "max_workers": 8
314
+ },
315
+ "CPI-IntelliSense": true
316
+ }
317
+ ```
318
+
319
+ ## Python API
320
+
321
+ ```python
322
+ from includecpp import CppApi
323
+
324
+ api = CppApi(auto_update=True)
325
+ module = api.include("my_module")
326
+
327
+ # API Methods
328
+ api.need_update("module_name") # Check if rebuild needed
329
+ api.update("module_name") # Rebuild single module
330
+ api.list_modules() # List available modules
331
+ api.exists("module_name") # Check if module exists
332
+ ```
333
+
334
+ ## Requirements
335
+
336
+ - **Python:** 3.8+
337
+ - **C++ Compiler:** g++, clang++, or MSVC
338
+ - **CMake:** 3.15+ (optional, falls back to direct compilation)
339
+ - **pybind11:** Installed automatically
340
+
341
+ ## Build System
342
+
343
+ - **AppData Storage:** Builds stored in `%APPDATA%\IncludeCPP` (Windows) or `~/.local/share/includecpp` (Linux)
344
+ - **Clean Projects:** Source directory stays clean
345
+ - **Incremental:** SHA256-based change detection
346
+ - **Parallel:** Multi-threaded compilation
347
+ - **Caching:** Reuses unchanged binaries
348
+
349
+ ---
350
+
351
+ **License:** MIT
352
+ **Version:** 2.4.7
353
+ **Repository:** https://github.com/liliassg/IncludeCPP