[swift-users] Improving a simple C binding

Jason Dusek jason.dusek at gmail.com
Wed Dec 9 02:54:35 CST 2015

Behold, a binding for libpq:


And a little app that uses it:


CLibPQ is put together in the simplest way: there's a module.modulemap
at the root and that's it. I would like to make some changes to the
module hierarchy and I'm not sure how to go about it. Here's what I'd
like to do:

* Create `CLibPQ.OSXHomebrew` and `CLibPQ.Ubuntu` that contain the
right mappings for those platforms (the header files are in different

* Create `CLibPQ` that conditionally imports the right one:

      #if os(Linux)
      import CLibPQ.Ubuntu
      import CLibPQ.OSXHomebrew

* In `PGVersion` we'd be able to `import CLibPQ` as before.

What's the right project layout to make this work?

Namespaced C modules are an interesting topic and worth pursuing in
their own right; but maybe there is a better way to do what I'm trying
to accomplish?

Best Regards,
  Jason Dusek

More information about the swift-users mailing list