5 ms·
Show HN: Cdefs, extract function prototypes in C files to JSON
- kr0 11y agoI would expect a more detailed breakdown of the individual parameters. The type, name, is it a pointer to type, etc. should all be in separate fields
- evmar 11y agoI've used gcc-xml (apparently has been superseded by another tool now) when I've needed this sort of thing in the past. It has the advantage of being a real C parser rather than a jumble of regexes.
- ExpiredLink 11y agoWhat's the use case for this?
- gnoway 11y agoSeems like it must be to facilitate usage of whatever node's foreign function interface scheme is.
- megalodon 11y agoThe name is node-ffi and yes, you are correct. Can also be used for automated documentation purposes.
- eugenekolo2 11y agoI use something similar to generate API hooks for a large library.
- Matheus28 11y agoA mess of regexes and splits... yeah, no. You should probably get introduced to the wonderful world of parsers (and compilers): https://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools https://en.wikipedia.org/wiki/Compilers:_Principles,_Techniq...
- dang 11y agoPlease don't be rudely dismissive of new work, even when it seems that someone doesn't know much. The Show HN guidelines specifically emphasize this: https://news.ycombinator.com/showhn.html https://news.ycombinator.com/showhn.html.
- Matheus28 11y agoAlright. Sorry, that might have sounded a bit rude, but the intention was pointing OP the right way.
- sbt 11y agoCame to see if this used LLVM for parsing, found node...
- gnoway 11y agoThis is a bad name, another cproto library has been in use for over 20 years: http://invisible-island.net/cproto/cproto.html http://invisible-island.net/cproto/cproto.html
- megalodon 11y agoYou're right, that's kind of why I named the bash command 'proto' instead of 'cproto', but maybe that's not enough. Any suggestions? I'll change it later today.
- gnoway 11y agoI should step back some from it being a bad name... It's actually a great name, it just conflicts with an in-use library that does substantially the same thing for another platform. Is there a convention where the 'node-' prefix is off-limits for any reason? I don't know if it's really any better but if this were 'node-cproto' I wouldn't have commented. The other option would be to do some word-play name like 'domesticator'.
- duaneb 11y agoI would recommend against using a generic greek prefix for a name of a very specific tool.
- aninteger 11y agoWould there be something that goes the other way? Given a JSON input generates C structs and efficient serialization/deserialization for given input? It could be useful for C++ too but generate classes instead. I'm aware of gsoap which did this for wsdl and generated code for use by SOAP xml clients and servers but not sure if anyone has done this for json
- TMSZ 11y agoJSONedit has (experimental) C++ code generator that serializes and deserializes JSON to/from object (default name for class is "Settings" and it uses json-cpp 0.5 as parser and generator): http://tomeko.net/software/JSONedit/cpp_class_generator.php http://tomeko.net/software/JSONedit/cpp_class_generator.php
- kylebgorman 11y agoWhile it's not quite what you want (as the specification language is not JSON---it's more like C declarations), "protobufs" allow you to generate serializers and de-serializers in a number of languages. http://github.com/google/protobuf http://github.com/google/protobuf
- arknave 11y agoThere's thrift, but they have a custom specification with types. It shouldn't be too hard to go from JSON to thrift though. https://thrift.apache.org/ https://thrift.apache.org/
- deleted 11y ago[deleted]