{
  global:
  extern "C++" {
    /* Only export symbols needed for the public API or unit tests */
    /* Otherwise all need to agree on boost, json, etc. versions.  */
    /* CAVEAT: the wildcards will not match vtable and typeinfo.   */
    seismicdrive::*;
    gcs::*;
  };
  extern "C" {
    /* match "typeinfo for", "typeinfo name for", and "vtable for" */
    /* The first two are needed when catching specific exceptions. */
    /* CAVEAT: Missing a needed name here will not cause a compile */
    /* error, it will just prevent the exception from being caught.*/
    _ZT?N12seismicdrive*;
    /* Another caveat, currently not an issue for sdapi, is that   */
    /* a demangled explicit template instanciation usually starts  */
    /* with the return type. So that won't be matched either.      */
    /* Using the declaration below might help.                     */
    /* _Z?12seismicdrive*; */
    /* _Z??12seismicdrive*; */
    /* _Z???12seismicdrive*; */
  };
  local:
    *;
};
