extends cpp priority 200 global !p def complete(t, opts): if t: opts = [m[len(t):] for m in opts if m.startswith(t)] if len(opts) == 1: return opts[0] return '(' + '|'.join(opts) + ')' endglobal snippet helloworld "Hello World" #include int main(void){(void)printf("Hello World!\n");return 0;} endsnippet snippet for "For-loop head" for (${1:int ${2:i}} = ${3:0}; ${4:$2 < $5}; ${6:$2++}) { $7 } $0 endsnippet snippet while "while loop head" for (;$1;) { $2 } $0 endsnippet snippet fun "New Function" ${1:int} ${2:MyFunc} (${3:void}) { `!p if t[1].replace('static ', '') != "void": snip.rv = f"{t[1].replace('static ', '')} rv = 0;" else: snip.rv = ""` $5 `!p if t[1].replace('static ', '') != "void": snip.rv = f"return rv;" else: snip.rv = ""` } $0 endsnippet snippet pfun "prototype for function" bA /** * @name $2 * @return $1 * @brief ${4: Description} * `!p params = t[3].replace(", ", ",").split(",") rval = "" for param in params: if len(param.split(' ')) >= 2: rval += f"\n *\t@param {param}" snip.rv = rval` */ ${1:int} ${2:MyFunc} (${3:void}); endsnippet snippet exfun "New Function with Documentation" /** * @name $2 * @return $1 * @brief ${4: Description} * `!p params = t[3].replace(", ", ",").split(",") rval = "" for param in params: if len(param.split(' ')) >= 2: rval += f"\n *\t@param {param}" snip.rv = rval` */ ${1:int} ${2:MyFunc} (${3:void}) { /* Returns ${5:void} */ `!p if t[1].replace('static ', '') != "void": snip.rv = f"{t[1].replace('static ', '')} {t[5]} = 0;" else: snip.rv = ""` $6 `!p if t[1].replace('static ', '') != "void": snip.rv = f"return {t[5]};" else: snip.rv = ""` } $0 endsnippet snippet "(\w+) = malloc" "Automativ malloc error implementation" rA /* Allocate memory for `!p snip.rv = match.group(1)` */ `!p snip.rv = match.group(1)` = ($1*)malloc(sizeof(${1:int}) * $2); if (!`!p snip.rv = match.group(1)`) { /* Error */ (void)printf("ERROR: malloc error on memory allocation of: `!p snip.rv = match.group(1)`!\n"); exit(EXIT_FAILURE); } $0 endsnippet snippet swap "Swap two integer or numerical variables" /* Swap Variables $1 and $2 */ ${1:Var1} = $1 + ${2:Var2}; $2 = $1 - $2; $1 = $1 - $2; $0 endsnippet snippet defstruct "define a new type with a struct" A /* define struct $1 ${2:Explaination} */ typedef struct $1 $1; struct $1 { $3 }; endsnippet snippet docstring "Meta Comment for Documenation" A /* * Filename: `!p snip.rv = fn` * Author: ${1:Yannick Reiss} * Date: `date` * Project: ${2:Project Name} * Copyright: ${3:None} * Description: ${4:Funny module} * */$0 endsnippet snippet templatehsrm "Program templte from HSRM" A /* include */ $1 /* makros */ $2 /* typ definitions */ $3 /* local function prototypes */ $4 /* global constants */ $5 /* global variables */ $6 /* local constants */ $7 /* local variables */ $8 /* global and local function implementations */ $0 endsnippet snippet /* "comment" A /* $1 */$0 endsnippet snippet fflush "flush stdout" iA /* flush stdout */ if ( fflush(stdout) ) { perror("Could not flush stdout"); exit(EXIT_FAILURE); } endsnippet snippet switch "Classic C switch statement" b switch(${1:Expression}) { case $3: $4 break;$5 default: $2 }$0 endsnippet