= About This Directory

This directory contains support files that I use for developing this
project.

== Coding Style

A clang-format configuration file is included in the project, you should
use that.  (clang format requires that the style file live at the top of
of the project tree, not somewhere else, such as this etc directory.)  The
format rules are probably inappropriate for the test/ subdirectory, as
the Convey framework has a style all it's own.

The style is based loosely on WebKit, but is really modified -- someday
if clang-format ever learns about BSD KNF I'll probably switch to that.

== Sublime Text

I've also arranged for Sublime text to understand that .h is C, not C++ (this
is important!)

Having said that, these days I do most development on this project using CLion
from JetBrains.

== ISO Standard C 99

This project uses C99. You may need to have modern compilers and
a modern SDK.  (Famously Windows Visual Studio releases older than
2015 will either work poorly, or not at all.)

== Naming Conventions

We use nng_ (and NNG_) for symbols that are intended to be exported to consumers.
These symbols form part of our public API.

We use nni_ and NNI_ for symbols that are *NOT* part of our public API and
should not be used by users.

Statics may have any non-conflicting name.

Note that for the most part we try to avoid exposing structures directly to
users so that they don't get baked into binaries -- preferring instead to
dynamically allocate and give back an opaque pointer to the API.  Any
exceptions to this case need to be VERY carefully reviewed to make sure
that the thing is unlikely to change (in any way whatsoever) in the future,
or that adequate provisions for versioning have been made.
