Skip to content

Conversation

@TallJimbo
Copy link
Member

No description provided.

The compound field types that once used these are gone, so the only
place we need them is in the backwards-compatibility reading code.
This commit guards against one-definition rule violations involving
explicit specializations of the Key, KeyBase, and FieldBase classes by
moving those specializations next to the default definitions of those
templates and generally making includes more "self-sufficient":
headers should now (at least mostly) include the headers for all
classes they use directly, and should not rely on other headers being
included for them in any source files (but that is always difficult to
check).  In a few cases I do assume that some headers (e.g. Schema.h)
can be relied upon to include others (Key.h, Field.h) in higher-level
code.

This also removes a few includes that were not being used in those
headers at all.  That could cause downstream compile failures if
source files or other headers were (incorrectly) relying on those
incorrect includes, but such breakage should be easy to fix and is
worth fixing anyway.
We no longer have any compound keys - they've been replaced by the
FunctorKey concept instead.  This lets us simplify a lot of code,
especially in Schema.cc.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants