| Index: coderules.txt
|
| diff --git a/coderules.txt b/coderules.txt
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a2f593adab7c2f4acc3a940164d0cbb6b30e123b
|
| --- /dev/null
|
| +++ b/coderules.txt
|
| @@ -0,0 +1,78 @@
|
| +IJG JPEG LIBRARY: CODING RULES
|
| +
|
| +This file was part of the Independent JPEG Group's software:
|
| +Copyright (C) 1991-1996, Thomas G. Lane.
|
| +It was modified by The libjpeg-turbo Project to include only information
|
| +relevant to libjpeg-turbo.
|
| +For conditions of distribution and use, see the accompanying README.ijg file.
|
| +
|
| +
|
| +Since numerous people will be contributing code and bug fixes, it's important
|
| +to establish a common coding style. The goal of using similar coding styles
|
| +is much more important than the details of just what that style is.
|
| +
|
| +In general we follow the recommendations of "Recommended C Style and Coding
|
| +Standards" revision 6.1 (Cannon et al. as modified by Spencer, Keppel and
|
| +Brader). This document is available in the IJG FTP archive (see
|
| +jpeg/doc/cstyle.ms.tbl.Z, or cstyle.txt.Z for those without nroff/tbl).
|
| +
|
| +Block comments should be laid out thusly:
|
| +
|
| +/*
|
| + * Block comments in this style.
|
| + */
|
| +
|
| +We indent statements in K&R style, e.g.,
|
| + if (test) {
|
| + then-part;
|
| + } else {
|
| + else-part;
|
| + }
|
| +with two spaces per indentation level. (This indentation convention is
|
| +handled automatically by GNU Emacs and many other text editors.)
|
| +
|
| +Multi-word names should be written in lower case with underscores, e.g.,
|
| +multi_word_name (not multiWordName). Preprocessor symbols and enum constants
|
| +are similar but upper case (MULTI_WORD_NAME). Names should be unique within
|
| +the first fifteen characters.
|
| +
|
| +Note that each function definition must begin with GLOBAL(type), LOCAL(type),
|
| +or METHODDEF(type). These macros expand to "static type" or just "type" as
|
| +appropriate. They provide a readable indication of the routine's usage and
|
| +can readily be changed for special needs. (For instance, special linkage
|
| +keywords can be inserted for use in Windows DLLs.)
|
| +
|
| +A similar solution is used for external function declarations (see the EXTERN
|
| +macro.)
|
| +
|
| +
|
| +The JPEG library is intended to be used within larger programs. Furthermore,
|
| +we want it to be reentrant so that it can be used by applications that process
|
| +multiple images concurrently. The following rules support these requirements:
|
| +
|
| +1. Avoid direct use of file I/O, "malloc", error report printouts, etc;
|
| +pass these through the common routines provided.
|
| +
|
| +2. Minimize global namespace pollution. Functions should be declared static
|
| +wherever possible. (Note that our method-based calling conventions help this
|
| +a lot: in many modules only the initialization function will ever need to be
|
| +called directly, so only that function need be externally visible.) All
|
| +global function names should begin with "jpeg_".
|
| +
|
| +3. Don't use global variables; anything that must be used in another module
|
| +should be in the common data structures.
|
| +
|
| +4. Don't use static variables except for read-only constant tables. Variables
|
| +that should be private to a module can be placed into private structures (see
|
| +the system architecture document, structure.txt).
|
| +
|
| +5. Source file names should begin with "j" for files that are part of the
|
| +library proper; source files that are not part of the library, such as cjpeg.c
|
| +and djpeg.c, do not begin with "j". Keep compression and decompression code in
|
| +separate source files --- some applications may want only one half of the
|
| +library.
|
| +
|
| +Note: these rules (particularly #4) are not followed religiously in the
|
| +modules that are used in cjpeg/djpeg but are not part of the JPEG library
|
| +proper. Those modules are not really intended to be used in other
|
| +applications.
|
|
|