The XSB foreign language interface can be split in two parts. The basic interface supports the exchange of Prolog's atomic data types (atoms, integers, and floating-point numbers). The advanced interface allows passing lists and terms between XSB and C.