Commit graph

69 commits

Author SHA1 Message Date
jose luis ferrer
d9240320c1 compiler: Allocate all possible space for constants
When the c-capnp compiler runs, currently only takes the len of 1st
segment in the list as a capacity used in the generator for constants
definitions.

This works when the schema processing only generates 1 segment, or the
1st segment has 8192 bytes. There are cases where the fd returns
multiple segments an the first one has very low capacity (e.g. 96 or 80).
Hence, if more constants require to be allocated for the current schema
it will have misleading positions.

This commit takes a conservative approach by summing up all the lenghts
of capnproto segments obtained at the fd_init call of the compiler.
Those values are taken to set the memory allocation and the max
capacity for the segment utilized in the code generation.
2018-02-01 15:13:18 +01:00
Alexis Ballier
704a34fa65 Use proper format specifiers for size_t. 2017-05-19 19:26:47 +02:00
David Lamparter
aa1f31d401 Silence empty struct warning
Last but not least, -Wpedantic warns about empty structs.  With this,
-Wpedantic build is now clean of warnings on gcc 5.4.0 and clang 4.0.
2017-05-19 09:45:01 +02:00
David Lamparter
b0810da2c3 Silence warning on unused struct parameter
When generating code for an empty struct, the read_/write_ functions
would print warnings about the unused "s" pointer.  Silence these.
2017-05-19 09:40:37 +02:00
David Lamparter
99e9412c02 Silence GCC unnamed union warning
We need the unnamed struct/union support, this is user-facing API.
So, silence the -Wpedantic warning.
2017-05-19 09:35:09 +02:00
Alex Helfet
989acc3414 Most .capnp files use "/c.capnp".fieldgetset. Recompile from schema files. 2017-03-26 23:40:55 +01:00
Alex Helfet
a379aa89ac Compiler generates absolute #include paths from .capnp imports with leading /'s.
As specified in https://capnproto.org/language.html#imports and implemented
in the C++ compiler output plugin.
2017-03-26 18:43:57 +01:00
Alex Helfet
6b52d615a2 Add all .capnp files to make dist archive. 2017-03-26 15:23:35 +01:00
Alex Helfet
362173091d compiler: If an explicit symbol wasn't provided, make generated capn_val%d variables static. 2017-03-23 20:18:29 +00:00
Alex Helfet
f16fae57b3 Fix GCC warnings in initializers for capn_val0 and capn_seg. 2017-03-22 06:48:58 +00:00
David Lamparter
54a7bb7ffb compiler: drop outdated find_node comment & IDs 2016-07-20 08:48:22 +02:00
David Lamparter
c322bc9618 compiler: apply name infix on include filenames
This fixes #include output when $C.nameinfix is used.
2016-07-19 15:21:56 +02:00
David Lamparter
da663f83ef compiler: add annotation to enable field get/set
Generating per-field getters/setters adds a lot of functions; this makes
them switchable with an annotation in the source schema.
2016-07-19 15:21:05 +02:00
David Lamparter
52ca907f14 compiler: add find_node_mayfail(), remove hack
Fixes github issue #11, also makes it easier to use annotations.
2016-07-19 15:14:00 +02:00
David Lamparter
5d787b698e compiler: add "C::nameinfix" annotation
allows changing output filenames from "foo.capnp.c" to
"foo.capnpSOMETHING.c" where SOMETHING is the argument to the
annotation.
2016-06-22 15:16:40 +02:00
David Lamparter
87591da455 Update autogenerated files 2016-06-22 14:24:28 +02:00
David Lamparter
48535d02bd whitespace fixes 2016-06-22 13:44:56 +02:00
Michael Gartsbein
05f5884385 add u to avoid undefined shl 2016-05-05 11:40:13 +03:00
Michael Gartsbein
12ad949df8 working with stricter compiler flags 2016-04-28 12:01:08 +03:00
David Lamparter
e9df12b387 don't write out empty structs
"struct { } foo" is not valid ISO C99; while gcc/clang/icc support it,
other compilers and tools don't (e.g. pycparser)
2016-04-06 14:18:29 -03:00
Michael Gartsbein
61a43a4998 static const instead of function in size getters 2016-03-29 10:25:33 +03:00
Michael Gartsbein
e870b5d605 generate setter and getter 2016-03-27 16:35:11 +03:00
David Lamparter
4de69a555d test.schema: drop interface & generic, regenerate 2016-03-19 00:46:05 +01:00
David Lamparter
7ecadefbfd compiler: fix remaining warnings 2016-03-19 00:39:30 +01:00
David Lamparter
811d3046e1 rename to "[lib]capnp_c", use lib/ subdir 2016-03-19 00:39:29 +01:00
David Lamparter
d3b1cad50f compiler: regenerate schema.c with enum/int cast 2016-03-19 00:39:25 +01:00
David Lamparter
41462901df lib: fix warning on uint16->enum cast 2016-03-19 00:36:24 +01:00
David Lamparter
ae746a3e08 add approprate per-file license headers 2016-02-28 12:47:42 +01:00
David Lamparter
b55d847db6 Re-fix signed/unsigned warnings 2016-02-28 12:42:52 +01:00
David Lamparter
02268ff818 Merge branch 'kylemanna' into merge
Conflicts: (manually resolved)
	capn-malloc.c
	capn-stream.c
	capn-test.cpp
	capn.c
	capn.h
	compiler/capnpc-c.c
