diff --git a/libs/libks/CODING_GUIDELINES b/libs/libks/CODING_GUIDELINES new file mode 100644 index 0000000000..53f07773af --- /dev/null +++ b/libs/libks/CODING_GUIDELINES @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2007-2017, FreeSWITCH Solutions LLC + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* +Functions that create and destroy objects always take pointer to pointer of that type. +Spaces after loop and conditional operators while, for, if etc. +Newlines after one or more declarations. +Newlines before and after loops. +Newlines before returns. +One-Line if/else sparingly only when very obvious exit from loop or return. +Use brackets even when not necessary other than the one-liners above. +Align the * in pointers to the type or function name (e.g char *foo, char *some_func(char *data) ) +Use typedefs for structs especially public-facing. +Only use // style-comments on tempory comments that will probably be removed eventually. +Add the emacs/vi comment to the bottom of every file. +Use Doxygen for function args. +Tabs not spaces. +*/ + +KS_DECLARE(ks_status_t) function_example(somedata_t **data, ks_pool_t *pool) +{ + int var = 3, x = 0; + + if (!pool) return KS_STATUS_FAIL; + + for (x = 0; x < 100; x++) { + var = += x; + } + + if (var > 20) { + var *= 2; + } else { + var *= 3; + } + + while (var) { + var--; + } + + if (var) { + *data = ks_pool_alloc(pool, sizeof(*data)); + (*data)->pool = pool; + + return KS_STATUS_SUCCESS; + + } else { + *data = NULL; + + return KS_STATUS_FAIL; + } + +} + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet: + */