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.
- includecpp-2.4.7/IncludeCPP.egg-info/PKG-INFO +353 -0
- includecpp-2.4.7/PKG-INFO +353 -0
- includecpp-2.4.7/README.md +317 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/__init__.py +1 -1
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/cli/commands.py +424 -23
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/build_manager.py +139 -21
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/generator/parser.cpp +61 -3
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/generator/parser.h +6 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/pyproject.toml +1 -1
- {includecpp-2.4.2 → includecpp-2.4.7}/setup.py +1 -1
- includecpp-2.4.2/IncludeCPP.egg-info/PKG-INFO +0 -356
- includecpp-2.4.2/PKG-INFO +0 -356
- includecpp-2.4.2/README.md +0 -320
- {includecpp-2.4.2 → includecpp-2.4.7}/IncludeCPP.egg-info/SOURCES.txt +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/IncludeCPP.egg-info/dependency_links.txt +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/IncludeCPP.egg-info/entry_points.txt +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/IncludeCPP.egg-info/requires.txt +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/IncludeCPP.egg-info/top_level.txt +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/LICENSE +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/MANIFEST.in +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/__init__.pyi +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/__main__.py +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/cli/__init__.py +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/cli/config_parser.py +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/__init__.py +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/cpp_api.py +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/cpp_api.pyi +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/error_formatter.py +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/exceptions.py +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/core/path_discovery.py +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/generator/__init__.py +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/generator/type_resolver.cpp +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/generator/type_resolver.h +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/includecpp/templates/cpp.proj.template +0 -0
- {includecpp-2.4.2 → includecpp-2.4.7}/requirements.txt +0 -0
- {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
|