'Includes the typedefs, structs, unions and enums defined
in another FFI instance.  Usage is similar to a #include in C,
where a part of the program might include types defined in
another part for its own usage.  Note that the include()
method has no effect on functions, constants and global
variables, which must anyway be accessed directly from the
lib object returned by the original FFI instance.'

def include(self, ffi_to_include):

    if (not isinstance(ffi_to_include, FFI)):
        raise TypeError(('ffi.include()    expects    an    argument    that    is    also    of    type    cffi.FFI,    not    %r' % (type(ffi_to_include).__name__,)))
    if (ffi_to_include is self):
        raise ValueError('self.include(self)')
    with ffi_to_include._lock:
        with self._lock:
            self._parser.include(ffi_to_include._parser)
            self._cdefsources.append('[')
            self._cdefsources.extend(ffi_to_include._cdefsources)
            self._cdefsources.append(']')
            self._included_ffis.append(ffi_to_include)
