# Introduction

# What C-API is for

The C-APIs are designed for these purposes:

  1. Your target platform does not support C++17. You compile pkpy into a static library and use its exported C-APIs.
  2. You want to write a native module that can be imported via __import__ at runtime. By using C-APIs, the module is portable across different compilers without C++ ABI compatibility issues.

Our C-APIs take a lot of inspiration from the lua C-APIs. Methods return a bool indicating if the operation succeeded or not. Special thanks for @koltenpearson's contribution.

# Basic functions

  • pkpy_vm* pkpy_new_vm(bool enable_os)

    Wraps new VM(enable_os) in C++.

  • void pkpy_delete_vm(pkpy_vm*)

    Wraps delete vm in C++.

  • bool pkpy_exec(pkpy_vm*, const char* source)

    Wraps vm->exec. Execute a string of source code.

  • bool pkpy_exec_2(pkpy_vm*, const char* source, const char* filename, int mode, const char* module)

    Wraps vm->exec_2. Execute a string of source code with more options.