Conversation
dd396c2 to
5881a76
Compare
1d61b38 to
83841ad
Compare
There was a problem hiding this comment.
Pull request overview
This pull request adds a comprehensive C API for the GauXC library, enabling integration with C codebases and other languages that interface with C. The implementation wraps core GauXC C++ functionality including molecular structures, basis sets, integration grids, load balancing, and XC integrators.
Changes:
- Added C API bindings for core classes (Molecule, Atom, BasisSet, Shell, etc.)
- Implemented factory patterns for runtime environments, load balancers, molecular weights, and XC integrators
- Created C/C++ compatible enum definitions with mappings between C and C++ versions
- Added HDF5 I/O support for C API
- Refactored configuration headers to separate C and C++ concerns
Reviewed changes
Copilot reviewed 47 out of 47 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| include/gauxc/*.h | New C API header files defining opaque handles and functions for core types |
| include/gauxc/util/c_*.hpp | Helper headers for casting between C handles and C++ objects |
| src/c_*.cxx | C API implementation files wrapping C++ functionality |
| include/gauxc/enum.h | C-compatible enum definitions |
| include/gauxc/enums.hpp | C++ enum class definitions mapped to C enums |
| include/gauxc/gauxc_config.h.in | C-compatible configuration header |
| include/gauxc/gauxc_config.hpp | C++ configuration header including C header |
| tests/moltypes_test.cxx | Basic C API interoperability test |
| src/CMakeLists.txt | CMake integration for conditional C API compilation |
| src/external/c_hdf5_*.cxx | HDF5 I/O functions for C API |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 48 out of 48 changed files in this pull request and generated 17 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- provide C enums - add atom and molecule types - add basis set and shell definitions - add molecule grid and runtime environment - add load balancer to C API - add molecular weights for C API - add functional class wrapping ExchCXX - add xc integrator and matrix type - add references for functionals - add support for reading and writing from HDF5 in C
GauXC::Moleculeingauxc/molecule.hppGauXC::Atomingauxc/atom.hppGauXC::BasisSetingauxc/basisset.hpp(double only)GauXC::Shellingauxc/shell.hppset_shell_tolerancemethodGauXC::RuntimeEnvironmentandGauXC::DeviceRuntimeEnvironmentset_buffer,comm_rank,comm_sizeGauXC::AtomicGridSizeDefault,GauXC::PruningScheme,GauXC::RadialQuadingauxc/enum.hppGauXC::MolGridFactorycreate_default_molgridGauXC::MolGridGauXC::ExecutionSpaceingauxc/enum.hppGauXC::LoadBalancerFactoryget_shared_instancemethodGauXC::MolecularWeightsFactoryget_instancemethodGauXC::MolecularWeightsSettingsGauXC::functional_type(from ExchCXX)GauXC::XCIntegratorFactoryget_instancemethodGauXC::XCIntegratoreval_exc,eval_exc_vxc, etc. methodsCloses #171