2016-02-28 12:32:59 +01:00
David Lamparter
0ddba4f2f1 Merge branch 'baruch' into merge
Conflicts:
	Makefile		-- manually resolved
	compiler/schema.capnp	-- used from liamstask
	compiler/test.capnp	-- used from liamstask
2016-02-28 12:17:57 +01:00
Kyle Manna
376b63fb81 signedness: Fix less obvious issues
* My compilers mark these as errors
* Attempt to be more correct
* Tested on gcc-5.2.0 and clang-3.6.2
2015-08-17 18:52:36 -07:00
Kyle Manna
e933510236 compiler: Fix missing comments
* Later versions of compilers/pre-processors are upset about the syntax
* Bracket unterminated string with proper comment tags
2015-08-17 18:50:53 -07:00
Kyle Manna
7d2e122f2f signedness: Fix obvious sign problems
* These should be easily verified as correct.
* Tested on gcc-5.2.0 and clang-3.6.2
2015-08-17 18:48:17 -07:00
Liam Staskawicz
cdf7e1f007 compiler: notes on updating from upstream 2015-08-04 12:04:49 -07:00
Liam Staskawicz
560366c7d4 compiler: introduce workaround for annotation ids in nestednode list (see comments), and regenerate schema .{c|h} files based on capnproto v0.5.2 2015-08-04 11:56:00 -07:00
Liam Staskawicz
98c2d02744 compiler: update schemas from v0.5.2 2015-08-04 11:55:23 -07:00
Liam Staskawicz
0b6f95294e all: use unsigned types for more variables that represent length
resolve build warnings on multiple platforms/toolchains
2015-08-04 10:44:22 -07:00
Liam Staskawicz
125c638c11 unreal: gcc complains about missing ‘ character in #if 0 block 2015-08-04 10:25:08 -07:00
Baruch Even
d785521932 Recompile capnpc schemas for capnpc 0.4 2014-08-03 23:22:28 +03:00
Johan De Claville Christiansen
d84a635fb0 Fixed compilation by removing 32-bit padding 2014-03-25 19:12:58 +01:00
Johan De Claville Christiansen
bf5eb7f92c Added gtest 1.6.0, since the included version lacked the headers 2014-03-25 18:55:18 +01:00
Johan De Claville Christiansen
1d79a28091 Fixed: missing terminating ' character 2014-03-25 17:50:39 +01:00
James McKaskill
ff44e4df26 remove CAPN_COMPOSITE_LIST and add capn_len 2013-09-16 16:53:33 -04:00
James McKaskill
59f827e93d change ptrsz to ptrs to free up space in capn_ptr 2013-09-13 10:02:03 -04:00
James McKaskill
7b0bfece26 add version checks 2013-09-12 23:28:36 -04:00
James McKaskill
081c783bbf don't autoresolve pointers 2013-09-12 17:26:51 -04:00
James McKaskill
bba43e67ea Add test schema 2013-09-12 14:55:42 -04:00
James McKaskill
9682fb2611 list out constants in declaration order 2013-09-12 14:48:11 -04:00
James McKaskill
ca1d07f657 Round trip the schema through the compiler 2013-09-12 14:37:15 -04:00