aboutsummaryrefslogtreecommitdiff
path: root/dot_vim/c-support/codesnippets
diff options
context:
space:
mode:
Diffstat (limited to 'dot_vim/c-support/codesnippets')
-rw-r--r--dot_vim/c-support/codesnippets/Makefile178
-rw-r--r--dot_vim/c-support/codesnippets/Makefile.multi-target.template70
-rw-r--r--dot_vim/c-support/codesnippets/calloc_double_matrix.c36
-rw-r--r--dot_vim/c-support/codesnippets/calloc_int_matrix.c35
-rw-r--r--dot_vim/c-support/codesnippets/main.c20
-rw-r--r--dot_vim/c-support/codesnippets/main.cc18
-rw-r--r--dot_vim/c-support/codesnippets/print_double_array.c.noindent30
-rw-r--r--dot_vim/c-support/codesnippets/print_int_array.c.noindent30
8 files changed, 417 insertions, 0 deletions
diff --git a/dot_vim/c-support/codesnippets/Makefile b/dot_vim/c-support/codesnippets/Makefile
new file mode 100644
index 0000000..2208944
--- /dev/null
+++ b/dot_vim/c-support/codesnippets/Makefile
@@ -0,0 +1,178 @@
+#=======================================================================================
+#
+# Filename: Makefile
+# Description:
+#
+# Usage: make (generate executable )
+# make clean (remove objects, executable, prerequisits )
+# make tarball (generate compressed archive )
+# make zip (generate compressed archive )
+#
+# Version: 1.0
+# Created:
+# Revision: ---
+#
+# Author:
+# Company:
+# Email:
+#
+# Notes: C extension : c
+# C++ extensions : cc cpp C
+# C and C++ sources can be mixed.
+# Prerequisites are generated automatically; makedepend is not
+# needed (see documentation for GNU make Version 3.80, July 2002,
+# section 4.13). The utility sed is used.
+#
+#============================================== makefile template version 1.6 ==========
+
+# ------------ name of the executable ------------------------------------------------
+EXECUTABLE = main
+
+# ------------ list of all source files ----------------------------------------------
+SOURCES = main.c
+
+# ------------ compiler --------------------------------------------------------------
+CC = gcc
+CXX = g++
+
+# ------------ compiler flags --------------------------------------------------------
+CFLAGS = -Wall -O0 -g # Do not optimize. Produce debugging information.
+
+# ------------ linker-Flags ----------------------------------------------------------
+LFLAGS = -g
+
+# ------------ additional system include directories ---------------------------------
+GLOBAL_INC_DIR =
+
+# ------------ private include directories -------------------------------------------
+LOCAL_INC_DIR = $(HOME)/include
+
+# ------------ system libraries (e.g. -lm ) -----------------------------------------
+SYS_LIBS = -lm
+
+# ------------ additional system library directories ---------------------------------
+GLOBAL_LIB_DIR =
+
+# ------------ additional system libraries -------------------------------------------
+GLOBAL_LIBS =
+
+# ------------ private library directories -------------------------------------------
+LOCAL_LIB_DIR = $(HOME)/lib
+
+# ------------ private libraries (e.g. libxyz.a ) -----------------------------------
+LOCAL_LIBS =
+
+# ------------ archive generation -----------------------------------------------------
+TARBALL_EXCLUDE = *.{o,gz,zip}
+ZIP_EXCLUDE = *.{o,gz,zip}
+
+# ------------ run executable out of this Makefile (yes/no) -------------------------
+# ------------ cmd line parameters for this executable -------------------------------
+EXE_START = no
+EXE_CMDLINE =
+
+#=======================================================================================
+# The following statements usually need not to be changed
+#=======================================================================================
+
+C_SOURCES = $(filter %.c, $(SOURCES))
+CPP_SOURCES = $(filter-out %.c, $(SOURCES))
+ALL_INC_DIR = $(addprefix -I, $(LOCAL_INC_DIR) $(GLOBAL_INC_DIR))
+ALL_LIB_DIR = $(addprefix -L, $(LOCAL_LIB_DIR) $(GLOBAL_LIB_DIR))
+GLOBAL_LIBSS = $(addprefix $(GLOBAL_LIB_DIR)/, $(GLOBAL_LIBS))
+LOCAL_LIBSS = $(addprefix $(LOCAL_LIB_DIR)/, $(LOCAL_LIBS))
+ALL_CFLAGS = $(CFLAGS) $(ALL_INC_DIR)
+ALL_LFLAGS = $(LFLAGS) $(ALL_LIB_DIR)
+BASENAMES = $(basename $(SOURCES))
+
+# ------------ generate the names of the object files --------------------------------
+OBJECTS = $(addsuffix .o,$(BASENAMES))
+
+# ------------ generate the names of the hidden prerequisite files -------------------
+PREREQUISITES = $(addprefix .,$(addsuffix .d,$(BASENAMES)))
+
+# ------------ make the executable ---------------------------------------------------
+$(EXECUTABLE): $(OBJECTS)
+ifeq ($(strip $(CPP_SOURCES)),)
+ $(CC) $(ALL_LFLAGS) -o $(EXECUTABLE) $(OBJECTS) $(LOCAL_LIBSS) $(GLOBAL_LIBSS) $(SYS_LIBS)
+else
+ $(CXX) $(ALL_LFLAGS) -o $(EXECUTABLE) $(OBJECTS) $(LOCAL_LIBSS) $(GLOBAL_LIBSS) $(SYS_LIBS)
+endif
+ifeq ($(EXE_START),yes)
+ ./$(EXECUTABLE) $(EXE_CMDLINE)
+endif
+
+# ------------ include the automatically generated prerequisites ---------------------
+# ------------ if target is not clean, tarball or zip ---------------------
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),tarball)
+ifneq ($(MAKECMDGOALS),zip)
+include $(PREREQUISITES)
+endif
+endif
+endif
+
+# ------------ make the objects ------------------------------------------------------
+%.o: %.c
+ $(CC) -c $(ALL_CFLAGS) $<
+
+%.o: %.cc
+ $(CXX) -c $(ALL_CFLAGS) $<
+
+%.o: %.cpp
+ $(CXX) -c $(ALL_CFLAGS) $<
+
+%.o: %.C
+ $(CXX) -c $(ALL_CFLAGS) $<
+
+# ------------ make the prerequisites ------------------------------------------------
+#
+.%.d: %.c
+ @$(make-prerequisite-c)
+
+.%.d: %.cc
+ @$(make-prerequisite-cplusplus)
+
+.%.d: %.cpp
+ @$(make-prerequisite-cplusplus)
+
+.%.d: %.C
+ @$(make-prerequisite-cplusplus)
+
+# canned command sequences
+# echoing of the sed command is suppressed by the leading @
+
+define make-prerequisite-c
+ @$(CC) -MM $(ALL_CFLAGS) $< > $@.$$$$; \
+ sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' < $@.$$$$ > $@; \
+ rm -f $@.$$$$;
+endef
+
+define make-prerequisite-cplusplus
+ @$(CXX) -MM $(ALL_CFLAGS) $< > $@.$$$$; \
+ sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' < $@.$$$$ > $@; \
+ rm -f $@.$$$$;
+endef
+
+# ------------ remove generated files ------------------------------------------------
+# ------------ remove hidden backup files --------------------------------------------
+clean:
+ rm --force $(EXECUTABLE) $(OBJECTS) $(PREREQUISITES) *~
+
+# ------------ tarball generation ------------------------------------------------------
+tarball:
+ @lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ rm --force $$lokaldir.tar.gz; \
+ tar --exclude=$(TARBALL_EXCLUDE) \
+ --create \
+ --gzip \
+ --verbose \
+ --file $$lokaldir.tar.gz *
+
+# ------------ zip ---------------------------------------------------------------------
+zip:
+ @lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ zip -r $$lokaldir.zip * -x $(ZIP_EXCLUDE)
+
+# ======================================================================================
+# vim: set tabstop=2: set shiftwidth=2:
diff --git a/dot_vim/c-support/codesnippets/Makefile.multi-target.template b/dot_vim/c-support/codesnippets/Makefile.multi-target.template
new file mode 100644
index 0000000..75da8dd
--- /dev/null
+++ b/dot_vim/c-support/codesnippets/Makefile.multi-target.template
@@ -0,0 +1,70 @@
+#===============================================================================
+#
+# File: Makefile
+# Description:
+#
+# Usage: make (generate executable(s) )
+# make clean (remove objects, executables, prerequisits )
+# make tarball (generate compressed archive )
+# make zip (generate compressed archive )
+#
+# Author: Dr.-Ing. Fritz Mehner
+# Email: mehner@mfh-iserlohn.de
+# Created:
+#
+#===============================================================================
+
+
+CC = gcc
+CCP = g++
+CFLAGS = -c -g -Wall
+LFLAGS = -g
+SYS_LIBS = -lm
+TARBALL_EXCLUDE = "*.{o,gz,zip}"
+ZIP_EXCLUDE = *.o *.gz *.zip
+
+TARGETS = target_1 target_2
+
+#---------- targets --------------------------------------
+all: $(TARGETS)
+
+%.o: %.c
+ $(CC) $(CFLAGS) $*.c
+
+%.o: %.cc
+ $(CCP) $(CFLAGS) $*.cc
+
+#---------- target 1 -------------------------------------
+# C target
+target_1: target_1.o
+ $(CC) $(LFLAGS) -o $@ $@.o $(SYS_LIBS)
+
+#---------- target 2 -------------------------------------
+# C++ target
+target_2: target_2.o
+ $(CCP) $(LFLAGS) -o $@ $@.o $(SYS_LIBS)
+
+
+#---------- target 3 -------------------------------------
+
+
+
+#---------- tarball --------------------------------------
+tarball:
+ lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ rm --force $$lokaldir.tar.gz; \
+ tar --exclude=$(TARBALL_EXCLUDE) \
+ --create \
+ --gzip \
+ --verbose \
+ --file $$lokaldir.tar.gz *
+
+#---------- zip ------------------------------------------
+zip:
+ lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ zip -r $$lokaldir.zip * -x $(ZIP_EXCLUDE)
+
+#---------- clear up -------------------------------------
+clean:
+ rm --force $(EXECUTABLE) $(OBJECTS) $(PREREQUISITES)
+
diff --git a/dot_vim/c-support/codesnippets/calloc_double_matrix.c b/dot_vim/c-support/codesnippets/calloc_double_matrix.c
new file mode 100644
index 0000000..ec71658
--- /dev/null
+++ b/dot_vim/c-support/codesnippets/calloc_double_matrix.c
@@ -0,0 +1,36 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: calloc_double_matrix
+ * Description: Allocate a dynamic double-matrix of size rows*columns;
+ * return a pointer.
+ * =====================================================================================
+ */
+ double**
+calloc_double_matrix ( int rows, int columns )
+{
+ int i;
+ double **m;
+ m = calloc ( rows, sizeof(double*) ); /* allocate pointer array */
+ assert( m != NULL); /* abort if allocation failed */
+ *m = calloc ( rows*columns, sizeof(double) );/* allocate data array */
+ assert(*m != NULL); /* abort if allocation failed */
+ for ( i=1; i<rows; i+=1 ) /* set pointers */
+ m[i] = m[i-1] + columns;
+ return m;
+} /* ---------- end of function calloc_double_matrix ---------- */
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: free_matrix_double
+ * Description: Free a dynamic double-matrix.
+ * =====================================================================================
+ */
+ void
+free_double_matrix ( double **m )
+{
+ free(*m); /* free data array */
+ free( m); /* free pointer array */
+ return ;
+} /* ---------- end of function free_double_matrix ---------- */
+
diff --git a/dot_vim/c-support/codesnippets/calloc_int_matrix.c b/dot_vim/c-support/codesnippets/calloc_int_matrix.c
new file mode 100644
index 0000000..e21215b
--- /dev/null
+++ b/dot_vim/c-support/codesnippets/calloc_int_matrix.c
@@ -0,0 +1,35 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: calloc_int_matrix
+ * Description: Allocate a dynamic int-matrix of size rows*columns; return a pointer.
+ * =====================================================================================
+ */
+int**
+calloc_int_matrix ( int rows, int columns )
+{
+ int i;
+ int **m;
+ m = calloc ( rows, sizeof(int*) ); /* allocate pointer array */
+ assert( m != NULL ); /* abort if allocation failed */
+ *m = calloc ( rows*columns, sizeof(int) ); /* allocate data array */
+ assert(*m != NULL ); /* abort if allocation failed */
+ for ( i=1; i<rows; i+=1 ) /* set pointers */
+ m[i] = m[i-1] + columns;
+ return m;
+} /* ---------- end of function calloc_int_matrix ---------- */
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: free_int_matrix
+ * Description: Free a dynamic int-matrix.
+ * =====================================================================================
+ */
+void
+free_int_matrix ( int **m )
+{
+ free(*m); /* free data array */
+ free( m); /* free pointer array */
+ return ;
+} /* ---------- end of function free_int_matrix ---------- */
+
diff --git a/dot_vim/c-support/codesnippets/main.c b/dot_vim/c-support/codesnippets/main.c
new file mode 100644
index 0000000..770f5d5
--- /dev/null
+++ b/dot_vim/c-support/codesnippets/main.c
@@ -0,0 +1,20 @@
+#include <errno.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: main
+ * Description: main function
+ * =====================================================================================
+ */
+ int
+main ( int argc, char *argv[] )
+{
+ printf ("\nProgram %s\n\n", argv[0] );
+
+ return EXIT_SUCCESS;
+} /* ---------- end of function main ---------- */
+
diff --git a/dot_vim/c-support/codesnippets/main.cc b/dot_vim/c-support/codesnippets/main.cc
new file mode 100644
index 0000000..d87f891
--- /dev/null
+++ b/dot_vim/c-support/codesnippets/main.cc
@@ -0,0 +1,18 @@
+#include <fstream>
+#include <iomanip>
+#include <iostream>
+
+using namespace std;
+
+// === FUNCTION ======================================================================
+// Name: main
+// Description: main function
+// =====================================================================================
+ int
+main ( int argc, char *argv[] )
+{
+ cout << "\nProgram " << argv[0] << endl << endl;
+
+ return EXIT_SUCCESS;
+} // ---------- end of function main ----------
+
diff --git a/dot_vim/c-support/codesnippets/print_double_array.c.noindent b/dot_vim/c-support/codesnippets/print_double_array.c.noindent
new file mode 100644
index 0000000..6ced53a
--- /dev/null
+++ b/dot_vim/c-support/codesnippets/print_double_array.c.noindent
@@ -0,0 +1,30 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: print_double_array
+ * Description: Print a double-array with one dimension.
+ * Use
+ * print_int_array( *matrix, n1*n2, n2, "matrix" );
+ * for
+ * double matrix[n1][n2];
+ * =====================================================================================
+ */
+static void
+print_double_array ( double array[], /* array to print */
+ int n, /* number of elements to print */
+ int nrow, /* number of elements per row */
+ char *arrayname /* array name */
+ )
+{
+ int i;
+ printf ("\n\n array \"%s\", length %d\n", arrayname, n );
+ for ( i=0; i<n; i+=1 )
+ {
+ if( i%nrow == 0 )
+ printf ("\n%6d : ", i );
+ printf (" %8.2f", array[i] );
+ }
+ printf ("\n\n");
+ return ;
+} /* ---------- end of function print_double_array ---------- */
+
diff --git a/dot_vim/c-support/codesnippets/print_int_array.c.noindent b/dot_vim/c-support/codesnippets/print_int_array.c.noindent
new file mode 100644
index 0000000..02d53c0
--- /dev/null
+++ b/dot_vim/c-support/codesnippets/print_int_array.c.noindent
@@ -0,0 +1,30 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: print_int_array
+ * Description: Print an int-array with one dimension.
+ * Use
+ * print_int_array( *matrix, n1*n2, n2, "matrix" );
+ * for
+ * int matrix[n1][n2];
+ * =====================================================================================
+ */
+static void
+print_int_array ( int array[], /* array to print */
+ int n, /* number of elements to print */
+ int nrow, /* number of elements per row */
+ char *arrayname /* array name */
+ )
+{
+ int i;
+ printf ("\n\n array \"%s\", length %d\n", arrayname, n );
+ for ( i=0; i<n; i+=1 )
+ {
+ if( i%nrow == 0 )
+ printf ("\n%6d : ", i );
+ printf (" %6d", array[i] );
+ }
+ printf ("\n\n");
+ return ;
+} /* ---------- end of function print_int_array ---------- */
+