# Speech Dispatcher Coding Guidelines

This document describes the coding style used in this repository. All patches or changes must follow this style. If you have any questions, please contact the speech dispatcher mailing list.

## Coding Style Guidelines for C Code

The indenting style we use is the same as the linux kernel, with the following exceptions and extensions:

- Goto statements should not be used unless in very special cases.

- Function names should be

  - lowercase words separated by underscores.
  - functions which are only implementation details of the given source file should be declared as static

- Variable names

  - global variables should follow the same conventions as functions (e.g. `output_modules`)
  - the verbosity of the name of local variables should be appropriate to its scope

- Macro names

  - Macro names should be in uppercase, words separated by underscores (e.g. `SPEECHD_OPTION_CB_STR`)

- Type names

  - New types are defined in mixed uppercase (e.g. MessageType)

If you use GNU indent 2.2.10 or later, you should run it as follows:

    indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs -cp1 -il0

For versions of indent earlier than 2.2.10, drop the -il0 from the parameters.

In emacs environment the following can be used (untested):

    (defun speechd-c-mode ()
      "C mode with adjusted defaults for use with Speech Dispatcher."
      (interactive)
      (c-mode)
      (c-set-style "K&R"))

## Coding Style Guideline for other code

Please respect the coding style of the given component.

Copyright (C) 2001-2018 Brailcom, o.p.s Copyright (C) 2011 William Hubbs w.d.hubbs@gmail.com

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details (file COPYING in the root directory).

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.