Implementing the GraphBLAS C API
This paper describes our implementation of the GraphBLAS C API. The implementation fully hides the internals of GraphBLAS objects from application programs, which only operate on pointers to opaque objects. The interface is defined by a C11-compliant include file, while the methods are implemented in C++ and packaged as a library with C language bindings. Internally, the library is built using a layered approach, in which most of the heavy work is done by member methods of the objects, while an API layer provides the compatibility with the specification. We describe the organization of the include file, explaining how it translates the polymorphic interface to its nonpolymorphic version. We also describe the inner workings of two GraphBLAS methods, reduction and matrix-matrix multiplication, which serve as running examples in our description of the implementation.