BasedOnStyle: Google
MaxEmptyLinesToKeep: 3
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
DerivePointerAlignment: false
PointerAlignment: Right
# TODO(davidben): The default for Google style is now Regroup. Now that we've
# configured IncludeCategories, should we pick up Regroup?
IncludeBlocks: Preserve
IncludeCategories:
  # Our public headers.
  - Regex: '^<openssl/.*\.h>'
    Priority: 4
  # Our private headers.
  - Regex: '^".*"'
    Priority: 5
  # Headers from our dependencies
  #
  # TODO(davidben): A strict reading of the the style guide would suggest these
  # should be grouped with C system headers. Previously we grouped them as if
  # they were "Other libraries' .h files.". Should we switch?
  - Regex: '^<(gtest|gmock|benchmark)/.*\.h>'
    Priority: 3
  # C system headers, and any other headers in angle brackets with the .h extension.
  - Regex: '^<.*\.h>'
    Priority: 1
  # C++ standard library headers.
  - Regex: '^<.*>'
    Priority: 2
InsertBraces: true
TypenameMacros: ['LHASH_OF', 'STACK_OF']
StatementMacros:
  - "DECLARE_ASN1_ALLOC_FUNCTIONS"
  - "DECLARE_ASN1_ALLOC_FUNCTIONS_name"
  - "DECLARE_ASN1_ENCODE_FUNCTIONS"
  - "DECLARE_ASN1_ENCODE_FUNCTIONS_const"
  - "DECLARE_ASN1_FUNCTIONS"
  - "DECLARE_ASN1_FUNCTIONS_const"
  - "DECLARE_ASN1_FUNCTIONS_fname"
  - "DECLARE_ASN1_FUNCTIONS_name"
  - "DECLARE_PEM_read"
  - "DECLARE_PEM_read_bio"
  - "DECLARE_PEM_read_fp"
  - "DECLARE_PEM_rw"
  - "DECLARE_PEM_rw_cb"
  - "DECLARE_PEM_rw_const"
  - "DECLARE_PEM_write"
  - "DECLARE_PEM_write_bio"
  - "DECLARE_PEM_write_bio_const"
  - "DECLARE_PEM_write_cb"
  - "DECLARE_PEM_write_cb_bio"
  - "DECLARE_PEM_write_cb_fp"
  - "DECLARE_PEM_write_const"
  - "DECLARE_PEM_write_fp"
  - "DECLARE_PEM_write_fp_const"
  - "IMPLEMENT_ASN1_ALLOC_FUNCTIONS"
  - "IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname"
  - "IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname"
  - "IMPLEMENT_ASN1_DUP_FUNCTION"
  - "IMPLEMENT_ASN1_DUP_FUNCTION_const"
  - "IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname"
  - "IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname"
  - "IMPLEMENT_ASN1_FUNCTIONS"
  - "IMPLEMENT_ASN1_FUNCTIONS_const"
  - "IMPLEMENT_ASN1_FUNCTIONS_const_fname"
  - "IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name"
  - "IMPLEMENT_ASN1_FUNCTIONS_fname"
  - "IMPLEMENT_ASN1_FUNCTIONS_name"
  - "IMPLEMENT_ASN1_TYPE_ex"
  - "IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS"
  - "IMPLEMENT_PEM_read"
  - "IMPLEMENT_PEM_read_bio"
  - "IMPLEMENT_PEM_read_fp"
  - "IMPLEMENT_PEM_rw"
  - "IMPLEMENT_PEM_rw_cb"
  - "IMPLEMENT_PEM_rw_const"
  - "IMPLEMENT_PEM_write"
  - "IMPLEMENT_PEM_write_bio"
  - "IMPLEMENT_PEM_write_bio_const"
  - "IMPLEMENT_PEM_write_cb"
  - "IMPLEMENT_PEM_write_cb_bio"
  - "IMPLEMENT_PEM_write_cb_bio_const"
  - "IMPLEMENT_PEM_write_cb_const"
  - "IMPLEMENT_PEM_write_cb_fp"
  - "IMPLEMENT_PEM_write_cb_fp_const"
  - "IMPLEMENT_PEM_write_const"
  - "IMPLEMENT_PEM_write_fp"
  - "IMPLEMENT_PEM_write_fp_const"
  - "ASN1_ADB_END"
  - "ASN1_CHOICE_END"
  - "ASN1_CHOICE_END_cb"
  - "ASN1_ITEM_TEMPLATE_END"
  - "ASN1_SEQUENCE_END"
  - "ASN1_SEQUENCE_END_cb"
  - "ASN1_SEQUENCE_END_enc"
  - "ASN1_SEQUENCE_END_ref"
  # This isn't quite right, but it causes clang-format to do a slightly better
  # job with this macro.
  - "ASN1_EX_TEMPLATE_TYPE"
