1. 11 Jan, 2018 1 commit
    • Kenton Varda's avatar
      Replace all include guards with #pragma once. · 677a52ab
      Kenton Varda authored
      @kloepper pointed out a while back that every compiler you've ever heard of supports this. Plus, it's more concise, it's not prone to copy-paste errors, and it looks nicer.
      
      At the time I wanted to remain consistent and I didn't feel like spending the time to update all my existing code. But, every time I've added a new header since I've cursed the include guard, so I finally broke down and changed it.
      677a52ab
  2. 30 Mar, 2017 1 commit
  3. 24 Mar, 2017 1 commit
  4. 02 Apr, 2016 1 commit
  5. 20 Mar, 2016 1 commit
    • Matthew Maurer's avatar
      Add Canonicalization · 5db2c8f8
      Matthew Maurer authored
      The user facing API is in MessageReader and MessageBuilder
      
      {MessageBuilder,MessageReader}::isCanonical verifies the canonicity of a
      message. This is both useful for debugging and for knowing if a received
      message can be used for hashes, bytewise equality, etc.
      
      MessageBuilder::canonicalRoot(Reader) can be used to write a canonical
      message on a best effort basis, and checks itself using isCanonical.
      It should succeed as long as the MessageBuilder in question:
      * Has a first segment which is long enough to contain the message
      * Has not been used before
      
      Tests have been added in canonicalize-test.c++ which verify that for
      crafted examples of canonicalization errors, isCanonical will reject,
      and for a canonicalized version of the standard test message, it will
      accept.
      5db2c8f8
  6. 22 Nov, 2014 1 commit
  7. 09 Nov, 2014 1 commit
  8. 26 Oct, 2014 1 commit
  9. 20 Oct, 2014 1 commit
    • Kenton Varda's avatar
      Generics: Tag generated types using members rather than template specialization. · 490acec8
      Kenton Varda authored
      That is to say, whereas previously we would extend capnp::typeId<T>() to a new type by declaring a specialization of it for that type, now we instead have the type contain a nested class called _capnpPrivate which contains a `typeId` constant.
      
      This is necessary because it is impossible to specialize a template for a type which is itself nested inside a template type. E.g. it's impossible to write a specialization `template <typename T> typeId<Foo<T>::Bar>()`; C++ simply doesn't support this. But with generics, Cap'n Proto will allow types to be nested inside templates, so we need this to work.
      490acec8
  10. 20 Jun, 2014 1 commit
    • Kenton Varda's avatar
      Change license to MIT. · 889204fe
      Kenton Varda authored
      For portions currently copyright by Kenton (most of it), transfer copyright to Sandstorm Development Group, Inc. (Kenton's company).
      
      The license change is practically meaningless, as MIT and BSD 2-clause are legally equivalent. However, the BSD 2-clause license is sometimes confused for its ugly siblings, BSD 3-clause and BSD 4-clause. The MIT license is more immediately recognizeable for what it is.
      
      Rémy Blank and Jason Choy (the two non-trivial contributors) are on record as approving this change:
      
      https://groups.google.com/d/msg/capnproto/xXDd2HUOCcc/gbe_COIuXKYJ
      889204fe
  11. 10 Dec, 2013 1 commit
  12. 05 Dec, 2013 1 commit
  13. 17 Oct, 2013 1 commit
  14. 24 Sep, 2013 1 commit