Add a skeleton file for a C++ class
authorLukas Jiriste <ljiriste@student.42prague.com>
Fri, 11 Oct 2024 15:13:57 +0000 (17:13 +0200)
committerLukas Jiriste <ljiriste@student.42prague.com>
Fri, 11 Oct 2024 15:13:57 +0000 (17:13 +0200)
Also add a function to .vimrc that invokes it and names it
appropriately.

vim/.vimrc
vim/templates/class_skeleton.h [new file with mode: 0644]

index 99a32c1f3eb0550c50bb45df16a9b74c23e7b4ba..e79d3f50fb3a44db6abc06c9aa365a8cb7615bff 100644 (file)
@@ -19,7 +19,7 @@ set number relativenumber
 set incsearch
 set autoindent
 syntax on
-filetype plugin indent on " redundant after syntax on
+filetype plugin indent on " redundant after syntax on
 set splitright
 
 " Add every subfolder of the vim root folder to path for find command
@@ -27,3 +27,10 @@ set path+=**
 
 " Add visual menu
 set wildmenu
+
+function Cpp_class(classname)
+       let skel = join(readfile(glob('~/.vim/templates/class_skeleton.h')), "\n")
+       let skel = substitute(skel, 'Classname', a:classname, 'g')
+       let skel = substitute(skel, 'CLASSNAME_H', toupper(a:classname) . "_H", 'g')
+       put! =skel
+endfunction
diff --git a/vim/templates/class_skeleton.h b/vim/templates/class_skeleton.h
new file mode 100644 (file)
index 0000000..035c568
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef CLASSNAME_H
+# define CLASSNAME_H
+
+class Classname
+{
+       private:
+
+       public:
+               Classname();
+               Classname(const Classname &other);
+               ~Classname();
+
+               Classname       &operator=(const Classname &other);
+};
+
+Classname::Classname()
+{
+}
+
+Classname::Classname(const Classname &other)
+{
+       *this = other;
+}
+
+Classname::~Classname()
+{
+}
+
+Classname      &Classname::operator=(const Classname &other)
+{
+       if (this == &other)
+               return (*this);
+       return (*this);
+}
+
+#endif // CLASSNAME_H