Commit Graph

8 Commits

Author SHA1 Message Date
ZyX
70929f7e16 Add automatic generation of headers
- The 'stripdecls.py' script replaces declarations in all headers by includes to
  generated headers.
  `ag '#\s*if(?!ndef NEOVIM_).*((?!#\s*endif).*\n)*#ifdef INCLUDE_GENERATED'`
  was used for this.
- Add and integrate gendeclarations.lua into the build system to generate the
  required includes.
- Add -Wno-unused-function
- Made a bunch of old-style definitions ANSI

This adds a requirement: all type and structure definitions must be present
before INCLUDE_GENERATED_DECLARATIONS-protected include.

Warning: mch_expandpath (path.h.generated.h) was moved manually. So far it is
the only exception.
2014-06-02 11:04:17 -03:00
Rui Abreu Ferreira
1971cc30b5 Add --api-metadata command line option
- New command line option prints the binary API metadata object
  and exits
2014-06-02 10:34:51 -03:00
Thiago de Arruda
6b006dd7a2 API: Events: Automatically pass channel ids to API functions
The dispatch function generator was customized to allow for API functions to
declare a 'channel_id' as first argument.
2014-05-28 08:52:54 -03:00
Thiago de Arruda
139c7ffdc7 API: Events: Return channel id from the API discover request
This refactors msgapck_rpc_{dipatch,call} to receive the channel id as
argument. Now the discovery request returns the [id, metadata] array.
2014-05-26 14:02:12 -03:00
Thiago de Arruda
32b6122460 Remove hardcoded type names from msgpack-gen.lua
Except for the `Error *` type, all parameter types are valid identifiers, so
reuse that LPeg rule.
2014-05-17 08:05:44 -03:00
Eliseo Martínez
a6734844ca Introduce nvim namespace: Fix build process.
- Leave src as include dir (for includes to recognize 'nvim/' prefix).
- Change subdirectory from src to src/nvim.
- Fix msgpack generation.
- Fix some other paths to new locations.
2014-05-15 20:46:01 +02:00
Thiago de Arruda
b3268d0712 Refactor API types and prototypes
- Split functions with multiple files in the 'api' subdirectory
- Move/Add more types in the 'api/defs.h' header
- Add more prototypes
- Refactor scripts/msgpack-gen.lua
- Move msgpack modules to 'os' subdirectory
2014-05-12 19:28:30 -03:00
Thiago de Arruda
35ff53c6b0 Add msgpack_rpc_dispatch/metadata generator
This adds a lua script which parses the contents of 'api.h'. After the api is
parsed into a metadata table. After that, it will generate:

- A msgpack blob for the metadata table. This msgpack object contains everything
  scripting engines need to generate their own wrappers for the remote API.
- The `msgpack_rpc_dispatch` function, which takes care of validating msgpack
  requests, converting arguments to C types and passing control to the
  appropriate 'api.h' function. The result is then serialized back to msgpack
  and returned to the client.

This approach was used because:

- It automatically modifies `msgpack_rpc_dispatch` to reflect API changes.
- Scripting engines that generate remote call wrappers using the msgpack
  metadata will also adapt automatically to API changes
2014-04-11 14:07:45 -03:00