diff options
Diffstat (limited to 'dot_vim/c-support/codesnippets')
-rw-r--r-- | dot_vim/c-support/codesnippets/Makefile | 178 | ||||
-rw-r--r-- | dot_vim/c-support/codesnippets/Makefile.multi-target.template | 70 | ||||
-rw-r--r-- | dot_vim/c-support/codesnippets/calloc_double_matrix.c | 36 | ||||
-rw-r--r-- | dot_vim/c-support/codesnippets/calloc_int_matrix.c | 35 | ||||
-rw-r--r-- | dot_vim/c-support/codesnippets/main.c | 20 | ||||
-rw-r--r-- | dot_vim/c-support/codesnippets/main.cc | 18 | ||||
-rw-r--r-- | dot_vim/c-support/codesnippets/print_double_array.c.noindent | 30 | ||||
-rw-r--r-- | dot_vim/c-support/codesnippets/print_int_array.c.noindent | 30 |
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 ---------- */ + |