if !exists('loaded_snippet') || &cp finish endif function! Count(haystack, needle) let counter = 0 let index = match(a:haystack, a:needle) while index > -1 let counter = counter + 1 let index = match(a:haystack, a:needle, index+1) endwhile return counter endfunction function! CArgList(count) " This returns a list of empty tags to be used as " argument list placeholders for the call to printf let st = g:snip_start_tag let et = g:snip_end_tag if a:count == 0 return "" else return repeat(', '.st.et, a:count) endif endfunction let st = g:snip_start_tag let et = g:snip_end_tag let cd = g:snip_elem_delim """ Conditional exec "Snippet once #ifndef ".st."file:substitute(expand('%'),'\\(.\\)','\\u\\1','g')".et."_#define ".st."file".et."_".st.et."#endif /* ".st."file".et."_ */".st.et."" exec "Snippet mark #if 0".st.":D('#pragma mark -')}#pragma mark ".st.et."#endif".st.et."" "" loop exec "Snippet do do{".st.et."} while (".st.et.");" exec "Snippet while while(".st.et."){".st.et."}" exec "Snippet for for(".st."type".et." ".st."var".et."; ".st."condi".et."; ".st.et."){".st.et."}".st.et."" "" condition exec "Snippet if if(".st.et."){".st.et."}".st.et."" exec "Snippet ifelse if(".st.et."){".st.et."}else{".st.et."}".st.et."" """exec "Snipper ?: (".st.et.")? ".st.et.": ".st.et.";".st.et."" """ Build Scope exec "Snippet usename using namespace ".st."scope".et.";".st.et."" exec "Snippet namespace namespace ".st.":substitute(expand('%'),'.','\\l&', 'g')".et."{".st.et."};".st.et."" exec "Snippet struct struct ".st."name".et."{".st.":D('/* data */')".et."};".st.et."" exec "Snippet class class ".st."name".et."{public:".st."name".et." (".st."arguments".et.");virtual ~".st."name".et."();private:".st.":D('/* data */')".et."};".st.et."" exec "Snippet fun ".st."return".et." ".st."function".et."(".st."args".et."){".st.et."}".st.et."" exec "Snippet funobj templateclass ".st."funname".et."{public:".st."return".et." operator(".st."args".et."){".st.et."}};".st.et."" exec "Snippet main int main (int argc, char const* argv[]){".st.et."}".st.et."" " template exec "Snippet template template ".st.et."" """ functions exec "Snippet printf printf(\"".st."\"%s\"".et."\\n\"".st."\"%s\":CArgList(Count(@z, '%[^%]'))".et.");".st.et."" exec "Snippet scanf scanf(\"".st."\"%s\"".et."".st."\"%s\":CArgList(Count(@z, '%[^%]'))".et.");".st.et."" exec "Snippet malloc (".st."type".et."*) malloc(sizeof(".st."type".et.")*".st."size".et.");".st.et."" exec "Snippet readfile std::vector v;if(FILE* fp = fopen(\"".st."filename".et."\", \"r\")){uint8_t buf[1024];while(size_t len = fread(buf, 1, sizeof(buf), fp))v.insert(v.end(), buf, buf + len);fclose(fp);}".st.et."" """ STL Support "" begin end exec "Snippet beginend ".st."iter".et.".begin(), ".st."iter".et.".end()".st.et."" exec "Snippet rbeginend ".st."iter".et.".rbegin(), ".st."iter".et.".rend()".st.et."" "" container exec "Snippet vector std::vector<".st."char".et."> ".st.et."" exec "Snippet list std::list<".st."char".et."> ".st.et."" exec "Snippet deque std::deque<".st."char".et."> ".st.et."" exec "Snippet slist std::slist<".st."char".et."> ".st.et."" exec "Snippet set std::set<".st."char".et."> ".st.et."" exec "Snippet multiset std::multiset<".st."char".et."> ".st.et."" exec "Snippet map std::map<".st."key".et.", ".st."value".et."> ".st.et." ".st.et."" exec "Snippet multimap std::multimap<".st."key".et.", ".st."value".et."> ".st.et." ".st.et."" exec "Snippet hash_set std::hash_set<".st."key".et.", ".st."HashFun".et.", ".st."EqualKey".et."> ".st.et." ".st.et."" exec "Snippet hash_map std::hash_map<".st."key".et.",".st."Data".et.", ".st."HashFun".et.", ".st."EqualKey".et."> ".st.et." ".st.et."" exec "Snippet hash_multiset std::hash_multiset<".st."key".et.", ".st."HashFun".et.", ".st."EqualKey".et."> ".st.et." ".st.et."" exec "Snippet hash_multimap std::hash_multimap<".st."key".et.",".st."Data".et.", ".st."HashFun".et.", ".st."EqualKey".et."> ".st.et." ".st.et."" "" container iterator exec "Snippet vectoriter std::vector<".st."char".et.">::iterator ".st.et."" exec "Snippet listiter std::list<".st."char".et.">::iterator ".st.et."" exec "Snippet dequeiter std::deque<".st."char".et.">::iterator ".st.et."" exec "Snippet slistiter std::slist<".st."char".et.">::iterator ".st.et."" exec "Snippet setiter std::set<".st."char".et.">::iterator ".st.et."" exec "Snippet multisetiter std::multiset<".st."char".et.">::iterator ".st.et."" exec "Snippet mapiter std::map<".st."key".et.", ".st."value".et.">::iterator ".st.et." ".st.et."" exec "Snippet multimapiter std::multimap<".st."key".et.", ".st."value".et.">::iterator ".st.et." ".st.et."" exec "Snippet hash_setiter std::hash_set<".st."key".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::iterator ".st.et." ".st.et."" exec "Snippet hash_mapiter std::hash_map<".st."key".et.",".st."Data".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::iterator ".st.et." ".st.et."" exec "Snippet hash_multisetiter std::hash_multiset<".st."key".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::iterator ".st.et." ".st.et."" exec "Snippet hash_multimapiter std::hash_multimap<".st."key".et.",".st."Data".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::iterator ".st.et." ".st.et."" "" reverse iterator exec "Snippet vectorriter std::vector<".st."char".et.">::reverse_iterator ".st.et."" exec "Snippet listriter std::list<".st."char".et.">::reverse_iterator ".st.et."" exec "Snippet dequeriter std::deque<".st."char".et.">::reverse_iterator ".st.et."" exec "Snippet slistriter std::slist<".st."char".et.">::reverse_iterator ".st.et."" exec "Snippet setriter std::set<".st."char".et.">::reverse_iterator ".st.et."" exec "Snippet multisetriter std::multiset<".st."char".et.">::reverse_iterator ".st.et."" exec "Snippet mapriter std::map<".st."key".et.", ".st."value".et.">::reverse_iterator ".st.et." ".st.et."" exec "Snippet multimapriter std::multimap<".st."key".et.", ".st."value".et.">::reverse_iterator ".st.et." ".st.et."" exec "Snippet hash_setriter std::hash_set<".st."key".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::reverse_iterator ".st.et." ".st.et."" exec "Snippet hash_mapriter std::hash_map<".st."key".et.",".st."Data".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::reverse_iterator ".st.et." ".st.et."" exec "Snippet hash_multisetriter std::hash_multiset<".st."key".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::reverse_iterator ".st.et." ".st.et."" exec "Snippet hash_multimapriter std::hash_multimap<".st."key".et.",".st."Data".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::reverse_iterator ".st.et." ".st.et."" "" const iterator exec "Snippet vectorciter std::vector<".st."char".et.">::const_iterator ".st.et."" exec "Snippet listciter std::list<".st."char".et.">::const_iterator ".st.et."" exec "Snippet dequeciter std::deque<".st."char".et.">::const_iterator ".st.et."" exec "Snippet slistciter std::slist<".st."char".et.">::const_iterator ".st.et."" exec "Snippet setciter std::set<".st."char".et.">::const_iterator ".st.et."" exec "Snippet multisetciter std::multiset<".st."char".et.">::const_iterator ".st.et."" exec "Snippet mapciter std::map<".st."key".et.", ".st."value".et.">::const_iterator ".st.et." ".st.et."" exec "Snippet multimapciter std::multimap<".st."key".et.", ".st."value".et.">::const_iterator ".st.et." ".st.et."" exec "Snippet hash_setciter std::hash_set<".st."key".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::const_iterator ".st.et." ".st.et."" exec "Snippet hash_mapciter std::hash_map<".st."key".et.",".st."Data".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::const_iterator ".st.et." ".st.et."" exec "Snippet hash_multisetciter std::hash_multiset<".st."key".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::const_iterator ".st.et." ".st.et."" exec "Snippet hash_multimapciter std::hash_multimap<".st."key".et.",".st."Data".et.", ".st."HashFun".et.", ".st."EqualKey".et.">::const_iterator ".st.et." ".st.et."" """ Just for Fun XD exec "Snippet HELLOWORLD #includeint main(int argc, char** argv){std::cout << \"Hello World!\" << std::endl;}"