+++ /dev/null
-<big><b>Programming Conventions</b></big>
-
-<br /> <br />
-The SILC Toolkit has been programmed with a specific programming style that
-is consistent across all libraries and interfaces. The programming style
-defines for example naming conventions for functions, structures, macros,
-enumerations, and other constants.
-
-
-<br /> <br /> <br />
-<b>Naming Conventions</b>
-
-<br /> <br />
-<b>Macros and Defines</b>
-
-<br /> <br />
-Macros are always capitalised and include underscores to separate words
-in the name. All macros start with the "SILC_" prefix. Example:
-
-<br /> <br />
-<tt>
-#define SILC_PACKET_PADLEN(__packetlen, __blocklen) \<br />
- SILC_PACKET_DEFAULT_PADLEN - (__packetlen) % \<br />
- ((__blocklen) ? (__blocklen) : SILC_PACKET_DEFAULT_PADLEN)
-</tt>
-
-<br /> <br />
-Also other defines (#define) are always capitalised and include
-underscores to separate words in the name. Also all defines start with
-the "SILC_" prefix.
-
-<br /> <br />
-<b>Structures</b>
-
-<br /> <br />
-All structure names begin with "Silc" prefix, and the name is mixed-case,
-for example: SilcClientConnection, SilcCommandPayload. Many of the
-structures used in SILC are actually private structures, and application
-cannot access them directly. In these cases the structures are forward
-declared in the public header, and the implementation of the structure
-is in the source file. In these case application does not need to know
-the contents of the structure, and is usually provided with a helper API
-to access the structure when needed.
-
-<br /> <br />
-In the most of the cases the forward declaration for a structure is pointer,
-for example:
-
-<br /> <br />
-<tt>typedef struct SilcClientStruct *SilcClient;</tt>
-
-<br /> <br />
-Application should always use the type defined pointer instead of the
-actual structure.
-
-<br /> <br />
-<b>Functions</b>
-
-<br /> <br />
-Function naming uses the common naming convention used in Toolkit. All
-functions are always lowercase and they use underscores. The name of
-the function always starts with prefix "silc_". The name tells what
-the function do. The name of a function is constructed from following parts:
-
-<br /> <br />
-<tt>silc_(module)_(function)</tt>
-
-<br /> <br />
-The (module) is the library, or interface this functions is part of. For
-example: "cipher", "config", "command", "packet", etc.
-
-<br /> <br />
-The (function) is the description of the functionality of the function.
-For example: "read", "new_id", "register", "find_by_name", etc. Examples:
-
-<br /> <br />
-<tt>
-silc_server_packet_send<br />
-silc_server_packet_send_to_channel<br />
-silc_idcache_del_by_id<br />
-silc_schedule_init<br />
-silc_protocol_excute_final<br />
-silc_buffer_alloc
-</tt>
-
-<br /> <br />
-When function registers something the name of the function generally is
-"silc_function_register" and unregistering is done with
-"silc_function_unregister". When function allocates something it
-is "silc_function_alloc" and when freeing it is
-"silc_function_free". Respectively, with init/uninit functions.
-
-<br /> <br />
-<b>Enumerations</b>
-
-<br /> <br />
-Enumerations are always capitalised and include underscores to separate
-words in the name. All enumerations start with the "SILC_" prefix. Also,
-usually all enumerations are type defined to a specific name which can
-be used as type for the enumeration. Example:
-
-<br /> <br />
-<tt>
-typedef enum {<br />
- SILC_EXAMPLE_ENUM_NONE,<br />
- SILC_EXAMPLE_ENUM_LIST,<br />
- SILC_EXAMPLE_ENUM_STATUS,<br />
-} SilcExampleEnum;
-</tt>
-
-<br /> <br />
-The naming for the type definition for the enumerations follow the
-normal naming convention; the name starts with "Silc" prefix and the
-name is mixed-case.
-
-
-<br /> <br /> <br />
-<b>Layout</b>
-
-<br /> <br />
-<b>Indentation</b>
-
-<br /> <br />
-The indendation in the source code is 2 characters, and tabulators are
-not used. Example piece of code:
-
-<br /> <br />
-<tt>
-void silc_client_free(SilcClient client)<br />
-{<br />
- if (client) {<br />
- if (client->rng)<br />
- silc_rng_free(client->rng);<br />
- silc_free(client);<br />
- }<br />
-}
-</tt>
-
-<br /> <br />
-<b>Placing Braces</b>
-
-<br /> <br />
-Generally the braces placing the SILC code follows the K&R style; the
-opening of the brace is put to the last on the line, and the closing brace
-is on first on its own line, except for functions. Examples:
-
-<br /> <br />
-<tt>
-if (condition) {<br />
- silc_something();<br />
- silc_something_more();<br />
-}
-</tt>
-
-<br /> <br />
-<tt>
-int silc_client_function()<br />
-{<br />
- return 0;<br />
-}
-</tt>
-
-<br /> <br />
-<tt>
-if (condition) {<br />
- something;<br />
- silc_something_more();<br />
-} else {<br />
- something_else;<br />
-}
-</tt>
-
-<br /> <br />
-<tt>
-if (condition) {<br />
- something;<br />
- silc_something_more();<br />
-} else if (other_condition) {<br />
- something;<br />
- silc_something_more();<br />
-} else {<br />
- something_else;<br />
-}
-</tt>
-
-<br /> <br />
-<b>Header Files</b>
-<br /> <br />
-
-Standard anti-nesting method is used in the header files to avoid
-multiple inclusion of the header file. Example:
-
-<br /> <br />
-<tt>
-#ifndef SILCHEADER_H<br />
-#define SILCHEADER_H<br />
-...<br />
-#endif /* SILCHEADER_H */
-</tt>
-
-<br /> <br />
-All public header files have the "silc" prefix in the filename, for example:
-silcclient.h, silcprivate.h, silcutil.h. There are other header files in
-the Toolkit as well. Application should not directly include these headers,
-however if needed it may access them.
-
-<br /> <br />
-Every header file also includes a copyright notice.