It might be worth taking some of the Python API from meep and moving it into libctl (Python analogues of geometric objects, plus code to construct the corresponding libctl object), and the various queries of the objects. Once you have that, then you would also wrap a routine to convert a Python list of objects to a C array of objects, then wrap the functions to create a tree of objects from the array, then wrap the functions to query the object of a point in the tree.
It might be worth taking some of the Python API from meep and moving it into libctl (Python analogues of geometric objects, plus code to construct the corresponding libctl object), and the various queries of the objects. Once you have that, then you would also wrap a routine to convert a Python list of objects to a C array of objects, then wrap the functions to create a tree of objects from the array, then wrap the functions to query the object of a point in the tree.