--- /srv/reproducible-results/rbuild-debian/r-b-build.tskymkjg/b1/maloc_1.5-1_i386.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.tskymkjg/b2/maloc_1.5-1_i386.changes ├── Files │ @@ -1,4 +1,4 @@ │ │ - 5855e272627f77ab6ff06651aa079d83 112640 libdevel optional libmaloc-dev_1.5-1_i386.deb │ + 08b18771e48c4da3bf6b46f184866691 112680 libdevel optional libmaloc-dev_1.5-1_i386.deb │ fd2ae6809cae174b0362282cca182171 202024 debug optional libmaloc1-dbgsym_1.5-1_i386.deb │ c2c3fca7c67f76f7632743580303c9cf 72512 libs optional libmaloc1_1.5-1_i386.deb ├── libmaloc-dev_1.5-1_i386.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2020-03-28 08:32:11.000000 debian-binary │ │ --rw-r--r-- 0 0 0 5164 2020-03-28 08:32:11.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 107284 2020-03-28 08:32:11.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 5160 2020-03-28 08:32:11.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 107328 2020-03-28 08:32:11.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ │ │ │ ├── line order │ │ │ │ │ @@ -36,35 +36,35 @@ │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00016.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00017.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00017_source.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00018.dot.gz │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00019.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00020.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00020_source.html │ │ │ │ │ -usr/share/doc/libmaloc-dev/html/a00021.dot.gz │ │ │ │ │ +usr/share/doc/libmaloc-dev/html/a00021.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00022.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00023.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00023_source.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00024.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00025.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00026.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00026_source.html │ │ │ │ │ -usr/share/doc/libmaloc-dev/html/a00027.dot.gz │ │ │ │ │ +usr/share/doc/libmaloc-dev/html/a00027.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00028.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00029.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00029_source.html │ │ │ │ │ -usr/share/doc/libmaloc-dev/html/a00030.dot │ │ │ │ │ +usr/share/doc/libmaloc-dev/html/a00030.dot.gz │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00031.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00032.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00032_source.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00033.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00034.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00035.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00035_source.html │ │ │ │ │ -usr/share/doc/libmaloc-dev/html/a00036.dot │ │ │ │ │ +usr/share/doc/libmaloc-dev/html/a00036.dot.gz │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00037.dot │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00038.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00038_source.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00039.dot.gz │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00041.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00041_source.html │ │ │ │ │ usr/share/doc/libmaloc-dev/html/a00044.html │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -22,62 +22,62 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 941 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/changelog.Debian.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2759 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/copyright │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 104720 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00002.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 33795 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00002_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3372 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00003.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 865 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00004.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18382 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00005.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23926 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00005_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 876 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00006.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1193 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00007.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5881 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00008.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6188 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00008_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1040 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00009.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 627 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00010.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 14500 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00011.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18285 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00011_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 870 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00012.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1184 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00013.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12587 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00014.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 16376 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00014_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 953 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00015.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 904 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00016.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 866 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00004.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5881 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00005.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6188 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00005_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1040 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00006.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 627 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00007.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12587 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00008.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 16376 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00008_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 951 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00009.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 904 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00010.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18382 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00011.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23926 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00011_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 876 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00012.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1193 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00013.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 14500 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00014.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18285 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00014_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 870 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00015.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1184 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00016.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 18089 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00017.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 36212 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00017_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 865 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00018.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 999 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00019.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5020 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00020.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5498 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00020_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 823 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00021.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2634 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00022.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 87211 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00023.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 36017 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00023_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3644 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00024.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3658 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00025.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 19125 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00026.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 40189 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00026_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 654 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00027.dot.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2893 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00028.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 29394 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00029.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 52873 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00029_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 4012 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00030.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2914 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00031.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18016 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00032.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 25173 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00032_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3646 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00033.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3276 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00034.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 54895 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00035.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23187 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00035_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3632 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00036.dot │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2903 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00037.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18016 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00020.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 25173 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00020_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3646 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00021.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3276 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00022.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 54895 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00023.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23187 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00023_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3632 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00024.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2903 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00025.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 87211 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00026.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 36017 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00026_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3644 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00027.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3658 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00028.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5020 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00029.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5498 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00029_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 822 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00030.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2634 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00031.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 29394 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00032.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 52873 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00032_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 4012 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00033.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2914 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00034.dot │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 19125 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00035.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 40189 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00035_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 654 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00036.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2893 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00037.dot │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4698 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00038.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4787 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00038_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1070 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00039.dot.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1068 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00039.dot.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1984 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00041.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5792 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00041_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1978 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00044.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2083 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00044_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3542 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00047.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 39112 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00048.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 22789 2020-03-28 08:32:11.000000 ./usr/share/doc/libmaloc-dev/html/a00049.html │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00004.dot.gz │ │ │ │ ├── a00004.dot │ │ │ │ │ @@ -3,49 +3,49 @@ │ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ │ Node1 [label="maloc_base.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The base (or foundation) header for MALOC."]; │ │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node2 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ │ Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node3 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ │ + Node3 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ │ Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node4 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ │ + Node4 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ │ Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node5 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ │ + Node5 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ │ Node5 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node6 [label="vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ + Node6 [label="vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node7 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ + Node7 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ Node7 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node7 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node7 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node7 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node7 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node8 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ │ + Node8 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ │ Node8 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node7 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node9 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ │ Node9 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node9 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node10 [label="vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ + Node10 [label="vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ Node10 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node11 [label="vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ + Node11 [label="vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ Node11 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node10 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node12 [label="vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ + Node12 [label="vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ Node12 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node12 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node12 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node13 [label="vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ + Node13 [label="vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ Node13 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00005.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vcom.h File Reference │ │ │ │ +MALOC: psh.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -40,114 +40,50 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -Classes | │ │ │ │ -Macros | │ │ │ │ -Typedefs | │ │ │ │ Functions
│ │ │ │ -
vcom.h File Reference
│ │ │ │ +
psh.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ -

Class Vcom: virtual (currently just MPI) communications layer. │ │ │ │ +

Header file for a simple parallel extension of ALOC's VSH. │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ -#include <maloc/vsys.h>
│ │ │ │ +#include <maloc/vsys.h>
│ │ │ │ +#include <maloc/vsh.h>
│ │ │ │ +#include <maloc/vmp.h>
│ │ │ │
│ │ │ │ -Include dependency graph for vcom.h:
│ │ │ │ +Include dependency graph for psh.h:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Classes

struct  sVcom
 Contains public data members for Vcom class. More...
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Macros

#define VCOM_MPI_TAG   111
 A base value for MPI tags. More...
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Typedefs

typedef struct sVcom Vcom
 Declaration of the Vcom class as the Vcom structure
│ │ │ │ - More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Functions

int Vcom_init (int *argc, char ***argv)
 The Vmp initializer. More...
 
int Vcom_finalize (void)
 The Vmp finalizer. More...
 
VcomVcom_ctor (int commtype)
 Construct the communications object. This routine sets up data members of class and initializes MPI. More...
 
int Vcom_ctor2 (Vcom *thee, int commtype)
 Construct the communications object. This routine sets up data members of class and initializes MPI. This is broken into two parts to be callable from FORTRAN. More...
 
void Vcom_dtor (Vcom **thee)
 Destroy the communications object. More...
 
void Vcom_dtor2 (Vcom *thee)
 Destroy the communications object. This is broken into two parts to be callable from FORTRAN. More...
 
int Vcom_send (Vcom *thee, int des, void *buf, int len, int type, int block)
 Send a buffer. Returns 1 on success. More...
 
int Vcom_recv (Vcom *thee, int src, void *buf, int len, int type, int block)
 Receive a (character) buffer.
│ │ │ │ - The blocking flag is present, but not used. All receives are assumed to be blocking. A non-blocking receive would be very ugly to implement (signals or something?). More...
 
int Vcom_getCount (Vcom *thee, int src, int *length, int type)
 Perform a blocking probe to get the length (in number of items of specified type) of an incoming message and place it in the
│ │ │ │ - argument ``length". More...
 
int Vcom_reduce (Vcom *thee, void *sendbuf, void *recvbuf, int length, int type, int op)
 Perform a reduction of the data across all processors. This is equivalent (and in the case of MPI is identical to) MPI_Allreduce. Basically, the specified operations are appleed to each member of
│ │ │ │ - the sendbuf across all processors and the results are written to recvbuf. More...
 
int Vcom_size (Vcom *thee)
 Get the number of PEs in communicator. More...
 
int Vcom_resize (Vcom *thee, int newsize)
 Resize (shrink) the communications group to include only newsize number of processors.
│ │ │ │ - Obsolete processes are given rank of -1 and size of 0. More...
 
int Vcom_rank (Vcom *thee)
 Get the ID of the local PE
│ │ │ │ - More...
 
int Vcom_barr (Vcom *thee)
 Synchronization barrier. More...
 
int Vsh_pshell (Vsh *thee, char *pPR, void *pthee, int(*builtin)(void *thee, int argc, char **argv))
 Drop-in replacement for Vsh_shell giving parallel extensions. More...
 
│ │ │ │

Detailed Description

│ │ │ │ -

Class Vcom: virtual (currently just MPI) communications layer.

│ │ │ │ -
Authors
Nathan Baker and Michael Holst
│ │ │ │ +

Header file for a simple parallel extension of ALOC's VSH.

│ │ │ │ +
Author
Michael Holst
│ │ │ │
Note
None
│ │ │ │
Version
│ │ │ │ -
Id
vcom.h,v 1.38 2010/08/12 05:40:23 fetk Exp
│ │ │ │ +
Id
psh.h,v 1.28 2010/08/12 05:40:23 fetk Exp
│ │ │ │
Attention
*
│ │ │ │  * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │  * Copyright (C) 1994-- Michael Holst
│ │ │ │  *
│ │ │ │  * This library is free software; you can redistribute it and/or
│ │ │ │  * modify it under the terms of the GNU Lesser General Public
│ │ │ │  * License as published by the Free Software Foundation; either
│ │ │ │ @@ -159,31 +95,14 @@
│ │ │ │  * Lesser General Public License for more details.
│ │ │ │  *
│ │ │ │  * You should have received a copy of the GNU Lesser General Public
│ │ │ │  * License along with this library; if not, write to the Free Software
│ │ │ │  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
│ │ │ │  * 
│ │ │ │  *  
│ │ │ │ -

Macro Definition Documentation

│ │ │ │ - │ │ │ │ -

◆ VCOM_MPI_TAG

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define VCOM_MPI_TAG   111
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

A base value for MPI tags.

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,107 +3,39 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * psh │ │ │ │ │ * maloc │ │ │ │ │ -Classes | Macros | Typedefs | Functions │ │ │ │ │ -vcom.h File Reference │ │ │ │ │ -Vcom_class │ │ │ │ │ -Class Vcom: virtual (currently just MPI) communications layer. More... │ │ │ │ │ +Functions │ │ │ │ │ +psh.h File Reference │ │ │ │ │ +Vsh_class │ │ │ │ │ +Header file for a simple parallel extension of ALOC's VSH. More... │ │ │ │ │ #include │ │ │ │ │ #include │ │ │ │ │ -Include dependency graph for vcom.h: │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +Include dependency graph for psh.h: │ │ │ │ │ This graph shows which files directly or indirectly include this file: │ │ │ │ │ Go_to_the_source_code_of_this_file. │ │ │ │ │ - Classes │ │ │ │ │ -struct  sVcom │ │ │ │ │ -  Contains public data members for Vcom class. More... │ │ │ │ │ -  │ │ │ │ │ - Macros │ │ │ │ │ -#define VCOM_MPI_TAG   111 │ │ │ │ │ -  A base value for MPI tags. More... │ │ │ │ │ -  │ │ │ │ │ - Typedefs │ │ │ │ │ -typedef struct sVcom Vcom │ │ │ │ │ -  Declaration of the Vcom class as the Vcom structure │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ Functions │ │ │ │ │ - int Vcom_init (int *argc, char ***argv) │ │ │ │ │ -  The Vmp initializer. More... │ │ │ │ │ -  │ │ │ │ │ - int Vcom_finalize (void) │ │ │ │ │ -  The Vmp finalizer. More... │ │ │ │ │ -  │ │ │ │ │ -Vcom * Vcom_ctor (int commtype) │ │ │ │ │ -  Construct the communications object. This routine sets up data members │ │ │ │ │ - of class and initializes MPI. More... │ │ │ │ │ -  │ │ │ │ │ - int Vcom_ctor2 (Vcom *thee, int commtype) │ │ │ │ │ - Construct the communications object. This routine sets up data members │ │ │ │ │ -  of class and initializes MPI. This is broken into two parts to be │ │ │ │ │ - callable from FORTRAN. More... │ │ │ │ │ -  │ │ │ │ │ - void Vcom_dtor (Vcom **thee) │ │ │ │ │ -  Destroy the communications object. More... │ │ │ │ │ -  │ │ │ │ │ - void Vcom_dtor2 (Vcom *thee) │ │ │ │ │ -  Destroy the communications object. This is broken into two parts to be │ │ │ │ │ - callable from FORTRAN. More... │ │ │ │ │ -  │ │ │ │ │ - int Vcom_send (Vcom *thee, int des, void *buf, int len, int type, int │ │ │ │ │ - block) │ │ │ │ │ -  Send a buffer. Returns 1 on success. More... │ │ │ │ │ -  │ │ │ │ │ - int Vcom_recv (Vcom *thee, int src, void *buf, int len, int type, int │ │ │ │ │ - block) │ │ │ │ │ - Receive a (character) buffer. │ │ │ │ │ -  The blocking flag is present, but not used. All receives are assumed to │ │ │ │ │ - be blocking. A non-blocking receive would be very ugly to implement │ │ │ │ │ - (signals or something?). More... │ │ │ │ │ -  │ │ │ │ │ - int Vcom_getCount (Vcom *thee, int src, int *length, int type) │ │ │ │ │ - Perform a blocking probe to get the length (in number of items of │ │ │ │ │ -  specified type) of an incoming message and place it in the │ │ │ │ │ - argument ``length". More... │ │ │ │ │ -  │ │ │ │ │ - int Vcom_reduce (Vcom *thee, void *sendbuf, void *recvbuf, int length, int │ │ │ │ │ - type, int op) │ │ │ │ │ - Perform a reduction of the data across all processors. This is │ │ │ │ │ - equivalent (and in the case of MPI is identical to) MPI_Allreduce. │ │ │ │ │ -  Basically, the specified operations are appleed to each member of │ │ │ │ │ - the sendbuf across all processors and the results are written to │ │ │ │ │ - recvbuf. More... │ │ │ │ │ -  │ │ │ │ │ - int Vcom_size (Vcom *thee) │ │ │ │ │ -  Get the number of PEs in communicator. More... │ │ │ │ │ -  │ │ │ │ │ - int Vcom_resize (Vcom *thee, int newsize) │ │ │ │ │ - Resize (shrink) the communications group to include only newsize number │ │ │ │ │ -  of processors. │ │ │ │ │ - Obsolete processes are given rank of -1 and size of 0. More... │ │ │ │ │ -  │ │ │ │ │ - int Vcom_rank (Vcom *thee) │ │ │ │ │ -  Get the ID of the local PE │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - int Vcom_barr (Vcom *thee) │ │ │ │ │ -  Synchronization barrier. More... │ │ │ │ │ +int Vsh_pshell (Vsh *thee, char *pPR, void *pthee, int(*builtin)(void *thee, │ │ │ │ │ + int argc, char **argv)) │ │ │ │ │ +  Drop-in replacement for Vsh_shell giving parallel extensions. More... │ │ │ │ │   │ │ │ │ │ ***** Detailed Description ***** │ │ │ │ │ -Class Vcom: virtual (currently just MPI) communications layer. │ │ │ │ │ - Authors │ │ │ │ │ - Nathan Baker and Michael Holst │ │ │ │ │ +Header file for a simple parallel extension of ALOC's VSH. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ Note │ │ │ │ │ None │ │ │ │ │ Version │ │ │ │ │ Id │ │ │ │ │ - vcom.h,v 1.38 2010/08/12 05:40:23 fetk Exp │ │ │ │ │ + psh.h,v 1.28 2010/08/12 05:40:23 fetk Exp │ │ │ │ │ Attention │ │ │ │ │ * │ │ │ │ │ * MALOC = < Minimal Abstraction Layer for Object-oriented C > │ │ │ │ │ * Copyright (C) 1994-- Michael Holst │ │ │ │ │ * │ │ │ │ │ * This library is free software; you can redistribute it and/or │ │ │ │ │ * modify it under the terms of the GNU Lesser General Public │ │ │ │ │ @@ -116,14 +48,10 @@ │ │ │ │ │ * Lesser General Public License for more details. │ │ │ │ │ * │ │ │ │ │ * You should have received a copy of the GNU Lesser General Public │ │ │ │ │ * License along with this library; if not, write to the Free Software │ │ │ │ │ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA │ │ │ │ │ * │ │ │ │ │ * │ │ │ │ │ -***** Macro Definition Documentation ***** │ │ │ │ │ -***** ◆ VCOM_MPI_TAG ***** │ │ │ │ │ -#define VCOM_MPI_TAG   111 │ │ │ │ │ -A base value for MPI tags. │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00005_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vcom.h Source File │ │ │ │ +MALOC: psh.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -39,112 +39,38 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
vcom.h
│ │ │ │ +
psh.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │ -
38#ifndef _VCOM_H_
│ │ │ │ -
39#define _VCOM_H_
│ │ │ │ +
32#ifndef _PSH_H_
│ │ │ │ +
33#define _PSH_H_
│ │ │ │ +
34
│ │ │ │ +
35#include <maloc/maloc_base.h>
│ │ │ │ +
36
│ │ │ │ +
37#include <maloc/vsys.h>
│ │ │ │ +
38#include <maloc/vsh.h>
│ │ │ │ +
39#include <maloc/vmp.h>
│ │ │ │
40
│ │ │ │ -
41#include <maloc/maloc_base.h>
│ │ │ │ -
42
│ │ │ │ -
43#include <maloc/vsys.h>
│ │ │ │ -
44
│ │ │ │ -
46#define VCOM_MPI_TAG 111
│ │ │ │ -
47
│ │ │ │ -
48/*
│ │ │ │ -
49 * ***************************************************************************
│ │ │ │ -
50 * Class Vcom: Parameters and datatypes
│ │ │ │ -
51 * ***************************************************************************
│ │ │ │ -
52 */
│ │ │ │ -
53
│ │ │ │ -
60struct sVcom {
│ │ │ │ -
61
│ │ │ │ - │ │ │ │ - │ │ │ │ -
66
│ │ │ │ -
71 int type;
│ │ │ │ -
73 int error;
│ │ │ │ -
75 void *core;
│ │ │ │ -
76
│ │ │ │ -
77};
│ │ │ │ -
78
│ │ │ │ -
85typedef struct sVcom Vcom;
│ │ │ │ -
86
│ │ │ │ -
87/*
│ │ │ │ -
88 * ***************************************************************************
│ │ │ │ -
89 * Class Vcom: Inlineable methods (vcom.c)
│ │ │ │ -
90 * ***************************************************************************
│ │ │ │ -
91 */
│ │ │ │ -
92
│ │ │ │ -
93#if !defined(VINLINE_MALOC)
│ │ │ │ -
94#else /* if defined(VINLINE_MALOC) */
│ │ │ │ -
95#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ -
96
│ │ │ │ -
97
│ │ │ │ -
107int Vcom_init(int *argc, char ***argv);
│ │ │ │ -
108
│ │ │ │ - │ │ │ │ -
117
│ │ │ │ -
127Vcom* Vcom_ctor(int commtype);
│ │ │ │ -
128
│ │ │ │ -
140int Vcom_ctor2(Vcom* thee, int commtype);
│ │ │ │ -
141
│ │ │ │ -
150void Vcom_dtor(Vcom **thee);
│ │ │ │ -
151
│ │ │ │ -
161void Vcom_dtor2(Vcom *thee);
│ │ │ │ -
162
│ │ │ │ -
177int Vcom_send(Vcom *thee, int des, void *buf, int len, int type,
│ │ │ │ -
178 int block);
│ │ │ │ -
179
│ │ │ │ -
197int Vcom_recv(Vcom *thee, int src, void *buf, int len, int type,
│ │ │ │ -
198 int block);
│ │ │ │ -
199
│ │ │ │ -
214int Vcom_getCount(Vcom *thee, int src, int *length, int type);
│ │ │ │ -
215
│ │ │ │ -
237int Vcom_reduce(Vcom *thee, void *sendbuf, void *recvbuf, int length,
│ │ │ │ -
238 int type, int op);
│ │ │ │ -
239
│ │ │ │ -
248int Vcom_size(Vcom *thee);
│ │ │ │ -
249
│ │ │ │ -
261int Vcom_resize(Vcom *thee, int newsize);
│ │ │ │ -
262
│ │ │ │ -
271int Vcom_rank(Vcom *thee);
│ │ │ │ -
272
│ │ │ │ -
281int Vcom_barr(Vcom *thee);
│ │ │ │ -
282
│ │ │ │ -
283#endif /* _VCOM_H_ */
│ │ │ │ -
284
│ │ │ │ +
52int Vsh_pshell(Vsh *thee, char *pPR, void *pthee,
│ │ │ │ +
53 int (*builtin)(void *thee, int argc, char **argv));
│ │ │ │ +
54
│ │ │ │ +
55#endif /* _PSH_H_ */
│ │ │ │ +
56
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ -
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │ -
int Vcom_rank(Vcom *thee)
Get the ID of the local PE
│ │ │ │ -
int Vcom_resize(Vcom *thee, int newsize)
Resize (shrink) the communications group to include only newsize number of processors....
│ │ │ │ -
int Vcom_ctor2(Vcom *thee, int commtype)
Construct the communications object. This routine sets up data members of class and initializes MPI....
│ │ │ │ -
int Vcom_size(Vcom *thee)
Get the number of PEs in communicator.
│ │ │ │ -
int Vcom_reduce(Vcom *thee, void *sendbuf, void *recvbuf, int length, int type, int op)
Perform a reduction of the data across all processors. This is equivalent (and in the case of MPI is ...
│ │ │ │ -
Vcom * Vcom_ctor(int commtype)
Construct the communications object. This routine sets up data members of class and initializes MPI.
│ │ │ │ -
int Vcom_init(int *argc, char ***argv)
The Vmp initializer.
│ │ │ │ -
int Vcom_finalize(void)
The Vmp finalizer.
│ │ │ │ -
int Vcom_barr(Vcom *thee)
Synchronization barrier.
│ │ │ │ -
void Vcom_dtor(Vcom **thee)
Destroy the communications object.
│ │ │ │ -
int Vcom_recv(Vcom *thee, int src, void *buf, int len, int type, int block)
Receive a (character) buffer. The blocking flag is present, but not used. All receives are assumed ...
│ │ │ │ -
int Vcom_getCount(Vcom *thee, int src, int *length, int type)
Perform a blocking probe to get the length (in number of items of specified type) of an incoming mess...
│ │ │ │ -
int Vcom_send(Vcom *thee, int des, void *buf, int len, int type, int block)
Send a buffer. Returns 1 on success.
│ │ │ │ -
void Vcom_dtor2(Vcom *thee)
Destroy the communications object. This is broken into two parts to be callable from FORTRAN.
│ │ │ │ -
Contains public data members for Vcom class.
Definition: vcom.h:60
│ │ │ │ -
int type
Communication type. 0 = not initialized 1 = Message Passing Interface 1.1.
Definition: vcom.h:71
│ │ │ │ -
int error
note if any error has occurred on this vcom device
Definition: vcom.h:73
│ │ │ │ -
int mpi_size
Total number of PEs in this communicator from MPI.
Definition: vcom.h:65
│ │ │ │ -
void * core
Private MPI core.
Definition: vcom.h:75
│ │ │ │ -
int mpi_rank
Local PE rank from MPI.
Definition: vcom.h:63
│ │ │ │ +
Class Vmp: a Virtual MPI communication layer object.
│ │ │ │ +
Header file for vsh, a bourne-compatible shell.
│ │ │ │ +
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │ +
int Vsh_pshell(Vsh *thee, char *pPR, void *pthee, int(*builtin)(void *thee, int argc, char **argv))
Drop-in replacement for Vsh_shell giving parallel extensions.
│ │ │ │ +
Contains public data members for Vsh class.
Definition: vsh.h:56
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,166 +3,42 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * psh │ │ │ │ │ * maloc │ │ │ │ │ -vcom.h │ │ │ │ │ +psh.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ 1 │ │ │ │ │ - 38#ifndef _VCOM_H_ │ │ │ │ │ - 39#define _VCOM_H_ │ │ │ │ │ + 32#ifndef _PSH_H_ │ │ │ │ │ + 33#define _PSH_H_ │ │ │ │ │ + 34 │ │ │ │ │ + 35#include │ │ │ │ │ + 36 │ │ │ │ │ + 37#include │ │ │ │ │ + 38#include │ │ │ │ │ + 39#include │ │ │ │ │ 40 │ │ │ │ │ - 41#include │ │ │ │ │ - 42 │ │ │ │ │ - 43#include │ │ │ │ │ - 44 │ │ │ │ │ -46#define VCOM_MPI_TAG 111 │ │ │ │ │ - 47 │ │ │ │ │ - 48/* │ │ │ │ │ - 49 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 50 * Class Vcom: Parameters and datatypes │ │ │ │ │ - 51 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 52 */ │ │ │ │ │ - 53 │ │ │ │ │ -60struct sVcom { │ │ │ │ │ - 61 │ │ │ │ │ -63 int mpi_rank; │ │ │ │ │ -65 int mpi_size; │ │ │ │ │ - 66 │ │ │ │ │ -71 int type; │ │ │ │ │ -73 int error; │ │ │ │ │ -75 void *core; │ │ │ │ │ - 76 │ │ │ │ │ - 77}; │ │ │ │ │ - 78 │ │ │ │ │ -85typedef struct sVcom Vcom; │ │ │ │ │ - 86 │ │ │ │ │ - 87/* │ │ │ │ │ - 88 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 89 * Class Vcom: Inlineable methods (vcom.c) │ │ │ │ │ - 90 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 91 */ │ │ │ │ │ - 92 │ │ │ │ │ - 93#if !defined(VINLINE_MALOC) │ │ │ │ │ - 94#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ - 95#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ - 96 │ │ │ │ │ - 97 │ │ │ │ │ -107int Vcom_init(int *argc, char ***argv); │ │ │ │ │ - 108 │ │ │ │ │ -116int Vcom_finalize(void); │ │ │ │ │ - 117 │ │ │ │ │ -127Vcom* Vcom_ctor(int commtype); │ │ │ │ │ - 128 │ │ │ │ │ -140int Vcom_ctor2(Vcom* thee, int commtype); │ │ │ │ │ - 141 │ │ │ │ │ -150void Vcom_dtor(Vcom **thee); │ │ │ │ │ - 151 │ │ │ │ │ -161void Vcom_dtor2(Vcom *thee); │ │ │ │ │ - 162 │ │ │ │ │ -177int Vcom_send(Vcom *thee, int des, void *buf, int len, int type, │ │ │ │ │ - 178 int block); │ │ │ │ │ - 179 │ │ │ │ │ -197int Vcom_recv(Vcom *thee, int src, void *buf, int len, int type, │ │ │ │ │ - 198 int block); │ │ │ │ │ - 199 │ │ │ │ │ -214int Vcom_getCount(Vcom *thee, int src, int *length, int type); │ │ │ │ │ - 215 │ │ │ │ │ -237int Vcom_reduce(Vcom *thee, void *sendbuf, void *recvbuf, int length, │ │ │ │ │ - 238 int type, int op); │ │ │ │ │ - 239 │ │ │ │ │ -248int Vcom_size(Vcom *thee); │ │ │ │ │ - 249 │ │ │ │ │ -261int Vcom_resize(Vcom *thee, int newsize); │ │ │ │ │ - 262 │ │ │ │ │ -271int Vcom_rank(Vcom *thee); │ │ │ │ │ - 272 │ │ │ │ │ -281int Vcom_barr(Vcom *thee); │ │ │ │ │ - 282 │ │ │ │ │ - 283#endif /* _VCOM_H_ */ │ │ │ │ │ - 284 │ │ │ │ │ +52int Vsh_pshell(Vsh *thee, char *pPR, void *pthee, │ │ │ │ │ + 53 int (*builtin)(void *thee, int argc, char **argv)); │ │ │ │ │ + 54 │ │ │ │ │ + 55#endif /* _PSH_H_ */ │ │ │ │ │ + 56 │ │ │ │ │ maloc_base.h │ │ │ │ │ The base (or foundation) header for MALOC. │ │ │ │ │ +vmp.h │ │ │ │ │ +Class Vmp: a Virtual MPI communication layer object. │ │ │ │ │ +vsh.h │ │ │ │ │ +Header file for vsh, a bourne-compatible shell. │ │ │ │ │ vsys.h │ │ │ │ │ The primary header for VSYS. (Virtual SYStem utilities library.) │ │ │ │ │ -Vcom_rank │ │ │ │ │ -int Vcom_rank(Vcom *thee) │ │ │ │ │ -Get the ID of the local PE │ │ │ │ │ -Vcom_resize │ │ │ │ │ -int Vcom_resize(Vcom *thee, int newsize) │ │ │ │ │ -Resize (shrink) the communications group to include only newsize number of │ │ │ │ │ -processors.... │ │ │ │ │ -Vcom_ctor2 │ │ │ │ │ -int Vcom_ctor2(Vcom *thee, int commtype) │ │ │ │ │ -Construct the communications object. This routine sets up data members of class │ │ │ │ │ -and initializes MPI.... │ │ │ │ │ -Vcom_size │ │ │ │ │ -int Vcom_size(Vcom *thee) │ │ │ │ │ -Get the number of PEs in communicator. │ │ │ │ │ -Vcom_reduce │ │ │ │ │ -int Vcom_reduce(Vcom *thee, void *sendbuf, void *recvbuf, int length, int type, │ │ │ │ │ -int op) │ │ │ │ │ -Perform a reduction of the data across all processors. This is equivalent (and │ │ │ │ │ -in the case of MPI is ... │ │ │ │ │ -Vcom_ctor │ │ │ │ │ -Vcom * Vcom_ctor(int commtype) │ │ │ │ │ -Construct the communications object. This routine sets up data members of class │ │ │ │ │ -and initializes MPI. │ │ │ │ │ -Vcom_init │ │ │ │ │ -int Vcom_init(int *argc, char ***argv) │ │ │ │ │ -The Vmp initializer. │ │ │ │ │ -Vcom_finalize │ │ │ │ │ -int Vcom_finalize(void) │ │ │ │ │ -The Vmp finalizer. │ │ │ │ │ -Vcom_barr │ │ │ │ │ -int Vcom_barr(Vcom *thee) │ │ │ │ │ -Synchronization barrier. │ │ │ │ │ -Vcom_dtor │ │ │ │ │ -void Vcom_dtor(Vcom **thee) │ │ │ │ │ -Destroy the communications object. │ │ │ │ │ -Vcom_recv │ │ │ │ │ -int Vcom_recv(Vcom *thee, int src, void *buf, int len, int type, int block) │ │ │ │ │ -Receive a (character) buffer. The blocking flag is present, but not used. All │ │ │ │ │ -receives are assumed ... │ │ │ │ │ -Vcom_getCount │ │ │ │ │ -int Vcom_getCount(Vcom *thee, int src, int *length, int type) │ │ │ │ │ -Perform a blocking probe to get the length (in number of items of specified │ │ │ │ │ -type) of an incoming mess... │ │ │ │ │ -Vcom_send │ │ │ │ │ -int Vcom_send(Vcom *thee, int des, void *buf, int len, int type, int block) │ │ │ │ │ -Send a buffer. Returns 1 on success. │ │ │ │ │ -Vcom_dtor2 │ │ │ │ │ -void Vcom_dtor2(Vcom *thee) │ │ │ │ │ -Destroy the communications object. This is broken into two parts to be callable │ │ │ │ │ -from FORTRAN. │ │ │ │ │ -sVcom │ │ │ │ │ -Contains public data members for Vcom class. │ │ │ │ │ -Definition: vcom.h:60 │ │ │ │ │ -sVcom::type │ │ │ │ │ -int type │ │ │ │ │ -Communication type. 0 = not initialized 1 = Message Passing Interface 1.1. │ │ │ │ │ -Definition: vcom.h:71 │ │ │ │ │ -sVcom::error │ │ │ │ │ -int error │ │ │ │ │ -note if any error has occurred on this vcom device │ │ │ │ │ -Definition: vcom.h:73 │ │ │ │ │ -sVcom::mpi_size │ │ │ │ │ -int mpi_size │ │ │ │ │ -Total number of PEs in this communicator from MPI. │ │ │ │ │ -Definition: vcom.h:65 │ │ │ │ │ -sVcom::core │ │ │ │ │ -void * core │ │ │ │ │ -Private MPI core. │ │ │ │ │ -Definition: vcom.h:75 │ │ │ │ │ -sVcom::mpi_rank │ │ │ │ │ -int mpi_rank │ │ │ │ │ -Local PE rank from MPI. │ │ │ │ │ -Definition: vcom.h:63 │ │ │ │ │ +Vsh_pshell │ │ │ │ │ +int Vsh_pshell(Vsh *thee, char *pPR, void *pthee, int(*builtin)(void *thee, int │ │ │ │ │ +argc, char **argv)) │ │ │ │ │ +Drop-in replacement for Vsh_shell giving parallel extensions. │ │ │ │ │ +sVsh │ │ │ │ │ +Contains public data members for Vsh class. │ │ │ │ │ +Definition: vsh.h:56 │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00006.dot.gz │ │ │ │ ├── a00006.dot │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ -digraph "vcom.h" │ │ │ │ │ +digraph "psh.h" │ │ │ │ │ { │ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ │ - Node1 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ │ + Node1 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ │ Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node2 [label="maloc/maloc_base.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00002.html",tooltip="The base (or foundation) header for MALOC."]; │ │ │ │ │ Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node3 [label="assert.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node4 [label="ctype.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ @@ -33,28 +33,44 @@ │ │ │ │ │ Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node15 [label="string.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node16 [label="time.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node17 [label="setjmp.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ + Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ Node18 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ + Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ Node19 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ + Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ Node20 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ + Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ Node21 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node21 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ + Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ Node22 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ + Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ Node23 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node1 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node24 [label="maloc/vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ │ + Node24 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node24 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node25 [label="maloc/vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ │ + Node25 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node25 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node26 [label="maloc/vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ │ + Node26 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node26 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node25 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node27 [label="maloc/vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ │ + Node27 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ + Node27 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00007.dot │ │ │ │ @@ -1,13 +1,9 @@ │ │ │ │ -digraph "vcom.h" │ │ │ │ +digraph "psh.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ + Node1 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ - Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ - Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node4 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ + Node2 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00008.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: psh.h File Reference │ │ │ │ +MALOC: vmp.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -40,50 +40,92 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ +Classes | │ │ │ │ +Typedefs | │ │ │ │ Functions
│ │ │ │ -
psh.h File Reference
│ │ │ │ +
vmp.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ -

Header file for a simple parallel extension of ALOC's VSH. │ │ │ │ +

Class Vmp: a Virtual MPI communication layer object. │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ -#include <maloc/vsys.h>
│ │ │ │ -#include <maloc/vsh.h>
│ │ │ │ -#include <maloc/vmp.h>
│ │ │ │ +#include <maloc/vsys.h>
│ │ │ │ +#include <maloc/vmpi.h>
│ │ │ │ +#include <maloc/vcom.h>
│ │ │ │
│ │ │ │ -Include dependency graph for psh.h:
│ │ │ │ +Include dependency graph for vmp.h:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Classes

struct  sVmp
 Contains public data members for Vmp class. More...
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Typedefs

typedef struct sVmp Vmp
 Declaration of the Vmp class as teh Vmp structure. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Functions

int Vsh_pshell (Vsh *thee, char *pPR, void *pthee, int(*builtin)(void *thee, int argc, char **argv))
 Drop-in replacement for Vsh_shell giving parallel extensions. More...
 
int Vmp_init (int *argc, char ***argv)
 The Vmp initializer. More...
 
int Vmp_finalize (void)
 The Vmp finalizer. More...
 
VmpVmp_ctor (void)
 The Vmp constructor. More...
 
void Vmp_dtor (Vmp **thee)
 The Vmp destructor. More...
 
int Vmp_rank (Vmp *thee)
 Return my processor ID. More...
 
int Vmp_size (Vmp *thee)
 Return the number of processors involved.
│ │ │ │ + More...
 
int Vmp_barr (Vmp *thee)
 An MPI barrier.
│ │ │ │ + More...
 
int Vmp_send (Vmp *thee, int des, char *buf, int bufsize)
 An MPI blocking send.
│ │ │ │ + More...
 
int Vmp_recv (Vmp *thee, int src, char *buf, int bufsize)
 An MPI blocking receive.
│ │ │ │ + More...
 
│ │ │ │

Detailed Description

│ │ │ │ -

Header file for a simple parallel extension of ALOC's VSH.

│ │ │ │ +

Class Vmp: a Virtual MPI communication layer object.

│ │ │ │
Author
Michael Holst
│ │ │ │
Note
None
│ │ │ │
Version
│ │ │ │ -
Id
psh.h,v 1.28 2010/08/12 05:40:23 fetk Exp
│ │ │ │ +
Id
vmp.h,v 1.22 2010/08/12 05:40:23 fetk Exp
│ │ │ │
Attention
*
│ │ │ │  * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │  * Copyright (C) 1994-- Michael Holst
│ │ │ │  *
│ │ │ │  * This library is free software; you can redistribute it and/or
│ │ │ │  * modify it under the terms of the GNU Lesser General Public
│ │ │ │  * License as published by the Free Software Foundation; either
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -3,39 +3,74 @@
│ │ │ │ │  
│ │ │ │ │  
│ │ │ │ │  MALOC 0.1
│ │ │ │ │  
│ │ │ │ │      * src
│ │ │ │ │      * psh
│ │ │ │ │      * maloc
│ │ │ │ │ -Functions
│ │ │ │ │ -psh.h File Reference
│ │ │ │ │ -Vsh_class
│ │ │ │ │ -Header file for a simple parallel extension of ALOC's VSH. More...
│ │ │ │ │ +Classes | Typedefs | Functions
│ │ │ │ │ +vmp.h File Reference
│ │ │ │ │ +Vmp_class
│ │ │ │ │ +Class Vmp: a Virtual MPI communication layer object. More...
│ │ │ │ │  #include 
│ │ │ │ │  #include 
│ │ │ │ │ -#include 
│ │ │ │ │ -#include 
│ │ │ │ │ -Include dependency graph for psh.h:
│ │ │ │ │ +#include 
│ │ │ │ │ +#include 
│ │ │ │ │ +Include dependency graph for vmp.h:
│ │ │ │ │  This graph shows which files directly or indirectly include this file:
│ │ │ │ │  Go_to_the_source_code_of_this_file.
│ │ │ │ │ + Classes
│ │ │ │ │ +struct  sVmp
│ │ │ │ │ +        Contains public data members for Vmp class. More...
│ │ │ │ │ + 
│ │ │ │ │ + Typedefs
│ │ │ │ │ +typedef struct sVmp Vmp
│ │ │ │ │ +                    Declaration of the Vmp class as teh Vmp structure. More...
│ │ │ │ │ + 
│ │ │ │ │   Functions
│ │ │ │ │ -int Vsh_pshell (Vsh *thee, char *pPR, void *pthee, int(*builtin)(void *thee,
│ │ │ │ │ -     int argc, char **argv))
│ │ │ │ │ -    Drop-in replacement for Vsh_shell giving parallel extensions. More...
│ │ │ │ │ +  int Vmp_init (int *argc, char ***argv)
│ │ │ │ │ +      The Vmp initializer. More...
│ │ │ │ │ + 
│ │ │ │ │ +  int Vmp_finalize (void)
│ │ │ │ │ +      The Vmp finalizer. More...
│ │ │ │ │ + 
│ │ │ │ │ +Vmp * Vmp_ctor (void)
│ │ │ │ │ +      The Vmp constructor. More...
│ │ │ │ │ + 
│ │ │ │ │ + void Vmp_dtor (Vmp **thee)
│ │ │ │ │ +      The Vmp destructor. More...
│ │ │ │ │ + 
│ │ │ │ │ +  int Vmp_rank (Vmp *thee)
│ │ │ │ │ +      Return my processor ID. More...
│ │ │ │ │ + 
│ │ │ │ │ +  int Vmp_size (Vmp *thee)
│ │ │ │ │ +      Return the number of processors involved.
│ │ │ │ │ +       More...
│ │ │ │ │ + 
│ │ │ │ │ +  int Vmp_barr (Vmp *thee)
│ │ │ │ │ +      An MPI barrier.
│ │ │ │ │ +       More...
│ │ │ │ │ + 
│ │ │ │ │ +  int Vmp_send (Vmp *thee, int des, char *buf, int bufsize)
│ │ │ │ │ +      An MPI blocking send.
│ │ │ │ │ +       More...
│ │ │ │ │ + 
│ │ │ │ │ +  int Vmp_recv (Vmp *thee, int src, char *buf, int bufsize)
│ │ │ │ │ +      An MPI blocking receive.
│ │ │ │ │ +       More...
│ │ │ │ │   
│ │ │ │ │  ***** Detailed Description *****
│ │ │ │ │ -Header file for a simple parallel extension of ALOC's VSH.
│ │ │ │ │ +Class Vmp: a Virtual MPI communication layer object.
│ │ │ │ │    Author
│ │ │ │ │        Michael Holst
│ │ │ │ │    Note
│ │ │ │ │        None
│ │ │ │ │    Version
│ │ │ │ │    Id
│ │ │ │ │ -      psh.h,v 1.28 2010/08/12 05:40:23 fetk Exp
│ │ │ │ │ +      vmp.h,v 1.22 2010/08/12 05:40:23 fetk Exp
│ │ │ │ │    Attention
│ │ │ │ │        *
│ │ │ │ │        * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │ │        * Copyright (C) 1994-- Michael Holst
│ │ │ │ │        *
│ │ │ │ │        * This library is free software; you can redistribute it and/or
│ │ │ │ │        * modify it under the terms of the GNU Lesser General Public
│ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00008_source.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │ -MALOC: psh.h Source File
│ │ │ │ +MALOC: vmp.h Source File
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │ @@ -39,38 +39,87 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
psh.h
│ │ │ │ +
vmp.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │ -
32#ifndef _PSH_H_
│ │ │ │ -
33#define _PSH_H_
│ │ │ │ -
34
│ │ │ │ -
35#include <maloc/maloc_base.h>
│ │ │ │ -
36
│ │ │ │ -
37#include <maloc/vsys.h>
│ │ │ │ -
38#include <maloc/vsh.h>
│ │ │ │ -
39#include <maloc/vmp.h>
│ │ │ │ -
40
│ │ │ │ -
52int Vsh_pshell(Vsh *thee, char *pPR, void *pthee,
│ │ │ │ -
53 int (*builtin)(void *thee, int argc, char **argv));
│ │ │ │ -
54
│ │ │ │ -
55#endif /* _PSH_H_ */
│ │ │ │ -
56
│ │ │ │ +
37#ifndef _VMP_H_
│ │ │ │ +
38#define _VMP_H_
│ │ │ │ +
39
│ │ │ │ +
40#include <maloc/maloc_base.h>
│ │ │ │ +
41
│ │ │ │ +
42#include <maloc/vsys.h>
│ │ │ │ +
43#include <maloc/vmpi.h>
│ │ │ │ +
44#include <maloc/vcom.h>
│ │ │ │ +
45
│ │ │ │ +
46/*
│ │ │ │ +
47 * ***************************************************************************
│ │ │ │ +
48 * Class Vmp: Parameters and datatypes
│ │ │ │ +
49 * ***************************************************************************
│ │ │ │ +
50 */
│ │ │ │ +
51
│ │ │ │ +
58struct sVmp {
│ │ │ │ + │ │ │ │ + │ │ │ │ +
61};
│ │ │ │ +
62
│ │ │ │ +
68typedef struct sVmp Vmp;
│ │ │ │ +
69
│ │ │ │ +
70/*
│ │ │ │ +
71 * ***************************************************************************
│ │ │ │ +
72 * Class Vmp: Inlineable methods (vmp.c)
│ │ │ │ +
73 * ***************************************************************************
│ │ │ │ +
74 */
│ │ │ │ +
75
│ │ │ │ +
76#if !defined(VINLINE_MALOC)
│ │ │ │ +
77#else /* if defined(VINLINE_MALOC) */
│ │ │ │ +
78#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ +
79
│ │ │ │ +
80
│ │ │ │ +
90int Vmp_init(int *argc, char ***argv);
│ │ │ │ +
91
│ │ │ │ +
99int Vmp_finalize(void);
│ │ │ │ +
100
│ │ │ │ + │ │ │ │ +
109
│ │ │ │ +
118void Vmp_dtor(Vmp **thee);
│ │ │ │ +
119
│ │ │ │ +
128int Vmp_rank(Vmp *thee);
│ │ │ │ +
129
│ │ │ │ +
138int Vmp_size(Vmp *thee);
│ │ │ │ +
139
│ │ │ │ +
148int Vmp_barr(Vmp *thee);
│ │ │ │ +
149
│ │ │ │ +
161int Vmp_send(Vmp *thee, int des, char *buf, int bufsize);
│ │ │ │ +
162
│ │ │ │ +
174int Vmp_recv(Vmp *thee, int src, char *buf, int bufsize);
│ │ │ │ +
175
│ │ │ │ +
176#endif /* _VMP_H_ */
│ │ │ │ +
177
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ -
Class Vmp: a Virtual MPI communication layer object.
│ │ │ │ -
Header file for vsh, a bourne-compatible shell.
│ │ │ │ -
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │ -
int Vsh_pshell(Vsh *thee, char *pPR, void *pthee, int(*builtin)(void *thee, int argc, char **argv))
Drop-in replacement for Vsh_shell giving parallel extensions.
│ │ │ │ -
Contains public data members for Vsh class.
Definition: vsh.h:56
│ │ │ │ +
Class Vcom: virtual (currently just MPI) communications layer.
│ │ │ │ +
Class Vmpi: a Virtual MPI communication layer object.
│ │ │ │ +
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │ +
int Vmp_finalize(void)
The Vmp finalizer.
│ │ │ │ +
int Vmp_send(Vmp *thee, int des, char *buf, int bufsize)
An MPI blocking send.
│ │ │ │ +
int Vmp_init(int *argc, char ***argv)
The Vmp initializer.
│ │ │ │ +
int Vmp_rank(Vmp *thee)
Return my processor ID.
│ │ │ │ +
int Vmp_recv(Vmp *thee, int src, char *buf, int bufsize)
An MPI blocking receive.
│ │ │ │ +
Vmp * Vmp_ctor(void)
The Vmp constructor.
│ │ │ │ +
void Vmp_dtor(Vmp **thee)
The Vmp destructor.
│ │ │ │ +
int Vmp_barr(Vmp *thee)
An MPI barrier.
│ │ │ │ +
int Vmp_size(Vmp *thee)
Return the number of processors involved.
│ │ │ │ +
Contains public data members for Vmp class.
Definition: vmp.h:58
│ │ │ │ +
int mpi_rank
Definition: vmp.h:59
│ │ │ │ +
int mpi_size
Definition: vmp.h:60
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,42 +3,114 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * psh │ │ │ │ │ * maloc │ │ │ │ │ -psh.h │ │ │ │ │ +vmp.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ 1 │ │ │ │ │ - 32#ifndef _PSH_H_ │ │ │ │ │ - 33#define _PSH_H_ │ │ │ │ │ - 34 │ │ │ │ │ - 35#include │ │ │ │ │ - 36 │ │ │ │ │ - 37#include │ │ │ │ │ - 38#include │ │ │ │ │ - 39#include │ │ │ │ │ - 40 │ │ │ │ │ -52int Vsh_pshell(Vsh *thee, char *pPR, void *pthee, │ │ │ │ │ - 53 int (*builtin)(void *thee, int argc, char **argv)); │ │ │ │ │ - 54 │ │ │ │ │ - 55#endif /* _PSH_H_ */ │ │ │ │ │ - 56 │ │ │ │ │ + 37#ifndef _VMP_H_ │ │ │ │ │ + 38#define _VMP_H_ │ │ │ │ │ + 39 │ │ │ │ │ + 40#include │ │ │ │ │ + 41 │ │ │ │ │ + 42#include │ │ │ │ │ + 43#include │ │ │ │ │ + 44#include │ │ │ │ │ + 45 │ │ │ │ │ + 46/* │ │ │ │ │ + 47 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 48 * Class Vmp: Parameters and datatypes │ │ │ │ │ + 49 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 50 */ │ │ │ │ │ + 51 │ │ │ │ │ +58struct sVmp { │ │ │ │ │ +59 int mpi_rank; │ │ │ │ │ +60 int mpi_size; │ │ │ │ │ + 61}; │ │ │ │ │ + 62 │ │ │ │ │ +68typedef struct sVmp Vmp; │ │ │ │ │ + 69 │ │ │ │ │ + 70/* │ │ │ │ │ + 71 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 72 * Class Vmp: Inlineable methods (vmp.c) │ │ │ │ │ + 73 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 74 */ │ │ │ │ │ + 75 │ │ │ │ │ + 76#if !defined(VINLINE_MALOC) │ │ │ │ │ + 77#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ + 78#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ + 79 │ │ │ │ │ + 80 │ │ │ │ │ +90int Vmp_init(int *argc, char ***argv); │ │ │ │ │ + 91 │ │ │ │ │ +99int Vmp_finalize(void); │ │ │ │ │ + 100 │ │ │ │ │ +108Vmp* Vmp_ctor(void); │ │ │ │ │ + 109 │ │ │ │ │ +118void Vmp_dtor(Vmp **thee); │ │ │ │ │ + 119 │ │ │ │ │ +128int Vmp_rank(Vmp *thee); │ │ │ │ │ + 129 │ │ │ │ │ +138int Vmp_size(Vmp *thee); │ │ │ │ │ + 139 │ │ │ │ │ +148int Vmp_barr(Vmp *thee); │ │ │ │ │ + 149 │ │ │ │ │ +161int Vmp_send(Vmp *thee, int des, char *buf, int bufsize); │ │ │ │ │ + 162 │ │ │ │ │ +174int Vmp_recv(Vmp *thee, int src, char *buf, int bufsize); │ │ │ │ │ + 175 │ │ │ │ │ + 176#endif /* _VMP_H_ */ │ │ │ │ │ + 177 │ │ │ │ │ maloc_base.h │ │ │ │ │ The base (or foundation) header for MALOC. │ │ │ │ │ -vmp.h │ │ │ │ │ -Class Vmp: a Virtual MPI communication layer object. │ │ │ │ │ -vsh.h │ │ │ │ │ -Header file for vsh, a bourne-compatible shell. │ │ │ │ │ +vcom.h │ │ │ │ │ +Class Vcom: virtual (currently just MPI) communications layer. │ │ │ │ │ +vmpi.h │ │ │ │ │ +Class Vmpi: a Virtual MPI communication layer object. │ │ │ │ │ vsys.h │ │ │ │ │ The primary header for VSYS. (Virtual SYStem utilities library.) │ │ │ │ │ -Vsh_pshell │ │ │ │ │ -int Vsh_pshell(Vsh *thee, char *pPR, void *pthee, int(*builtin)(void *thee, int │ │ │ │ │ -argc, char **argv)) │ │ │ │ │ -Drop-in replacement for Vsh_shell giving parallel extensions. │ │ │ │ │ -sVsh │ │ │ │ │ -Contains public data members for Vsh class. │ │ │ │ │ -Definition: vsh.h:56 │ │ │ │ │ +Vmp_finalize │ │ │ │ │ +int Vmp_finalize(void) │ │ │ │ │ +The Vmp finalizer. │ │ │ │ │ +Vmp_send │ │ │ │ │ +int Vmp_send(Vmp *thee, int des, char *buf, int bufsize) │ │ │ │ │ +An MPI blocking send. │ │ │ │ │ +Vmp_init │ │ │ │ │ +int Vmp_init(int *argc, char ***argv) │ │ │ │ │ +The Vmp initializer. │ │ │ │ │ +Vmp_rank │ │ │ │ │ +int Vmp_rank(Vmp *thee) │ │ │ │ │ +Return my processor ID. │ │ │ │ │ +Vmp_recv │ │ │ │ │ +int Vmp_recv(Vmp *thee, int src, char *buf, int bufsize) │ │ │ │ │ +An MPI blocking receive. │ │ │ │ │ +Vmp_ctor │ │ │ │ │ +Vmp * Vmp_ctor(void) │ │ │ │ │ +The Vmp constructor. │ │ │ │ │ +Vmp_dtor │ │ │ │ │ +void Vmp_dtor(Vmp **thee) │ │ │ │ │ +The Vmp destructor. │ │ │ │ │ +Vmp_barr │ │ │ │ │ +int Vmp_barr(Vmp *thee) │ │ │ │ │ +An MPI barrier. │ │ │ │ │ +Vmp_size │ │ │ │ │ +int Vmp_size(Vmp *thee) │ │ │ │ │ +Return the number of processors involved. │ │ │ │ │ +sVmp │ │ │ │ │ +Contains public data members for Vmp class. │ │ │ │ │ +Definition: vmp.h:58 │ │ │ │ │ +sVmp::mpi_rank │ │ │ │ │ +int mpi_rank │ │ │ │ │ +Definition: vmp.h:59 │ │ │ │ │ +sVmp::mpi_size │ │ │ │ │ +int mpi_size │ │ │ │ │ +Definition: vmp.h:60 │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00009.dot.gz │ │ │ │ ├── a00009.dot │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ -digraph "psh.h" │ │ │ │ │ +digraph "vmp.h" │ │ │ │ │ { │ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ │ - Node1 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ │ + Node1 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ │ Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node2 [label="maloc/maloc_base.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00002.html",tooltip="The base (or foundation) header for MALOC."]; │ │ │ │ │ Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node3 [label="assert.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node4 [label="ctype.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ @@ -33,44 +33,36 @@ │ │ │ │ │ Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node15 [label="string.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node16 [label="time.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node17 [label="setjmp.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ + Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ Node18 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ + Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ Node19 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ + Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ Node20 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ + Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ Node21 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node21 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ + Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ Node22 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ + Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ Node23 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node24 [label="maloc/vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ │ + Node24 [label="maloc/vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ │ Node24 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node24 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node25 [label="maloc/vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ │ + Node25 [label="maloc/vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ │ Node25 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node25 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node26 [label="maloc/vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ │ - Node26 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node26 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node25 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node27 [label="maloc/vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ │ - Node27 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node27 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00010.dot │ │ │ │ @@ -1,9 +1,11 @@ │ │ │ │ -digraph "psh.h" │ │ │ │ +digraph "vmp.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node1 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ + Node2 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00011.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vmpi.h File Reference │ │ │ │ +MALOC: vcom.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -41,97 +41,113 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ +Macros | │ │ │ │ Typedefs | │ │ │ │ Functions
│ │ │ │ -
vmpi.h File Reference
│ │ │ │ +
vcom.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ -

Class Vmpi: a Virtual MPI communication layer object. │ │ │ │ +

Class Vcom: virtual (currently just MPI) communications layer. │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ -#include <maloc/vsys.h>
│ │ │ │ +#include <maloc/vsys.h>
│ │ │ │
│ │ │ │ -Include dependency graph for vmpi.h:
│ │ │ │ +Include dependency graph for vcom.h:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

struct  sVmpi
 Class Vmpi: Definition. More...
struct  sVcom
 Contains public data members for Vcom class. More...
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Macros

#define VCOM_MPI_TAG   111
 A base value for MPI tags. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Typedefs

typedef struct sVmpi Vmpi
 Declaration of the Vmpi class as the Vmpi structure. More...
 
typedef struct sVcom Vcom
 Declaration of the Vcom class as the Vcom structure
│ │ │ │ + More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Functions

int Vmpi_init (int *argc, char ***argv)
 The Vmp initializer. More...
 
int Vmpi_finalize (void)
 The Vmp finalizer. More...
 
VmpiVmpi_ctor (void)
 The Vmpi constructor. More...
 
void Vmpi_dtor (Vmpi **thee)
 The Vmpi destructor. More...
 
int Vmpi_rank (Vmpi *thee)
 Return my processor ID.
│ │ │ │ - More...
 
int Vmpi_size (Vmpi *thee)
 Return the number of processors involved. More...
 
int Vmpi_barr (Vmpi *thee)
 An MPI barrier.
│ │ │ │ - More...
 
int Vmpi_send (Vmpi *thee, int des, char *buf, int bufsize)
 An MPI blocking send. More...
 
int Vmpi_recv (Vmpi *thee, int src, char *buf, int bufsize)
 An MPI blocking receive. More...
 
int Vmpi_bcast (Vmpi *thee, char *buf, int bufsize)
 An MPI broadcast. More...
 
int Vmpi_reduce (Vmpi *thee, char *sbuf, char *rbuf, int bufsize)
 An MPI reduce.
│ │ │ │ - More...
 
int Vmpi_isend (Vmpi *thee, int des, char *buf, int bufsize)
 An MPI non-blocking send. More...
 
int Vcom_init (int *argc, char ***argv)
 The Vmp initializer. More...
 
int Vcom_finalize (void)
 The Vmp finalizer. More...
 
VcomVcom_ctor (int commtype)
 Construct the communications object. This routine sets up data members of class and initializes MPI. More...
 
int Vcom_ctor2 (Vcom *thee, int commtype)
 Construct the communications object. This routine sets up data members of class and initializes MPI. This is broken into two parts to be callable from FORTRAN. More...
 
void Vcom_dtor (Vcom **thee)
 Destroy the communications object. More...
 
void Vcom_dtor2 (Vcom *thee)
 Destroy the communications object. This is broken into two parts to be callable from FORTRAN. More...
 
int Vcom_send (Vcom *thee, int des, void *buf, int len, int type, int block)
 Send a buffer. Returns 1 on success. More...
 
int Vcom_recv (Vcom *thee, int src, void *buf, int len, int type, int block)
 Receive a (character) buffer.
│ │ │ │ + The blocking flag is present, but not used. All receives are assumed to be blocking. A non-blocking receive would be very ugly to implement (signals or something?). More...
 
int Vcom_getCount (Vcom *thee, int src, int *length, int type)
 Perform a blocking probe to get the length (in number of items of specified type) of an incoming message and place it in the
│ │ │ │ + argument ``length". More...
 
int Vcom_reduce (Vcom *thee, void *sendbuf, void *recvbuf, int length, int type, int op)
 Perform a reduction of the data across all processors. This is equivalent (and in the case of MPI is identical to) MPI_Allreduce. Basically, the specified operations are appleed to each member of
│ │ │ │ + the sendbuf across all processors and the results are written to recvbuf. More...
 
int Vcom_size (Vcom *thee)
 Get the number of PEs in communicator. More...
 
int Vcom_resize (Vcom *thee, int newsize)
 Resize (shrink) the communications group to include only newsize number of processors.
│ │ │ │ + Obsolete processes are given rank of -1 and size of 0. More...
 
int Vcom_rank (Vcom *thee)
 Get the ID of the local PE
│ │ │ │ + More...
 
int Vcom_barr (Vcom *thee)
 Synchronization barrier. More...
 
│ │ │ │

Detailed Description

│ │ │ │ -

Class Vmpi: a Virtual MPI communication layer object.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ +

Class Vcom: virtual (currently just MPI) communications layer.

│ │ │ │ +
Authors
Nathan Baker and Michael Holst
│ │ │ │
Note
None
│ │ │ │
Version
│ │ │ │ -
Id
vmpi.h,v 1.29 2010/08/12 05:40:23 fetk Exp
│ │ │ │ +
Id
vcom.h,v 1.38 2010/08/12 05:40:23 fetk Exp
│ │ │ │
Attention
*
│ │ │ │  * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │  * Copyright (C) 1994-- Michael Holst
│ │ │ │  *
│ │ │ │  * This library is free software; you can redistribute it and/or
│ │ │ │  * modify it under the terms of the GNU Lesser General Public
│ │ │ │  * License as published by the Free Software Foundation; either
│ │ │ │ @@ -143,14 +159,31 @@
│ │ │ │  * Lesser General Public License for more details.
│ │ │ │  *
│ │ │ │  * You should have received a copy of the GNU Lesser General Public
│ │ │ │  * License along with this library; if not, write to the Free Software
│ │ │ │  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
│ │ │ │  * 
│ │ │ │  *  
│ │ │ │ -
│ │ │ │ +

Macro Definition Documentation

│ │ │ │ + │ │ │ │ +

◆ VCOM_MPI_TAG

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
#define VCOM_MPI_TAG   111
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

A base value for MPI tags.

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,81 +3,107 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * psh │ │ │ │ │ * maloc │ │ │ │ │ -Classes | Typedefs | Functions │ │ │ │ │ -vmpi.h File Reference │ │ │ │ │ -Vmpi_class │ │ │ │ │ -Class Vmpi: a Virtual MPI communication layer object. More... │ │ │ │ │ +Classes | Macros | Typedefs | Functions │ │ │ │ │ +vcom.h File Reference │ │ │ │ │ +Vcom_class │ │ │ │ │ +Class Vcom: virtual (currently just MPI) communications layer. More... │ │ │ │ │ #include │ │ │ │ │ #include │ │ │ │ │ -Include dependency graph for vmpi.h: │ │ │ │ │ +Include dependency graph for vcom.h: │ │ │ │ │ This graph shows which files directly or indirectly include this file: │ │ │ │ │ Go_to_the_source_code_of_this_file. │ │ │ │ │ Classes │ │ │ │ │ -struct  sVmpi │ │ │ │ │ -  Class Vmpi: Definition. More... │ │ │ │ │ +struct  sVcom │ │ │ │ │ +  Contains public data members for Vcom class. More... │ │ │ │ │ +  │ │ │ │ │ + Macros │ │ │ │ │ +#define VCOM_MPI_TAG   111 │ │ │ │ │ +  A base value for MPI tags. More... │ │ │ │ │   │ │ │ │ │ Typedefs │ │ │ │ │ -typedef struct sVmpi Vmpi │ │ │ │ │ -  Declaration of the Vmpi class as the Vmpi structure. │ │ │ │ │ +typedef struct sVcom Vcom │ │ │ │ │ +  Declaration of the Vcom class as the Vcom structure │ │ │ │ │ More... │ │ │ │ │   │ │ │ │ │ Functions │ │ │ │ │ - int Vmpi_init (int *argc, char ***argv) │ │ │ │ │ + int Vcom_init (int *argc, char ***argv) │ │ │ │ │   The Vmp initializer. More... │ │ │ │ │   │ │ │ │ │ - int Vmpi_finalize (void) │ │ │ │ │ + int Vcom_finalize (void) │ │ │ │ │   The Vmp finalizer. More... │ │ │ │ │   │ │ │ │ │ -Vmpi * Vmpi_ctor (void) │ │ │ │ │ -  The Vmpi constructor. More... │ │ │ │ │ -  │ │ │ │ │ - void Vmpi_dtor (Vmpi **thee) │ │ │ │ │ -  The Vmpi destructor. More... │ │ │ │ │ -  │ │ │ │ │ - int Vmpi_rank (Vmpi *thee) │ │ │ │ │ -  Return my processor ID. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - int Vmpi_size (Vmpi *thee) │ │ │ │ │ -  Return the number of processors involved. More... │ │ │ │ │ -  │ │ │ │ │ - int Vmpi_barr (Vmpi *thee) │ │ │ │ │ -  An MPI barrier. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - int Vmpi_send (Vmpi *thee, int des, char *buf, int bufsize) │ │ │ │ │ -  An MPI blocking send. More... │ │ │ │ │ -  │ │ │ │ │ - int Vmpi_recv (Vmpi *thee, int src, char *buf, int bufsize) │ │ │ │ │ -  An MPI blocking receive. More... │ │ │ │ │ -  │ │ │ │ │ - int Vmpi_bcast (Vmpi *thee, char *buf, int bufsize) │ │ │ │ │ -  An MPI broadcast. More... │ │ │ │ │ +Vcom * Vcom_ctor (int commtype) │ │ │ │ │ +  Construct the communications object. This routine sets up data members │ │ │ │ │ + of class and initializes MPI. More... │ │ │ │ │ +  │ │ │ │ │ + int Vcom_ctor2 (Vcom *thee, int commtype) │ │ │ │ │ + Construct the communications object. This routine sets up data members │ │ │ │ │ +  of class and initializes MPI. This is broken into two parts to be │ │ │ │ │ + callable from FORTRAN. More... │ │ │ │ │ +  │ │ │ │ │ + void Vcom_dtor (Vcom **thee) │ │ │ │ │ +  Destroy the communications object. More... │ │ │ │ │ +  │ │ │ │ │ + void Vcom_dtor2 (Vcom *thee) │ │ │ │ │ +  Destroy the communications object. This is broken into two parts to be │ │ │ │ │ + callable from FORTRAN. More... │ │ │ │ │ +  │ │ │ │ │ + int Vcom_send (Vcom *thee, int des, void *buf, int len, int type, int │ │ │ │ │ + block) │ │ │ │ │ +  Send a buffer. Returns 1 on success. More... │ │ │ │ │ +  │ │ │ │ │ + int Vcom_recv (Vcom *thee, int src, void *buf, int len, int type, int │ │ │ │ │ + block) │ │ │ │ │ + Receive a (character) buffer. │ │ │ │ │ +  The blocking flag is present, but not used. All receives are assumed to │ │ │ │ │ + be blocking. A non-blocking receive would be very ugly to implement │ │ │ │ │ + (signals or something?). More... │ │ │ │ │ +  │ │ │ │ │ + int Vcom_getCount (Vcom *thee, int src, int *length, int type) │ │ │ │ │ + Perform a blocking probe to get the length (in number of items of │ │ │ │ │ +  specified type) of an incoming message and place it in the │ │ │ │ │ + argument ``length". More... │ │ │ │ │ +  │ │ │ │ │ + int Vcom_reduce (Vcom *thee, void *sendbuf, void *recvbuf, int length, int │ │ │ │ │ + type, int op) │ │ │ │ │ + Perform a reduction of the data across all processors. This is │ │ │ │ │ + equivalent (and in the case of MPI is identical to) MPI_Allreduce. │ │ │ │ │ +  Basically, the specified operations are appleed to each member of │ │ │ │ │ + the sendbuf across all processors and the results are written to │ │ │ │ │ + recvbuf. More... │ │ │ │ │ +  │ │ │ │ │ + int Vcom_size (Vcom *thee) │ │ │ │ │ +  Get the number of PEs in communicator. More... │ │ │ │ │ +  │ │ │ │ │ + int Vcom_resize (Vcom *thee, int newsize) │ │ │ │ │ + Resize (shrink) the communications group to include only newsize number │ │ │ │ │ +  of processors. │ │ │ │ │ + Obsolete processes are given rank of -1 and size of 0. More... │ │ │ │ │   │ │ │ │ │ - int Vmpi_reduce (Vmpi *thee, char *sbuf, char *rbuf, int bufsize) │ │ │ │ │ -  An MPI reduce. │ │ │ │ │ + int Vcom_rank (Vcom *thee) │ │ │ │ │ +  Get the ID of the local PE │ │ │ │ │ More... │ │ │ │ │   │ │ │ │ │ - int Vmpi_isend (Vmpi *thee, int des, char *buf, int bufsize) │ │ │ │ │ -  An MPI non-blocking send. More... │ │ │ │ │ + int Vcom_barr (Vcom *thee) │ │ │ │ │ +  Synchronization barrier. More... │ │ │ │ │   │ │ │ │ │ ***** Detailed Description ***** │ │ │ │ │ -Class Vmpi: a Virtual MPI communication layer object. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ +Class Vcom: virtual (currently just MPI) communications layer. │ │ │ │ │ + Authors │ │ │ │ │ + Nathan Baker and Michael Holst │ │ │ │ │ Note │ │ │ │ │ None │ │ │ │ │ Version │ │ │ │ │ Id │ │ │ │ │ - vmpi.h,v 1.29 2010/08/12 05:40:23 fetk Exp │ │ │ │ │ + vcom.h,v 1.38 2010/08/12 05:40:23 fetk Exp │ │ │ │ │ Attention │ │ │ │ │ * │ │ │ │ │ * MALOC = < Minimal Abstraction Layer for Object-oriented C > │ │ │ │ │ * Copyright (C) 1994-- Michael Holst │ │ │ │ │ * │ │ │ │ │ * This library is free software; you can redistribute it and/or │ │ │ │ │ * modify it under the terms of the GNU Lesser General Public │ │ │ │ │ @@ -90,10 +116,14 @@ │ │ │ │ │ * Lesser General Public License for more details. │ │ │ │ │ * │ │ │ │ │ * You should have received a copy of the GNU Lesser General Public │ │ │ │ │ * License along with this library; if not, write to the Free Software │ │ │ │ │ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA │ │ │ │ │ * │ │ │ │ │ * │ │ │ │ │ +***** Macro Definition Documentation ***** │ │ │ │ │ +***** ◆ VCOM_MPI_TAG ***** │ │ │ │ │ +#define VCOM_MPI_TAG   111 │ │ │ │ │ +A base value for MPI tags. │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00011_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vmpi.h Source File │ │ │ │ +MALOC: vcom.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -39,92 +39,112 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
vmpi.h
│ │ │ │ +
vcom.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │ -
38#ifndef _VMPI_H_
│ │ │ │ -
39#define _VMPI_H_
│ │ │ │ +
38#ifndef _VCOM_H_
│ │ │ │ +
39#define _VCOM_H_
│ │ │ │
40
│ │ │ │
41#include <maloc/maloc_base.h>
│ │ │ │
42
│ │ │ │ -
43#include <maloc/vsys.h>
│ │ │ │ +
43#include <maloc/vsys.h>
│ │ │ │
44
│ │ │ │ -
45/*
│ │ │ │ -
46 * ***************************************************************************
│ │ │ │ -
47 * Class Vmpi: Parameters and datatypes
│ │ │ │ -
48 * ***************************************************************************
│ │ │ │ -
49 */
│ │ │ │ -
50
│ │ │ │ -
51
│ │ │ │ -
57struct sVmpi {
│ │ │ │ - │ │ │ │ - │ │ │ │ -
60};
│ │ │ │ +
46#define VCOM_MPI_TAG 111
│ │ │ │ +
47
│ │ │ │ +
48/*
│ │ │ │ +
49 * ***************************************************************************
│ │ │ │ +
50 * Class Vcom: Parameters and datatypes
│ │ │ │ +
51 * ***************************************************************************
│ │ │ │ +
52 */
│ │ │ │ +
53
│ │ │ │ +
60struct sVcom {
│ │ │ │
61
│ │ │ │ -
67typedef struct sVmpi Vmpi;
│ │ │ │ -
68
│ │ │ │ -
69/*
│ │ │ │ -
70 * ***************************************************************************
│ │ │ │ -
71 * Class Vmpi: Inlineable methods (vmpi.c)
│ │ │ │ -
72 * ***************************************************************************
│ │ │ │ -
73 */
│ │ │ │ -
74
│ │ │ │ -
75#if !defined(VINLINE_MALOC)
│ │ │ │ -
76#else /* if defined(VINLINE_MALOC) */
│ │ │ │ -
77#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ + │ │ │ │ + │ │ │ │ +
66
│ │ │ │ +
71 int type;
│ │ │ │ +
73 int error;
│ │ │ │ +
75 void *core;
│ │ │ │ +
76
│ │ │ │ +
77};
│ │ │ │
78
│ │ │ │ -
88int Vmpi_init(int *argc, char ***argv);
│ │ │ │ -
89
│ │ │ │ -
97int Vmpi_finalize(void);
│ │ │ │ -
98
│ │ │ │ - │ │ │ │ -
107
│ │ │ │ -
116void Vmpi_dtor(Vmpi **thee);
│ │ │ │ +
85typedef struct sVcom Vcom;
│ │ │ │ +
86
│ │ │ │ +
87/*
│ │ │ │ +
88 * ***************************************************************************
│ │ │ │ +
89 * Class Vcom: Inlineable methods (vcom.c)
│ │ │ │ +
90 * ***************************************************************************
│ │ │ │ +
91 */
│ │ │ │ +
92
│ │ │ │ +
93#if !defined(VINLINE_MALOC)
│ │ │ │ +
94#else /* if defined(VINLINE_MALOC) */
│ │ │ │ +
95#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ +
96
│ │ │ │ +
97
│ │ │ │ +
107int Vcom_init(int *argc, char ***argv);
│ │ │ │ +
108
│ │ │ │ + │ │ │ │
117
│ │ │ │ -
126int Vmpi_rank(Vmpi *thee);
│ │ │ │ -
127
│ │ │ │ -
136int Vmpi_size(Vmpi *thee);
│ │ │ │ -
137
│ │ │ │ -
146int Vmpi_barr(Vmpi *thee);
│ │ │ │ -
147
│ │ │ │ -
159int Vmpi_send(Vmpi *thee, int des, char *buf, int bufsize);
│ │ │ │ -
160
│ │ │ │ -
172int Vmpi_recv(Vmpi *thee, int src, char *buf, int bufsize);
│ │ │ │ -
173
│ │ │ │ -
184int Vmpi_bcast(Vmpi *thee, char *buf, int bufsize);
│ │ │ │ -
185
│ │ │ │ -
197int Vmpi_reduce(Vmpi *thee, char *sbuf, char *rbuf, int bufsize);
│ │ │ │ -
198
│ │ │ │ -
210int Vmpi_isend(Vmpi *thee, int des, char *buf, int bufsize);
│ │ │ │ -
211
│ │ │ │ -
212#endif /* _VMPI_H_ */
│ │ │ │ -
213
│ │ │ │ +
127Vcom* Vcom_ctor(int commtype);
│ │ │ │ +
128
│ │ │ │ +
140int Vcom_ctor2(Vcom* thee, int commtype);
│ │ │ │ +
141
│ │ │ │ +
150void Vcom_dtor(Vcom **thee);
│ │ │ │ +
151
│ │ │ │ +
161void Vcom_dtor2(Vcom *thee);
│ │ │ │ +
162
│ │ │ │ +
177int Vcom_send(Vcom *thee, int des, void *buf, int len, int type,
│ │ │ │ +
178 int block);
│ │ │ │ +
179
│ │ │ │ +
197int Vcom_recv(Vcom *thee, int src, void *buf, int len, int type,
│ │ │ │ +
198 int block);
│ │ │ │ +
199
│ │ │ │ +
214int Vcom_getCount(Vcom *thee, int src, int *length, int type);
│ │ │ │ +
215
│ │ │ │ +
237int Vcom_reduce(Vcom *thee, void *sendbuf, void *recvbuf, int length,
│ │ │ │ +
238 int type, int op);
│ │ │ │ +
239
│ │ │ │ +
248int Vcom_size(Vcom *thee);
│ │ │ │ +
249
│ │ │ │ +
261int Vcom_resize(Vcom *thee, int newsize);
│ │ │ │ +
262
│ │ │ │ +
271int Vcom_rank(Vcom *thee);
│ │ │ │ +
272
│ │ │ │ +
281int Vcom_barr(Vcom *thee);
│ │ │ │ +
282
│ │ │ │ +
283#endif /* _VCOM_H_ */
│ │ │ │ +
284
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ -
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │ -
int Vmpi_init(int *argc, char ***argv)
The Vmp initializer.
│ │ │ │ -
int Vmpi_finalize(void)
The Vmp finalizer.
│ │ │ │ -
int Vmpi_size(Vmpi *thee)
Return the number of processors involved.
│ │ │ │ -
int Vmpi_reduce(Vmpi *thee, char *sbuf, char *rbuf, int bufsize)
An MPI reduce.
│ │ │ │ -
int Vmpi_recv(Vmpi *thee, int src, char *buf, int bufsize)
An MPI blocking receive.
│ │ │ │ -
int Vmpi_isend(Vmpi *thee, int des, char *buf, int bufsize)
An MPI non-blocking send.
│ │ │ │ -
void Vmpi_dtor(Vmpi **thee)
The Vmpi destructor.
│ │ │ │ -
int Vmpi_send(Vmpi *thee, int des, char *buf, int bufsize)
An MPI blocking send.
│ │ │ │ -
Vmpi * Vmpi_ctor(void)
The Vmpi constructor.
│ │ │ │ -
int Vmpi_barr(Vmpi *thee)
An MPI barrier.
│ │ │ │ -
int Vmpi_bcast(Vmpi *thee, char *buf, int bufsize)
An MPI broadcast.
│ │ │ │ -
int Vmpi_rank(Vmpi *thee)
Return my processor ID.
│ │ │ │ -
Class Vmpi: Definition.
Definition: vmpi.h:57
│ │ │ │ -
int mpi_rank
Definition: vmpi.h:58
│ │ │ │ -
int mpi_size
Definition: vmpi.h:59
│ │ │ │ +
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │ +
int Vcom_rank(Vcom *thee)
Get the ID of the local PE
│ │ │ │ +
int Vcom_resize(Vcom *thee, int newsize)
Resize (shrink) the communications group to include only newsize number of processors....
│ │ │ │ +
int Vcom_ctor2(Vcom *thee, int commtype)
Construct the communications object. This routine sets up data members of class and initializes MPI....
│ │ │ │ +
int Vcom_size(Vcom *thee)
Get the number of PEs in communicator.
│ │ │ │ +
int Vcom_reduce(Vcom *thee, void *sendbuf, void *recvbuf, int length, int type, int op)
Perform a reduction of the data across all processors. This is equivalent (and in the case of MPI is ...
│ │ │ │ +
Vcom * Vcom_ctor(int commtype)
Construct the communications object. This routine sets up data members of class and initializes MPI.
│ │ │ │ +
int Vcom_init(int *argc, char ***argv)
The Vmp initializer.
│ │ │ │ +
int Vcom_finalize(void)
The Vmp finalizer.
│ │ │ │ +
int Vcom_barr(Vcom *thee)
Synchronization barrier.
│ │ │ │ +
void Vcom_dtor(Vcom **thee)
Destroy the communications object.
│ │ │ │ +
int Vcom_recv(Vcom *thee, int src, void *buf, int len, int type, int block)
Receive a (character) buffer. The blocking flag is present, but not used. All receives are assumed ...
│ │ │ │ +
int Vcom_getCount(Vcom *thee, int src, int *length, int type)
Perform a blocking probe to get the length (in number of items of specified type) of an incoming mess...
│ │ │ │ +
int Vcom_send(Vcom *thee, int des, void *buf, int len, int type, int block)
Send a buffer. Returns 1 on success.
│ │ │ │ +
void Vcom_dtor2(Vcom *thee)
Destroy the communications object. This is broken into two parts to be callable from FORTRAN.
│ │ │ │ +
Contains public data members for Vcom class.
Definition: vcom.h:60
│ │ │ │ +
int type
Communication type. 0 = not initialized 1 = Message Passing Interface 1.1.
Definition: vcom.h:71
│ │ │ │ +
int error
note if any error has occurred on this vcom device
Definition: vcom.h:73
│ │ │ │ +
int mpi_size
Total number of PEs in this communicator from MPI.
Definition: vcom.h:65
│ │ │ │ +
void * core
Private MPI core.
Definition: vcom.h:75
│ │ │ │ +
int mpi_rank
Local PE rank from MPI.
Definition: vcom.h:63
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,123 +3,166 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * psh │ │ │ │ │ * maloc │ │ │ │ │ -vmpi.h │ │ │ │ │ +vcom.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ 1 │ │ │ │ │ - 38#ifndef _VMPI_H_ │ │ │ │ │ - 39#define _VMPI_H_ │ │ │ │ │ + 38#ifndef _VCOM_H_ │ │ │ │ │ + 39#define _VCOM_H_ │ │ │ │ │ 40 │ │ │ │ │ 41#include │ │ │ │ │ 42 │ │ │ │ │ 43#include │ │ │ │ │ 44 │ │ │ │ │ - 45/* │ │ │ │ │ - 46 * │ │ │ │ │ +46#define VCOM_MPI_TAG 111 │ │ │ │ │ + 47 │ │ │ │ │ + 48/* │ │ │ │ │ + 49 * │ │ │ │ │ *************************************************************************** │ │ │ │ │ - 47 * Class Vmpi: Parameters and datatypes │ │ │ │ │ - 48 * │ │ │ │ │ + 50 * Class Vcom: Parameters and datatypes │ │ │ │ │ + 51 * │ │ │ │ │ *************************************************************************** │ │ │ │ │ - 49 */ │ │ │ │ │ - 50 │ │ │ │ │ - 51 │ │ │ │ │ -57struct sVmpi { │ │ │ │ │ -58 int mpi_rank; │ │ │ │ │ -59 int mpi_size; │ │ │ │ │ - 60}; │ │ │ │ │ + 52 */ │ │ │ │ │ + 53 │ │ │ │ │ +60struct sVcom { │ │ │ │ │ 61 │ │ │ │ │ -67typedef struct sVmpi Vmpi; │ │ │ │ │ - 68 │ │ │ │ │ - 69/* │ │ │ │ │ - 70 * │ │ │ │ │ +63 int mpi_rank; │ │ │ │ │ +65 int mpi_size; │ │ │ │ │ + 66 │ │ │ │ │ +71 int type; │ │ │ │ │ +73 int error; │ │ │ │ │ +75 void *core; │ │ │ │ │ + 76 │ │ │ │ │ + 77}; │ │ │ │ │ + 78 │ │ │ │ │ +85typedef struct sVcom Vcom; │ │ │ │ │ + 86 │ │ │ │ │ + 87/* │ │ │ │ │ + 88 * │ │ │ │ │ *************************************************************************** │ │ │ │ │ - 71 * Class Vmpi: Inlineable methods (vmpi.c) │ │ │ │ │ - 72 * │ │ │ │ │ + 89 * Class Vcom: Inlineable methods (vcom.c) │ │ │ │ │ + 90 * │ │ │ │ │ *************************************************************************** │ │ │ │ │ - 73 */ │ │ │ │ │ - 74 │ │ │ │ │ - 75#if !defined(VINLINE_MALOC) │ │ │ │ │ - 76#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ - 77#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ - 78 │ │ │ │ │ -88int Vmpi_init(int *argc, char ***argv); │ │ │ │ │ - 89 │ │ │ │ │ -97int Vmpi_finalize(void); │ │ │ │ │ - 98 │ │ │ │ │ -106Vmpi* Vmpi_ctor(void); │ │ │ │ │ - 107 │ │ │ │ │ -116void Vmpi_dtor(Vmpi **thee); │ │ │ │ │ + 91 */ │ │ │ │ │ + 92 │ │ │ │ │ + 93#if !defined(VINLINE_MALOC) │ │ │ │ │ + 94#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ + 95#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ + 96 │ │ │ │ │ + 97 │ │ │ │ │ +107int Vcom_init(int *argc, char ***argv); │ │ │ │ │ + 108 │ │ │ │ │ +116int Vcom_finalize(void); │ │ │ │ │ 117 │ │ │ │ │ -126int Vmpi_rank(Vmpi *thee); │ │ │ │ │ - 127 │ │ │ │ │ -136int Vmpi_size(Vmpi *thee); │ │ │ │ │ - 137 │ │ │ │ │ -146int Vmpi_barr(Vmpi *thee); │ │ │ │ │ - 147 │ │ │ │ │ -159int Vmpi_send(Vmpi *thee, int des, char *buf, int bufsize); │ │ │ │ │ - 160 │ │ │ │ │ -172int Vmpi_recv(Vmpi *thee, int src, char *buf, int bufsize); │ │ │ │ │ - 173 │ │ │ │ │ -184int Vmpi_bcast(Vmpi *thee, char *buf, int bufsize); │ │ │ │ │ - 185 │ │ │ │ │ -197int Vmpi_reduce(Vmpi *thee, char *sbuf, char *rbuf, int bufsize); │ │ │ │ │ - 198 │ │ │ │ │ -210int Vmpi_isend(Vmpi *thee, int des, char *buf, int bufsize); │ │ │ │ │ - 211 │ │ │ │ │ - 212#endif /* _VMPI_H_ */ │ │ │ │ │ - 213 │ │ │ │ │ +127Vcom* Vcom_ctor(int commtype); │ │ │ │ │ + 128 │ │ │ │ │ +140int Vcom_ctor2(Vcom* thee, int commtype); │ │ │ │ │ + 141 │ │ │ │ │ +150void Vcom_dtor(Vcom **thee); │ │ │ │ │ + 151 │ │ │ │ │ +161void Vcom_dtor2(Vcom *thee); │ │ │ │ │ + 162 │ │ │ │ │ +177int Vcom_send(Vcom *thee, int des, void *buf, int len, int type, │ │ │ │ │ + 178 int block); │ │ │ │ │ + 179 │ │ │ │ │ +197int Vcom_recv(Vcom *thee, int src, void *buf, int len, int type, │ │ │ │ │ + 198 int block); │ │ │ │ │ + 199 │ │ │ │ │ +214int Vcom_getCount(Vcom *thee, int src, int *length, int type); │ │ │ │ │ + 215 │ │ │ │ │ +237int Vcom_reduce(Vcom *thee, void *sendbuf, void *recvbuf, int length, │ │ │ │ │ + 238 int type, int op); │ │ │ │ │ + 239 │ │ │ │ │ +248int Vcom_size(Vcom *thee); │ │ │ │ │ + 249 │ │ │ │ │ +261int Vcom_resize(Vcom *thee, int newsize); │ │ │ │ │ + 262 │ │ │ │ │ +271int Vcom_rank(Vcom *thee); │ │ │ │ │ + 272 │ │ │ │ │ +281int Vcom_barr(Vcom *thee); │ │ │ │ │ + 282 │ │ │ │ │ + 283#endif /* _VCOM_H_ */ │ │ │ │ │ + 284 │ │ │ │ │ maloc_base.h │ │ │ │ │ The base (or foundation) header for MALOC. │ │ │ │ │ vsys.h │ │ │ │ │ The primary header for VSYS. (Virtual SYStem utilities library.) │ │ │ │ │ -Vmpi_init │ │ │ │ │ -int Vmpi_init(int *argc, char ***argv) │ │ │ │ │ +Vcom_rank │ │ │ │ │ +int Vcom_rank(Vcom *thee) │ │ │ │ │ +Get the ID of the local PE │ │ │ │ │ +Vcom_resize │ │ │ │ │ +int Vcom_resize(Vcom *thee, int newsize) │ │ │ │ │ +Resize (shrink) the communications group to include only newsize number of │ │ │ │ │ +processors.... │ │ │ │ │ +Vcom_ctor2 │ │ │ │ │ +int Vcom_ctor2(Vcom *thee, int commtype) │ │ │ │ │ +Construct the communications object. This routine sets up data members of class │ │ │ │ │ +and initializes MPI.... │ │ │ │ │ +Vcom_size │ │ │ │ │ +int Vcom_size(Vcom *thee) │ │ │ │ │ +Get the number of PEs in communicator. │ │ │ │ │ +Vcom_reduce │ │ │ │ │ +int Vcom_reduce(Vcom *thee, void *sendbuf, void *recvbuf, int length, int type, │ │ │ │ │ +int op) │ │ │ │ │ +Perform a reduction of the data across all processors. This is equivalent (and │ │ │ │ │ +in the case of MPI is ... │ │ │ │ │ +Vcom_ctor │ │ │ │ │ +Vcom * Vcom_ctor(int commtype) │ │ │ │ │ +Construct the communications object. This routine sets up data members of class │ │ │ │ │ +and initializes MPI. │ │ │ │ │ +Vcom_init │ │ │ │ │ +int Vcom_init(int *argc, char ***argv) │ │ │ │ │ The Vmp initializer. │ │ │ │ │ -Vmpi_finalize │ │ │ │ │ -int Vmpi_finalize(void) │ │ │ │ │ +Vcom_finalize │ │ │ │ │ +int Vcom_finalize(void) │ │ │ │ │ The Vmp finalizer. │ │ │ │ │ -Vmpi_size │ │ │ │ │ -int Vmpi_size(Vmpi *thee) │ │ │ │ │ -Return the number of processors involved. │ │ │ │ │ -Vmpi_reduce │ │ │ │ │ -int Vmpi_reduce(Vmpi *thee, char *sbuf, char *rbuf, int bufsize) │ │ │ │ │ -An MPI reduce. │ │ │ │ │ -Vmpi_recv │ │ │ │ │ -int Vmpi_recv(Vmpi *thee, int src, char *buf, int bufsize) │ │ │ │ │ -An MPI blocking receive. │ │ │ │ │ -Vmpi_isend │ │ │ │ │ -int Vmpi_isend(Vmpi *thee, int des, char *buf, int bufsize) │ │ │ │ │ -An MPI non-blocking send. │ │ │ │ │ -Vmpi_dtor │ │ │ │ │ -void Vmpi_dtor(Vmpi **thee) │ │ │ │ │ -The Vmpi destructor. │ │ │ │ │ -Vmpi_send │ │ │ │ │ -int Vmpi_send(Vmpi *thee, int des, char *buf, int bufsize) │ │ │ │ │ -An MPI blocking send. │ │ │ │ │ -Vmpi_ctor │ │ │ │ │ -Vmpi * Vmpi_ctor(void) │ │ │ │ │ -The Vmpi constructor. │ │ │ │ │ -Vmpi_barr │ │ │ │ │ -int Vmpi_barr(Vmpi *thee) │ │ │ │ │ -An MPI barrier. │ │ │ │ │ -Vmpi_bcast │ │ │ │ │ -int Vmpi_bcast(Vmpi *thee, char *buf, int bufsize) │ │ │ │ │ -An MPI broadcast. │ │ │ │ │ -Vmpi_rank │ │ │ │ │ -int Vmpi_rank(Vmpi *thee) │ │ │ │ │ -Return my processor ID. │ │ │ │ │ -sVmpi │ │ │ │ │ -Class Vmpi: Definition. │ │ │ │ │ -Definition: vmpi.h:57 │ │ │ │ │ -sVmpi::mpi_rank │ │ │ │ │ -int mpi_rank │ │ │ │ │ -Definition: vmpi.h:58 │ │ │ │ │ -sVmpi::mpi_size │ │ │ │ │ +Vcom_barr │ │ │ │ │ +int Vcom_barr(Vcom *thee) │ │ │ │ │ +Synchronization barrier. │ │ │ │ │ +Vcom_dtor │ │ │ │ │ +void Vcom_dtor(Vcom **thee) │ │ │ │ │ +Destroy the communications object. │ │ │ │ │ +Vcom_recv │ │ │ │ │ +int Vcom_recv(Vcom *thee, int src, void *buf, int len, int type, int block) │ │ │ │ │ +Receive a (character) buffer. The blocking flag is present, but not used. All │ │ │ │ │ +receives are assumed ... │ │ │ │ │ +Vcom_getCount │ │ │ │ │ +int Vcom_getCount(Vcom *thee, int src, int *length, int type) │ │ │ │ │ +Perform a blocking probe to get the length (in number of items of specified │ │ │ │ │ +type) of an incoming mess... │ │ │ │ │ +Vcom_send │ │ │ │ │ +int Vcom_send(Vcom *thee, int des, void *buf, int len, int type, int block) │ │ │ │ │ +Send a buffer. Returns 1 on success. │ │ │ │ │ +Vcom_dtor2 │ │ │ │ │ +void Vcom_dtor2(Vcom *thee) │ │ │ │ │ +Destroy the communications object. This is broken into two parts to be callable │ │ │ │ │ +from FORTRAN. │ │ │ │ │ +sVcom │ │ │ │ │ +Contains public data members for Vcom class. │ │ │ │ │ +Definition: vcom.h:60 │ │ │ │ │ +sVcom::type │ │ │ │ │ +int type │ │ │ │ │ +Communication type. 0 = not initialized 1 = Message Passing Interface 1.1. │ │ │ │ │ +Definition: vcom.h:71 │ │ │ │ │ +sVcom::error │ │ │ │ │ +int error │ │ │ │ │ +note if any error has occurred on this vcom device │ │ │ │ │ +Definition: vcom.h:73 │ │ │ │ │ +sVcom::mpi_size │ │ │ │ │ int mpi_size │ │ │ │ │ -Definition: vmpi.h:59 │ │ │ │ │ +Total number of PEs in this communicator from MPI. │ │ │ │ │ +Definition: vcom.h:65 │ │ │ │ │ +sVcom::core │ │ │ │ │ +void * core │ │ │ │ │ +Private MPI core. │ │ │ │ │ +Definition: vcom.h:75 │ │ │ │ │ +sVcom::mpi_rank │ │ │ │ │ +int mpi_rank │ │ │ │ │ +Local PE rank from MPI. │ │ │ │ │ +Definition: vcom.h:63 │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00012.dot.gz │ │ │ │ ├── a00012.dot │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ -digraph "vmpi.h" │ │ │ │ │ +digraph "vcom.h" │ │ │ │ │ { │ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ │ - Node1 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ │ + Node1 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ │ Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node2 [label="maloc/maloc_base.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00002.html",tooltip="The base (or foundation) header for MALOC."]; │ │ │ │ │ Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node3 [label="assert.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node4 [label="ctype.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ @@ -33,28 +33,28 @@ │ │ │ │ │ Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node15 [label="string.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node16 [label="time.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node17 [label="setjmp.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ + Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ Node18 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ + Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ Node19 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ + Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ Node20 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ + Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ Node21 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node21 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ + Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ Node22 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ + Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ Node23 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00013.dot │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ -digraph "vmpi.h" │ │ │ │ +digraph "vcom.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ + Node1 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ + Node2 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node3 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node4 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00014.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vmp.h File Reference │ │ │ │ +MALOC: vmpi.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -43,89 +43,95 @@ │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Typedefs | │ │ │ │ Functions
│ │ │ │ -
vmp.h File Reference
│ │ │ │ +
vmpi.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ -

Class Vmp: a Virtual MPI communication layer object. │ │ │ │ +

Class Vmpi: a Virtual MPI communication layer object. │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ -#include <maloc/vsys.h>
│ │ │ │ -#include <maloc/vmpi.h>
│ │ │ │ -#include <maloc/vcom.h>
│ │ │ │ +#include <maloc/vsys.h>
│ │ │ │
│ │ │ │ -Include dependency graph for vmp.h:
│ │ │ │ +Include dependency graph for vmpi.h:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

struct  sVmp
 Contains public data members for Vmp class. More...
struct  sVmpi
 Class Vmpi: Definition. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Typedefs

typedef struct sVmp Vmp
 Declaration of the Vmp class as teh Vmp structure. More...
 
typedef struct sVmpi Vmpi
 Declaration of the Vmpi class as the Vmpi structure. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Functions

int Vmp_init (int *argc, char ***argv)
 The Vmp initializer. More...
 
int Vmp_finalize (void)
 The Vmp finalizer. More...
 
VmpVmp_ctor (void)
 The Vmp constructor. More...
 
void Vmp_dtor (Vmp **thee)
 The Vmp destructor. More...
 
int Vmp_rank (Vmp *thee)
 Return my processor ID. More...
 
int Vmp_size (Vmp *thee)
 Return the number of processors involved.
│ │ │ │ - More...
 
int Vmp_barr (Vmp *thee)
 An MPI barrier.
│ │ │ │ - More...
 
int Vmp_send (Vmp *thee, int des, char *buf, int bufsize)
 An MPI blocking send.
│ │ │ │ - More...
 
int Vmp_recv (Vmp *thee, int src, char *buf, int bufsize)
 An MPI blocking receive.
│ │ │ │ - More...
 
int Vmpi_init (int *argc, char ***argv)
 The Vmp initializer. More...
 
int Vmpi_finalize (void)
 The Vmp finalizer. More...
 
VmpiVmpi_ctor (void)
 The Vmpi constructor. More...
 
void Vmpi_dtor (Vmpi **thee)
 The Vmpi destructor. More...
 
int Vmpi_rank (Vmpi *thee)
 Return my processor ID.
│ │ │ │ + More...
 
int Vmpi_size (Vmpi *thee)
 Return the number of processors involved. More...
 
int Vmpi_barr (Vmpi *thee)
 An MPI barrier.
│ │ │ │ + More...
 
int Vmpi_send (Vmpi *thee, int des, char *buf, int bufsize)
 An MPI blocking send. More...
 
int Vmpi_recv (Vmpi *thee, int src, char *buf, int bufsize)
 An MPI blocking receive. More...
 
int Vmpi_bcast (Vmpi *thee, char *buf, int bufsize)
 An MPI broadcast. More...
 
int Vmpi_reduce (Vmpi *thee, char *sbuf, char *rbuf, int bufsize)
 An MPI reduce.
│ │ │ │ + More...
 
int Vmpi_isend (Vmpi *thee, int des, char *buf, int bufsize)
 An MPI non-blocking send. More...
 
│ │ │ │

Detailed Description

│ │ │ │ -

Class Vmp: a Virtual MPI communication layer object.

│ │ │ │ +

Class Vmpi: a Virtual MPI communication layer object.

│ │ │ │
Author
Michael Holst
│ │ │ │
Note
None
│ │ │ │
Version
│ │ │ │ -
Id
vmp.h,v 1.22 2010/08/12 05:40:23 fetk Exp
│ │ │ │ +
Id
vmpi.h,v 1.29 2010/08/12 05:40:23 fetk Exp
│ │ │ │
Attention
*
│ │ │ │  * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │  * Copyright (C) 1994-- Michael Holst
│ │ │ │  *
│ │ │ │  * This library is free software; you can redistribute it and/or
│ │ │ │  * modify it under the terms of the GNU Lesser General Public
│ │ │ │  * License as published by the Free Software Foundation; either
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -4,73 +4,80 @@
│ │ │ │ │  
│ │ │ │ │  MALOC 0.1
│ │ │ │ │  
│ │ │ │ │      * src
│ │ │ │ │      * psh
│ │ │ │ │      * maloc
│ │ │ │ │  Classes | Typedefs | Functions
│ │ │ │ │ -vmp.h File Reference
│ │ │ │ │ -Vmp_class
│ │ │ │ │ -Class Vmp: a Virtual MPI communication layer object. More...
│ │ │ │ │ +vmpi.h File Reference
│ │ │ │ │ +Vmpi_class
│ │ │ │ │ +Class Vmpi: a Virtual MPI communication layer object. More...
│ │ │ │ │  #include 
│ │ │ │ │  #include 
│ │ │ │ │ -#include 
│ │ │ │ │ -#include 
│ │ │ │ │ -Include dependency graph for vmp.h:
│ │ │ │ │ +Include dependency graph for vmpi.h:
│ │ │ │ │  This graph shows which files directly or indirectly include this file:
│ │ │ │ │  Go_to_the_source_code_of_this_file.
│ │ │ │ │   Classes
│ │ │ │ │ -struct  sVmp
│ │ │ │ │ -        Contains public data members for Vmp class. More...
│ │ │ │ │ +struct  sVmpi
│ │ │ │ │ +        Class Vmpi: Definition. More...
│ │ │ │ │   
│ │ │ │ │   Typedefs
│ │ │ │ │ -typedef struct sVmp Vmp
│ │ │ │ │ -                    Declaration of the Vmp class as teh Vmp structure. More...
│ │ │ │ │ +typedef struct sVmpi Vmpi
│ │ │ │ │ +                     Declaration of the Vmpi class as the Vmpi structure.
│ │ │ │ │ +                      More...
│ │ │ │ │   
│ │ │ │ │   Functions
│ │ │ │ │ -  int Vmp_init (int *argc, char ***argv)
│ │ │ │ │ -      The Vmp initializer. More...
│ │ │ │ │ +   int Vmpi_init (int *argc, char ***argv)
│ │ │ │ │ +       The Vmp initializer. More...
│ │ │ │ │   
│ │ │ │ │ -  int Vmp_finalize (void)
│ │ │ │ │ -      The Vmp finalizer. More...
│ │ │ │ │ +   int Vmpi_finalize (void)
│ │ │ │ │ +       The Vmp finalizer. More...
│ │ │ │ │   
│ │ │ │ │ -Vmp * Vmp_ctor (void)
│ │ │ │ │ -      The Vmp constructor. More...
│ │ │ │ │ +Vmpi * Vmpi_ctor (void)
│ │ │ │ │ +       The Vmpi constructor. More...
│ │ │ │ │   
│ │ │ │ │ - void Vmp_dtor (Vmp **thee)
│ │ │ │ │ -      The Vmp destructor. More...
│ │ │ │ │ +  void Vmpi_dtor (Vmpi **thee)
│ │ │ │ │ +       The Vmpi destructor. More...
│ │ │ │ │   
│ │ │ │ │ -  int Vmp_rank (Vmp *thee)
│ │ │ │ │ -      Return my processor ID. More...
│ │ │ │ │ +   int Vmpi_rank (Vmpi *thee)
│ │ │ │ │ +       Return my processor ID.
│ │ │ │ │ +        More...
│ │ │ │ │   
│ │ │ │ │ -  int Vmp_size (Vmp *thee)
│ │ │ │ │ -      Return the number of processors involved.
│ │ │ │ │ -       More...
│ │ │ │ │ +   int Vmpi_size (Vmpi *thee)
│ │ │ │ │ +       Return the number of processors involved. More...
│ │ │ │ │   
│ │ │ │ │ -  int Vmp_barr (Vmp *thee)
│ │ │ │ │ -      An MPI barrier.
│ │ │ │ │ -       More...
│ │ │ │ │ +   int Vmpi_barr (Vmpi *thee)
│ │ │ │ │ +       An MPI barrier.
│ │ │ │ │ +        More...
│ │ │ │ │   
│ │ │ │ │ -  int Vmp_send (Vmp *thee, int des, char *buf, int bufsize)
│ │ │ │ │ -      An MPI blocking send.
│ │ │ │ │ -       More...
│ │ │ │ │ +   int Vmpi_send (Vmpi *thee, int des, char *buf, int bufsize)
│ │ │ │ │ +       An MPI blocking send. More...
│ │ │ │ │   
│ │ │ │ │ -  int Vmp_recv (Vmp *thee, int src, char *buf, int bufsize)
│ │ │ │ │ -      An MPI blocking receive.
│ │ │ │ │ -       More...
│ │ │ │ │ +   int Vmpi_recv (Vmpi *thee, int src, char *buf, int bufsize)
│ │ │ │ │ +       An MPI blocking receive. More...
│ │ │ │ │ + 
│ │ │ │ │ +   int Vmpi_bcast (Vmpi *thee, char *buf, int bufsize)
│ │ │ │ │ +       An MPI broadcast. More...
│ │ │ │ │ + 
│ │ │ │ │ +   int Vmpi_reduce (Vmpi *thee, char *sbuf, char *rbuf, int bufsize)
│ │ │ │ │ +       An MPI reduce.
│ │ │ │ │ +        More...
│ │ │ │ │ + 
│ │ │ │ │ +   int Vmpi_isend (Vmpi *thee, int des, char *buf, int bufsize)
│ │ │ │ │ +       An MPI non-blocking send. More...
│ │ │ │ │   
│ │ │ │ │  ***** Detailed Description *****
│ │ │ │ │ -Class Vmp: a Virtual MPI communication layer object.
│ │ │ │ │ +Class Vmpi: a Virtual MPI communication layer object.
│ │ │ │ │    Author
│ │ │ │ │        Michael Holst
│ │ │ │ │    Note
│ │ │ │ │        None
│ │ │ │ │    Version
│ │ │ │ │    Id
│ │ │ │ │ -      vmp.h,v 1.22 2010/08/12 05:40:23 fetk Exp
│ │ │ │ │ +      vmpi.h,v 1.29 2010/08/12 05:40:23 fetk Exp
│ │ │ │ │    Attention
│ │ │ │ │        *
│ │ │ │ │        * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │ │        * Copyright (C) 1994-- Michael Holst
│ │ │ │ │        *
│ │ │ │ │        * This library is free software; you can redistribute it and/or
│ │ │ │ │        * modify it under the terms of the GNU Lesser General Public
│ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00014_source.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │ -MALOC: vmp.h Source File
│ │ │ │ +MALOC: vmpi.h Source File
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │  
│ │ │ │ @@ -39,87 +39,92 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
vmp.h
│ │ │ │ +
vmpi.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │ -
37#ifndef _VMP_H_
│ │ │ │ -
38#define _VMP_H_
│ │ │ │ -
39
│ │ │ │ -
40#include <maloc/maloc_base.h>
│ │ │ │ -
41
│ │ │ │ -
42#include <maloc/vsys.h>
│ │ │ │ -
43#include <maloc/vmpi.h>
│ │ │ │ -
44#include <maloc/vcom.h>
│ │ │ │ -
45
│ │ │ │ -
46/*
│ │ │ │ -
47 * ***************************************************************************
│ │ │ │ -
48 * Class Vmp: Parameters and datatypes
│ │ │ │ -
49 * ***************************************************************************
│ │ │ │ -
50 */
│ │ │ │ +
38#ifndef _VMPI_H_
│ │ │ │ +
39#define _VMPI_H_
│ │ │ │ +
40
│ │ │ │ +
41#include <maloc/maloc_base.h>
│ │ │ │ +
42
│ │ │ │ +
43#include <maloc/vsys.h>
│ │ │ │ +
44
│ │ │ │ +
45/*
│ │ │ │ +
46 * ***************************************************************************
│ │ │ │ +
47 * Class Vmpi: Parameters and datatypes
│ │ │ │ +
48 * ***************************************************************************
│ │ │ │ +
49 */
│ │ │ │ +
50
│ │ │ │
51
│ │ │ │ -
58struct sVmp {
│ │ │ │ - │ │ │ │ - │ │ │ │ -
61};
│ │ │ │ -
62
│ │ │ │ -
68typedef struct sVmp Vmp;
│ │ │ │ -
69
│ │ │ │ -
70/*
│ │ │ │ -
71 * ***************************************************************************
│ │ │ │ -
72 * Class Vmp: Inlineable methods (vmp.c)
│ │ │ │ -
73 * ***************************************************************************
│ │ │ │ -
74 */
│ │ │ │ -
75
│ │ │ │ -
76#if !defined(VINLINE_MALOC)
│ │ │ │ -
77#else /* if defined(VINLINE_MALOC) */
│ │ │ │ -
78#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ -
79
│ │ │ │ -
80
│ │ │ │ -
90int Vmp_init(int *argc, char ***argv);
│ │ │ │ -
91
│ │ │ │ -
99int Vmp_finalize(void);
│ │ │ │ -
100
│ │ │ │ - │ │ │ │ -
109
│ │ │ │ -
118void Vmp_dtor(Vmp **thee);
│ │ │ │ -
119
│ │ │ │ -
128int Vmp_rank(Vmp *thee);
│ │ │ │ -
129
│ │ │ │ -
138int Vmp_size(Vmp *thee);
│ │ │ │ -
139
│ │ │ │ -
148int Vmp_barr(Vmp *thee);
│ │ │ │ -
149
│ │ │ │ -
161int Vmp_send(Vmp *thee, int des, char *buf, int bufsize);
│ │ │ │ -
162
│ │ │ │ -
174int Vmp_recv(Vmp *thee, int src, char *buf, int bufsize);
│ │ │ │ -
175
│ │ │ │ -
176#endif /* _VMP_H_ */
│ │ │ │ -
177
│ │ │ │ +
57struct sVmpi {
│ │ │ │ + │ │ │ │ + │ │ │ │ +
60};
│ │ │ │ +
61
│ │ │ │ +
67typedef struct sVmpi Vmpi;
│ │ │ │ +
68
│ │ │ │ +
69/*
│ │ │ │ +
70 * ***************************************************************************
│ │ │ │ +
71 * Class Vmpi: Inlineable methods (vmpi.c)
│ │ │ │ +
72 * ***************************************************************************
│ │ │ │ +
73 */
│ │ │ │ +
74
│ │ │ │ +
75#if !defined(VINLINE_MALOC)
│ │ │ │ +
76#else /* if defined(VINLINE_MALOC) */
│ │ │ │ +
77#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ +
78
│ │ │ │ +
88int Vmpi_init(int *argc, char ***argv);
│ │ │ │ +
89
│ │ │ │ +
97int Vmpi_finalize(void);
│ │ │ │ +
98
│ │ │ │ + │ │ │ │ +
107
│ │ │ │ +
116void Vmpi_dtor(Vmpi **thee);
│ │ │ │ +
117
│ │ │ │ +
126int Vmpi_rank(Vmpi *thee);
│ │ │ │ +
127
│ │ │ │ +
136int Vmpi_size(Vmpi *thee);
│ │ │ │ +
137
│ │ │ │ +
146int Vmpi_barr(Vmpi *thee);
│ │ │ │ +
147
│ │ │ │ +
159int Vmpi_send(Vmpi *thee, int des, char *buf, int bufsize);
│ │ │ │ +
160
│ │ │ │ +
172int Vmpi_recv(Vmpi *thee, int src, char *buf, int bufsize);
│ │ │ │ +
173
│ │ │ │ +
184int Vmpi_bcast(Vmpi *thee, char *buf, int bufsize);
│ │ │ │ +
185
│ │ │ │ +
197int Vmpi_reduce(Vmpi *thee, char *sbuf, char *rbuf, int bufsize);
│ │ │ │ +
198
│ │ │ │ +
210int Vmpi_isend(Vmpi *thee, int des, char *buf, int bufsize);
│ │ │ │ +
211
│ │ │ │ +
212#endif /* _VMPI_H_ */
│ │ │ │ +
213
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ -
Class Vcom: virtual (currently just MPI) communications layer.
│ │ │ │ -
Class Vmpi: a Virtual MPI communication layer object.
│ │ │ │ -
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │ -
int Vmp_finalize(void)
The Vmp finalizer.
│ │ │ │ -
int Vmp_send(Vmp *thee, int des, char *buf, int bufsize)
An MPI blocking send.
│ │ │ │ -
int Vmp_init(int *argc, char ***argv)
The Vmp initializer.
│ │ │ │ -
int Vmp_rank(Vmp *thee)
Return my processor ID.
│ │ │ │ -
int Vmp_recv(Vmp *thee, int src, char *buf, int bufsize)
An MPI blocking receive.
│ │ │ │ -
Vmp * Vmp_ctor(void)
The Vmp constructor.
│ │ │ │ -
void Vmp_dtor(Vmp **thee)
The Vmp destructor.
│ │ │ │ -
int Vmp_barr(Vmp *thee)
An MPI barrier.
│ │ │ │ -
int Vmp_size(Vmp *thee)
Return the number of processors involved.
│ │ │ │ -
Contains public data members for Vmp class.
Definition: vmp.h:58
│ │ │ │ -
int mpi_rank
Definition: vmp.h:59
│ │ │ │ -
int mpi_size
Definition: vmp.h:60
│ │ │ │ +
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │ +
int Vmpi_init(int *argc, char ***argv)
The Vmp initializer.
│ │ │ │ +
int Vmpi_finalize(void)
The Vmp finalizer.
│ │ │ │ +
int Vmpi_size(Vmpi *thee)
Return the number of processors involved.
│ │ │ │ +
int Vmpi_reduce(Vmpi *thee, char *sbuf, char *rbuf, int bufsize)
An MPI reduce.
│ │ │ │ +
int Vmpi_recv(Vmpi *thee, int src, char *buf, int bufsize)
An MPI blocking receive.
│ │ │ │ +
int Vmpi_isend(Vmpi *thee, int des, char *buf, int bufsize)
An MPI non-blocking send.
│ │ │ │ +
void Vmpi_dtor(Vmpi **thee)
The Vmpi destructor.
│ │ │ │ +
int Vmpi_send(Vmpi *thee, int des, char *buf, int bufsize)
An MPI blocking send.
│ │ │ │ +
Vmpi * Vmpi_ctor(void)
The Vmpi constructor.
│ │ │ │ +
int Vmpi_barr(Vmpi *thee)
An MPI barrier.
│ │ │ │ +
int Vmpi_bcast(Vmpi *thee, char *buf, int bufsize)
An MPI broadcast.
│ │ │ │ +
int Vmpi_rank(Vmpi *thee)
Return my processor ID.
│ │ │ │ +
Class Vmpi: Definition.
Definition: vmpi.h:57
│ │ │ │ +
int mpi_rank
Definition: vmpi.h:58
│ │ │ │ +
int mpi_size
Definition: vmpi.h:59
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,114 +3,123 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * psh │ │ │ │ │ * maloc │ │ │ │ │ -vmp.h │ │ │ │ │ +vmpi.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ 1 │ │ │ │ │ - 37#ifndef _VMP_H_ │ │ │ │ │ - 38#define _VMP_H_ │ │ │ │ │ - 39 │ │ │ │ │ - 40#include │ │ │ │ │ - 41 │ │ │ │ │ - 42#include │ │ │ │ │ - 43#include │ │ │ │ │ - 44#include │ │ │ │ │ - 45 │ │ │ │ │ - 46/* │ │ │ │ │ - 47 * │ │ │ │ │ + 38#ifndef _VMPI_H_ │ │ │ │ │ + 39#define _VMPI_H_ │ │ │ │ │ + 40 │ │ │ │ │ + 41#include │ │ │ │ │ + 42 │ │ │ │ │ + 43#include │ │ │ │ │ + 44 │ │ │ │ │ + 45/* │ │ │ │ │ + 46 * │ │ │ │ │ *************************************************************************** │ │ │ │ │ - 48 * Class Vmp: Parameters and datatypes │ │ │ │ │ - 49 * │ │ │ │ │ + 47 * Class Vmpi: Parameters and datatypes │ │ │ │ │ + 48 * │ │ │ │ │ *************************************************************************** │ │ │ │ │ - 50 */ │ │ │ │ │ + 49 */ │ │ │ │ │ + 50 │ │ │ │ │ 51 │ │ │ │ │ -58struct sVmp { │ │ │ │ │ -59 int mpi_rank; │ │ │ │ │ -60 int mpi_size; │ │ │ │ │ - 61}; │ │ │ │ │ - 62 │ │ │ │ │ -68typedef struct sVmp Vmp; │ │ │ │ │ - 69 │ │ │ │ │ - 70/* │ │ │ │ │ - 71 * │ │ │ │ │ +57struct sVmpi { │ │ │ │ │ +58 int mpi_rank; │ │ │ │ │ +59 int mpi_size; │ │ │ │ │ + 60}; │ │ │ │ │ + 61 │ │ │ │ │ +67typedef struct sVmpi Vmpi; │ │ │ │ │ + 68 │ │ │ │ │ + 69/* │ │ │ │ │ + 70 * │ │ │ │ │ *************************************************************************** │ │ │ │ │ - 72 * Class Vmp: Inlineable methods (vmp.c) │ │ │ │ │ - 73 * │ │ │ │ │ + 71 * Class Vmpi: Inlineable methods (vmpi.c) │ │ │ │ │ + 72 * │ │ │ │ │ *************************************************************************** │ │ │ │ │ - 74 */ │ │ │ │ │ - 75 │ │ │ │ │ - 76#if !defined(VINLINE_MALOC) │ │ │ │ │ - 77#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ - 78#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ - 79 │ │ │ │ │ - 80 │ │ │ │ │ -90int Vmp_init(int *argc, char ***argv); │ │ │ │ │ - 91 │ │ │ │ │ -99int Vmp_finalize(void); │ │ │ │ │ - 100 │ │ │ │ │ -108Vmp* Vmp_ctor(void); │ │ │ │ │ - 109 │ │ │ │ │ -118void Vmp_dtor(Vmp **thee); │ │ │ │ │ - 119 │ │ │ │ │ -128int Vmp_rank(Vmp *thee); │ │ │ │ │ - 129 │ │ │ │ │ -138int Vmp_size(Vmp *thee); │ │ │ │ │ - 139 │ │ │ │ │ -148int Vmp_barr(Vmp *thee); │ │ │ │ │ - 149 │ │ │ │ │ -161int Vmp_send(Vmp *thee, int des, char *buf, int bufsize); │ │ │ │ │ - 162 │ │ │ │ │ -174int Vmp_recv(Vmp *thee, int src, char *buf, int bufsize); │ │ │ │ │ - 175 │ │ │ │ │ - 176#endif /* _VMP_H_ */ │ │ │ │ │ - 177 │ │ │ │ │ + 73 */ │ │ │ │ │ + 74 │ │ │ │ │ + 75#if !defined(VINLINE_MALOC) │ │ │ │ │ + 76#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ + 77#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ + 78 │ │ │ │ │ +88int Vmpi_init(int *argc, char ***argv); │ │ │ │ │ + 89 │ │ │ │ │ +97int Vmpi_finalize(void); │ │ │ │ │ + 98 │ │ │ │ │ +106Vmpi* Vmpi_ctor(void); │ │ │ │ │ + 107 │ │ │ │ │ +116void Vmpi_dtor(Vmpi **thee); │ │ │ │ │ + 117 │ │ │ │ │ +126int Vmpi_rank(Vmpi *thee); │ │ │ │ │ + 127 │ │ │ │ │ +136int Vmpi_size(Vmpi *thee); │ │ │ │ │ + 137 │ │ │ │ │ +146int Vmpi_barr(Vmpi *thee); │ │ │ │ │ + 147 │ │ │ │ │ +159int Vmpi_send(Vmpi *thee, int des, char *buf, int bufsize); │ │ │ │ │ + 160 │ │ │ │ │ +172int Vmpi_recv(Vmpi *thee, int src, char *buf, int bufsize); │ │ │ │ │ + 173 │ │ │ │ │ +184int Vmpi_bcast(Vmpi *thee, char *buf, int bufsize); │ │ │ │ │ + 185 │ │ │ │ │ +197int Vmpi_reduce(Vmpi *thee, char *sbuf, char *rbuf, int bufsize); │ │ │ │ │ + 198 │ │ │ │ │ +210int Vmpi_isend(Vmpi *thee, int des, char *buf, int bufsize); │ │ │ │ │ + 211 │ │ │ │ │ + 212#endif /* _VMPI_H_ */ │ │ │ │ │ + 213 │ │ │ │ │ maloc_base.h │ │ │ │ │ The base (or foundation) header for MALOC. │ │ │ │ │ -vcom.h │ │ │ │ │ -Class Vcom: virtual (currently just MPI) communications layer. │ │ │ │ │ -vmpi.h │ │ │ │ │ -Class Vmpi: a Virtual MPI communication layer object. │ │ │ │ │ vsys.h │ │ │ │ │ The primary header for VSYS. (Virtual SYStem utilities library.) │ │ │ │ │ -Vmp_finalize │ │ │ │ │ -int Vmp_finalize(void) │ │ │ │ │ -The Vmp finalizer. │ │ │ │ │ -Vmp_send │ │ │ │ │ -int Vmp_send(Vmp *thee, int des, char *buf, int bufsize) │ │ │ │ │ -An MPI blocking send. │ │ │ │ │ -Vmp_init │ │ │ │ │ -int Vmp_init(int *argc, char ***argv) │ │ │ │ │ +Vmpi_init │ │ │ │ │ +int Vmpi_init(int *argc, char ***argv) │ │ │ │ │ The Vmp initializer. │ │ │ │ │ -Vmp_rank │ │ │ │ │ -int Vmp_rank(Vmp *thee) │ │ │ │ │ -Return my processor ID. │ │ │ │ │ -Vmp_recv │ │ │ │ │ -int Vmp_recv(Vmp *thee, int src, char *buf, int bufsize) │ │ │ │ │ +Vmpi_finalize │ │ │ │ │ +int Vmpi_finalize(void) │ │ │ │ │ +The Vmp finalizer. │ │ │ │ │ +Vmpi_size │ │ │ │ │ +int Vmpi_size(Vmpi *thee) │ │ │ │ │ +Return the number of processors involved. │ │ │ │ │ +Vmpi_reduce │ │ │ │ │ +int Vmpi_reduce(Vmpi *thee, char *sbuf, char *rbuf, int bufsize) │ │ │ │ │ +An MPI reduce. │ │ │ │ │ +Vmpi_recv │ │ │ │ │ +int Vmpi_recv(Vmpi *thee, int src, char *buf, int bufsize) │ │ │ │ │ An MPI blocking receive. │ │ │ │ │ -Vmp_ctor │ │ │ │ │ -Vmp * Vmp_ctor(void) │ │ │ │ │ -The Vmp constructor. │ │ │ │ │ -Vmp_dtor │ │ │ │ │ -void Vmp_dtor(Vmp **thee) │ │ │ │ │ -The Vmp destructor. │ │ │ │ │ -Vmp_barr │ │ │ │ │ -int Vmp_barr(Vmp *thee) │ │ │ │ │ +Vmpi_isend │ │ │ │ │ +int Vmpi_isend(Vmpi *thee, int des, char *buf, int bufsize) │ │ │ │ │ +An MPI non-blocking send. │ │ │ │ │ +Vmpi_dtor │ │ │ │ │ +void Vmpi_dtor(Vmpi **thee) │ │ │ │ │ +The Vmpi destructor. │ │ │ │ │ +Vmpi_send │ │ │ │ │ +int Vmpi_send(Vmpi *thee, int des, char *buf, int bufsize) │ │ │ │ │ +An MPI blocking send. │ │ │ │ │ +Vmpi_ctor │ │ │ │ │ +Vmpi * Vmpi_ctor(void) │ │ │ │ │ +The Vmpi constructor. │ │ │ │ │ +Vmpi_barr │ │ │ │ │ +int Vmpi_barr(Vmpi *thee) │ │ │ │ │ An MPI barrier. │ │ │ │ │ -Vmp_size │ │ │ │ │ -int Vmp_size(Vmp *thee) │ │ │ │ │ -Return the number of processors involved. │ │ │ │ │ -sVmp │ │ │ │ │ -Contains public data members for Vmp class. │ │ │ │ │ -Definition: vmp.h:58 │ │ │ │ │ -sVmp::mpi_rank │ │ │ │ │ +Vmpi_bcast │ │ │ │ │ +int Vmpi_bcast(Vmpi *thee, char *buf, int bufsize) │ │ │ │ │ +An MPI broadcast. │ │ │ │ │ +Vmpi_rank │ │ │ │ │ +int Vmpi_rank(Vmpi *thee) │ │ │ │ │ +Return my processor ID. │ │ │ │ │ +sVmpi │ │ │ │ │ +Class Vmpi: Definition. │ │ │ │ │ +Definition: vmpi.h:57 │ │ │ │ │ +sVmpi::mpi_rank │ │ │ │ │ int mpi_rank │ │ │ │ │ -Definition: vmp.h:59 │ │ │ │ │ -sVmp::mpi_size │ │ │ │ │ +Definition: vmpi.h:58 │ │ │ │ │ +sVmpi::mpi_size │ │ │ │ │ int mpi_size │ │ │ │ │ -Definition: vmp.h:60 │ │ │ │ │ +Definition: vmpi.h:59 │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00015.dot.gz │ │ │ │ ├── a00015.dot │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ -digraph "vmp.h" │ │ │ │ │ +digraph "vmpi.h" │ │ │ │ │ { │ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ │ - Node1 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ │ + Node1 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ │ Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node2 [label="maloc/maloc_base.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00002.html",tooltip="The base (or foundation) header for MALOC."]; │ │ │ │ │ Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node3 [label="assert.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node4 [label="ctype.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ @@ -33,36 +33,28 @@ │ │ │ │ │ Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node15 [label="string.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node16 [label="time.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node17 [label="setjmp.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ + Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ Node18 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ + Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ Node19 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ + Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ Node20 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ + Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ Node21 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node21 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ + Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ Node22 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ + Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ Node23 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node1 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node24 [label="maloc/vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ │ - Node24 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node24 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node25 [label="maloc/vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ │ - Node25 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node25 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00016.dot │ │ │ │ @@ -1,11 +1,13 @@ │ │ │ │ -digraph "vmp.h" │ │ │ │ +digraph "vmpi.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ + Node1 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node2 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ + Node3 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node4 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00017.html │ │ │ │ @@ -50,15 +50,15 @@ │ │ │ │
vsh.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

Header file for vsh, a bourne-compatible shell. │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ -#include <maloc/vsys.h>
│ │ │ │ +#include <maloc/vsys.h>
│ │ │ │
│ │ │ │ Include dependency graph for vsh.h:
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00017_source.html │ │ │ │ @@ -48,15 +48,15 @@ │ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │
38#ifndef _VSH_H_
│ │ │ │
39#define _VSH_H_
│ │ │ │
40
│ │ │ │
41#include <maloc/maloc_base.h>
│ │ │ │
42
│ │ │ │ -
43#include <maloc/vsys.h>
│ │ │ │ +
43#include <maloc/vsys.h>
│ │ │ │
44
│ │ │ │
45/*
│ │ │ │
46 * ***************************************************************************
│ │ │ │
47 * Class Vsh: Parameters and datatypes
│ │ │ │
48 * ***************************************************************************
│ │ │ │
49 */
│ │ │ │
50
│ │ │ │ @@ -139,15 +139,15 @@ │ │ │ │
296
│ │ │ │
306void Vsh_ioCleanup(Vsh *thee, Vio **sock);
│ │ │ │
307
│ │ │ │
308#endif /* _VSH_H_ */
│ │ │ │
309
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │
#define VMAX_ARGLEN
Global constant.
Definition: maloc_base.h:227
│ │ │ │ -
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │ +
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │
double Vsh_getenvReal(Vsh *thee, const char *envi)
Get a value of variable in the environment as a real.
│ │ │ │
int Vsh_putenvInfo(Vsh *thee, const char *envi, const char *valu)
Place a variable with an info string in the environment.
│ │ │ │
char * Vsh_getenv(Vsh *thee, const char *envi)
Get a value of variable in the environment.
│ │ │ │
char * Vsh_getenvInfo(Vsh *thee, const char *envi)
Get info associated with a variable in the environment.
│ │ │ │
int Vsh_putenv(Vsh *thee, const char *envi, const char *valu)
Place a variable with a value in the environment.
│ │ │ │
void Vsh_ioCleanup(Vsh *thee, Vio **sock)
Cleanup an I/O command.
│ │ │ │
int Vsh_getenvInt(Vsh *thee, const char *envi)
Get a value of variable in the environment as an integer.
│ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00018.dot.gz │ │ │ │ ├── a00018.dot │ │ │ │ │ @@ -33,28 +33,28 @@ │ │ │ │ │ Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node15 [label="string.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node16 [label="time.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node17 [label="setjmp.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ + Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ Node18 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ + Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ Node19 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ + Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ Node20 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ + Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ Node21 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node21 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ + Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ Node22 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ + Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ Node23 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00019.dot │ │ │ │ @@ -3,10 +3,10 @@ │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ Node1 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node2 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node3 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00020.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vsys.h File Reference │ │ │ │ +MALOC: vmem.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -39,43 +39,110 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
vsys.h File Reference
│ │ │ │ +
│ │ │ │ +Classes | │ │ │ │ +Typedefs | │ │ │ │ +Functions
│ │ │ │ +
vmem.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ -

The primary header for VSYS. (Virtual SYStem utilities library.) │ │ │ │ +

Class Vmem: A safer, object-oriented, malloc/free object. │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ -#include <maloc/vnm.h>
│ │ │ │ -#include <maloc/vmem.h>
│ │ │ │ -#include <maloc/vio.h>
│ │ │ │ -#include <maloc/vset.h>
│ │ │ │ -#include <maloc/vpred.h>
│ │ │ │
│ │ │ │ -Include dependency graph for vsys.h:
│ │ │ │ +Include dependency graph for vmem.h:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Classes

struct  sVmem
 Contains public data members for Vmem class. More...
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Typedefs

typedef struct sVmem Vmem
 Declaration of the Vmem class as the Vmem structure. More...
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Functions

size_t Vmem_bytesTotal (void)
 Return total of all active Vmem malloc areas (current footprint) More...
 
size_t Vmem_mallocBytesTotal (void)
 Return total of all Vmem malloc allocations. More...
 
size_t Vmem_freeBytesTotal (void)
 Return total of all Vmem free calls. More...
 
size_t Vmem_highWaterTotal (void)
 Return the high-water byte mark (largest footprint) More...
 
size_t Vmem_mallocAreasTotal (void)
 Return total of all active Vmem malloc areas by groups. More...
 
void Vmem_printTotal (void)
 Print current memory statistics for all Vmem malloc/free areas. More...
 
VmemVmem_ctor (char *name)
 Construct the dynamic memory allocation logging object. More...
 
void Vmem_dtor (Vmem **thee)
 Destruct the dynamic memory allocation logging object. More...
 
void * Vmem_malloc (Vmem *thee, size_t num, size_t size)
 A safe logged version of malloc. More...
 
void Vmem_free (Vmem *thee, size_t num, size_t size, void **ram)
 A safe logged version of free. More...
 
void * Vmem_realloc (Vmem *thee, size_t num, size_t size, void **ram, size_t newNum)
 A safe logged version of realloc (usually a bad idea to use this) More...
 
size_t Vmem_bytes (Vmem *thee)
 Return total of all ACTIVE malloc areas used by Vmem object. More...
 
size_t Vmem_mallocBytes (Vmem *thee)
 Return total of all mallocs performed by Vmem object. More...
 
size_t Vmem_freeBytes (Vmem *thee)
 Return total of all frees performed by Vmem object. More...
 
size_t Vmem_highWater (Vmem *thee)
 Return high-water malloc bytemark hit by Vmem object. More...
 
size_t Vmem_mallocAreas (Vmem *thee)
 Return total number of individual active malloc areas. More...
 
void Vmem_print (Vmem *thee)
 Print current memory stats associated with this Vmem object. More...
 
│ │ │ │

Detailed Description

│ │ │ │ -

The primary header for VSYS. (Virtual SYStem utilities library.)

│ │ │ │ +

Class Vmem: A safer, object-oriented, malloc/free object.

│ │ │ │
Author
Michael Holst
│ │ │ │ +
Note
None
│ │ │ │
Version
│ │ │ │ -
Id
vsys.h,v 1.12 2010/08/12 05:40:37 fetk Exp
│ │ │ │ +
Id
vmem.h,v 1.21 2010/08/12 05:40:36 fetk Exp
│ │ │ │
Attention
*
│ │ │ │  * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │  * Copyright (C) 1994-- Michael Holst
│ │ │ │  *
│ │ │ │  * This library is free software; you can redistribute it and/or
│ │ │ │  * modify it under the terms of the GNU Lesser General Public
│ │ │ │  * License as published by the Free Software Foundation; either
│ │ │ │ @@ -86,15 +153,15 @@
│ │ │ │  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │  * Lesser General Public License for more details.
│ │ │ │  *
│ │ │ │  * You should have received a copy of the GNU Lesser General Public
│ │ │ │  * License along with this library; if not, write to the Free Software
│ │ │ │  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
│ │ │ │  * 
│ │ │ │ -*  
│ │ │ │ +* │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,33 +3,95 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -vsys.h File Reference │ │ │ │ │ -global_maloc_class │ │ │ │ │ -The primary header for VSYS. (Virtual SYStem utilities library.) More... │ │ │ │ │ +Classes | Typedefs | Functions │ │ │ │ │ +vmem.h File Reference │ │ │ │ │ +Vmem_class │ │ │ │ │ +Class Vmem: A safer, object-oriented, malloc/free object. More... │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -Include dependency graph for vsys.h: │ │ │ │ │ +Include dependency graph for vmem.h: │ │ │ │ │ This graph shows which files directly or indirectly include this file: │ │ │ │ │ Go_to_the_source_code_of_this_file. │ │ │ │ │ + Classes │ │ │ │ │ +struct  sVmem │ │ │ │ │ +  Contains public data members for Vmem class. More... │ │ │ │ │ +  │ │ │ │ │ + Typedefs │ │ │ │ │ +typedef struct sVmem Vmem │ │ │ │ │ +  Declaration of the Vmem class as the Vmem structure. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + Functions │ │ │ │ │ +size_t Vmem_bytesTotal (void) │ │ │ │ │ +  Return total of all active Vmem malloc areas (current footprint) │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ +size_t Vmem_mallocBytesTotal (void) │ │ │ │ │ +  Return total of all Vmem malloc allocations. More... │ │ │ │ │ +  │ │ │ │ │ +size_t Vmem_freeBytesTotal (void) │ │ │ │ │ +  Return total of all Vmem free calls. More... │ │ │ │ │ +  │ │ │ │ │ +size_t Vmem_highWaterTotal (void) │ │ │ │ │ +  Return the high-water byte mark (largest footprint) More... │ │ │ │ │ +  │ │ │ │ │ +size_t Vmem_mallocAreasTotal (void) │ │ │ │ │ +  Return total of all active Vmem malloc areas by groups. More... │ │ │ │ │ +  │ │ │ │ │ + void Vmem_printTotal (void) │ │ │ │ │ +  Print current memory statistics for all Vmem malloc/free areas. More... │ │ │ │ │ +  │ │ │ │ │ +Vmem * Vmem_ctor (char *name) │ │ │ │ │ +  Construct the dynamic memory allocation logging object. More... │ │ │ │ │ +  │ │ │ │ │ + void Vmem_dtor (Vmem **thee) │ │ │ │ │ +  Destruct the dynamic memory allocation logging object. More... │ │ │ │ │ +  │ │ │ │ │ +void * Vmem_malloc (Vmem *thee, size_t num, size_t size) │ │ │ │ │ +  A safe logged version of malloc. More... │ │ │ │ │ +  │ │ │ │ │ + void Vmem_free (Vmem *thee, size_t num, size_t size, void **ram) │ │ │ │ │ +  A safe logged version of free. More... │ │ │ │ │ +  │ │ │ │ │ +void * Vmem_realloc (Vmem *thee, size_t num, size_t size, void **ram, size_t │ │ │ │ │ + newNum) │ │ │ │ │ +  A safe logged version of realloc (usually a bad idea to use this) │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ +size_t Vmem_bytes (Vmem *thee) │ │ │ │ │ +  Return total of all ACTIVE malloc areas used by Vmem object. More... │ │ │ │ │ +  │ │ │ │ │ +size_t Vmem_mallocBytes (Vmem *thee) │ │ │ │ │ +  Return total of all mallocs performed by Vmem object. More... │ │ │ │ │ +  │ │ │ │ │ +size_t Vmem_freeBytes (Vmem *thee) │ │ │ │ │ +  Return total of all frees performed by Vmem object. More... │ │ │ │ │ +  │ │ │ │ │ +size_t Vmem_highWater (Vmem *thee) │ │ │ │ │ +  Return high-water malloc bytemark hit by Vmem object. More... │ │ │ │ │ +  │ │ │ │ │ +size_t Vmem_mallocAreas (Vmem *thee) │ │ │ │ │ +  Return total number of individual active malloc areas. More... │ │ │ │ │ +  │ │ │ │ │ + void Vmem_print (Vmem *thee) │ │ │ │ │ +  Print current memory stats associated with this Vmem object. More... │ │ │ │ │ +  │ │ │ │ │ ***** Detailed Description ***** │ │ │ │ │ -The primary header for VSYS. (Virtual SYStem utilities library.) │ │ │ │ │ +Class Vmem: A safer, object-oriented, malloc/free object. │ │ │ │ │ Author │ │ │ │ │ Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + None │ │ │ │ │ Version │ │ │ │ │ Id │ │ │ │ │ - vsys.h,v 1.12 2010/08/12 05:40:37 fetk Exp │ │ │ │ │ + vmem.h,v 1.21 2010/08/12 05:40:36 fetk Exp │ │ │ │ │ Attention │ │ │ │ │ * │ │ │ │ │ * MALOC = < Minimal Abstraction Layer for Object-oriented C > │ │ │ │ │ * Copyright (C) 1994-- Michael Holst │ │ │ │ │ * │ │ │ │ │ * This library is free software; you can redistribute it and/or │ │ │ │ │ * modify it under the terms of the GNU Lesser General Public │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00020_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vsys.h Source File │ │ │ │ +MALOC: vmem.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -39,37 +39,119 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
vsys.h
│ │ │ │ +
vmem.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │ -
31#ifndef _VSYS_H_
│ │ │ │ -
32#define _VSYS_H_
│ │ │ │ -
33
│ │ │ │ -
34#include <maloc/maloc_base.h>
│ │ │ │ -
35
│ │ │ │ -
36#include <maloc/vnm.h>
│ │ │ │ -
37#include <maloc/vmem.h>
│ │ │ │ -
38#include <maloc/vio.h>
│ │ │ │ -
39#include <maloc/vset.h>
│ │ │ │ -
40#include <maloc/vpred.h>
│ │ │ │ -
41
│ │ │ │ -
42#endif /* _VSYS_H_ */
│ │ │ │ -
43
│ │ │ │ +
40#ifndef _VMEM_H_
│ │ │ │ +
41#define _VMEM_H_
│ │ │ │ +
42
│ │ │ │ +
43#include <maloc/maloc_base.h>
│ │ │ │ +
44
│ │ │ │ +
45/*
│ │ │ │ +
46 * ***************************************************************************
│ │ │ │ +
47 * Class Vmem: Parameters and datatypes
│ │ │ │ +
48 * ***************************************************************************
│ │ │ │ +
49 */
│ │ │ │ +
50
│ │ │ │ +
51
│ │ │ │ +
57struct sVmem {
│ │ │ │ +
58
│ │ │ │ + │ │ │ │ +
61 size_t mallocBytes;
│ │ │ │ +
62 size_t freeBytes;
│ │ │ │ +
63 size_t highWater;
│ │ │ │ +
64 size_t mallocAreas;
│ │ │ │ +
66};
│ │ │ │ +
67
│ │ │ │ +
73typedef struct sVmem Vmem;
│ │ │ │ +
74
│ │ │ │ +
75/*
│ │ │ │ +
76 * ***************************************************************************
│ │ │ │ +
77 * Class Vmem: Inlineable methods (vmem.c)
│ │ │ │ +
78 * ***************************************************************************
│ │ │ │ +
79 */
│ │ │ │ +
80
│ │ │ │ +
81#if !defined(VINLINE_MALOC)
│ │ │ │ +
82#else /* if defined(VINLINE_MALOC) */
│ │ │ │ +
83#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ +
84
│ │ │ │ +
85/*
│ │ │ │ +
86 * ***************************************************************************
│ │ │ │ +
87 * Class Vmem: Non-Inlineable methods (vmem.c)
│ │ │ │ +
88 * ***************************************************************************
│ │ │ │ +
89 */
│ │ │ │ +
90
│ │ │ │ +
98size_t Vmem_bytesTotal(void);
│ │ │ │ +
99
│ │ │ │ + │ │ │ │ +
108
│ │ │ │ + │ │ │ │ +
117
│ │ │ │ + │ │ │ │ +
126
│ │ │ │ + │ │ │ │ +
135
│ │ │ │ + │ │ │ │ +
144
│ │ │ │ + │ │ │ │ +
154
│ │ │ │ +
163void Vmem_dtor(Vmem **thee);
│ │ │ │ +
164
│ │ │ │ +
175void *Vmem_malloc(Vmem *thee, size_t num, size_t size);
│ │ │ │ +
176
│ │ │ │ +
188void Vmem_free(Vmem *thee, size_t num, size_t size, void **ram);
│ │ │ │ +
189
│ │ │ │ +
202void *Vmem_realloc(Vmem *thee, size_t num, size_t size, void **ram,
│ │ │ │ +
203 size_t newNum);
│ │ │ │ +
204
│ │ │ │ +
213size_t Vmem_bytes(Vmem *thee);
│ │ │ │ +
214
│ │ │ │ +
223size_t Vmem_mallocBytes(Vmem *thee);
│ │ │ │ +
224
│ │ │ │ +
233size_t Vmem_freeBytes(Vmem *thee);
│ │ │ │ +
234
│ │ │ │ +
243size_t Vmem_highWater(Vmem *thee);
│ │ │ │ +
244
│ │ │ │ +
253size_t Vmem_mallocAreas(Vmem *thee);
│ │ │ │ +
254
│ │ │ │ +
263void Vmem_print(Vmem *thee);
│ │ │ │ +
264
│ │ │ │ +
265#endif /* _VMEM_H_ */
│ │ │ │ +
266
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ -
Header file for an ISO C [V]irtual [N]umerical [M]achine.
│ │ │ │ -
Class Vset: a dynamic set object.
│ │ │ │ -
Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer.
│ │ │ │ -
Class Vmem: A safer, object-oriented, malloc/free object.
│ │ │ │ -
Header file for the Geometric Predicates.
│ │ │ │ +
#define VMAX_ARGLEN
Global constant.
Definition: maloc_base.h:227
│ │ │ │ +
void Vmem_free(Vmem *thee, size_t num, size_t size, void **ram)
A safe logged version of free.
│ │ │ │ +
size_t Vmem_mallocAreas(Vmem *thee)
Return total number of individual active malloc areas.
│ │ │ │ +
size_t Vmem_mallocAreasTotal(void)
Return total of all active Vmem malloc areas by groups.
│ │ │ │ +
void Vmem_printTotal(void)
Print current memory statistics for all Vmem malloc/free areas.
│ │ │ │ +
size_t Vmem_freeBytes(Vmem *thee)
Return total of all frees performed by Vmem object.
│ │ │ │ +
size_t Vmem_highWater(Vmem *thee)
Return high-water malloc bytemark hit by Vmem object.
│ │ │ │ +
void * Vmem_malloc(Vmem *thee, size_t num, size_t size)
A safe logged version of malloc.
│ │ │ │ +
size_t Vmem_bytesTotal(void)
Return total of all active Vmem malloc areas (current footprint)
│ │ │ │ +
size_t Vmem_freeBytesTotal(void)
Return total of all Vmem free calls.
│ │ │ │ +
void * Vmem_realloc(Vmem *thee, size_t num, size_t size, void **ram, size_t newNum)
A safe logged version of realloc (usually a bad idea to use this)
│ │ │ │ +
Vmem * Vmem_ctor(char *name)
Construct the dynamic memory allocation logging object.
│ │ │ │ +
size_t Vmem_highWaterTotal(void)
Return the high-water byte mark (largest footprint)
│ │ │ │ +
size_t Vmem_bytes(Vmem *thee)
Return total of all ACTIVE malloc areas used by Vmem object.
│ │ │ │ +
void Vmem_print(Vmem *thee)
Print current memory stats associated with this Vmem object.
│ │ │ │ +
void Vmem_dtor(Vmem **thee)
Destruct the dynamic memory allocation logging object.
│ │ │ │ +
size_t Vmem_mallocBytes(Vmem *thee)
Return total of all mallocs performed by Vmem object.
│ │ │ │ +
size_t Vmem_mallocBytesTotal(void)
Return total of all Vmem malloc allocations.
│ │ │ │ +
Contains public data members for Vmem class.
Definition: vmem.h:57
│ │ │ │ +
char name[VMAX_ARGLEN]
Definition: vmem.h:59
│ │ │ │ +
size_t freeBytes
Definition: vmem.h:62
│ │ │ │ +
size_t mallocBytes
Definition: vmem.h:61
│ │ │ │ +
size_t mallocAreas
Definition: vmem.h:64
│ │ │ │ +
size_t highWater
Definition: vmem.h:63
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,38 +3,171 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -vsys.h │ │ │ │ │ +vmem.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ 1 │ │ │ │ │ - 31#ifndef _VSYS_H_ │ │ │ │ │ - 32#define _VSYS_H_ │ │ │ │ │ - 33 │ │ │ │ │ - 34#include │ │ │ │ │ - 35 │ │ │ │ │ - 36#include │ │ │ │ │ - 37#include │ │ │ │ │ - 38#include │ │ │ │ │ - 39#include │ │ │ │ │ - 40#include │ │ │ │ │ - 41 │ │ │ │ │ - 42#endif /* _VSYS_H_ */ │ │ │ │ │ - 43 │ │ │ │ │ + 40#ifndef _VMEM_H_ │ │ │ │ │ + 41#define _VMEM_H_ │ │ │ │ │ + 42 │ │ │ │ │ + 43#include │ │ │ │ │ + 44 │ │ │ │ │ + 45/* │ │ │ │ │ + 46 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 47 * Class Vmem: Parameters and datatypes │ │ │ │ │ + 48 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 49 */ │ │ │ │ │ + 50 │ │ │ │ │ + 51 │ │ │ │ │ +57struct sVmem { │ │ │ │ │ + 58 │ │ │ │ │ +59 char name[VMAX_ARGLEN]; │ │ │ │ │ +61 size_t mallocBytes; │ │ │ │ │ +62 size_t freeBytes; │ │ │ │ │ +63 size_t highWater; │ │ │ │ │ +64 size_t mallocAreas; │ │ │ │ │ + 66}; │ │ │ │ │ + 67 │ │ │ │ │ +73typedef struct sVmem Vmem; │ │ │ │ │ + 74 │ │ │ │ │ + 75/* │ │ │ │ │ + 76 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 77 * Class Vmem: Inlineable methods (vmem.c) │ │ │ │ │ + 78 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 79 */ │ │ │ │ │ + 80 │ │ │ │ │ + 81#if !defined(VINLINE_MALOC) │ │ │ │ │ + 82#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ + 83#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ + 84 │ │ │ │ │ + 85/* │ │ │ │ │ + 86 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 87 * Class Vmem: Non-Inlineable methods (vmem.c) │ │ │ │ │ + 88 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 89 */ │ │ │ │ │ + 90 │ │ │ │ │ +98size_t Vmem_bytesTotal(void); │ │ │ │ │ + 99 │ │ │ │ │ +107size_t Vmem_mallocBytesTotal(void); │ │ │ │ │ + 108 │ │ │ │ │ +116size_t Vmem_freeBytesTotal(void); │ │ │ │ │ + 117 │ │ │ │ │ +125size_t Vmem_highWaterTotal(void); │ │ │ │ │ + 126 │ │ │ │ │ +134size_t Vmem_mallocAreasTotal(void); │ │ │ │ │ + 135 │ │ │ │ │ +143void Vmem_printTotal(void); │ │ │ │ │ + 144 │ │ │ │ │ +153Vmem* Vmem_ctor(char *name); │ │ │ │ │ + 154 │ │ │ │ │ +163void Vmem_dtor(Vmem **thee); │ │ │ │ │ + 164 │ │ │ │ │ +175void *Vmem_malloc(Vmem *thee, size_t num, size_t size); │ │ │ │ │ + 176 │ │ │ │ │ +188void Vmem_free(Vmem *thee, size_t num, size_t size, void **ram); │ │ │ │ │ + 189 │ │ │ │ │ +202void *Vmem_realloc(Vmem *thee, size_t num, size_t size, void **ram, │ │ │ │ │ + 203 size_t newNum); │ │ │ │ │ + 204 │ │ │ │ │ +213size_t Vmem_bytes(Vmem *thee); │ │ │ │ │ + 214 │ │ │ │ │ +223size_t Vmem_mallocBytes(Vmem *thee); │ │ │ │ │ + 224 │ │ │ │ │ +233size_t Vmem_freeBytes(Vmem *thee); │ │ │ │ │ + 234 │ │ │ │ │ +243size_t Vmem_highWater(Vmem *thee); │ │ │ │ │ + 244 │ │ │ │ │ +253size_t Vmem_mallocAreas(Vmem *thee); │ │ │ │ │ + 254 │ │ │ │ │ +263void Vmem_print(Vmem *thee); │ │ │ │ │ + 264 │ │ │ │ │ + 265#endif /* _VMEM_H_ */ │ │ │ │ │ + 266 │ │ │ │ │ maloc_base.h │ │ │ │ │ The base (or foundation) header for MALOC. │ │ │ │ │ -vnm.h │ │ │ │ │ -Header file for an ISO C [V]irtual [N]umerical [M]achine. │ │ │ │ │ -vset.h │ │ │ │ │ -Class Vset: a dynamic set object. │ │ │ │ │ -vio.h │ │ │ │ │ -Class Vio: virtual I/O layer. │ │ │ │ │ -vmem.h │ │ │ │ │ -Class Vmem: A safer, object-oriented, malloc/free object. │ │ │ │ │ -vpred.h │ │ │ │ │ -Header file for the Geometric Predicates. │ │ │ │ │ +VMAX_ARGLEN │ │ │ │ │ +#define VMAX_ARGLEN │ │ │ │ │ +Global constant. │ │ │ │ │ +Definition: maloc_base.h:227 │ │ │ │ │ +Vmem_free │ │ │ │ │ +void Vmem_free(Vmem *thee, size_t num, size_t size, void **ram) │ │ │ │ │ +A safe logged version of free. │ │ │ │ │ +Vmem_mallocAreas │ │ │ │ │ +size_t Vmem_mallocAreas(Vmem *thee) │ │ │ │ │ +Return total number of individual active malloc areas. │ │ │ │ │ +Vmem_mallocAreasTotal │ │ │ │ │ +size_t Vmem_mallocAreasTotal(void) │ │ │ │ │ +Return total of all active Vmem malloc areas by groups. │ │ │ │ │ +Vmem_printTotal │ │ │ │ │ +void Vmem_printTotal(void) │ │ │ │ │ +Print current memory statistics for all Vmem malloc/free areas. │ │ │ │ │ +Vmem_freeBytes │ │ │ │ │ +size_t Vmem_freeBytes(Vmem *thee) │ │ │ │ │ +Return total of all frees performed by Vmem object. │ │ │ │ │ +Vmem_highWater │ │ │ │ │ +size_t Vmem_highWater(Vmem *thee) │ │ │ │ │ +Return high-water malloc bytemark hit by Vmem object. │ │ │ │ │ +Vmem_malloc │ │ │ │ │ +void * Vmem_malloc(Vmem *thee, size_t num, size_t size) │ │ │ │ │ +A safe logged version of malloc. │ │ │ │ │ +Vmem_bytesTotal │ │ │ │ │ +size_t Vmem_bytesTotal(void) │ │ │ │ │ +Return total of all active Vmem malloc areas (current footprint) │ │ │ │ │ +Vmem_freeBytesTotal │ │ │ │ │ +size_t Vmem_freeBytesTotal(void) │ │ │ │ │ +Return total of all Vmem free calls. │ │ │ │ │ +Vmem_realloc │ │ │ │ │ +void * Vmem_realloc(Vmem *thee, size_t num, size_t size, void **ram, size_t │ │ │ │ │ +newNum) │ │ │ │ │ +A safe logged version of realloc (usually a bad idea to use this) │ │ │ │ │ +Vmem_ctor │ │ │ │ │ +Vmem * Vmem_ctor(char *name) │ │ │ │ │ +Construct the dynamic memory allocation logging object. │ │ │ │ │ +Vmem_highWaterTotal │ │ │ │ │ +size_t Vmem_highWaterTotal(void) │ │ │ │ │ +Return the high-water byte mark (largest footprint) │ │ │ │ │ +Vmem_bytes │ │ │ │ │ +size_t Vmem_bytes(Vmem *thee) │ │ │ │ │ +Return total of all ACTIVE malloc areas used by Vmem object. │ │ │ │ │ +Vmem_print │ │ │ │ │ +void Vmem_print(Vmem *thee) │ │ │ │ │ +Print current memory stats associated with this Vmem object. │ │ │ │ │ +Vmem_dtor │ │ │ │ │ +void Vmem_dtor(Vmem **thee) │ │ │ │ │ +Destruct the dynamic memory allocation logging object. │ │ │ │ │ +Vmem_mallocBytes │ │ │ │ │ +size_t Vmem_mallocBytes(Vmem *thee) │ │ │ │ │ +Return total of all mallocs performed by Vmem object. │ │ │ │ │ +Vmem_mallocBytesTotal │ │ │ │ │ +size_t Vmem_mallocBytesTotal(void) │ │ │ │ │ +Return total of all Vmem malloc allocations. │ │ │ │ │ +sVmem │ │ │ │ │ +Contains public data members for Vmem class. │ │ │ │ │ +Definition: vmem.h:57 │ │ │ │ │ +sVmem::name │ │ │ │ │ +char name[VMAX_ARGLEN] │ │ │ │ │ +Definition: vmem.h:59 │ │ │ │ │ +sVmem::freeBytes │ │ │ │ │ +size_t freeBytes │ │ │ │ │ +Definition: vmem.h:62 │ │ │ │ │ +sVmem::mallocBytes │ │ │ │ │ +size_t mallocBytes │ │ │ │ │ +Definition: vmem.h:61 │ │ │ │ │ +sVmem::mallocAreas │ │ │ │ │ +size_t mallocAreas │ │ │ │ │ +Definition: vmem.h:64 │ │ │ │ │ +sVmem::highWater │ │ │ │ │ +size_t highWater │ │ │ │ │ +Definition: vmem.h:63 │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00022.dot │ │ │ │ @@ -1,25 +1,30 @@ │ │ │ │ -digraph "vsys.h" │ │ │ │ +digraph "vmem.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ + Node1 [label="vmem.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ + Node2 [label="vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node4 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ + Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node5 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node5 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node6 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ + Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node7 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ + Node7 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node8 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ + Node8 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node9 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ + Node9 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node9 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ - Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node4 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ - Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node5 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ - Node5 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node6 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ - Node6 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node7 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ - Node7 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node7 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00023.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vnm.h File Reference │ │ │ │ +MALOC: vpred.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -42,188 +42,102 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ Macros | │ │ │ │ Functions
│ │ │ │ -
vnm.h File Reference
│ │ │ │ +
vpred.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ -

Header file for an ISO C [V]irtual [N]umerical [M]achine. │ │ │ │ +

Header file for the Geometric Predicates. │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │
│ │ │ │ -Include dependency graph for vnm.h:
│ │ │ │ +Include dependency graph for vpred.h:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Macros

#define VPOW_SAFE(x, y)   (Vnm_powsafe(x,y))
 A safe VPOW function (avoids division by zero) More...
 
#define VTIMERS   100
 the maiximal timer constant More...
 
#define INEXACT   /* Nothing */
 Parameters and constants "INEXACT". More...
 
#define REAL   double
 float or double More...
 
#define REALPRINT   doubleprint
 Print the bit representation of a double. More...
 
#define REALRAND   doublerand
 Generate a double with random 53-bit significand and a random exponent in [0, 511]. More...
 
#define NARROWRAND   narrowdoublerand
 Generate a double with random 53-bit significand and a random exponent in [0, 7]. More...
 
#define UNIFORMRAND   uniformdoublerand
 Generate a double with random 53-bit significand. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Functions

int Vnm_sigInt (void)
 Signal and setjmp handling routine. Return the signal interrupt flag. More...
 
void Vnm_sigIntSet (void)
 Signal and setjmp handling routine. Set the signal interrupt flag. More...
 
void Vnm_sigIntClear (void)
 Signal and setjmp handling routine. Clear the signal interrupt flag.
│ │ │ │ - More...
 
int Vnm_jmpOk (void)
 Signal and setjmp handling routine. Return the "ok-to-jump" flag. More...
 
void Vnm_jmpOkSet (void)
 Signal and setjmp handling routine. Set the "okay-to-jump" flag. More...
 
void Vnm_jmpOkClear (void)
 Signal and setjmp handling routine. Clear the "okay-to-jump" flag.
│ │ │ │ - More...
 
jmp_buf * Vnm_signalInit (void)
 Initialize the signal handling data structures. More...
 
void Vnm_regHand (void)
 Register the signal handler with the operating system. More...
 
void Vnm_sigHand (int num)
 Handle events such as SIGINT. We must have first been registered with "Vnm_signalInit". More...
 
double Vnm_powsafe (double x, double y)
 A safe VPOW function (avoids division by zero).
│ │ │ │ - More...
 
void Vnm_typeChk (void)
 Check out the sizes of various datatypes.
│ │ │ │ - More...
 
double Vnm_epsmac (void)
 Computes the unit roundoff of the machine in single
│ │ │ │ - precision. This is defined as the smallest positive machine number u such that 1.0d0 + u .ne. 1.0d0 (in single precision).
│ │ │ │ -
│ │ │ │ - A safe hardcoded machine epsilon as alternative:
│ │ │ │ - double value;
│ │ │ │ - value = 1.0e-9;
│ │ │ │ - return value;. More...
 
int Vnm_gentokens (char *buf, char **argv, const int argvmax, const char *white, const char *comment)
 Generate an [argv,argc] pair from a character string "buf" (assumed NULL-terminated) in which tokens are separated by whitespace "white" with possible comments "comment" occuring. THE INPUT STRING IS MODIFIED HERE! More...
 
void Vnm_tstart (int timer, const char *name)
 Starts the timer on the particular machine.
│ │ │ │ - More...
 
void Vnm_tstop (int timer, const char *name)
 Stops the timer on the particular machine. More...
 
char * Vnm_getuser (char *user, int usermax)
 Ask the system for the username. More...
 
char * Vnm_getos (char *os, int osmax)
 Ask the system for the operating system name. More...
 
char * Vnm_gethost (char *host, int hostmax)
 Ask the system for the hostname. More...
 
char * Vnm_gethome (char *path, int pathmax)
 Ask the system for the home directory. More...
 
char * Vnm_getcwd (char *path, int pathmax)
 Ask the system for the current working directory. More...
 
int Vnm_chdir (const char *path)
 Interact with the system to change the working directory. More...
 
int Vnm_mkdir (const char *path)
 Interact with the system to make a new directory.
│ │ │ │ - More...
 
int Vnm_system (const char *cmd)
 An improved ANSI-C "system" call. More...
 
int Vnm_systemBack (const char *cmd)
 A background variant of the ANSI-C "system" call.
│ │ │ │ - More...
 
int Vnm_systemKill (const char *cmd)
 Something like a UNIX "killall" call. More...
 
int Vnm_exec (int argc, char **argv)
 An improved UNIX "exec" call. This routine does not return except on error. More...
 
void Vnm_sleep (int nusecs)
 Implement a sleep function with microsecond resolution. More...
 
int Vnm_ioTag (void)
 Return my I/O tag. More...
 
int Vnm_nTags (void)
 Return the total number of tags. More...
 
void Vnm_setIoTag (int myTag, int numTags)
 Set my id. More...
 
FILE * Vnm_open (const int unit)
 Open an I/O console. More...
 
int Vnm_close (const int unit)
 Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in this routine. More...
 
void Vnm_flush (const int unit)
 Attempt to flush the specified i/o stream. We MUST NOT use VASSERT (or Vnm_print!) in this routine. More...
 
void Vnm_redirect (const int flag)
 Set/unset the redirect flag for UNIT zero. When redirected, I/O goes to the file: ${MCSH_HOME}/io.mc. We MUST NOT use VASSERT (or Vnm_print!) in this routine. More...
 
void Vnm_print (const int unit, const char *format,...)
 External interface to the console i/o routine.
│ │ │ │ - We MUST NOT use VASSERT (or Vnm_print!) in this routine. More...
 
void Vnm_tprint (const int unit, const char *format,...)
 Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or Vnm_print!) in this routine. More...
 
void Vnm_qsort (int *u, int size)
 Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ - More...
 
void Vnm_qsortOrd (int *u, int *ord, int size)
 Front-end to quick sort integer array from [-large] to [+large]. More...
 
void Vnm_dqsort (double *u, int size)
 Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ - More...
 
void Vnm_dqsortOrd (double *u, int *ord, int size)
 Front-end to quick sort integer array from [-large] to [+large]. More...
 
void Vpred_exactinit (void)
 Initialize the variables used for exact arithmetic. More...
 
REAL Vpred_orient2d (REAL *pa, REAL *pb, REAL *pc)
 Adaptive exact 2D orientation test. Robust. More...
 
REAL Vpred_orient2dfast (REAL *pa, REAL *pb, REAL *pc)
 Approximate 2D orientation test. Nonrobust. More...
 
REAL Vpred_orient2dexact (REAL *pa, REAL *pb, REAL *pc)
 Exact 2D orientation test. Robust. More...
 
REAL Vpred_orient3d (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Adaptive exact 3D orientation test. Robust. More...
 
REAL Vpred_orient3dfast (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Approximate 3D orientation test. Nonrobust. More...
 
REAL Vpred_orient3dexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Exact 3D orientation test. Robust. More...
 
REAL Vpred_incircle (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Adaptive exact 2D incircle test. Robust. More...
 
REAL Vpred_incirclefast (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Approximate 2D incircle test. Nonrobust. More...
 
REAL Vpred_incircleexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Exact 2D incircle test. Robust. More...
 
REAL Vpred_insphere (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
 Adaptive exact 3D insphere test. Robust. More...
 
REAL Vpred_inspherefast (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
 Approximate 3D insphere test. Nonrobust. More...
 
REAL Vpred_insphereexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
 Exact 3D insphere test. Robust. More...
 
│ │ │ │

Detailed Description

│ │ │ │ -

Header file for an ISO C [V]irtual [N]umerical [M]achine.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
None
│ │ │ │ +

Header file for the Geometric Predicates.

│ │ │ │
Version
│ │ │ │ -
Id
vnm.h,v 1.22 2010/08/12 05:40:36 fetk Exp
│ │ │ │ +
Id
vpred.h,v 1.4 2010/08/12 05:40:37 fetk Exp
│ │ │ │ +
Author
Michael Holst
│ │ │ │
Attention
*
│ │ │ │  * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │  * Copyright (C) 1994-- Michael Holst
│ │ │ │  *
│ │ │ │  * This library is free software; you can redistribute it and/or
│ │ │ │  * modify it under the terms of the GNU Lesser General Public
│ │ │ │  * License as published by the Free Software Foundation; either
│ │ │ │ @@ -236,1448 +150,756 @@
│ │ │ │  *
│ │ │ │  * You should have received a copy of the GNU Lesser General Public
│ │ │ │  * License along with this library; if not, write to the Free Software
│ │ │ │  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
│ │ │ │  * 
│ │ │ │  *  
│ │ │ │

Macro Definition Documentation

│ │ │ │ - │ │ │ │ -

◆ VPOW_SAFE

│ │ │ │ + │ │ │ │ +

◆ INEXACT

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │
#define VPOW_SAFE( x,
 
)   (Vnm_powsafe(x,y))#define INEXACT   /* Nothing */
│ │ │ │
│ │ │ │ │ │ │ │ -

A safe VPOW function (avoids division by zero)

│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +

Parameters and constants "INEXACT".

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ VTIMERS

│ │ │ │ + │ │ │ │ +

◆ NARROWRAND

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │
#define VTIMERS   100#define NARROWRAND   narrowdoublerand
│ │ │ │
│ │ │ │ │ │ │ │ -

the maiximal timer constant

│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +

Generate a double with random 53-bit significand and a random exponent in [0, 7].

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -

Function Documentation

│ │ │ │ - │ │ │ │ -

◆ Vnm_chdir()

│ │ │ │ + │ │ │ │ +

◆ REAL

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │
int Vnm_chdir (const char * path)#define REAL   double
│ │ │ │
│ │ │ │ │ │ │ │ -

Interact with the system to change the working directory.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
Success enumeration
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
pathPointer to the path
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +

float or double

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_close()

│ │ │ │ + │ │ │ │ +

◆ REALPRINT

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │
int Vnm_close (const int unit)#define REALPRINT   doubleprint
│ │ │ │
│ │ │ │ │ │ │ │ -

Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in this routine.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
Success enumeration
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
unitindex for the file unit
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +

Print the bit representation of a double.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_dqsort()

│ │ │ │ + │ │ │ │ +

◆ REALRAND

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │
void Vnm_dqsort (double * u,
int size 
)#define REALRAND   doublerand
│ │ │ │
│ │ │ │ │ │ │ │ -

Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ -

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
uPointer to quick sort integer array
sizesize of the integer array
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +

Generate a double with random 53-bit significand and a random exponent in [0, 511].

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_dqsortOrd()

│ │ │ │ + │ │ │ │ +

◆ UNIFORMRAND

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │
void Vnm_dqsortOrd (double * u,
int * ord,
int size 
)#define UNIFORMRAND   uniformdoublerand
│ │ │ │
│ │ │ │ │ │ │ │ -

Front-end to quick sort integer array from [-large] to [+large].

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
uPointer to quick sort integer array
ordPointer to reordered array
sizesize of the integer array
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +

Generate a double with random 53-bit significand.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_epsmac()

│ │ │ │ +

Function Documentation

│ │ │ │ + │ │ │ │ +

◆ Vpred_exactinit()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
double Vnm_epsmac void Vpred_exactinit (void )
│ │ │ │
│ │ │ │ │ │ │ │ -

Computes the unit roundoff of the machine in single
│ │ │ │ - precision. This is defined as the smallest positive machine number u such that 1.0d0 + u .ne. 1.0d0 (in single precision).
│ │ │ │ -
│ │ │ │ - A safe hardcoded machine epsilon as alternative:
│ │ │ │ - double value;
│ │ │ │ - value = 1.0e-9;
│ │ │ │ - return value;.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
the unit roundoff of the machine in single precision.
│ │ │ │ +

Initialize the variables used for exact arithmetic.

│ │ │ │ +
Note
‘epsilon’ is the largest power of two such that 1.0 + epsilon = 1.0 in floating-point arithmetic. ‘epsilon’ bounds the relative roundoff error. It is used for floating-point error analysis. ‘splitter’ is used to split floating-point numbers into two half- length significands for exact multiplication. I imagine that a highly optimizing compiler might be too smart for its own good, and somehow cause this routine to fail, if it pretends that floating-point arithmetic is too much like real arithmetic. Don't change this routine unless you fully understand it.
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_exec()

│ │ │ │ + │ │ │ │ +

◆ Vpred_incircle()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
int Vnm_exec REAL Vpred_incircle (int argc, REALpa,
char ** argv REALpb,
)REALpc,
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

An improved UNIX "exec" call. This routine does not return except on error.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
no return except on error
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
argcnumber of the command line arguments
argvthe command line arguments
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_flush()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │
void Vnm_flush (const int unit)REALpd 
)
│ │ │ │
│ │ │ │ │ │ │ │ -

Attempt to flush the specified i/o stream. We MUST NOT use VASSERT (or Vnm_print!) in this routine.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ +

Adaptive exact 2D incircle test. Robust.

│ │ │ │ +
Returns
a positive value if the point pd lies inside the circle passing through pa, pb, and pc; a negative value if it lies outside; and zero if the four points are cocircular. The points pa, pb, and pc must be in counterclockwise order, or the sign of the result will be reversed.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
unitindex for the file unit
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_gentokens()

│ │ │ │ + │ │ │ │ +

◆ Vpred_incircleexact()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
int Vnm_gentokens REAL Vpred_incircleexact (char * buf, REALpa,
char ** argv, REALpb,
const int argvmax, REALpc,
const char * white,
const char * comment REALpd 
)
│ │ │ │
│ │ │ │ │ │ │ │ -

Generate an [argv,argc] pair from a character string "buf" (assumed NULL-terminated) in which tokens are separated by whitespace "white" with possible comments "comment" occuring. THE INPUT STRING IS MODIFIED HERE!

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
│ │ │ │ - Again, the input string "buf" IS MODIFIED; white space characters (defined in the input string "white") are replaced by the NULL character '\0'. The output "argv" is simply a list of pointers
│ │ │ │ - to the start of the tokens in "buf", which are NULL-terminated
│ │ │ │ - after we replace the white space with NULLs.
│ │ │ │ -
│ │ │ │ - We follow convention and "NULL"-terminate "argv" by setting the pointer following the last token to "VNULL". The return value is "argc", the number of tokens found (not including the terminating NULL pointer). For safety you must pass in the maximal length of argv in the parameter "argvmax".
│ │ │ │ -
│ │ │ │ - If we encounter a token which begins with a comment character (defined in the input string "comment"), then we ignore the rest of the tokens in the input buffer "buf". This is suitable
│ │ │ │ - for parsing shell languages such as sh/ksh/bash which have comments that start with e.g. "#" and continue until a newline.
│ │ │ │ -
│ │ │ │ - We DO NOT use the C library function strtok in this routine. (There are some bad implementations of strtok around apparently; the internal state variables maintained by strtok can get very
│ │ │ │ - messed up if you use strtok in multiple places in a code.)
│ │ │ │ -
Returns
number of tokens
│ │ │ │ +

Exact 2D incircle test. Robust.

│ │ │ │ +
Returns
a positive value if the point pd lies inside the circle passing through pa, pb, and pc; a negative value if it lies outside; and zero if the four points are cocircular. The points pa, pb, and pc must be in counterclockwise order, or the sign of the result will be reversed.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
bufbuffer containing message
argvthe command line arguments
argvmaxmaximal number of the command line arguments
whitePointer to the input string
commenttoken which begins with a comment character
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_getcwd()

│ │ │ │ + │ │ │ │ +

◆ Vpred_incirclefast()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
char * Vnm_getcwd REAL Vpred_incirclefast (char * path, REALpa,
int pathmax REALpb,
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Ask the system for the current working directory.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
│ │ │ │ - Consider it an error if we can't return something useful; therefore we will VASSERT(path!=VNULL) before returning.
│ │ │ │ -
│ │ │ │ - Note that unlike Vnm_gethome, a call to Vnm_getcwd returns the current directory, possibly modified from call to call.
│ │ │ │ -
│ │ │ │ - I.e., calls to Vnm_chdir can change the current working
│ │ │ │ - directory; Vnm_getcwd returns the current directory, whatever that might be.
│ │ │ │ -
Returns
the current working directory
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
pathPointer to the path
pathmaxindex for the size of path
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_gethome()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
char * Vnm_gethome (char * path, REALpc,
int pathmax REALpd 
)
│ │ │ │
│ │ │ │ │ │ │ │ -

Ask the system for the home directory.

│ │ │ │ -

=

Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
│ │ │ │ - The following preference order is used to set the home directory:
│ │ │ │ -
│ │ │ │ - MCSH_HOME (the user must define this in his environment)
│ │ │ │ - CWD (always defined as the current working directory)
│ │ │ │ -
│ │ │ │ - We consider it an error if we can't return something useful;
│ │ │ │ - therefore we will VASSERT(path!=VNULL) before returning.
│ │ │ │ -
│ │ │ │ - We settle on a home directory the first time we are called, and then we simply return this fixed home directory forever.
│ │ │ │ - In other words, the first call to Vnm_gethome, regardless of
│ │ │ │ - who makes the call, establishes the home directory for everyone else (as long as everyone goes through Vnm_gethome!).
│ │ │ │ -
Returns
the home directory
│ │ │ │ +

Approximate 2D incircle test. Nonrobust.

│ │ │ │ +
Returns
a positive value if the point pd lies inside the circle passing through pa, pb, and pc; a negative value if it lies outside; and zero if the four points are cocircular. The points pa, pb, and pc must be in counterclockwise order, or the sign of the result will be reversed.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
pathPointer to the path
pathmaxindex for the size of path
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_gethost()

│ │ │ │ + │ │ │ │ +

◆ Vpred_insphere()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
char * Vnm_gethost REAL Vpred_insphere (char * host, REALpa,
int hostmax 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Ask the system for the hostname.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
the hostname
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
hostPointer to the hostname.
hostmaxindex for maximal size of host name
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_getos()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
char * Vnm_getos (char * os, REALpb,
int osmax REALpc,
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Ask the system for the operating system name.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
the operating system name
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
osPointer to the OS type
osmaxindex for maximal size of OS name
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_getuser()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
char * Vnm_getuser (char * user, REALpd,
int usermax REALpe 
)
│ │ │ │
│ │ │ │ │ │ │ │ -

Ask the system for the username.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
the username of the system
│ │ │ │ +

Adaptive exact 3D insphere test. Robust.

│ │ │ │ +
Returns
a positive value if the point pe lies inside the sphere passing through pa, pb, pc, and pd; a negative value if it lies outside; and zero if the five points are cospherical. The points pa, pb, pc, and pd must be ordered so that they have a positive orientation (as defined by orient3d()), or the sign of the result will be reversed.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
userPointer to the username of the system
usermaxindex for maximal size of user name
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
pePointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_ioTag()

│ │ │ │ + │ │ │ │ +

◆ Vpred_insphereexact()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
int Vnm_ioTag REAL Vpred_insphereexact (void )REALpa,
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Return my I/O tag.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
my I/O tag.
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_jmpOk()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
int Vnm_jmpOk (void )REALpb,
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Signal and setjmp handling routine. Return the "ok-to-jump" flag.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
"ok-to-jump" flag.
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_jmpOkClear()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
void Vnm_jmpOkClear (void )REALpc,
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Signal and setjmp handling routine. Clear the "okay-to-jump" flag.
│ │ │ │ -

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_jmpOkSet()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
void Vnm_jmpOkSet (void )REALpd,
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Signal and setjmp handling routine. Set the "okay-to-jump" flag.

│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Returns
None
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_mkdir()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
int Vnm_mkdir (const char * path)REALpe 
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Interact with the system to make a new directory.
│ │ │ │ -

│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Returns
Success enumeration
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
pathPointer to the path
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_nTags()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
int Vnm_nTags (void )
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Return the total number of tags.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
total number of tags.
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_open()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │
FILE * Vnm_open (const int unit))
│ │ │ │
│ │ │ │ │ │ │ │ -

Open an I/O console.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
We MUST NOT use VASSERT (or Vnm_print!) in this routine.   
│ │ │ │ -
│ │ │ │ -The following codes are used:                                               
│ │ │ │ -
│ │ │ │ -unit#      C output unit      
│ │ │ │ --------    -------------                                                
│ │ │ │ -
│ │ │ │ -unit==0    garbage   -- Non-interactive i/o; lots of stuff                        
│ │ │ │ -                        (can be redirected to ${MCSH_HOME/io.mc)
│ │ │ │ -
│ │ │ │ -unit==1    stdout    -- standard output (Interactive I/O)            
│ │ │ │ -
│ │ │ │ -unit==2    stderr    -- standard error (IMPORTANT interactive I/O)          
│ │ │ │ -
│ │ │ │ -unit==3    history   -- History file ${MCSH_HOME}/hist.mcsh                       
│ │ │ │ -
│ │ │ │ -unit==else /dev/null -- Error...                                
│ │ │ │ -
│ │ │ │ -
Returns
None
│ │ │ │ +

Exact 3D insphere test. Robust.

│ │ │ │ +
Returns
a positive value if the point pe lies inside the sphere passing through pa, pb, pc, and pd; a negative value if it lies outside; and zero if the five points are cospherical. The points pa, pb, pc, and pd must be ordered so that they have a positive orientation (as defined by orient3d()), or the sign of the result will be reversed.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
unitindex for the file unit
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
pePointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_powsafe()

│ │ │ │ + │ │ │ │ +

◆ Vpred_inspherefast()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
double Vnm_powsafe REAL Vpred_inspherefast (double x, REALpa,
double y REALpb,
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

A safe VPOW function (avoids division by zero).
│ │ │ │ -

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
output value of a VPOW function
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
xinput parameter
yinput parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_print()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
void Vnm_print (const int unit, REALpc,
const char * format, REALpd,
 ... REALpe 
)
│ │ │ │
│ │ │ │ │ │ │ │ -

External interface to the console i/o routine.
│ │ │ │ - We MUST NOT use VASSERT (or Vnm_print!) in this routine.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ +

Approximate 3D insphere test. Nonrobust.

│ │ │ │ +
Returns
a positive value if the point pe lies inside the sphere passing through pa, pb, pc, and pd; a negative value if it lies outside; and zero if the five points are cospherical. The points pa, pb, pc, and pd must be ordered so that they have a positive orientation (as defined by orient3d()), or the sign of the result will be reversed.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
unitindex for the file unit
formatPointer to the print format
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
pePointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_qsort()

│ │ │ │ + │ │ │ │ +

◆ Vpred_orient2d()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
void Vnm_qsort REAL Vpred_orient2d (int * u, REALpa,
int size REALpb,
REALpc 
)
│ │ │ │
│ │ │ │ │ │ │ │ -

Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ -

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ +

Adaptive exact 2D orientation test. Robust.

│ │ │ │ +
Returns
a positive value if the points pa, pb, and pc occur in counterclockwise order; a negative value if they occur in clockwise order; and zero if they are collinear. The result is also a rough approximation of twice the signed area of the triangle defined by the three points.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
uPointer to quick sort integer array
sizesize of the integer array
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_qsortOrd()

│ │ │ │ + │ │ │ │ +

◆ Vpred_orient2dexact()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
void Vnm_qsortOrd REAL Vpred_orient2dexact (int * u, REALpa,
int * ord, REALpb,
int size REALpc 
)
│ │ │ │
│ │ │ │ │ │ │ │ -

Front-end to quick sort integer array from [-large] to [+large].

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None *
│ │ │ │ -
Author
Michael Holst
│ │ │ │ +

Exact 2D orientation test. Robust.

│ │ │ │ +
Returns
a positive value if the points pa, pb, and pc occur in counterclockwise order; a negative value if they occur in clockwise order; and zero if they are collinear. The result is also a rough approximation of twice the signed area of the triangle defined by the three points.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
uPointer to quick sort integer array
ordPointer to reordered array
sizesize of the integer array
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_redirect()

│ │ │ │ + │ │ │ │ +

◆ Vpred_orient2dfast()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
void Vnm_redirect REAL Vpred_orient2dfast (const int flag)REALpa,
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Set/unset the redirect flag for UNIT zero. When redirected, I/O goes to the file: ${MCSH_HOME}/io.mc. We MUST NOT use VASSERT (or Vnm_print!) in this routine.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
flagindex for the redirect flag
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_regHand()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ -
void Vnm_regHand (void )
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Register the signal handler with the operating system.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_setIoTag()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
void Vnm_setIoTag (int myTag, REALpb,
int numTags REALpc 
)
│ │ │ │
│ │ │ │ │ │ │ │ -

Set my id.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ +

Approximate 2D orientation test. Nonrobust.

│ │ │ │ +
Returns
a positive value if the points pa, pb, and pc occur in counterclockwise order; a negative value if they occur in clockwise order; and zero if they are collinear. The result is also a rough approximation of twice the signed area of the triangle defined by the three points.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
myTagindex for the tag
numTagsnumber of tags
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_sigHand()

│ │ │ │ + │ │ │ │ +

◆ Vpred_orient3d()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
void Vnm_sigHand REAL Vpred_orient3d (int num)REALpa,
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Handle events such as SIGINT. We must have first been registered with "Vnm_signalInit".

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_sigInt()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
int Vnm_sigInt (void )
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Signal and setjmp handling routine. Return the signal interrupt flag.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
Signal interrupt flag.
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_sigIntClear()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void Vnm_sigIntClear (void )
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Signal and setjmp handling routine. Clear the signal interrupt flag.
│ │ │ │ -

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_sigIntSet()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
void Vnm_sigIntSet (void )REALpb,
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Signal and setjmp handling routine. Set the signal interrupt flag.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_signalInit()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
jmp_buf * Vnm_signalInit (void )REALpc,
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Initialize the signal handling data structures.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
the signal handling data structures
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_sleep()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
void Vnm_sleep (int nusecs)REALpd 
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Implement a sleep function with microsecond resolution.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ - This is hacked out of the "sleep_us" example in Rick Steven's Advance Unix Programming book.
│ │ │ │ -
Returns
None
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
nusecsnumber of microseconds
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_system()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │
int Vnm_system (const char * cmd))
│ │ │ │
│ │ │ │ │ │ │ │ -

An improved ANSI-C "system" call.

│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Returns
Success enumeration
│ │ │ │ +

Adaptive exact 3D orientation test. Robust.

│ │ │ │ +
Returns
a positive value if the point pd lies below the plane passing through pa, pb, and pc; "below" is defined so that pa, pb, and pc appear in counterclockwise order when viewed from above the plane. Returns a negative value if pd lies above the plane. Returns zero if the points are coplanar. The result is also a rough approximation of six times the signed volume of the tetrahedron defined by the four points.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
cmdPointer to the command
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_systemBack()

│ │ │ │ + │ │ │ │ +

◆ Vpred_orient3dexact()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ -
int Vnm_systemBack REAL Vpred_orient3dexact (const char * cmd)REALpa,
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

A background variant of the ANSI-C "system" call.
│ │ │ │ -

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
Success enumeration
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
cmdPointer to the command
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_systemKill()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ -
int Vnm_systemKill (const char * cmd)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Something like a UNIX "killall" call.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
Success enumeration
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ -
cmdPointer to the command
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_tprint()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
void Vnm_tprint (const int unit, REALpb,
const char * format, REALpc,
 ... REALpd 
)
│ │ │ │
│ │ │ │ │ │ │ │ -

Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or Vnm_print!) in this routine.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o) For a tag to be added, both of the following conditions must hold:
│ │ │ │ - Vnm_ioTag() >= 0 (I.e., I must have been given a tag)
│ │ │ │ - Vnm_nTags() > 1 (I must not be the only one given a tag)
│ │ │ │ -
│ │ │ │ -
Returns
None
│ │ │ │ +

Exact 3D orientation test. Robust.

│ │ │ │ +
Returns
a positive value if the point pd lies below the plane passing through pa, pb, and pc; "below" is defined so that pa, pb, and pc appear in counterclockwise order when viewed from above the plane. Returns a negative value if pd lies above the plane. Returns zero if the points are coplanar. The result is also a rough approximation of six times the signed volume of the tetrahedron defined by the four points.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
unitindex for the file unit
formatPointer to the print format
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_tstart()

│ │ │ │ + │ │ │ │ +

◆ Vpred_orient3dfast()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void Vnm_tstart REAL Vpred_orient3dfast (int timer, REALpa,
const char * name REALpb,
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Starts the timer on the particular machine.
│ │ │ │ -

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
timerindex for the starting timer
namePointer to the object
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vnm_tstop()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
void Vnm_tstop (int timer, REALpc,
const char * name REALpd 
)
│ │ │ │
│ │ │ │ │ │ │ │ -

Stops the timer on the particular machine.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ +

Approximate 3D orientation test. Nonrobust.

│ │ │ │ +
Returns
a positive value if the point pd lies below the plane passing through pa, pb, and pc; "below" is defined so that pa, pb, and pc appear in counterclockwise order when viewed from above the plane. Returns a negative value if pd lies above the plane. Returns zero if the points are coplanar. The result is also a rough approximation of six times the signed volume of the tetrahedron defined by the four points.
│ │ │ │
Parameters
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
timerindex for the starting timer
namePointer to the object
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ - │ │ │ │ -

◆ Vnm_typeChk()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void Vnm_typeChk (void )
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Check out the sizes of various datatypes.
│ │ │ │ -

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ -
Returns
None
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -4,192 +4,88 @@ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ Macros | Functions │ │ │ │ │ -vnm.h File Reference │ │ │ │ │ -Header file for an ISO C [V]irtual [N]umerical [M]achine. More... │ │ │ │ │ +vpred.h File Reference │ │ │ │ │ +Header file for the Geometric Predicates. More... │ │ │ │ │ #include │ │ │ │ │ -Include dependency graph for vnm.h: │ │ │ │ │ +Include dependency graph for vpred.h: │ │ │ │ │ This graph shows which files directly or indirectly include this file: │ │ │ │ │ Go_to_the_source_code_of_this_file. │ │ │ │ │ Macros │ │ │ │ │ -#define VPOW_SAFE(x, y)   (Vnm_powsafe(x,y)) │ │ │ │ │ -  A safe VPOW function (avoids division by zero) More... │ │ │ │ │ +#define INEXACT   /* Nothing */ │ │ │ │ │ +  Parameters and constants "INEXACT". More... │ │ │ │ │   │ │ │ │ │ -#define VTIMERS   100 │ │ │ │ │ -  the maiximal timer constant More... │ │ │ │ │ +#define REAL   double │ │ │ │ │ +  float or double More... │ │ │ │ │   │ │ │ │ │ - Functions │ │ │ │ │ - int Vnm_sigInt (void) │ │ │ │ │ -  Signal and setjmp handling routine. Return the signal interrupt │ │ │ │ │ - flag. More... │ │ │ │ │ -  │ │ │ │ │ - void Vnm_sigIntSet (void) │ │ │ │ │ -  Signal and setjmp handling routine. Set the signal interrupt flag. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - void Vnm_sigIntClear (void) │ │ │ │ │ - Signal and setjmp handling routine. Clear the signal interrupt flag. │ │ │ │ │ -  │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - int Vnm_jmpOk (void) │ │ │ │ │ -  Signal and setjmp handling routine. Return the "ok-to-jump" flag. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - void Vnm_jmpOkSet (void) │ │ │ │ │ -  Signal and setjmp handling routine. Set the "okay-to-jump" flag. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - void Vnm_jmpOkClear (void) │ │ │ │ │ -  Signal and setjmp handling routine. Clear the "okay-to-jump" flag. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ -jmp_buf * Vnm_signalInit (void) │ │ │ │ │ -  Initialize the signal handling data structures. More... │ │ │ │ │ -  │ │ │ │ │ - void Vnm_regHand (void) │ │ │ │ │ -  Register the signal handler with the operating system. More... │ │ │ │ │ -  │ │ │ │ │ - void Vnm_sigHand (int num) │ │ │ │ │ -  Handle events such as SIGINT. We must have first been registered │ │ │ │ │ - with "Vnm_signalInit". More... │ │ │ │ │ -  │ │ │ │ │ - double Vnm_powsafe (double x, double y) │ │ │ │ │ -  A safe VPOW function (avoids division by zero). │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - void Vnm_typeChk (void) │ │ │ │ │ -  Check out the sizes of various datatypes. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - double Vnm_epsmac (void) │ │ │ │ │ - Computes the unit roundoff of the machine in single │ │ │ │ │ - precision. This is defined as the smallest positive machine number u │ │ │ │ │ - such that 1.0d0 + u .ne. 1.0d0 (in single precision). │ │ │ │ │ -  │ │ │ │ │ - A safe hardcoded machine epsilon as alternative: │ │ │ │ │ - double value; │ │ │ │ │ - value = 1.0e-9; │ │ │ │ │ - return value;. More... │ │ │ │ │ -  │ │ │ │ │ - int Vnm_gentokens (char *buf, char **argv, const int argvmax, const char │ │ │ │ │ - *white, const char *comment) │ │ │ │ │ - Generate an [argv,argc] pair from a character string "buf" (assumed │ │ │ │ │ -  NULL-terminated) in which tokens are separated by whitespace "white" │ │ │ │ │ - with possible comments "comment" occuring. THE INPUT STRING IS │ │ │ │ │ - MODIFIED HERE! More... │ │ │ │ │ +#define REALPRINT   doubleprint │ │ │ │ │ +  Print the bit representation of a double. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_tstart (int timer, const char *name) │ │ │ │ │ -  Starts the timer on the particular machine. │ │ │ │ │ - More... │ │ │ │ │ +#define REALRAND   doublerand │ │ │ │ │ +  Generate a double with random 53-bit significand and a random exponent │ │ │ │ │ + in [0, 511]. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_tstop (int timer, const char *name) │ │ │ │ │ -  Stops the timer on the particular machine. More... │ │ │ │ │ +#define NARROWRAND   narrowdoublerand │ │ │ │ │ +  Generate a double with random 53-bit significand and a random exponent │ │ │ │ │ + in [0, 7]. More... │ │ │ │ │   │ │ │ │ │ - char * Vnm_getuser (char *user, int usermax) │ │ │ │ │ -  Ask the system for the username. More... │ │ │ │ │ +#define UNIFORMRAND   uniformdoublerand │ │ │ │ │ +  Generate a double with random 53-bit significand. More... │ │ │ │ │   │ │ │ │ │ - char * Vnm_getos (char *os, int osmax) │ │ │ │ │ -  Ask the system for the operating system name. More... │ │ │ │ │ -  │ │ │ │ │ - char * Vnm_gethost (char *host, int hostmax) │ │ │ │ │ -  Ask the system for the hostname. More... │ │ │ │ │ -  │ │ │ │ │ - char * Vnm_gethome (char *path, int pathmax) │ │ │ │ │ -  Ask the system for the home directory. More... │ │ │ │ │ -  │ │ │ │ │ - char * Vnm_getcwd (char *path, int pathmax) │ │ │ │ │ -  Ask the system for the current working directory. More... │ │ │ │ │ -  │ │ │ │ │ - int Vnm_chdir (const char *path) │ │ │ │ │ -  Interact with the system to change the working directory. More... │ │ │ │ │ -  │ │ │ │ │ - int Vnm_mkdir (const char *path) │ │ │ │ │ -  Interact with the system to make a new directory. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - int Vnm_system (const char *cmd) │ │ │ │ │ -  An improved ANSI-C "system" call. More... │ │ │ │ │ -  │ │ │ │ │ - int Vnm_systemBack (const char *cmd) │ │ │ │ │ -  A background variant of the ANSI-C "system" call. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - int Vnm_systemKill (const char *cmd) │ │ │ │ │ -  Something like a UNIX "killall" call. More... │ │ │ │ │ -  │ │ │ │ │ - int Vnm_exec (int argc, char **argv) │ │ │ │ │ -  An improved UNIX "exec" call. This routine does not return except on │ │ │ │ │ - error. More... │ │ │ │ │ -  │ │ │ │ │ - void Vnm_sleep (int nusecs) │ │ │ │ │ -  Implement a sleep function with microsecond resolution. More... │ │ │ │ │ -  │ │ │ │ │ - int Vnm_ioTag (void) │ │ │ │ │ -  Return my I/O tag. More... │ │ │ │ │ + Functions │ │ │ │ │ +void Vpred_exactinit (void) │ │ │ │ │ +  Initialize the variables used for exact arithmetic. More... │ │ │ │ │   │ │ │ │ │ - int Vnm_nTags (void) │ │ │ │ │ -  Return the total number of tags. More... │ │ │ │ │ +REAL Vpred_orient2d (REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ +  Adaptive exact 2D orientation test. Robust. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_setIoTag (int myTag, int numTags) │ │ │ │ │ -  Set my id. More... │ │ │ │ │ +REAL Vpred_orient2dfast (REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ +  Approximate 2D orientation test. Nonrobust. More... │ │ │ │ │   │ │ │ │ │ - FILE * Vnm_open (const int unit) │ │ │ │ │ -  Open an I/O console. More... │ │ │ │ │ +REAL Vpred_orient2dexact (REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ +  Exact 2D orientation test. Robust. More... │ │ │ │ │   │ │ │ │ │ - int Vnm_close (const int unit) │ │ │ │ │ -  Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in │ │ │ │ │ - this routine. More... │ │ │ │ │ +REAL Vpred_orient3d (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +  Adaptive exact 3D orientation test. Robust. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_flush (const int unit) │ │ │ │ │ -  Attempt to flush the specified i/o stream. We MUST NOT use VASSERT │ │ │ │ │ - (or Vnm_print!) in this routine. More... │ │ │ │ │ +REAL Vpred_orient3dfast (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +  Approximate 3D orientation test. Nonrobust. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_redirect (const int flag) │ │ │ │ │ - Set/unset the redirect flag for UNIT zero. When redirected, I/O goes │ │ │ │ │ -  to the file: ${MCSH_HOME}/io.mc. We MUST NOT use VASSERT (or │ │ │ │ │ - Vnm_print!) in this routine. More... │ │ │ │ │ +REAL Vpred_orient3dexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +  Exact 3D orientation test. Robust. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_print (const int unit, const char *format,...) │ │ │ │ │ -  External interface to the console i/o routine. │ │ │ │ │ - We MUST NOT use VASSERT (or Vnm_print!) in this routine. More... │ │ │ │ │ +REAL Vpred_incircle (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +  Adaptive exact 2D incircle test. Robust. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_tprint (const int unit, const char *format,...) │ │ │ │ │ -  Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or │ │ │ │ │ - Vnm_print!) in this routine. More... │ │ │ │ │ +REAL Vpred_incirclefast (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +  Approximate 2D incircle test. Nonrobust. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_qsort (int *u, int size) │ │ │ │ │ -  Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ - More... │ │ │ │ │ +REAL Vpred_incircleexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +  Exact 2D incircle test. Robust. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_qsortOrd (int *u, int *ord, int size) │ │ │ │ │ -  Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ - More... │ │ │ │ │ +REAL Vpred_insphere (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ +  Adaptive exact 3D insphere test. Robust. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_dqsort (double *u, int size) │ │ │ │ │ -  Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ - More... │ │ │ │ │ +REAL Vpred_inspherefast (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ +  Approximate 3D insphere test. Nonrobust. More... │ │ │ │ │   │ │ │ │ │ - void Vnm_dqsortOrd (double *u, int *ord, int size) │ │ │ │ │ -  Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ - More... │ │ │ │ │ +REAL Vpred_insphereexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ +  Exact 3D insphere test. Robust. More... │ │ │ │ │   │ │ │ │ │ ***** Detailed Description ***** │ │ │ │ │ -Header file for an ISO C [V]irtual [N]umerical [M]achine. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - None │ │ │ │ │ +Header file for the Geometric Predicates. │ │ │ │ │ Version │ │ │ │ │ Id │ │ │ │ │ - vnm.h,v 1.22 2010/08/12 05:40:36 fetk Exp │ │ │ │ │ + vpred.h,v 1.4 2010/08/12 05:40:37 fetk Exp │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ Attention │ │ │ │ │ * │ │ │ │ │ * MALOC = < Minimal Abstraction Layer for Object-oriented C > │ │ │ │ │ * Copyright (C) 1994-- Michael Holst │ │ │ │ │ * │ │ │ │ │ * This library is free software; you can redistribute it and/or │ │ │ │ │ * modify it under the terms of the GNU Lesser General Public │ │ │ │ │ @@ -203,591 +99,256 @@ │ │ │ │ │ * │ │ │ │ │ * You should have received a copy of the GNU Lesser General Public │ │ │ │ │ * License along with this library; if not, write to the Free Software │ │ │ │ │ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA │ │ │ │ │ * │ │ │ │ │ * │ │ │ │ │ ***** Macro Definition Documentation ***** │ │ │ │ │ -***** ◆ VPOW_SAFE ***** │ │ │ │ │ -#define VPOW_SAFE (  x, │ │ │ │ │ -  y  │ │ │ │ │ - )    (Vnm_powsafe(x,y)) │ │ │ │ │ -A safe VPOW function (avoids division by zero) │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ -***** ◆ VTIMERS ***** │ │ │ │ │ -#define VTIMERS   100 │ │ │ │ │ -the maiximal timer constant │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ +***** ◆ INEXACT ***** │ │ │ │ │ +#define INEXACT   /* Nothing */ │ │ │ │ │ +Parameters and constants "INEXACT". │ │ │ │ │ +***** ◆ NARROWRAND ***** │ │ │ │ │ +#define NARROWRAND   narrowdoublerand │ │ │ │ │ +Generate a double with random 53-bit significand and a random exponent in [0, │ │ │ │ │ +7]. │ │ │ │ │ +***** ◆ REAL ***** │ │ │ │ │ +#define REAL   double │ │ │ │ │ +float or double │ │ │ │ │ +***** ◆ REALPRINT ***** │ │ │ │ │ +#define REALPRINT   doubleprint │ │ │ │ │ +Print the bit representation of a double. │ │ │ │ │ +***** ◆ REALRAND ***** │ │ │ │ │ +#define REALRAND   doublerand │ │ │ │ │ +Generate a double with random 53-bit significand and a random exponent in [0, │ │ │ │ │ +511]. │ │ │ │ │ +***** ◆ UNIFORMRAND ***** │ │ │ │ │ +#define UNIFORMRAND   uniformdoublerand │ │ │ │ │ +Generate a double with random 53-bit significand. │ │ │ │ │ ***** Function Documentation ***** │ │ │ │ │ -***** ◆ Vnm_chdir() ***** │ │ │ │ │ -int Vnm_chdir ( const char * path ) │ │ │ │ │ -Interact with the system to change the working directory. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - Success enumeration │ │ │ │ │ - Parameters │ │ │ │ │ - path Pointer to the path │ │ │ │ │ -***** ◆ Vnm_close() ***** │ │ │ │ │ -int Vnm_close ( const int unit ) │ │ │ │ │ -Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in this routine. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - Success enumeration │ │ │ │ │ - Parameters │ │ │ │ │ - unit index for the file unit │ │ │ │ │ -***** ◆ Vnm_dqsort() ***** │ │ │ │ │ -void Vnm_dqsort ( double * u, │ │ │ │ │ - int  size  │ │ │ │ │ - ) │ │ │ │ │ -Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - u Pointer to quick sort integer array │ │ │ │ │ - size size of the integer array │ │ │ │ │ -***** ◆ Vnm_dqsortOrd() ***** │ │ │ │ │ -void Vnm_dqsortOrd ( double * u, │ │ │ │ │ - int *  ord, │ │ │ │ │ - int  size  │ │ │ │ │ - ) │ │ │ │ │ -Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - u Pointer to quick sort integer array │ │ │ │ │ - ord Pointer to reordered array │ │ │ │ │ - size size of the integer array │ │ │ │ │ -***** ◆ Vnm_epsmac() ***** │ │ │ │ │ -double Vnm_epsmac ( void  ) │ │ │ │ │ -Computes the unit roundoff of the machine in single │ │ │ │ │ -precision. This is defined as the smallest positive machine number u such that │ │ │ │ │ -1.0d0 + u .ne. 1.0d0 (in single precision). │ │ │ │ │ - │ │ │ │ │ -A safe hardcoded machine epsilon as alternative: │ │ │ │ │ -double value; │ │ │ │ │ -value = 1.0e-9; │ │ │ │ │ -return value;. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - the unit roundoff of the machine in single precision. │ │ │ │ │ -***** ◆ Vnm_exec() ***** │ │ │ │ │ -int Vnm_exec ( int  argc, │ │ │ │ │ - char ** argv  │ │ │ │ │ - ) │ │ │ │ │ -An improved UNIX "exec" call. This routine does not return except on error. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - no return except on error │ │ │ │ │ - Parameters │ │ │ │ │ - argc number of the command line arguments │ │ │ │ │ - argv the command line arguments │ │ │ │ │ -***** ◆ Vnm_flush() ***** │ │ │ │ │ -void Vnm_flush ( const int unit ) │ │ │ │ │ -Attempt to flush the specified i/o stream. We MUST NOT use VASSERT (or │ │ │ │ │ -Vnm_print!) in this routine. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - unit index for the file unit │ │ │ │ │ -***** ◆ Vnm_gentokens() ***** │ │ │ │ │ -int Vnm_gentokens ( char *  buf, │ │ │ │ │ - char **  argv, │ │ │ │ │ - const int  argvmax, │ │ │ │ │ - const char * white, │ │ │ │ │ - const char * comment  │ │ │ │ │ - ) │ │ │ │ │ -Generate an [argv,argc] pair from a character string "buf" (assumed NULL- │ │ │ │ │ -terminated) in which tokens are separated by whitespace "white" with possible │ │ │ │ │ -comments "comment" occuring. THE INPUT STRING IS MODIFIED HERE! │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - │ │ │ │ │ - Again, the input string "buf" IS MODIFIED; white space characters │ │ │ │ │ - (defined in the input string "white") are replaced by the NULL character │ │ │ │ │ - '\0'. The output "argv" is simply a list of pointers │ │ │ │ │ - to the start of the tokens in "buf", which are NULL-terminated │ │ │ │ │ - after we replace the white space with NULLs. │ │ │ │ │ - │ │ │ │ │ - We follow convention and "NULL"-terminate "argv" by setting the pointer │ │ │ │ │ - following the last token to "VNULL". The return value is "argc", the │ │ │ │ │ - number of tokens found (not including the terminating NULL pointer). For │ │ │ │ │ - safety you must pass in the maximal length of argv in the parameter │ │ │ │ │ - "argvmax". │ │ │ │ │ - │ │ │ │ │ - If we encounter a token which begins with a comment character (defined in │ │ │ │ │ - the input string "comment"), then we ignore the rest of the tokens in the │ │ │ │ │ - input buffer "buf". This is suitable │ │ │ │ │ - for parsing shell languages such as sh/ksh/bash which have comments that │ │ │ │ │ - start with e.g. "#" and continue until a newline. │ │ │ │ │ - │ │ │ │ │ - We DO NOT use the C library function strtok in this routine. (There are │ │ │ │ │ - some bad implementations of strtok around apparently; the internal state │ │ │ │ │ - variables maintained by strtok can get very │ │ │ │ │ - messed up if you use strtok in multiple places in a code.) │ │ │ │ │ - Returns │ │ │ │ │ - number of tokens │ │ │ │ │ - Parameters │ │ │ │ │ - buf buffer containing message │ │ │ │ │ - argv the command line arguments │ │ │ │ │ - argvmax maximal number of the command line arguments │ │ │ │ │ - white Pointer to the input string │ │ │ │ │ - comment token which begins with a comment character │ │ │ │ │ -***** ◆ Vnm_getcwd() ***** │ │ │ │ │ -char * Vnm_getcwd ( char * path, │ │ │ │ │ - int  pathmax  │ │ │ │ │ - ) │ │ │ │ │ -Ask the system for the current working directory. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - │ │ │ │ │ - Consider it an error if we can't return something useful; therefore we │ │ │ │ │ - will VASSERT(path!=VNULL) before returning. │ │ │ │ │ - │ │ │ │ │ - Note that unlike Vnm_gethome, a call to Vnm_getcwd returns the current │ │ │ │ │ - directory, possibly modified from call to call. │ │ │ │ │ - │ │ │ │ │ - I.e., calls to Vnm_chdir can change the current working │ │ │ │ │ - directory; Vnm_getcwd returns the current directory, whatever that might │ │ │ │ │ - be. │ │ │ │ │ - Returns │ │ │ │ │ - the current working directory │ │ │ │ │ - Parameters │ │ │ │ │ - path Pointer to the path │ │ │ │ │ - pathmax index for the size of path │ │ │ │ │ -***** ◆ Vnm_gethome() ***** │ │ │ │ │ -char * Vnm_gethome ( char * path, │ │ │ │ │ - int  pathmax  │ │ │ │ │ - ) │ │ │ │ │ -Ask the system for the home directory. │ │ │ │ │ -= │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - │ │ │ │ │ - The following preference order is used to set the home directory: │ │ │ │ │ - │ │ │ │ │ - MCSH_HOME (the user must define this in his environment) │ │ │ │ │ - CWD (always defined as the current working directory) │ │ │ │ │ - │ │ │ │ │ - We consider it an error if we can't return something useful; │ │ │ │ │ - therefore we will VASSERT(path!=VNULL) before returning. │ │ │ │ │ - │ │ │ │ │ - We settle on a home directory the first time we are called, and then we │ │ │ │ │ - simply return this fixed home directory forever. │ │ │ │ │ - In other words, the first call to Vnm_gethome, regardless of │ │ │ │ │ - who makes the call, establishes the home directory for everyone else (as │ │ │ │ │ - long as everyone goes through Vnm_gethome!). │ │ │ │ │ - Returns │ │ │ │ │ - the home directory │ │ │ │ │ - Parameters │ │ │ │ │ - path Pointer to the path │ │ │ │ │ - pathmax index for the size of path │ │ │ │ │ -***** ◆ Vnm_gethost() ***** │ │ │ │ │ -char * Vnm_gethost ( char * host, │ │ │ │ │ - int  hostmax  │ │ │ │ │ - ) │ │ │ │ │ -Ask the system for the hostname. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - the hostname │ │ │ │ │ - Parameters │ │ │ │ │ - host Pointer to the hostname. │ │ │ │ │ - hostmax index for maximal size of host name │ │ │ │ │ -***** ◆ Vnm_getos() ***** │ │ │ │ │ -char * Vnm_getos ( char * os, │ │ │ │ │ - int  osmax  │ │ │ │ │ - ) │ │ │ │ │ -Ask the system for the operating system name. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - the operating system name │ │ │ │ │ - Parameters │ │ │ │ │ - os Pointer to the OS type │ │ │ │ │ - osmax index for maximal size of OS name │ │ │ │ │ -***** ◆ Vnm_getuser() ***** │ │ │ │ │ -char * Vnm_getuser ( char * user, │ │ │ │ │ - int  usermax  │ │ │ │ │ - ) │ │ │ │ │ -Ask the system for the username. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - the username of the system │ │ │ │ │ - Parameters │ │ │ │ │ - user Pointer to the username of the system │ │ │ │ │ - usermax index for maximal size of user name │ │ │ │ │ -***** ◆ Vnm_ioTag() ***** │ │ │ │ │ -int Vnm_ioTag ( void  ) │ │ │ │ │ -Return my I/O tag. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - my I/O tag. │ │ │ │ │ -***** ◆ Vnm_jmpOk() ***** │ │ │ │ │ -int Vnm_jmpOk ( void  ) │ │ │ │ │ -Signal and setjmp handling routine. Return the "ok-to-jump" flag. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - "ok-to-jump" flag. │ │ │ │ │ -***** ◆ Vnm_jmpOkClear() ***** │ │ │ │ │ -void Vnm_jmpOkClear ( void  ) │ │ │ │ │ -Signal and setjmp handling routine. Clear the "okay-to-jump" flag. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ -***** ◆ Vnm_jmpOkSet() ***** │ │ │ │ │ -void Vnm_jmpOkSet ( void  ) │ │ │ │ │ -Signal and setjmp handling routine. Set the "okay-to-jump" flag. │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ -***** ◆ Vnm_mkdir() ***** │ │ │ │ │ -int Vnm_mkdir ( const char * path ) │ │ │ │ │ -Interact with the system to make a new directory. │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Returns │ │ │ │ │ - Success enumeration │ │ │ │ │ - Parameters │ │ │ │ │ - path Pointer to the path │ │ │ │ │ -***** ◆ Vnm_nTags() ***** │ │ │ │ │ -int Vnm_nTags ( void  ) │ │ │ │ │ -Return the total number of tags. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - total number of tags. │ │ │ │ │ -***** ◆ Vnm_open() ***** │ │ │ │ │ -FILE * Vnm_open ( const int unit ) │ │ │ │ │ -Open an I/O console. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - We MUST NOT use VASSERT (or Vnm_print!) in this routine. │ │ │ │ │ - │ │ │ │ │ - The following codes are used: │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - unit# C output unit │ │ │ │ │ - ------- ------------- │ │ │ │ │ - │ │ │ │ │ - unit==0 garbage -- Non-interactive i/o; lots of stuff │ │ │ │ │ - │ │ │ │ │ - (can be redirected to ${MCSH_HOME/io.mc) │ │ │ │ │ - │ │ │ │ │ - unit==1 stdout -- standard output (Interactive I/O) │ │ │ │ │ - │ │ │ │ │ - unit==2 stderr -- standard error (IMPORTANT interactive I/O) │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - unit==3 history -- History file ${MCSH_HOME}/hist.mcsh │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - unit==else /dev/null -- Error... │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - unit index for the file unit │ │ │ │ │ -***** ◆ Vnm_powsafe() ***** │ │ │ │ │ -double Vnm_powsafe ( double x, │ │ │ │ │ - double y  │ │ │ │ │ - ) │ │ │ │ │ -A safe VPOW function (avoids division by zero). │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - output value of a VPOW function │ │ │ │ │ - Parameters │ │ │ │ │ - x input parameter │ │ │ │ │ - y input parameter │ │ │ │ │ -***** ◆ Vnm_print() ***** │ │ │ │ │ -void Vnm_print ( const int  unit, │ │ │ │ │ - const char * format, │ │ │ │ │ -   ...  │ │ │ │ │ - ) │ │ │ │ │ -External interface to the console i/o routine. │ │ │ │ │ -We MUST NOT use VASSERT (or Vnm_print!) in this routine. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - unit index for the file unit │ │ │ │ │ - format Pointer to the print format │ │ │ │ │ -***** ◆ Vnm_qsort() ***** │ │ │ │ │ -void Vnm_qsort ( int * u, │ │ │ │ │ - int  size  │ │ │ │ │ - ) │ │ │ │ │ -Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - u Pointer to quick sort integer array │ │ │ │ │ - size size of the integer array │ │ │ │ │ -***** ◆ Vnm_qsortOrd() ***** │ │ │ │ │ -void Vnm_qsortOrd ( int * u, │ │ │ │ │ - int * ord, │ │ │ │ │ - int  size  │ │ │ │ │ - ) │ │ │ │ │ -Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None * │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Parameters │ │ │ │ │ - u Pointer to quick sort integer array │ │ │ │ │ - ord Pointer to reordered array │ │ │ │ │ - size size of the integer array │ │ │ │ │ -***** ◆ Vnm_redirect() ***** │ │ │ │ │ -void Vnm_redirect ( const int flag ) │ │ │ │ │ -Set/unset the redirect flag for UNIT zero. When redirected, I/O goes to the │ │ │ │ │ -file: ${MCSH_HOME}/io.mc. We MUST NOT use VASSERT (or Vnm_print!) in this │ │ │ │ │ -routine. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - flag index for the redirect flag │ │ │ │ │ -***** ◆ Vnm_regHand() ***** │ │ │ │ │ -void Vnm_regHand ( void  ) │ │ │ │ │ -Register the signal handler with the operating system. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ -***** ◆ Vnm_setIoTag() ***** │ │ │ │ │ -void Vnm_setIoTag ( int myTag, │ │ │ │ │ - int numTags  │ │ │ │ │ - ) │ │ │ │ │ -Set my id. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - myTag index for the tag │ │ │ │ │ - numTags number of tags │ │ │ │ │ -***** ◆ Vnm_sigHand() ***** │ │ │ │ │ -void Vnm_sigHand ( int num ) │ │ │ │ │ -Handle events such as SIGINT. We must have first been registered with │ │ │ │ │ -"Vnm_signalInit". │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ -***** ◆ Vnm_sigInt() ***** │ │ │ │ │ -int Vnm_sigInt ( void  ) │ │ │ │ │ -Signal and setjmp handling routine. Return the signal interrupt flag. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - Signal interrupt flag. │ │ │ │ │ -***** ◆ Vnm_sigIntClear() ***** │ │ │ │ │ -void Vnm_sigIntClear ( void  ) │ │ │ │ │ -Signal and setjmp handling routine. Clear the signal interrupt flag. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ -***** ◆ Vnm_sigIntSet() ***** │ │ │ │ │ -void Vnm_sigIntSet ( void  ) │ │ │ │ │ -Signal and setjmp handling routine. Set the signal interrupt flag. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ -***** ◆ Vnm_signalInit() ***** │ │ │ │ │ -jmp_buf * Vnm_signalInit ( void  ) │ │ │ │ │ -Initialize the signal handling data structures. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - the signal handling data structures │ │ │ │ │ -***** ◆ Vnm_sleep() ***** │ │ │ │ │ -void Vnm_sleep ( int nusecs ) │ │ │ │ │ -Implement a sleep function with microsecond resolution. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - This is hacked out of the "sleep_us" example in Rick Steven's Advance │ │ │ │ │ - Unix Programming book. │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - nusecs number of microseconds │ │ │ │ │ -***** ◆ Vnm_system() ***** │ │ │ │ │ -int Vnm_system ( const char * cmd ) │ │ │ │ │ -An improved ANSI-C "system" call. │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Returns │ │ │ │ │ - Success enumeration │ │ │ │ │ - Parameters │ │ │ │ │ - cmd Pointer to the command │ │ │ │ │ -***** ◆ Vnm_systemBack() ***** │ │ │ │ │ -int Vnm_systemBack ( const char * cmd ) │ │ │ │ │ -A background variant of the ANSI-C "system" call. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - Success enumeration │ │ │ │ │ - Parameters │ │ │ │ │ - cmd Pointer to the command │ │ │ │ │ -***** ◆ Vnm_systemKill() ***** │ │ │ │ │ -int Vnm_systemKill ( const char * cmd ) │ │ │ │ │ -Something like a UNIX "killall" call. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - Success enumeration │ │ │ │ │ - Parameters │ │ │ │ │ - cmd Pointer to the command │ │ │ │ │ -***** ◆ Vnm_tprint() ***** │ │ │ │ │ -void Vnm_tprint ( const int  unit, │ │ │ │ │ - const char * format, │ │ │ │ │ -   ...  │ │ │ │ │ - ) │ │ │ │ │ -Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or Vnm_print!) in │ │ │ │ │ -this routine. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - For a tag to be added, both of the following conditions must hold: │ │ │ │ │ - Vnm_ioTag() >= 0 (I.e., I must have been given a tag) │ │ │ │ │ - Vnm_nTags() > 1 (I must not be the only one given a tag) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - unit index for the file unit │ │ │ │ │ - format Pointer to the print format │ │ │ │ │ -***** ◆ Vnm_tstart() ***** │ │ │ │ │ -void Vnm_tstart ( int  timer, │ │ │ │ │ - const char * name  │ │ │ │ │ - ) │ │ │ │ │ -Starts the timer on the particular machine. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - timer index for the starting timer │ │ │ │ │ - name Pointer to the object │ │ │ │ │ -***** ◆ Vnm_tstop() ***** │ │ │ │ │ -void Vnm_tstop ( int  timer, │ │ │ │ │ - const char * name  │ │ │ │ │ - ) │ │ │ │ │ -Stops the timer on the particular machine. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ - Parameters │ │ │ │ │ - timer index for the starting timer │ │ │ │ │ - name Pointer to the object │ │ │ │ │ -***** ◆ Vnm_typeChk() ***** │ │ │ │ │ -void Vnm_typeChk ( void  ) │ │ │ │ │ -Check out the sizes of various datatypes. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ - Returns │ │ │ │ │ - None │ │ │ │ │ +***** ◆ Vpred_exactinit() ***** │ │ │ │ │ +void Vpred_exactinit ( void  ) │ │ │ │ │ +Initialize the variables used for exact arithmetic. │ │ │ │ │ + Note │ │ │ │ │ + ‘epsilon’ is the largest power of two such that 1.0 + epsilon = 1.0 in │ │ │ │ │ + floating-point arithmetic. ‘epsilon’ bounds the relative roundoff error. │ │ │ │ │ + It is used for floating-point error analysis. ‘splitter’ is used to split │ │ │ │ │ + floating-point numbers into two half- length significands for exact │ │ │ │ │ + multiplication. I imagine that a highly optimizing compiler might be too │ │ │ │ │ + smart for its own good, and somehow cause this routine to fail, if it │ │ │ │ │ + pretends that floating-point arithmetic is too much like real arithmetic. │ │ │ │ │ + Don't change this routine unless you fully understand it. │ │ │ │ │ +***** ◆ Vpred_incircle() ***** │ │ │ │ │ +REAL Vpred_incircle ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc, │ │ │ │ │ + REAL * pd  │ │ │ │ │ + ) │ │ │ │ │ +Adaptive exact 2D incircle test. Robust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the point pd lies inside the circle passing through │ │ │ │ │ + pa, pb, and pc; a negative value if it lies outside; and zero if the four │ │ │ │ │ + points are cocircular. The points pa, pb, and pc must be in │ │ │ │ │ + counterclockwise order, or the sign of the result will be reversed. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ + pd Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_incircleexact() ***** │ │ │ │ │ +REAL Vpred_incircleexact ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc, │ │ │ │ │ + REAL * pd  │ │ │ │ │ + ) │ │ │ │ │ +Exact 2D incircle test. Robust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the point pd lies inside the circle passing through │ │ │ │ │ + pa, pb, and pc; a negative value if it lies outside; and zero if the four │ │ │ │ │ + points are cocircular. The points pa, pb, and pc must be in │ │ │ │ │ + counterclockwise order, or the sign of the result will be reversed. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ + pd Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_incirclefast() ***** │ │ │ │ │ +REAL Vpred_incirclefast ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc, │ │ │ │ │ + REAL * pd  │ │ │ │ │ + ) │ │ │ │ │ +Approximate 2D incircle test. Nonrobust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the point pd lies inside the circle passing through │ │ │ │ │ + pa, pb, and pc; a negative value if it lies outside; and zero if the four │ │ │ │ │ + points are cocircular. The points pa, pb, and pc must be in │ │ │ │ │ + counterclockwise order, or the sign of the result will be reversed. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ + pd Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_insphere() ***** │ │ │ │ │ +REAL Vpred_insphere ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc, │ │ │ │ │ + REAL * pd, │ │ │ │ │ + REAL * pe  │ │ │ │ │ + ) │ │ │ │ │ +Adaptive exact 3D insphere test. Robust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the point pe lies inside the sphere passing through │ │ │ │ │ + pa, pb, pc, and pd; a negative value if it lies outside; and zero if the │ │ │ │ │ + five points are cospherical. The points pa, pb, pc, and pd must be │ │ │ │ │ + ordered so that they have a positive orientation (as defined by orient3d │ │ │ │ │ + ()), or the sign of the result will be reversed. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ + pd Pointer to a real parameter │ │ │ │ │ + pe Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_insphereexact() ***** │ │ │ │ │ +REAL Vpred_insphereexact ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc, │ │ │ │ │ + REAL * pd, │ │ │ │ │ + REAL * pe  │ │ │ │ │ + ) │ │ │ │ │ +Exact 3D insphere test. Robust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the point pe lies inside the sphere passing through │ │ │ │ │ + pa, pb, pc, and pd; a negative value if it lies outside; and zero if the │ │ │ │ │ + five points are cospherical. The points pa, pb, pc, and pd must be │ │ │ │ │ + ordered so that they have a positive orientation (as defined by orient3d │ │ │ │ │ + ()), or the sign of the result will be reversed. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ + pd Pointer to a real parameter │ │ │ │ │ + pe Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_inspherefast() ***** │ │ │ │ │ +REAL Vpred_inspherefast ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc, │ │ │ │ │ + REAL * pd, │ │ │ │ │ + REAL * pe  │ │ │ │ │ + ) │ │ │ │ │ +Approximate 3D insphere test. Nonrobust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the point pe lies inside the sphere passing through │ │ │ │ │ + pa, pb, pc, and pd; a negative value if it lies outside; and zero if the │ │ │ │ │ + five points are cospherical. The points pa, pb, pc, and pd must be │ │ │ │ │ + ordered so that they have a positive orientation (as defined by orient3d │ │ │ │ │ + ()), or the sign of the result will be reversed. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ + pd Pointer to a real parameter │ │ │ │ │ + pe Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_orient2d() ***** │ │ │ │ │ +REAL Vpred_orient2d ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc  │ │ │ │ │ + ) │ │ │ │ │ +Adaptive exact 2D orientation test. Robust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the points pa, pb, and pc occur in counterclockwise │ │ │ │ │ + order; a negative value if they occur in clockwise order; and zero if │ │ │ │ │ + they are collinear. The result is also a rough approximation of twice the │ │ │ │ │ + signed area of the triangle defined by the three points. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_orient2dexact() ***** │ │ │ │ │ +REAL Vpred_orient2dexact ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc  │ │ │ │ │ + ) │ │ │ │ │ +Exact 2D orientation test. Robust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the points pa, pb, and pc occur in counterclockwise │ │ │ │ │ + order; a negative value if they occur in clockwise order; and zero if │ │ │ │ │ + they are collinear. The result is also a rough approximation of twice the │ │ │ │ │ + signed area of the triangle defined by the three points. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_orient2dfast() ***** │ │ │ │ │ +REAL Vpred_orient2dfast ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc  │ │ │ │ │ + ) │ │ │ │ │ +Approximate 2D orientation test. Nonrobust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the points pa, pb, and pc occur in counterclockwise │ │ │ │ │ + order; a negative value if they occur in clockwise order; and zero if │ │ │ │ │ + they are collinear. The result is also a rough approximation of twice the │ │ │ │ │ + signed area of the triangle defined by the three points. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_orient3d() ***** │ │ │ │ │ +REAL Vpred_orient3d ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc, │ │ │ │ │ + REAL * pd  │ │ │ │ │ + ) │ │ │ │ │ +Adaptive exact 3D orientation test. Robust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the point pd lies below the plane passing through pa, │ │ │ │ │ + pb, and pc; "below" is defined so that pa, pb, and pc appear in │ │ │ │ │ + counterclockwise order when viewed from above the plane. Returns a │ │ │ │ │ + negative value if pd lies above the plane. Returns zero if the points are │ │ │ │ │ + coplanar. The result is also a rough approximation of six times the │ │ │ │ │ + signed volume of the tetrahedron defined by the four points. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ + pd Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_orient3dexact() ***** │ │ │ │ │ +REAL Vpred_orient3dexact ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc, │ │ │ │ │ + REAL * pd  │ │ │ │ │ + ) │ │ │ │ │ +Exact 3D orientation test. Robust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the point pd lies below the plane passing through pa, │ │ │ │ │ + pb, and pc; "below" is defined so that pa, pb, and pc appear in │ │ │ │ │ + counterclockwise order when viewed from above the plane. Returns a │ │ │ │ │ + negative value if pd lies above the plane. Returns zero if the points are │ │ │ │ │ + coplanar. The result is also a rough approximation of six times the │ │ │ │ │ + signed volume of the tetrahedron defined by the four points. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ + pd Pointer to a real parameter │ │ │ │ │ +***** ◆ Vpred_orient3dfast() ***** │ │ │ │ │ +REAL Vpred_orient3dfast ( REAL * pa, │ │ │ │ │ + REAL * pb, │ │ │ │ │ + REAL * pc, │ │ │ │ │ + REAL * pd  │ │ │ │ │ + ) │ │ │ │ │ +Approximate 3D orientation test. Nonrobust. │ │ │ │ │ + Returns │ │ │ │ │ + a positive value if the point pd lies below the plane passing through pa, │ │ │ │ │ + pb, and pc; "below" is defined so that pa, pb, and pc appear in │ │ │ │ │ + counterclockwise order when viewed from above the plane. Returns a │ │ │ │ │ + negative value if pd lies above the plane. Returns zero if the points are │ │ │ │ │ + coplanar. The result is also a rough approximation of six times the │ │ │ │ │ + signed volume of the tetrahedron defined by the four points. │ │ │ │ │ + Parameters │ │ │ │ │ + pa Pointer to a real parameter │ │ │ │ │ + pb Pointer to a real parameter │ │ │ │ │ + pc Pointer to a real parameter │ │ │ │ │ + pd Pointer to a real parameter │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00023_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vnm.h Source File │ │ │ │ +MALOC: vpred.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -39,152 +39,95 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
vnm.h
│ │ │ │ +
vpred.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │ -
33#ifndef _VNM_H_
│ │ │ │ -
34#define _VNM_H_
│ │ │ │ -
35
│ │ │ │ -
36#include <maloc/maloc_base.h>
│ │ │ │ -
37
│ │ │ │ -
38
│ │ │ │ -
46int Vnm_sigInt(void);
│ │ │ │ -
47
│ │ │ │ -
55void Vnm_sigIntSet(void);
│ │ │ │ -
56
│ │ │ │ -
64void Vnm_sigIntClear(void);
│ │ │ │ -
65
│ │ │ │ -
73int Vnm_jmpOk(void);
│ │ │ │ -
74
│ │ │ │ -
82void Vnm_jmpOkSet(void);
│ │ │ │ -
83
│ │ │ │ -
91void Vnm_jmpOkClear(void);
│ │ │ │ -
92
│ │ │ │ -
100jmp_buf *Vnm_signalInit(void);
│ │ │ │ -
101
│ │ │ │ -
109void Vnm_regHand(void);
│ │ │ │ -
110
│ │ │ │ -
119void Vnm_sigHand(int num);
│ │ │ │ -
120
│ │ │ │ -
125#define VPOW_SAFE(x,y) (Vnm_powsafe(x,y))
│ │ │ │ -
126
│ │ │ │ -
136double Vnm_powsafe(double x, double y);
│ │ │ │ -
137
│ │ │ │ -
145void Vnm_typeChk(void);
│ │ │ │ -
146
│ │ │ │ -
160double Vnm_epsmac(void);
│ │ │ │ -
161
│ │ │ │ -
196int Vnm_gentokens(char *buf, char **argv,
│ │ │ │ -
197 const int argvmax, const char *white, const char *comment);
│ │ │ │ -
198
│ │ │ │ -
203#define VTIMERS 100
│ │ │ │ -
204
│ │ │ │ -
214void Vnm_tstart(int timer, const char *name);
│ │ │ │ -
215
│ │ │ │ -
225void Vnm_tstop(int timer, const char *name);
│ │ │ │ -
226
│ │ │ │ -
236char *Vnm_getuser(char *user, int usermax);
│ │ │ │ -
237
│ │ │ │ -
247char *Vnm_getos(char *os, int osmax);
│ │ │ │ -
248
│ │ │ │ -
258char *Vnm_gethost(char *host, int hostmax);
│ │ │ │ +
30#ifndef _VPRED_H_
│ │ │ │ +
31#define _VPRED_H_
│ │ │ │ +
32
│ │ │ │ +
33#include <maloc/maloc_base.h>
│ │ │ │ +
34
│ │ │ │ +
35/* random() prototype seems to be missing in <stdlib.h> */
│ │ │ │ +
36/*
│ │ │ │ +
37 * if !defined(VOSF1)
│ │ │ │ +
38 * extern long int random(void);
│ │ │ │ +
39 * endif
│ │ │ │ +
40 */
│ │ │ │ +
41
│ │ │ │ +
42/* On some machines, the exact arithmetic routines might be defeated by the */
│ │ │ │ +
43/* use of internal extended precision floating-point registers. Sometimes */
│ │ │ │ +
44/* this problem can be fixed by defining certain values to be volatile, */
│ │ │ │ +
45/* thus forcing them to be stored to memory and rounded off. This isn't */
│ │ │ │ +
46/* a great solution, though, as it slows the arithmetic down. */
│ │ │ │ +
47/* */
│ │ │ │ +
48/* To try this out, write "#define INEXACT volatile" below. Normally, */
│ │ │ │ +
49/* however, INEXACT should be defined to be nothing. ("#define INEXACT".) */
│ │ │ │ +
50
│ │ │ │ +
52#define INEXACT /* Nothing */
│ │ │ │ +
53/* #define INEXACT volatile */
│ │ │ │ +
54
│ │ │ │ +
56#define REAL double
│ │ │ │ +
57
│ │ │ │ +
59#define REALPRINT doubleprint
│ │ │ │ +
60
│ │ │ │ +
63#define REALRAND doublerand
│ │ │ │ +
64
│ │ │ │ +
67#define NARROWRAND narrowdoublerand
│ │ │ │ +
68
│ │ │ │ +
70#define UNIFORMRAND uniformdoublerand
│ │ │ │ +
71
│ │ │ │ +
84void Vpred_exactinit(void);
│ │ │ │ +
85
│ │ │ │ + │ │ │ │ +
98
│ │ │ │ + │ │ │ │ +
111
│ │ │ │ + │ │ │ │ +
124
│ │ │ │ +
139REAL Vpred_orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd);
│ │ │ │ +
140
│ │ │ │ + │ │ │ │ +
156
│ │ │ │ + │ │ │ │ +
172
│ │ │ │ +
185REAL Vpred_incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd);
│ │ │ │ +
186
│ │ │ │ + │ │ │ │ +
200
│ │ │ │ + │ │ │ │ +
214
│ │ │ │ +
228REAL Vpred_insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe);
│ │ │ │ +
229
│ │ │ │ +
243REAL Vpred_inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe);
│ │ │ │ +
244
│ │ │ │ +
258REAL Vpred_insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe);
│ │ │ │
259
│ │ │ │ -
279char *Vnm_gethome(char *path, int pathmax);
│ │ │ │ -
280
│ │ │ │ -
297char *Vnm_getcwd(char *path, int pathmax);
│ │ │ │ -
298
│ │ │ │ -
307int Vnm_chdir(const char *path);
│ │ │ │ -
308
│ │ │ │ -
317int Vnm_mkdir(const char *path);
│ │ │ │ -
318
│ │ │ │ -
327int Vnm_system(const char *cmd);
│ │ │ │ -
328
│ │ │ │ -
337int Vnm_systemBack(const char *cmd);
│ │ │ │ -
338
│ │ │ │ -
347int Vnm_systemKill(const char *cmd);
│ │ │ │ -
348
│ │ │ │ -
359int Vnm_exec(int argc, char **argv);
│ │ │ │ -
360
│ │ │ │ -
371void Vnm_sleep(int nusecs);
│ │ │ │ -
372
│ │ │ │ -
380int Vnm_ioTag(void);
│ │ │ │ -
381
│ │ │ │ -
389int Vnm_nTags(void);
│ │ │ │ -
390
│ │ │ │ -
400void Vnm_setIoTag(int myTag, int numTags);
│ │ │ │ -
401
│ │ │ │ -
429FILE *Vnm_open(const int unit);
│ │ │ │ -
430
│ │ │ │ -
440int Vnm_close(const int unit);
│ │ │ │ -
441
│ │ │ │ -
451void Vnm_flush(const int unit);
│ │ │ │ -
452
│ │ │ │ -
463void Vnm_redirect(const int flag);
│ │ │ │ -
464
│ │ │ │ -
475void Vnm_print(const int unit, const char *format, ...);
│ │ │ │ -
476
│ │ │ │ -
490void Vnm_tprint(const int unit, const char *format, ...);
│ │ │ │ -
491
│ │ │ │ -
501void Vnm_qsort(int *u, int size);
│ │ │ │ -
502
│ │ │ │ -
513void Vnm_qsortOrd(int *u, int *ord, int size);
│ │ │ │ -
514
│ │ │ │ -
524void Vnm_dqsort(double *u, int size);
│ │ │ │ -
525
│ │ │ │ -
536void Vnm_dqsortOrd(double *u, int *ord, int size);
│ │ │ │ -
537
│ │ │ │ -
538#endif /* _VNM_H_ */
│ │ │ │ -
539
│ │ │ │ +
260#endif /* _VPRED_H_ */
│ │ │ │ +
261
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ -
int Vnm_mkdir(const char *path)
Interact with the system to make a new directory.
│ │ │ │ -
void Vnm_sigHand(int num)
Handle events such as SIGINT. We must have first been registered with "Vnm_signalInit".
│ │ │ │ -
int Vnm_close(const int unit)
Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in this routine.
│ │ │ │ -
char * Vnm_getos(char *os, int osmax)
Ask the system for the operating system name.
│ │ │ │ -
int Vnm_ioTag(void)
Return my I/O tag.
│ │ │ │ -
void Vnm_print(const int unit, const char *format,...)
External interface to the console i/o routine. We MUST NOT use VASSERT (or Vnm_print!...
│ │ │ │ -
void Vnm_setIoTag(int myTag, int numTags)
Set my id.
│ │ │ │ -
double Vnm_powsafe(double x, double y)
A safe VPOW function (avoids division by zero).
│ │ │ │ -
void Vnm_qsortOrd(int *u, int *ord, int size)
Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ -
int Vnm_nTags(void)
Return the total number of tags.
│ │ │ │ -
void Vnm_sigIntClear(void)
Signal and setjmp handling routine. Clear the signal interrupt flag.
│ │ │ │ -
void Vnm_flush(const int unit)
Attempt to flush the specified i/o stream. We MUST NOT use VASSERT (or Vnm_print!) in this routine.
│ │ │ │ -
FILE * Vnm_open(const int unit)
Open an I/O console.
│ │ │ │ -
int Vnm_sigInt(void)
Signal and setjmp handling routine. Return the signal interrupt flag.
│ │ │ │ -
int Vnm_system(const char *cmd)
An improved ANSI-C "system" call.
│ │ │ │ -
int Vnm_exec(int argc, char **argv)
An improved UNIX "exec" call. This routine does not return except on error.
│ │ │ │ -
void Vnm_dqsortOrd(double *u, int *ord, int size)
Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ -
void Vnm_jmpOkSet(void)
Signal and setjmp handling routine. Set the "okay-to-jump" flag.
│ │ │ │ -
void Vnm_tstart(int timer, const char *name)
Starts the timer on the particular machine.
│ │ │ │ -
char * Vnm_gethost(char *host, int hostmax)
Ask the system for the hostname.
│ │ │ │ -
void Vnm_sleep(int nusecs)
Implement a sleep function with microsecond resolution.
│ │ │ │ -
void Vnm_jmpOkClear(void)
Signal and setjmp handling routine. Clear the "okay-to-jump" flag.
│ │ │ │ -
jmp_buf * Vnm_signalInit(void)
Initialize the signal handling data structures.
│ │ │ │ -
int Vnm_chdir(const char *path)
Interact with the system to change the working directory.
│ │ │ │ -
void Vnm_typeChk(void)
Check out the sizes of various datatypes.
│ │ │ │ -
int Vnm_jmpOk(void)
Signal and setjmp handling routine. Return the "ok-to-jump" flag.
│ │ │ │ -
void Vnm_tprint(const int unit, const char *format,...)
Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or Vnm_print!) in this routine.
│ │ │ │ -
char * Vnm_gethome(char *path, int pathmax)
Ask the system for the home directory.
│ │ │ │ -
double Vnm_epsmac(void)
Computes the unit roundoff of the machine in single precision. This is defined as the smallest posi...
│ │ │ │ -
int Vnm_systemBack(const char *cmd)
A background variant of the ANSI-C "system" call.
│ │ │ │ -
int Vnm_gentokens(char *buf, char **argv, const int argvmax, const char *white, const char *comment)
Generate an [argv,argc] pair from a character string "buf" (assumed NULL-terminated) in which tokens ...
│ │ │ │ -
int Vnm_systemKill(const char *cmd)
Something like a UNIX "killall" call.
│ │ │ │ -
void Vnm_qsort(int *u, int size)
Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ -
void Vnm_sigIntSet(void)
Signal and setjmp handling routine. Set the signal interrupt flag.
│ │ │ │ -
void Vnm_redirect(const int flag)
Set/unset the redirect flag for UNIT zero. When redirected, I/O goes to the file: ${MCSH_HOME}/io....
│ │ │ │ -
char * Vnm_getcwd(char *path, int pathmax)
Ask the system for the current working directory.
│ │ │ │ -
char * Vnm_getuser(char *user, int usermax)
Ask the system for the username.
│ │ │ │ -
void Vnm_regHand(void)
Register the signal handler with the operating system.
│ │ │ │ -
void Vnm_dqsort(double *u, int size)
Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ -
void Vnm_tstop(int timer, const char *name)
Stops the timer on the particular machine.
│ │ │ │ +
REAL Vpred_orient2d(REAL *pa, REAL *pb, REAL *pc)
Adaptive exact 2D orientation test. Robust.
│ │ │ │ +
REAL Vpred_orient3dfast(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Approximate 3D orientation test. Nonrobust.
│ │ │ │ +
#define REAL
float or double
Definition: vpred.h:56
│ │ │ │ +
REAL Vpred_orient3dexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Exact 3D orientation test. Robust.
│ │ │ │ +
REAL Vpred_inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
Approximate 3D insphere test. Nonrobust.
│ │ │ │ +
REAL Vpred_orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Adaptive exact 3D orientation test. Robust.
│ │ │ │ +
REAL Vpred_insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
Exact 3D insphere test. Robust.
│ │ │ │ +
void Vpred_exactinit(void)
Initialize the variables used for exact arithmetic.
│ │ │ │ +
REAL Vpred_incircleexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Exact 2D incircle test. Robust.
│ │ │ │ +
REAL Vpred_insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
Adaptive exact 3D insphere test. Robust.
│ │ │ │ +
REAL Vpred_orient2dfast(REAL *pa, REAL *pb, REAL *pc)
Approximate 2D orientation test. Nonrobust.
│ │ │ │ +
REAL Vpred_orient2dexact(REAL *pa, REAL *pb, REAL *pc)
Exact 2D orientation test. Robust.
│ │ │ │ +
REAL Vpred_incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Adaptive exact 2D incircle test. Robust.
│ │ │ │ +
REAL Vpred_incirclefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Approximate 2D incircle test. Nonrobust.
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,236 +3,121 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -vnm.h │ │ │ │ │ +vpred.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ 1 │ │ │ │ │ - 33#ifndef _VNM_H_ │ │ │ │ │ - 34#define _VNM_H_ │ │ │ │ │ - 35 │ │ │ │ │ - 36#include │ │ │ │ │ - 37 │ │ │ │ │ - 38 │ │ │ │ │ -46int Vnm_sigInt(void); │ │ │ │ │ - 47 │ │ │ │ │ -55void Vnm_sigIntSet(void); │ │ │ │ │ - 56 │ │ │ │ │ -64void Vnm_sigIntClear(void); │ │ │ │ │ - 65 │ │ │ │ │ -73int Vnm_jmpOk(void); │ │ │ │ │ - 74 │ │ │ │ │ -82void Vnm_jmpOkSet(void); │ │ │ │ │ - 83 │ │ │ │ │ -91void Vnm_jmpOkClear(void); │ │ │ │ │ - 92 │ │ │ │ │ -100jmp_buf *Vnm_signalInit(void); │ │ │ │ │ - 101 │ │ │ │ │ -109void Vnm_regHand(void); │ │ │ │ │ - 110 │ │ │ │ │ -119void Vnm_sigHand(int num); │ │ │ │ │ - 120 │ │ │ │ │ -125#define VPOW_SAFE(x,y) (Vnm_powsafe(x,y)) │ │ │ │ │ - 126 │ │ │ │ │ -136double Vnm_powsafe(double x, double y); │ │ │ │ │ - 137 │ │ │ │ │ -145void Vnm_typeChk(void); │ │ │ │ │ - 146 │ │ │ │ │ -160double Vnm_epsmac(void); │ │ │ │ │ - 161 │ │ │ │ │ -196int Vnm_gentokens(char *buf, char **argv, │ │ │ │ │ - 197 const int argvmax, const char *white, const char *comment); │ │ │ │ │ - 198 │ │ │ │ │ -203#define VTIMERS 100 │ │ │ │ │ - 204 │ │ │ │ │ -214void Vnm_tstart(int timer, const char *name); │ │ │ │ │ - 215 │ │ │ │ │ -225void Vnm_tstop(int timer, const char *name); │ │ │ │ │ - 226 │ │ │ │ │ -236char *Vnm_getuser(char *user, int usermax); │ │ │ │ │ - 237 │ │ │ │ │ -247char *Vnm_getos(char *os, int osmax); │ │ │ │ │ - 248 │ │ │ │ │ -258char *Vnm_gethost(char *host, int hostmax); │ │ │ │ │ + 30#ifndef _VPRED_H_ │ │ │ │ │ + 31#define _VPRED_H_ │ │ │ │ │ + 32 │ │ │ │ │ + 33#include │ │ │ │ │ + 34 │ │ │ │ │ + 35/* random() prototype seems to be missing in */ │ │ │ │ │ + 36/* │ │ │ │ │ + 37 * if !defined(VOSF1) │ │ │ │ │ + 38 * extern long int random(void); │ │ │ │ │ + 39 * endif │ │ │ │ │ + 40 */ │ │ │ │ │ + 41 │ │ │ │ │ + 42/* On some machines, the exact arithmetic routines might be defeated by the │ │ │ │ │ +*/ │ │ │ │ │ + 43/* use of internal extended precision floating-point registers. Sometimes */ │ │ │ │ │ + 44/* this problem can be fixed by defining certain values to be volatile, */ │ │ │ │ │ + 45/* thus forcing them to be stored to memory and rounded off. This isn't */ │ │ │ │ │ + 46/* a great solution, though, as it slows the arithmetic down. */ │ │ │ │ │ + 47/* */ │ │ │ │ │ + 48/* To try this out, write "#define INEXACT volatile" below. Normally, */ │ │ │ │ │ + 49/* however, INEXACT should be defined to be nothing. ("#define INEXACT".) */ │ │ │ │ │ + 50 │ │ │ │ │ +52#define INEXACT /* Nothing */ │ │ │ │ │ + 53/* #define INEXACT volatile */ │ │ │ │ │ + 54 │ │ │ │ │ +56#define REAL double │ │ │ │ │ + 57 │ │ │ │ │ +59#define REALPRINT doubleprint │ │ │ │ │ + 60 │ │ │ │ │ +63#define REALRAND doublerand │ │ │ │ │ + 64 │ │ │ │ │ +67#define NARROWRAND narrowdoublerand │ │ │ │ │ + 68 │ │ │ │ │ +70#define UNIFORMRAND uniformdoublerand │ │ │ │ │ + 71 │ │ │ │ │ +84void Vpred_exactinit(void); │ │ │ │ │ + 85 │ │ │ │ │ +97REAL Vpred_orient2d(REAL *pa, REAL *pb, REAL *pc); │ │ │ │ │ + 98 │ │ │ │ │ +110REAL Vpred_orient2dfast(REAL *pa, REAL *pb, REAL *pc); │ │ │ │ │ + 111 │ │ │ │ │ +123REAL Vpred_orient2dexact(REAL *pa, REAL *pb, REAL *pc); │ │ │ │ │ + 124 │ │ │ │ │ +139REAL Vpred_orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ + 140 │ │ │ │ │ +155REAL Vpred_orient3dfast(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ + 156 │ │ │ │ │ +171REAL Vpred_orient3dexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ + 172 │ │ │ │ │ +185REAL Vpred_incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ + 186 │ │ │ │ │ +199REAL Vpred_incirclefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ + 200 │ │ │ │ │ +213REAL Vpred_incircleexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ + 214 │ │ │ │ │ +228REAL Vpred_insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe); │ │ │ │ │ + 229 │ │ │ │ │ +243REAL Vpred_inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe); │ │ │ │ │ + 244 │ │ │ │ │ +258REAL Vpred_insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe); │ │ │ │ │ 259 │ │ │ │ │ -279char *Vnm_gethome(char *path, int pathmax); │ │ │ │ │ - 280 │ │ │ │ │ -297char *Vnm_getcwd(char *path, int pathmax); │ │ │ │ │ - 298 │ │ │ │ │ -307int Vnm_chdir(const char *path); │ │ │ │ │ - 308 │ │ │ │ │ -317int Vnm_mkdir(const char *path); │ │ │ │ │ - 318 │ │ │ │ │ -327int Vnm_system(const char *cmd); │ │ │ │ │ - 328 │ │ │ │ │ -337int Vnm_systemBack(const char *cmd); │ │ │ │ │ - 338 │ │ │ │ │ -347int Vnm_systemKill(const char *cmd); │ │ │ │ │ - 348 │ │ │ │ │ -359int Vnm_exec(int argc, char **argv); │ │ │ │ │ - 360 │ │ │ │ │ -371void Vnm_sleep(int nusecs); │ │ │ │ │ - 372 │ │ │ │ │ -380int Vnm_ioTag(void); │ │ │ │ │ - 381 │ │ │ │ │ -389int Vnm_nTags(void); │ │ │ │ │ - 390 │ │ │ │ │ -400void Vnm_setIoTag(int myTag, int numTags); │ │ │ │ │ - 401 │ │ │ │ │ -429FILE *Vnm_open(const int unit); │ │ │ │ │ - 430 │ │ │ │ │ -440int Vnm_close(const int unit); │ │ │ │ │ - 441 │ │ │ │ │ -451void Vnm_flush(const int unit); │ │ │ │ │ - 452 │ │ │ │ │ -463void Vnm_redirect(const int flag); │ │ │ │ │ - 464 │ │ │ │ │ -475void Vnm_print(const int unit, const char *format, ...); │ │ │ │ │ - 476 │ │ │ │ │ -490void Vnm_tprint(const int unit, const char *format, ...); │ │ │ │ │ - 491 │ │ │ │ │ -501void Vnm_qsort(int *u, int size); │ │ │ │ │ - 502 │ │ │ │ │ -513void Vnm_qsortOrd(int *u, int *ord, int size); │ │ │ │ │ - 514 │ │ │ │ │ -524void Vnm_dqsort(double *u, int size); │ │ │ │ │ - 525 │ │ │ │ │ -536void Vnm_dqsortOrd(double *u, int *ord, int size); │ │ │ │ │ - 537 │ │ │ │ │ - 538#endif /* _VNM_H_ */ │ │ │ │ │ - 539 │ │ │ │ │ + 260#endif /* _VPRED_H_ */ │ │ │ │ │ + 261 │ │ │ │ │ maloc_base.h │ │ │ │ │ The base (or foundation) header for MALOC. │ │ │ │ │ -Vnm_mkdir │ │ │ │ │ -int Vnm_mkdir(const char *path) │ │ │ │ │ -Interact with the system to make a new directory. │ │ │ │ │ -Vnm_sigHand │ │ │ │ │ -void Vnm_sigHand(int num) │ │ │ │ │ -Handle events such as SIGINT. We must have first been registered with │ │ │ │ │ -"Vnm_signalInit". │ │ │ │ │ -Vnm_close │ │ │ │ │ -int Vnm_close(const int unit) │ │ │ │ │ -Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in this routine. │ │ │ │ │ -Vnm_getos │ │ │ │ │ -char * Vnm_getos(char *os, int osmax) │ │ │ │ │ -Ask the system for the operating system name. │ │ │ │ │ -Vnm_ioTag │ │ │ │ │ -int Vnm_ioTag(void) │ │ │ │ │ -Return my I/O tag. │ │ │ │ │ -Vnm_print │ │ │ │ │ -void Vnm_print(const int unit, const char *format,...) │ │ │ │ │ -External interface to the console i/o routine. We MUST NOT use VASSERT (or │ │ │ │ │ -Vnm_print!... │ │ │ │ │ -Vnm_setIoTag │ │ │ │ │ -void Vnm_setIoTag(int myTag, int numTags) │ │ │ │ │ -Set my id. │ │ │ │ │ -Vnm_powsafe │ │ │ │ │ -double Vnm_powsafe(double x, double y) │ │ │ │ │ -A safe VPOW function (avoids division by zero). │ │ │ │ │ -Vnm_qsortOrd │ │ │ │ │ -void Vnm_qsortOrd(int *u, int *ord, int size) │ │ │ │ │ -Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ -Vnm_nTags │ │ │ │ │ -int Vnm_nTags(void) │ │ │ │ │ -Return the total number of tags. │ │ │ │ │ -Vnm_sigIntClear │ │ │ │ │ -void Vnm_sigIntClear(void) │ │ │ │ │ -Signal and setjmp handling routine. Clear the signal interrupt flag. │ │ │ │ │ -Vnm_flush │ │ │ │ │ -void Vnm_flush(const int unit) │ │ │ │ │ -Attempt to flush the specified i/o stream. We MUST NOT use VASSERT (or │ │ │ │ │ -Vnm_print!) in this routine. │ │ │ │ │ -Vnm_open │ │ │ │ │ -FILE * Vnm_open(const int unit) │ │ │ │ │ -Open an I/O console. │ │ │ │ │ -Vnm_sigInt │ │ │ │ │ -int Vnm_sigInt(void) │ │ │ │ │ -Signal and setjmp handling routine. Return the signal interrupt flag. │ │ │ │ │ -Vnm_system │ │ │ │ │ -int Vnm_system(const char *cmd) │ │ │ │ │ -An improved ANSI-C "system" call. │ │ │ │ │ -Vnm_exec │ │ │ │ │ -int Vnm_exec(int argc, char **argv) │ │ │ │ │ -An improved UNIX "exec" call. This routine does not return except on error. │ │ │ │ │ -Vnm_dqsortOrd │ │ │ │ │ -void Vnm_dqsortOrd(double *u, int *ord, int size) │ │ │ │ │ -Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ -Vnm_jmpOkSet │ │ │ │ │ -void Vnm_jmpOkSet(void) │ │ │ │ │ -Signal and setjmp handling routine. Set the "okay-to-jump" flag. │ │ │ │ │ -Vnm_tstart │ │ │ │ │ -void Vnm_tstart(int timer, const char *name) │ │ │ │ │ -Starts the timer on the particular machine. │ │ │ │ │ -Vnm_gethost │ │ │ │ │ -char * Vnm_gethost(char *host, int hostmax) │ │ │ │ │ -Ask the system for the hostname. │ │ │ │ │ -Vnm_sleep │ │ │ │ │ -void Vnm_sleep(int nusecs) │ │ │ │ │ -Implement a sleep function with microsecond resolution. │ │ │ │ │ -Vnm_jmpOkClear │ │ │ │ │ -void Vnm_jmpOkClear(void) │ │ │ │ │ -Signal and setjmp handling routine. Clear the "okay-to-jump" flag. │ │ │ │ │ -Vnm_signalInit │ │ │ │ │ -jmp_buf * Vnm_signalInit(void) │ │ │ │ │ -Initialize the signal handling data structures. │ │ │ │ │ -Vnm_chdir │ │ │ │ │ -int Vnm_chdir(const char *path) │ │ │ │ │ -Interact with the system to change the working directory. │ │ │ │ │ -Vnm_typeChk │ │ │ │ │ -void Vnm_typeChk(void) │ │ │ │ │ -Check out the sizes of various datatypes. │ │ │ │ │ -Vnm_jmpOk │ │ │ │ │ -int Vnm_jmpOk(void) │ │ │ │ │ -Signal and setjmp handling routine. Return the "ok-to-jump" flag. │ │ │ │ │ -Vnm_tprint │ │ │ │ │ -void Vnm_tprint(const int unit, const char *format,...) │ │ │ │ │ -Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or Vnm_print!) in │ │ │ │ │ -this routine. │ │ │ │ │ -Vnm_gethome │ │ │ │ │ -char * Vnm_gethome(char *path, int pathmax) │ │ │ │ │ -Ask the system for the home directory. │ │ │ │ │ -Vnm_epsmac │ │ │ │ │ -double Vnm_epsmac(void) │ │ │ │ │ -Computes the unit roundoff of the machine in single precision. This is defined │ │ │ │ │ -as the smallest posi... │ │ │ │ │ -Vnm_systemBack │ │ │ │ │ -int Vnm_systemBack(const char *cmd) │ │ │ │ │ -A background variant of the ANSI-C "system" call. │ │ │ │ │ -Vnm_gentokens │ │ │ │ │ -int Vnm_gentokens(char *buf, char **argv, const int argvmax, const char *white, │ │ │ │ │ -const char *comment) │ │ │ │ │ -Generate an [argv,argc] pair from a character string "buf" (assumed NULL- │ │ │ │ │ -terminated) in which tokens ... │ │ │ │ │ -Vnm_systemKill │ │ │ │ │ -int Vnm_systemKill(const char *cmd) │ │ │ │ │ -Something like a UNIX "killall" call. │ │ │ │ │ -Vnm_qsort │ │ │ │ │ -void Vnm_qsort(int *u, int size) │ │ │ │ │ -Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ -Vnm_sigIntSet │ │ │ │ │ -void Vnm_sigIntSet(void) │ │ │ │ │ -Signal and setjmp handling routine. Set the signal interrupt flag. │ │ │ │ │ -Vnm_redirect │ │ │ │ │ -void Vnm_redirect(const int flag) │ │ │ │ │ -Set/unset the redirect flag for UNIT zero. When redirected, I/O goes to the │ │ │ │ │ -file: ${MCSH_HOME}/io.... │ │ │ │ │ -Vnm_getcwd │ │ │ │ │ -char * Vnm_getcwd(char *path, int pathmax) │ │ │ │ │ -Ask the system for the current working directory. │ │ │ │ │ -Vnm_getuser │ │ │ │ │ -char * Vnm_getuser(char *user, int usermax) │ │ │ │ │ -Ask the system for the username. │ │ │ │ │ -Vnm_regHand │ │ │ │ │ -void Vnm_regHand(void) │ │ │ │ │ -Register the signal handler with the operating system. │ │ │ │ │ -Vnm_dqsort │ │ │ │ │ -void Vnm_dqsort(double *u, int size) │ │ │ │ │ -Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ -Vnm_tstop │ │ │ │ │ -void Vnm_tstop(int timer, const char *name) │ │ │ │ │ -Stops the timer on the particular machine. │ │ │ │ │ +Vpred_orient2d │ │ │ │ │ +REAL Vpred_orient2d(REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ +Adaptive exact 2D orientation test. Robust. │ │ │ │ │ +Vpred_orient3dfast │ │ │ │ │ +REAL Vpred_orient3dfast(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +Approximate 3D orientation test. Nonrobust. │ │ │ │ │ +REAL │ │ │ │ │ +#define REAL │ │ │ │ │ +float or double │ │ │ │ │ +Definition: vpred.h:56 │ │ │ │ │ +Vpred_orient3dexact │ │ │ │ │ +REAL Vpred_orient3dexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +Exact 3D orientation test. Robust. │ │ │ │ │ +Vpred_inspherefast │ │ │ │ │ +REAL Vpred_inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ +Approximate 3D insphere test. Nonrobust. │ │ │ │ │ +Vpred_orient3d │ │ │ │ │ +REAL Vpred_orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +Adaptive exact 3D orientation test. Robust. │ │ │ │ │ +Vpred_insphereexact │ │ │ │ │ +REAL Vpred_insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ +Exact 3D insphere test. Robust. │ │ │ │ │ +Vpred_exactinit │ │ │ │ │ +void Vpred_exactinit(void) │ │ │ │ │ +Initialize the variables used for exact arithmetic. │ │ │ │ │ +Vpred_incircleexact │ │ │ │ │ +REAL Vpred_incircleexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +Exact 2D incircle test. Robust. │ │ │ │ │ +Vpred_insphere │ │ │ │ │ +REAL Vpred_insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ +Adaptive exact 3D insphere test. Robust. │ │ │ │ │ +Vpred_orient2dfast │ │ │ │ │ +REAL Vpred_orient2dfast(REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ +Approximate 2D orientation test. Nonrobust. │ │ │ │ │ +Vpred_orient2dexact │ │ │ │ │ +REAL Vpred_orient2dexact(REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ +Exact 2D orientation test. Robust. │ │ │ │ │ +Vpred_incircle │ │ │ │ │ +REAL Vpred_incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +Adaptive exact 2D incircle test. Robust. │ │ │ │ │ +Vpred_incirclefast │ │ │ │ │ +REAL Vpred_incirclefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ +Approximate 2D incircle test. Nonrobust. │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00024.dot │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ -digraph "vnm.h" │ │ │ │ +digraph "vpred.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vnm.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ + Node1 [label="vpred.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node2 [label="maloc/maloc_base.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00002.html",tooltip="The base (or foundation) header for MALOC."]; │ │ │ │ Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node3 [label="assert.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node4 [label="ctype.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00025.dot │ │ │ │ @@ -1,33 +1,27 @@ │ │ │ │ -digraph "vnm.h" │ │ │ │ +digraph "vpred.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vnm.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ + Node1 [label="vpred.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 [label="vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ + Node2 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ - Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node4 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ - Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node5 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ - Node5 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node6 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ - Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node7 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ - Node7 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node8 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ - Node8 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node9 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ - Node9 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node9 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node10 [label="vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ - Node10 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ + Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node4 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node5 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ + Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node6 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ + Node6 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node2 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node7 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ + Node7 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node8 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ + Node8 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node8 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00026.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vset.h File Reference │ │ │ │ +MALOC: vnm.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -40,116 +40,190 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -Classes | │ │ │ │ -Typedefs | │ │ │ │ +Macros | │ │ │ │ Functions
│ │ │ │ -
vset.h File Reference
│ │ │ │ +
vnm.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ -

Class Vset: a dynamic set object. │ │ │ │ +

Header file for an ISO C [V]irtual [N]umerical [M]achine. │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ -#include <maloc/vnm.h>
│ │ │ │ -#include <maloc/vmem.h>
│ │ │ │
│ │ │ │ -Include dependency graph for vset.h:
│ │ │ │ +Include dependency graph for vnm.h:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Classes

struct  sVset
 Contains public data members for Vset class. More...
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ -Typedefs

typedef struct sVset Vset
 Declaration of the Vset class as the Vset structure. More...
 

│ │ │ │ +Macros

#define VPOW_SAFE(x, y)   (Vnm_powsafe(x,y))
 A safe VPOW function (avoids division by zero) More...
 
#define VTIMERS   100
 the maiximal timer constant More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Functions

int Vset_num (Vset *thee)
 Return the number of things currently in the list. More...
 
char * Vset_access (Vset *thee, int i)
 Access an object in an arbitrary place in the list. More...
 
char * Vset_create (Vset *thee)
 Create an object on the end of the list.
│ │ │ │ - More...
 
char * Vset_first (Vset *thee)
 Return the first object in the set.
│ │ │ │ - More...
 
char * Vset_last (Vset *thee)
 Return the last object in the set. More...
 
char * Vset_next (Vset *thee)
 Return the next object in the set. More...
 
char * Vset_prev (Vset *thee)
 Return the prev object in the set. More...
 
char * Vset_peekFirst (Vset *thee)
 Return the first object in the set. More...
 
char * Vset_peekLast (Vset *thee)
 Return the last object in the set. More...
 
void Vset_destroy (Vset *thee)
 Delete an object from the end of the list. More...
 
VsetVset_ctor (Vmem *vmem, const char *tname, int tsize, int tmaxNum, int ioKey)
 Construct the set object. More...
 
void Vset_dtor (Vset **thee)
 Destroy the set object. More...
 
char * Vset_createLast (Vset *thee)
 Create an object on the end of the list. More...
 
void Vset_destroyLast (Vset *thee)
 Free up the object currently on the end of the list. More...
 
void Vset_initData (Vset *thee)
 Initialize the Vset data (thee). More...
 
void Vset_reset (Vset *thee)
 Release all Ram controlled by this (thee) and re-initialize. More...
 
void Vset_check (Vset *thee, int *tnum, int *tsize, int *tVecUse, int *tVecMal, int *tVecOhd)
 Get and return the RAM Control Block (thee) information. More...
 
void Vset_memChk (Vset *thee)
 Print the exact current malloc usage. More...
 
int Vnm_sigInt (void)
 Signal and setjmp handling routine. Return the signal interrupt flag. More...
 
void Vnm_sigIntSet (void)
 Signal and setjmp handling routine. Set the signal interrupt flag. More...
 
void Vnm_sigIntClear (void)
 Signal and setjmp handling routine. Clear the signal interrupt flag.
│ │ │ │ + More...
 
int Vnm_jmpOk (void)
 Signal and setjmp handling routine. Return the "ok-to-jump" flag. More...
 
void Vnm_jmpOkSet (void)
 Signal and setjmp handling routine. Set the "okay-to-jump" flag. More...
 
void Vnm_jmpOkClear (void)
 Signal and setjmp handling routine. Clear the "okay-to-jump" flag.
│ │ │ │ + More...
 
jmp_buf * Vnm_signalInit (void)
 Initialize the signal handling data structures. More...
 
void Vnm_regHand (void)
 Register the signal handler with the operating system. More...
 
void Vnm_sigHand (int num)
 Handle events such as SIGINT. We must have first been registered with "Vnm_signalInit". More...
 
double Vnm_powsafe (double x, double y)
 A safe VPOW function (avoids division by zero).
│ │ │ │ + More...
 
void Vnm_typeChk (void)
 Check out the sizes of various datatypes.
│ │ │ │ + More...
 
double Vnm_epsmac (void)
 Computes the unit roundoff of the machine in single
│ │ │ │ + precision. This is defined as the smallest positive machine number u such that 1.0d0 + u .ne. 1.0d0 (in single precision).
│ │ │ │ +
│ │ │ │ + A safe hardcoded machine epsilon as alternative:
│ │ │ │ + double value;
│ │ │ │ + value = 1.0e-9;
│ │ │ │ + return value;. More...
 
int Vnm_gentokens (char *buf, char **argv, const int argvmax, const char *white, const char *comment)
 Generate an [argv,argc] pair from a character string "buf" (assumed NULL-terminated) in which tokens are separated by whitespace "white" with possible comments "comment" occuring. THE INPUT STRING IS MODIFIED HERE! More...
 
void Vnm_tstart (int timer, const char *name)
 Starts the timer on the particular machine.
│ │ │ │ + More...
 
void Vnm_tstop (int timer, const char *name)
 Stops the timer on the particular machine. More...
 
char * Vnm_getuser (char *user, int usermax)
 Ask the system for the username. More...
 
char * Vnm_getos (char *os, int osmax)
 Ask the system for the operating system name. More...
 
char * Vnm_gethost (char *host, int hostmax)
 Ask the system for the hostname. More...
 
char * Vnm_gethome (char *path, int pathmax)
 Ask the system for the home directory. More...
 
char * Vnm_getcwd (char *path, int pathmax)
 Ask the system for the current working directory. More...
 
int Vnm_chdir (const char *path)
 Interact with the system to change the working directory. More...
 
int Vnm_mkdir (const char *path)
 Interact with the system to make a new directory.
│ │ │ │ + More...
 
int Vnm_system (const char *cmd)
 An improved ANSI-C "system" call. More...
 
int Vnm_systemBack (const char *cmd)
 A background variant of the ANSI-C "system" call.
│ │ │ │ + More...
 
int Vnm_systemKill (const char *cmd)
 Something like a UNIX "killall" call. More...
 
int Vnm_exec (int argc, char **argv)
 An improved UNIX "exec" call. This routine does not return except on error. More...
 
void Vnm_sleep (int nusecs)
 Implement a sleep function with microsecond resolution. More...
 
int Vnm_ioTag (void)
 Return my I/O tag. More...
 
int Vnm_nTags (void)
 Return the total number of tags. More...
 
void Vnm_setIoTag (int myTag, int numTags)
 Set my id. More...
 
FILE * Vnm_open (const int unit)
 Open an I/O console. More...
 
int Vnm_close (const int unit)
 Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in this routine. More...
 
void Vnm_flush (const int unit)
 Attempt to flush the specified i/o stream. We MUST NOT use VASSERT (or Vnm_print!) in this routine. More...
 
void Vnm_redirect (const int flag)
 Set/unset the redirect flag for UNIT zero. When redirected, I/O goes to the file: ${MCSH_HOME}/io.mc. We MUST NOT use VASSERT (or Vnm_print!) in this routine. More...
 
void Vnm_print (const int unit, const char *format,...)
 External interface to the console i/o routine.
│ │ │ │ + We MUST NOT use VASSERT (or Vnm_print!) in this routine. More...
 
void Vnm_tprint (const int unit, const char *format,...)
 Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or Vnm_print!) in this routine. More...
 
void Vnm_qsort (int *u, int size)
 Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ + More...
 
void Vnm_qsortOrd (int *u, int *ord, int size)
 Front-end to quick sort integer array from [-large] to [+large]. More...
 
void Vnm_dqsort (double *u, int size)
 Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ + More...
 
void Vnm_dqsortOrd (double *u, int *ord, int size)
 Front-end to quick sort integer array from [-large] to [+large]. More...
 
│ │ │ │

Detailed Description

│ │ │ │ -

Class Vset: a dynamic set object.

│ │ │ │ +

Header file for an ISO C [V]irtual [N]umerical [M]achine.

│ │ │ │
Author
Michael Holst
│ │ │ │
Note
None
│ │ │ │
Version
│ │ │ │ -
Id
vset.h,v 1.20 2010/08/12 05:40:37 fetk Exp
│ │ │ │ +
Id
vnm.h,v 1.22 2010/08/12 05:40:36 fetk Exp
│ │ │ │
Attention
*
│ │ │ │  * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │  * Copyright (C) 1994-- Michael Holst
│ │ │ │  *
│ │ │ │  * This library is free software; you can redistribute it and/or
│ │ │ │  * modify it under the terms of the GNU Lesser General Public
│ │ │ │  * License as published by the Free Software Foundation; either
│ │ │ │ @@ -161,14 +235,1449 @@
│ │ │ │  * Lesser General Public License for more details.
│ │ │ │  *
│ │ │ │  * You should have received a copy of the GNU Lesser General Public
│ │ │ │  * License along with this library; if not, write to the Free Software
│ │ │ │  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
│ │ │ │  * 
│ │ │ │  *  
│ │ │ │ -
│ │ │ │ +

Macro Definition Documentation

│ │ │ │ + │ │ │ │ +

◆ VPOW_SAFE

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
#define VPOW_SAFE( x,
 
)   (Vnm_powsafe(x,y))
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

A safe VPOW function (avoids division by zero)

│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ VTIMERS

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
#define VTIMERS   100
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

the maiximal timer constant

│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ +

Function Documentation

│ │ │ │ + │ │ │ │ +

◆ Vnm_chdir()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_chdir (const char * path)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Interact with the system to change the working directory.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
Success enumeration
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ +
pathPointer to the path
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_close()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_close (const int unit)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in this routine.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
Success enumeration
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ +
unitindex for the file unit
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_dqsort()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_dqsort (double * u,
int size 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ +

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
uPointer to quick sort integer array
sizesize of the integer array
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_dqsortOrd()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_dqsortOrd (double * u,
int * ord,
int size 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Front-end to quick sort integer array from [-large] to [+large].

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
uPointer to quick sort integer array
ordPointer to reordered array
sizesize of the integer array
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_epsmac()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
double Vnm_epsmac (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Computes the unit roundoff of the machine in single
│ │ │ │ + precision. This is defined as the smallest positive machine number u such that 1.0d0 + u .ne. 1.0d0 (in single precision).
│ │ │ │ +
│ │ │ │ + A safe hardcoded machine epsilon as alternative:
│ │ │ │ + double value;
│ │ │ │ + value = 1.0e-9;
│ │ │ │ + return value;.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
the unit roundoff of the machine in single precision.
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_exec()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_exec (int argc,
char ** argv 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

An improved UNIX "exec" call. This routine does not return except on error.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
no return except on error
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
argcnumber of the command line arguments
argvthe command line arguments
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_flush()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_flush (const int unit)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Attempt to flush the specified i/o stream. We MUST NOT use VASSERT (or Vnm_print!) in this routine.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ +
unitindex for the file unit
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_gentokens()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_gentokens (char * buf,
char ** argv,
const int argvmax,
const char * white,
const char * comment 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Generate an [argv,argc] pair from a character string "buf" (assumed NULL-terminated) in which tokens are separated by whitespace "white" with possible comments "comment" occuring. THE INPUT STRING IS MODIFIED HERE!

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
│ │ │ │ + Again, the input string "buf" IS MODIFIED; white space characters (defined in the input string "white") are replaced by the NULL character '\0'. The output "argv" is simply a list of pointers
│ │ │ │ + to the start of the tokens in "buf", which are NULL-terminated
│ │ │ │ + after we replace the white space with NULLs.
│ │ │ │ +
│ │ │ │ + We follow convention and "NULL"-terminate "argv" by setting the pointer following the last token to "VNULL". The return value is "argc", the number of tokens found (not including the terminating NULL pointer). For safety you must pass in the maximal length of argv in the parameter "argvmax".
│ │ │ │ +
│ │ │ │ + If we encounter a token which begins with a comment character (defined in the input string "comment"), then we ignore the rest of the tokens in the input buffer "buf". This is suitable
│ │ │ │ + for parsing shell languages such as sh/ksh/bash which have comments that start with e.g. "#" and continue until a newline.
│ │ │ │ +
│ │ │ │ + We DO NOT use the C library function strtok in this routine. (There are some bad implementations of strtok around apparently; the internal state variables maintained by strtok can get very
│ │ │ │ + messed up if you use strtok in multiple places in a code.)
│ │ │ │ +
Returns
number of tokens
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
bufbuffer containing message
argvthe command line arguments
argvmaxmaximal number of the command line arguments
whitePointer to the input string
commenttoken which begins with a comment character
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_getcwd()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
char * Vnm_getcwd (char * path,
int pathmax 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Ask the system for the current working directory.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
│ │ │ │ + Consider it an error if we can't return something useful; therefore we will VASSERT(path!=VNULL) before returning.
│ │ │ │ +
│ │ │ │ + Note that unlike Vnm_gethome, a call to Vnm_getcwd returns the current directory, possibly modified from call to call.
│ │ │ │ +
│ │ │ │ + I.e., calls to Vnm_chdir can change the current working
│ │ │ │ + directory; Vnm_getcwd returns the current directory, whatever that might be.
│ │ │ │ +
Returns
the current working directory
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
pathPointer to the path
pathmaxindex for the size of path
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_gethome()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
char * Vnm_gethome (char * path,
int pathmax 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Ask the system for the home directory.

│ │ │ │ +

=

Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
│ │ │ │ + The following preference order is used to set the home directory:
│ │ │ │ +
│ │ │ │ + MCSH_HOME (the user must define this in his environment)
│ │ │ │ + CWD (always defined as the current working directory)
│ │ │ │ +
│ │ │ │ + We consider it an error if we can't return something useful;
│ │ │ │ + therefore we will VASSERT(path!=VNULL) before returning.
│ │ │ │ +
│ │ │ │ + We settle on a home directory the first time we are called, and then we simply return this fixed home directory forever.
│ │ │ │ + In other words, the first call to Vnm_gethome, regardless of
│ │ │ │ + who makes the call, establishes the home directory for everyone else (as long as everyone goes through Vnm_gethome!).
│ │ │ │ +
Returns
the home directory
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
pathPointer to the path
pathmaxindex for the size of path
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_gethost()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
char * Vnm_gethost (char * host,
int hostmax 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Ask the system for the hostname.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
the hostname
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
hostPointer to the hostname.
hostmaxindex for maximal size of host name
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_getos()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
char * Vnm_getos (char * os,
int osmax 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Ask the system for the operating system name.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
the operating system name
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
osPointer to the OS type
osmaxindex for maximal size of OS name
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_getuser()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
char * Vnm_getuser (char * user,
int usermax 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Ask the system for the username.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
the username of the system
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
userPointer to the username of the system
usermaxindex for maximal size of user name
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_ioTag()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_ioTag (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Return my I/O tag.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
my I/O tag.
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_jmpOk()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_jmpOk (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Signal and setjmp handling routine. Return the "ok-to-jump" flag.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
"ok-to-jump" flag.
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_jmpOkClear()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_jmpOkClear (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Signal and setjmp handling routine. Clear the "okay-to-jump" flag.
│ │ │ │ +

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_jmpOkSet()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_jmpOkSet (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Signal and setjmp handling routine. Set the "okay-to-jump" flag.

│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Returns
None
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_mkdir()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_mkdir (const char * path)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Interact with the system to make a new directory.
│ │ │ │ +

│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Returns
Success enumeration
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ +
pathPointer to the path
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_nTags()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_nTags (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Return the total number of tags.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
total number of tags.
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_open()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
FILE * Vnm_open (const int unit)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Open an I/O console.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
We MUST NOT use VASSERT (or Vnm_print!) in this routine.   
│ │ │ │ +
│ │ │ │ +The following codes are used:                                               
│ │ │ │ +
│ │ │ │ +unit#      C output unit      
│ │ │ │ +-------    -------------                                                
│ │ │ │ +
│ │ │ │ +unit==0    garbage   -- Non-interactive i/o; lots of stuff                        
│ │ │ │ +                        (can be redirected to ${MCSH_HOME/io.mc)
│ │ │ │ +
│ │ │ │ +unit==1    stdout    -- standard output (Interactive I/O)            
│ │ │ │ +
│ │ │ │ +unit==2    stderr    -- standard error (IMPORTANT interactive I/O)          
│ │ │ │ +
│ │ │ │ +unit==3    history   -- History file ${MCSH_HOME}/hist.mcsh                       
│ │ │ │ +
│ │ │ │ +unit==else /dev/null -- Error...                                
│ │ │ │ +
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ +
unitindex for the file unit
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_powsafe()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
double Vnm_powsafe (double x,
double y 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

A safe VPOW function (avoids division by zero).
│ │ │ │ +

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
output value of a VPOW function
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
xinput parameter
yinput parameter
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_print()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_print (const int unit,
const char * format,
 ... 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

External interface to the console i/o routine.
│ │ │ │ + We MUST NOT use VASSERT (or Vnm_print!) in this routine.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
unitindex for the file unit
formatPointer to the print format
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_qsort()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_qsort (int * u,
int size 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ +

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
uPointer to quick sort integer array
sizesize of the integer array
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_qsortOrd()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_qsortOrd (int * u,
int * ord,
int size 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Front-end to quick sort integer array from [-large] to [+large].

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None *
│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
uPointer to quick sort integer array
ordPointer to reordered array
sizesize of the integer array
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_redirect()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_redirect (const int flag)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Set/unset the redirect flag for UNIT zero. When redirected, I/O goes to the file: ${MCSH_HOME}/io.mc. We MUST NOT use VASSERT (or Vnm_print!) in this routine.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ +
flagindex for the redirect flag
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_regHand()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_regHand (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Register the signal handler with the operating system.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_setIoTag()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_setIoTag (int myTag,
int numTags 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Set my id.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
myTagindex for the tag
numTagsnumber of tags
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_sigHand()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_sigHand (int num)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Handle events such as SIGINT. We must have first been registered with "Vnm_signalInit".

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_sigInt()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_sigInt (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Signal and setjmp handling routine. Return the signal interrupt flag.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
Signal interrupt flag.
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_sigIntClear()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_sigIntClear (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Signal and setjmp handling routine. Clear the signal interrupt flag.
│ │ │ │ +

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_sigIntSet()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_sigIntSet (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Signal and setjmp handling routine. Set the signal interrupt flag.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_signalInit()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
jmp_buf * Vnm_signalInit (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Initialize the signal handling data structures.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
the signal handling data structures
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_sleep()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_sleep (int nusecs)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Implement a sleep function with microsecond resolution.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ + This is hacked out of the "sleep_us" example in Rick Steven's Advance Unix Programming book.
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ +
nusecsnumber of microseconds
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_system()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_system (const char * cmd)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

An improved ANSI-C "system" call.

│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Returns
Success enumeration
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ +
cmdPointer to the command
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_systemBack()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_systemBack (const char * cmd)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

A background variant of the ANSI-C "system" call.
│ │ │ │ +

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
Success enumeration
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ +
cmdPointer to the command
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_systemKill()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
int Vnm_systemKill (const char * cmd)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Something like a UNIX "killall" call.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
Success enumeration
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ +
cmdPointer to the command
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_tprint()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_tprint (const int unit,
const char * format,
 ... 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or Vnm_print!) in this routine.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o) For a tag to be added, both of the following conditions must hold:
│ │ │ │ + Vnm_ioTag() >= 0 (I.e., I must have been given a tag)
│ │ │ │ + Vnm_nTags() > 1 (I must not be the only one given a tag)
│ │ │ │ +
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
unitindex for the file unit
formatPointer to the print format
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_tstart()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_tstart (int timer,
const char * name 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Starts the timer on the particular machine.
│ │ │ │ +

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
timerindex for the starting timer
namePointer to the object
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_tstop()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_tstop (int timer,
const char * name 
)
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Stops the timer on the particular machine.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ +
Parameters
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
timerindex for the starting timer
namePointer to the object
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ Vnm_typeChk()

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
void Vnm_typeChk (void )
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

Check out the sizes of various datatypes.
│ │ │ │ +

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
Useful constants and functions (timers, epsilon, token generators, i/o)
│ │ │ │ +
Returns
None
│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,101 +3,193 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -Classes | Typedefs | Functions │ │ │ │ │ -vset.h File Reference │ │ │ │ │ -Vset_class │ │ │ │ │ -Class Vset: a dynamic set object. More... │ │ │ │ │ +Macros | Functions │ │ │ │ │ +vnm.h File Reference │ │ │ │ │ +Header file for an ISO C [V]irtual [N]umerical [M]achine. More... │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ -Include dependency graph for vset.h: │ │ │ │ │ +Include dependency graph for vnm.h: │ │ │ │ │ This graph shows which files directly or indirectly include this file: │ │ │ │ │ Go_to_the_source_code_of_this_file. │ │ │ │ │ - Classes │ │ │ │ │ -struct  sVset │ │ │ │ │ -  Contains public data members for Vset class. More... │ │ │ │ │ -  │ │ │ │ │ - Typedefs │ │ │ │ │ -typedef struct sVset Vset │ │ │ │ │ -  Declaration of the Vset class as the Vset structure. │ │ │ │ │ - More... │ │ │ │ │ + Macros │ │ │ │ │ +#define VPOW_SAFE(x, y)   (Vnm_powsafe(x,y)) │ │ │ │ │ +  A safe VPOW function (avoids division by zero) More... │ │ │ │ │ +  │ │ │ │ │ +#define VTIMERS   100 │ │ │ │ │ +  the maiximal timer constant More... │ │ │ │ │   │ │ │ │ │ Functions │ │ │ │ │ - int Vset_num (Vset *thee) │ │ │ │ │ -  Return the number of things currently in the list. More... │ │ │ │ │ + int Vnm_sigInt (void) │ │ │ │ │ +  Signal and setjmp handling routine. Return the signal interrupt │ │ │ │ │ + flag. More... │ │ │ │ │ +  │ │ │ │ │ + void Vnm_sigIntSet (void) │ │ │ │ │ +  Signal and setjmp handling routine. Set the signal interrupt flag. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + void Vnm_sigIntClear (void) │ │ │ │ │ + Signal and setjmp handling routine. Clear the signal interrupt flag. │ │ │ │ │ +  │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + int Vnm_jmpOk (void) │ │ │ │ │ +  Signal and setjmp handling routine. Return the "ok-to-jump" flag. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + void Vnm_jmpOkSet (void) │ │ │ │ │ +  Signal and setjmp handling routine. Set the "okay-to-jump" flag. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + void Vnm_jmpOkClear (void) │ │ │ │ │ +  Signal and setjmp handling routine. Clear the "okay-to-jump" flag. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ +jmp_buf * Vnm_signalInit (void) │ │ │ │ │ +  Initialize the signal handling data structures. More... │ │ │ │ │ +  │ │ │ │ │ + void Vnm_regHand (void) │ │ │ │ │ +  Register the signal handler with the operating system. More... │ │ │ │ │ +  │ │ │ │ │ + void Vnm_sigHand (int num) │ │ │ │ │ +  Handle events such as SIGINT. We must have first been registered │ │ │ │ │ + with "Vnm_signalInit". More... │ │ │ │ │ +  │ │ │ │ │ + double Vnm_powsafe (double x, double y) │ │ │ │ │ +  A safe VPOW function (avoids division by zero). │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + void Vnm_typeChk (void) │ │ │ │ │ +  Check out the sizes of various datatypes. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + double Vnm_epsmac (void) │ │ │ │ │ + Computes the unit roundoff of the machine in single │ │ │ │ │ + precision. This is defined as the smallest positive machine number u │ │ │ │ │ + such that 1.0d0 + u .ne. 1.0d0 (in single precision). │ │ │ │ │ +  │ │ │ │ │ + A safe hardcoded machine epsilon as alternative: │ │ │ │ │ + double value; │ │ │ │ │ + value = 1.0e-9; │ │ │ │ │ + return value;. More... │ │ │ │ │ +  │ │ │ │ │ + int Vnm_gentokens (char *buf, char **argv, const int argvmax, const char │ │ │ │ │ + *white, const char *comment) │ │ │ │ │ + Generate an [argv,argc] pair from a character string "buf" (assumed │ │ │ │ │ +  NULL-terminated) in which tokens are separated by whitespace "white" │ │ │ │ │ + with possible comments "comment" occuring. THE INPUT STRING IS │ │ │ │ │ + MODIFIED HERE! More... │ │ │ │ │ +  │ │ │ │ │ + void Vnm_tstart (int timer, const char *name) │ │ │ │ │ +  Starts the timer on the particular machine. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + void Vnm_tstop (int timer, const char *name) │ │ │ │ │ +  Stops the timer on the particular machine. More... │ │ │ │ │ +  │ │ │ │ │ + char * Vnm_getuser (char *user, int usermax) │ │ │ │ │ +  Ask the system for the username. More... │ │ │ │ │ +  │ │ │ │ │ + char * Vnm_getos (char *os, int osmax) │ │ │ │ │ +  Ask the system for the operating system name. More... │ │ │ │ │ +  │ │ │ │ │ + char * Vnm_gethost (char *host, int hostmax) │ │ │ │ │ +  Ask the system for the hostname. More... │ │ │ │ │ +  │ │ │ │ │ + char * Vnm_gethome (char *path, int pathmax) │ │ │ │ │ +  Ask the system for the home directory. More... │ │ │ │ │ +  │ │ │ │ │ + char * Vnm_getcwd (char *path, int pathmax) │ │ │ │ │ +  Ask the system for the current working directory. More... │ │ │ │ │ +  │ │ │ │ │ + int Vnm_chdir (const char *path) │ │ │ │ │ +  Interact with the system to change the working directory. More... │ │ │ │ │ +  │ │ │ │ │ + int Vnm_mkdir (const char *path) │ │ │ │ │ +  Interact with the system to make a new directory. │ │ │ │ │ + More... │ │ │ │ │   │ │ │ │ │ -char * Vset_access (Vset *thee, int i) │ │ │ │ │ -  Access an object in an arbitrary place in the list. More... │ │ │ │ │ + int Vnm_system (const char *cmd) │ │ │ │ │ +  An improved ANSI-C "system" call. More... │ │ │ │ │   │ │ │ │ │ -char * Vset_create (Vset *thee) │ │ │ │ │ -  Create an object on the end of the list. │ │ │ │ │ - More... │ │ │ │ │ + int Vnm_systemBack (const char *cmd) │ │ │ │ │ +  A background variant of the ANSI-C "system" call. │ │ │ │ │ + More... │ │ │ │ │   │ │ │ │ │ -char * Vset_first (Vset *thee) │ │ │ │ │ -  Return the first object in the set. │ │ │ │ │ - More... │ │ │ │ │ + int Vnm_systemKill (const char *cmd) │ │ │ │ │ +  Something like a UNIX "killall" call. More... │ │ │ │ │   │ │ │ │ │ -char * Vset_last (Vset *thee) │ │ │ │ │ -  Return the last object in the set. More... │ │ │ │ │ + int Vnm_exec (int argc, char **argv) │ │ │ │ │ +  An improved UNIX "exec" call. This routine does not return except on │ │ │ │ │ + error. More... │ │ │ │ │   │ │ │ │ │ -char * Vset_next (Vset *thee) │ │ │ │ │ -  Return the next object in the set. More... │ │ │ │ │ + void Vnm_sleep (int nusecs) │ │ │ │ │ +  Implement a sleep function with microsecond resolution. More... │ │ │ │ │   │ │ │ │ │ -char * Vset_prev (Vset *thee) │ │ │ │ │ -  Return the prev object in the set. More... │ │ │ │ │ + int Vnm_ioTag (void) │ │ │ │ │ +  Return my I/O tag. More... │ │ │ │ │   │ │ │ │ │ -char * Vset_peekFirst (Vset *thee) │ │ │ │ │ -  Return the first object in the set. More... │ │ │ │ │ + int Vnm_nTags (void) │ │ │ │ │ +  Return the total number of tags. More... │ │ │ │ │   │ │ │ │ │ -char * Vset_peekLast (Vset *thee) │ │ │ │ │ -  Return the last object in the set. More... │ │ │ │ │ + void Vnm_setIoTag (int myTag, int numTags) │ │ │ │ │ +  Set my id. More... │ │ │ │ │   │ │ │ │ │ - void Vset_destroy (Vset *thee) │ │ │ │ │ -  Delete an object from the end of the list. More... │ │ │ │ │ + FILE * Vnm_open (const int unit) │ │ │ │ │ +  Open an I/O console. More... │ │ │ │ │   │ │ │ │ │ -Vset * Vset_ctor (Vmem *vmem, const char *tname, int tsize, int tmaxNum, int │ │ │ │ │ - ioKey) │ │ │ │ │ -  Construct the set object. More... │ │ │ │ │ + int Vnm_close (const int unit) │ │ │ │ │ +  Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in │ │ │ │ │ + this routine. More... │ │ │ │ │   │ │ │ │ │ - void Vset_dtor (Vset **thee) │ │ │ │ │ -  Destroy the set object. More... │ │ │ │ │ + void Vnm_flush (const int unit) │ │ │ │ │ +  Attempt to flush the specified i/o stream. We MUST NOT use VASSERT │ │ │ │ │ + (or Vnm_print!) in this routine. More... │ │ │ │ │   │ │ │ │ │ -char * Vset_createLast (Vset *thee) │ │ │ │ │ -  Create an object on the end of the list. More... │ │ │ │ │ + void Vnm_redirect (const int flag) │ │ │ │ │ + Set/unset the redirect flag for UNIT zero. When redirected, I/O goes │ │ │ │ │ +  to the file: ${MCSH_HOME}/io.mc. We MUST NOT use VASSERT (or │ │ │ │ │ + Vnm_print!) in this routine. More... │ │ │ │ │   │ │ │ │ │ - void Vset_destroyLast (Vset *thee) │ │ │ │ │ -  Free up the object currently on the end of the list. More... │ │ │ │ │ + void Vnm_print (const int unit, const char *format,...) │ │ │ │ │ +  External interface to the console i/o routine. │ │ │ │ │ + We MUST NOT use VASSERT (or Vnm_print!) in this routine. More... │ │ │ │ │   │ │ │ │ │ - void Vset_initData (Vset *thee) │ │ │ │ │ -  Initialize the Vset data (thee). More... │ │ │ │ │ + void Vnm_tprint (const int unit, const char *format,...) │ │ │ │ │ +  Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or │ │ │ │ │ + Vnm_print!) in this routine. More... │ │ │ │ │   │ │ │ │ │ - void Vset_reset (Vset *thee) │ │ │ │ │ -  Release all Ram controlled by this (thee) and re-initialize. More... │ │ │ │ │ + void Vnm_qsort (int *u, int size) │ │ │ │ │ +  Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ + More... │ │ │ │ │   │ │ │ │ │ - void Vset_check (Vset *thee, int *tnum, int *tsize, int *tVecUse, int │ │ │ │ │ - *tVecMal, int *tVecOhd) │ │ │ │ │ -  Get and return the RAM Control Block (thee) information. More... │ │ │ │ │ + void Vnm_qsortOrd (int *u, int *ord, int size) │ │ │ │ │ +  Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ + More... │ │ │ │ │   │ │ │ │ │ - void Vset_memChk (Vset *thee) │ │ │ │ │ -  Print the exact current malloc usage. More... │ │ │ │ │ + void Vnm_dqsort (double *u, int size) │ │ │ │ │ +  Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + void Vnm_dqsortOrd (double *u, int *ord, int size) │ │ │ │ │ +  Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ + More... │ │ │ │ │   │ │ │ │ │ ***** Detailed Description ***** │ │ │ │ │ -Class Vset: a dynamic set object. │ │ │ │ │ +Header file for an ISO C [V]irtual [N]umerical [M]achine. │ │ │ │ │ Author │ │ │ │ │ Michael Holst │ │ │ │ │ Note │ │ │ │ │ None │ │ │ │ │ Version │ │ │ │ │ Id │ │ │ │ │ - vset.h,v 1.20 2010/08/12 05:40:37 fetk Exp │ │ │ │ │ + vnm.h,v 1.22 2010/08/12 05:40:36 fetk Exp │ │ │ │ │ Attention │ │ │ │ │ * │ │ │ │ │ * MALOC = < Minimal Abstraction Layer for Object-oriented C > │ │ │ │ │ * Copyright (C) 1994-- Michael Holst │ │ │ │ │ * │ │ │ │ │ * This library is free software; you can redistribute it and/or │ │ │ │ │ * modify it under the terms of the GNU Lesser General Public │ │ │ │ │ @@ -110,10 +202,592 @@ │ │ │ │ │ * Lesser General Public License for more details. │ │ │ │ │ * │ │ │ │ │ * You should have received a copy of the GNU Lesser General Public │ │ │ │ │ * License along with this library; if not, write to the Free Software │ │ │ │ │ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA │ │ │ │ │ * │ │ │ │ │ * │ │ │ │ │ +***** Macro Definition Documentation ***** │ │ │ │ │ +***** ◆ VPOW_SAFE ***** │ │ │ │ │ +#define VPOW_SAFE (  x, │ │ │ │ │ +  y  │ │ │ │ │ + )    (Vnm_powsafe(x,y)) │ │ │ │ │ +A safe VPOW function (avoids division by zero) │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ +***** ◆ VTIMERS ***** │ │ │ │ │ +#define VTIMERS   100 │ │ │ │ │ +the maiximal timer constant │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ +***** Function Documentation ***** │ │ │ │ │ +***** ◆ Vnm_chdir() ***** │ │ │ │ │ +int Vnm_chdir ( const char * path ) │ │ │ │ │ +Interact with the system to change the working directory. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + Success enumeration │ │ │ │ │ + Parameters │ │ │ │ │ + path Pointer to the path │ │ │ │ │ +***** ◆ Vnm_close() ***** │ │ │ │ │ +int Vnm_close ( const int unit ) │ │ │ │ │ +Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in this routine. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + Success enumeration │ │ │ │ │ + Parameters │ │ │ │ │ + unit index for the file unit │ │ │ │ │ +***** ◆ Vnm_dqsort() ***** │ │ │ │ │ +void Vnm_dqsort ( double * u, │ │ │ │ │ + int  size  │ │ │ │ │ + ) │ │ │ │ │ +Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + u Pointer to quick sort integer array │ │ │ │ │ + size size of the integer array │ │ │ │ │ +***** ◆ Vnm_dqsortOrd() ***** │ │ │ │ │ +void Vnm_dqsortOrd ( double * u, │ │ │ │ │ + int *  ord, │ │ │ │ │ + int  size  │ │ │ │ │ + ) │ │ │ │ │ +Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + u Pointer to quick sort integer array │ │ │ │ │ + ord Pointer to reordered array │ │ │ │ │ + size size of the integer array │ │ │ │ │ +***** ◆ Vnm_epsmac() ***** │ │ │ │ │ +double Vnm_epsmac ( void  ) │ │ │ │ │ +Computes the unit roundoff of the machine in single │ │ │ │ │ +precision. This is defined as the smallest positive machine number u such that │ │ │ │ │ +1.0d0 + u .ne. 1.0d0 (in single precision). │ │ │ │ │ + │ │ │ │ │ +A safe hardcoded machine epsilon as alternative: │ │ │ │ │ +double value; │ │ │ │ │ +value = 1.0e-9; │ │ │ │ │ +return value;. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + the unit roundoff of the machine in single precision. │ │ │ │ │ +***** ◆ Vnm_exec() ***** │ │ │ │ │ +int Vnm_exec ( int  argc, │ │ │ │ │ + char ** argv  │ │ │ │ │ + ) │ │ │ │ │ +An improved UNIX "exec" call. This routine does not return except on error. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + no return except on error │ │ │ │ │ + Parameters │ │ │ │ │ + argc number of the command line arguments │ │ │ │ │ + argv the command line arguments │ │ │ │ │ +***** ◆ Vnm_flush() ***** │ │ │ │ │ +void Vnm_flush ( const int unit ) │ │ │ │ │ +Attempt to flush the specified i/o stream. We MUST NOT use VASSERT (or │ │ │ │ │ +Vnm_print!) in this routine. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + unit index for the file unit │ │ │ │ │ +***** ◆ Vnm_gentokens() ***** │ │ │ │ │ +int Vnm_gentokens ( char *  buf, │ │ │ │ │ + char **  argv, │ │ │ │ │ + const int  argvmax, │ │ │ │ │ + const char * white, │ │ │ │ │ + const char * comment  │ │ │ │ │ + ) │ │ │ │ │ +Generate an [argv,argc] pair from a character string "buf" (assumed NULL- │ │ │ │ │ +terminated) in which tokens are separated by whitespace "white" with possible │ │ │ │ │ +comments "comment" occuring. THE INPUT STRING IS MODIFIED HERE! │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + │ │ │ │ │ + Again, the input string "buf" IS MODIFIED; white space characters │ │ │ │ │ + (defined in the input string "white") are replaced by the NULL character │ │ │ │ │ + '\0'. The output "argv" is simply a list of pointers │ │ │ │ │ + to the start of the tokens in "buf", which are NULL-terminated │ │ │ │ │ + after we replace the white space with NULLs. │ │ │ │ │ + │ │ │ │ │ + We follow convention and "NULL"-terminate "argv" by setting the pointer │ │ │ │ │ + following the last token to "VNULL". The return value is "argc", the │ │ │ │ │ + number of tokens found (not including the terminating NULL pointer). For │ │ │ │ │ + safety you must pass in the maximal length of argv in the parameter │ │ │ │ │ + "argvmax". │ │ │ │ │ + │ │ │ │ │ + If we encounter a token which begins with a comment character (defined in │ │ │ │ │ + the input string "comment"), then we ignore the rest of the tokens in the │ │ │ │ │ + input buffer "buf". This is suitable │ │ │ │ │ + for parsing shell languages such as sh/ksh/bash which have comments that │ │ │ │ │ + start with e.g. "#" and continue until a newline. │ │ │ │ │ + │ │ │ │ │ + We DO NOT use the C library function strtok in this routine. (There are │ │ │ │ │ + some bad implementations of strtok around apparently; the internal state │ │ │ │ │ + variables maintained by strtok can get very │ │ │ │ │ + messed up if you use strtok in multiple places in a code.) │ │ │ │ │ + Returns │ │ │ │ │ + number of tokens │ │ │ │ │ + Parameters │ │ │ │ │ + buf buffer containing message │ │ │ │ │ + argv the command line arguments │ │ │ │ │ + argvmax maximal number of the command line arguments │ │ │ │ │ + white Pointer to the input string │ │ │ │ │ + comment token which begins with a comment character │ │ │ │ │ +***** ◆ Vnm_getcwd() ***** │ │ │ │ │ +char * Vnm_getcwd ( char * path, │ │ │ │ │ + int  pathmax  │ │ │ │ │ + ) │ │ │ │ │ +Ask the system for the current working directory. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + │ │ │ │ │ + Consider it an error if we can't return something useful; therefore we │ │ │ │ │ + will VASSERT(path!=VNULL) before returning. │ │ │ │ │ + │ │ │ │ │ + Note that unlike Vnm_gethome, a call to Vnm_getcwd returns the current │ │ │ │ │ + directory, possibly modified from call to call. │ │ │ │ │ + │ │ │ │ │ + I.e., calls to Vnm_chdir can change the current working │ │ │ │ │ + directory; Vnm_getcwd returns the current directory, whatever that might │ │ │ │ │ + be. │ │ │ │ │ + Returns │ │ │ │ │ + the current working directory │ │ │ │ │ + Parameters │ │ │ │ │ + path Pointer to the path │ │ │ │ │ + pathmax index for the size of path │ │ │ │ │ +***** ◆ Vnm_gethome() ***** │ │ │ │ │ +char * Vnm_gethome ( char * path, │ │ │ │ │ + int  pathmax  │ │ │ │ │ + ) │ │ │ │ │ +Ask the system for the home directory. │ │ │ │ │ += │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + │ │ │ │ │ + The following preference order is used to set the home directory: │ │ │ │ │ + │ │ │ │ │ + MCSH_HOME (the user must define this in his environment) │ │ │ │ │ + CWD (always defined as the current working directory) │ │ │ │ │ + │ │ │ │ │ + We consider it an error if we can't return something useful; │ │ │ │ │ + therefore we will VASSERT(path!=VNULL) before returning. │ │ │ │ │ + │ │ │ │ │ + We settle on a home directory the first time we are called, and then we │ │ │ │ │ + simply return this fixed home directory forever. │ │ │ │ │ + In other words, the first call to Vnm_gethome, regardless of │ │ │ │ │ + who makes the call, establishes the home directory for everyone else (as │ │ │ │ │ + long as everyone goes through Vnm_gethome!). │ │ │ │ │ + Returns │ │ │ │ │ + the home directory │ │ │ │ │ + Parameters │ │ │ │ │ + path Pointer to the path │ │ │ │ │ + pathmax index for the size of path │ │ │ │ │ +***** ◆ Vnm_gethost() ***** │ │ │ │ │ +char * Vnm_gethost ( char * host, │ │ │ │ │ + int  hostmax  │ │ │ │ │ + ) │ │ │ │ │ +Ask the system for the hostname. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + the hostname │ │ │ │ │ + Parameters │ │ │ │ │ + host Pointer to the hostname. │ │ │ │ │ + hostmax index for maximal size of host name │ │ │ │ │ +***** ◆ Vnm_getos() ***** │ │ │ │ │ +char * Vnm_getos ( char * os, │ │ │ │ │ + int  osmax  │ │ │ │ │ + ) │ │ │ │ │ +Ask the system for the operating system name. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + the operating system name │ │ │ │ │ + Parameters │ │ │ │ │ + os Pointer to the OS type │ │ │ │ │ + osmax index for maximal size of OS name │ │ │ │ │ +***** ◆ Vnm_getuser() ***** │ │ │ │ │ +char * Vnm_getuser ( char * user, │ │ │ │ │ + int  usermax  │ │ │ │ │ + ) │ │ │ │ │ +Ask the system for the username. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + the username of the system │ │ │ │ │ + Parameters │ │ │ │ │ + user Pointer to the username of the system │ │ │ │ │ + usermax index for maximal size of user name │ │ │ │ │ +***** ◆ Vnm_ioTag() ***** │ │ │ │ │ +int Vnm_ioTag ( void  ) │ │ │ │ │ +Return my I/O tag. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + my I/O tag. │ │ │ │ │ +***** ◆ Vnm_jmpOk() ***** │ │ │ │ │ +int Vnm_jmpOk ( void  ) │ │ │ │ │ +Signal and setjmp handling routine. Return the "ok-to-jump" flag. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + "ok-to-jump" flag. │ │ │ │ │ +***** ◆ Vnm_jmpOkClear() ***** │ │ │ │ │ +void Vnm_jmpOkClear ( void  ) │ │ │ │ │ +Signal and setjmp handling routine. Clear the "okay-to-jump" flag. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ +***** ◆ Vnm_jmpOkSet() ***** │ │ │ │ │ +void Vnm_jmpOkSet ( void  ) │ │ │ │ │ +Signal and setjmp handling routine. Set the "okay-to-jump" flag. │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ +***** ◆ Vnm_mkdir() ***** │ │ │ │ │ +int Vnm_mkdir ( const char * path ) │ │ │ │ │ +Interact with the system to make a new directory. │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Returns │ │ │ │ │ + Success enumeration │ │ │ │ │ + Parameters │ │ │ │ │ + path Pointer to the path │ │ │ │ │ +***** ◆ Vnm_nTags() ***** │ │ │ │ │ +int Vnm_nTags ( void  ) │ │ │ │ │ +Return the total number of tags. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + total number of tags. │ │ │ │ │ +***** ◆ Vnm_open() ***** │ │ │ │ │ +FILE * Vnm_open ( const int unit ) │ │ │ │ │ +Open an I/O console. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + We MUST NOT use VASSERT (or Vnm_print!) in this routine. │ │ │ │ │ + │ │ │ │ │ + The following codes are used: │ │ │ │ │ + │ │ │ │ │ + │ │ │ │ │ + unit# C output unit │ │ │ │ │ + ------- ------------- │ │ │ │ │ + │ │ │ │ │ + unit==0 garbage -- Non-interactive i/o; lots of stuff │ │ │ │ │ + │ │ │ │ │ + (can be redirected to ${MCSH_HOME/io.mc) │ │ │ │ │ + │ │ │ │ │ + unit==1 stdout -- standard output (Interactive I/O) │ │ │ │ │ + │ │ │ │ │ + unit==2 stderr -- standard error (IMPORTANT interactive I/O) │ │ │ │ │ + │ │ │ │ │ + │ │ │ │ │ + unit==3 history -- History file ${MCSH_HOME}/hist.mcsh │ │ │ │ │ + │ │ │ │ │ + │ │ │ │ │ + unit==else /dev/null -- Error... │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + unit index for the file unit │ │ │ │ │ +***** ◆ Vnm_powsafe() ***** │ │ │ │ │ +double Vnm_powsafe ( double x, │ │ │ │ │ + double y  │ │ │ │ │ + ) │ │ │ │ │ +A safe VPOW function (avoids division by zero). │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + output value of a VPOW function │ │ │ │ │ + Parameters │ │ │ │ │ + x input parameter │ │ │ │ │ + y input parameter │ │ │ │ │ +***** ◆ Vnm_print() ***** │ │ │ │ │ +void Vnm_print ( const int  unit, │ │ │ │ │ + const char * format, │ │ │ │ │ +   ...  │ │ │ │ │ + ) │ │ │ │ │ +External interface to the console i/o routine. │ │ │ │ │ +We MUST NOT use VASSERT (or Vnm_print!) in this routine. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + unit index for the file unit │ │ │ │ │ + format Pointer to the print format │ │ │ │ │ +***** ◆ Vnm_qsort() ***** │ │ │ │ │ +void Vnm_qsort ( int * u, │ │ │ │ │ + int  size  │ │ │ │ │ + ) │ │ │ │ │ +Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + u Pointer to quick sort integer array │ │ │ │ │ + size size of the integer array │ │ │ │ │ +***** ◆ Vnm_qsortOrd() ***** │ │ │ │ │ +void Vnm_qsortOrd ( int * u, │ │ │ │ │ + int * ord, │ │ │ │ │ + int  size  │ │ │ │ │ + ) │ │ │ │ │ +Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None * │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Parameters │ │ │ │ │ + u Pointer to quick sort integer array │ │ │ │ │ + ord Pointer to reordered array │ │ │ │ │ + size size of the integer array │ │ │ │ │ +***** ◆ Vnm_redirect() ***** │ │ │ │ │ +void Vnm_redirect ( const int flag ) │ │ │ │ │ +Set/unset the redirect flag for UNIT zero. When redirected, I/O goes to the │ │ │ │ │ +file: ${MCSH_HOME}/io.mc. We MUST NOT use VASSERT (or Vnm_print!) in this │ │ │ │ │ +routine. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + flag index for the redirect flag │ │ │ │ │ +***** ◆ Vnm_regHand() ***** │ │ │ │ │ +void Vnm_regHand ( void  ) │ │ │ │ │ +Register the signal handler with the operating system. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ +***** ◆ Vnm_setIoTag() ***** │ │ │ │ │ +void Vnm_setIoTag ( int myTag, │ │ │ │ │ + int numTags  │ │ │ │ │ + ) │ │ │ │ │ +Set my id. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + myTag index for the tag │ │ │ │ │ + numTags number of tags │ │ │ │ │ +***** ◆ Vnm_sigHand() ***** │ │ │ │ │ +void Vnm_sigHand ( int num ) │ │ │ │ │ +Handle events such as SIGINT. We must have first been registered with │ │ │ │ │ +"Vnm_signalInit". │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ +***** ◆ Vnm_sigInt() ***** │ │ │ │ │ +int Vnm_sigInt ( void  ) │ │ │ │ │ +Signal and setjmp handling routine. Return the signal interrupt flag. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + Signal interrupt flag. │ │ │ │ │ +***** ◆ Vnm_sigIntClear() ***** │ │ │ │ │ +void Vnm_sigIntClear ( void  ) │ │ │ │ │ +Signal and setjmp handling routine. Clear the signal interrupt flag. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ +***** ◆ Vnm_sigIntSet() ***** │ │ │ │ │ +void Vnm_sigIntSet ( void  ) │ │ │ │ │ +Signal and setjmp handling routine. Set the signal interrupt flag. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ +***** ◆ Vnm_signalInit() ***** │ │ │ │ │ +jmp_buf * Vnm_signalInit ( void  ) │ │ │ │ │ +Initialize the signal handling data structures. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + the signal handling data structures │ │ │ │ │ +***** ◆ Vnm_sleep() ***** │ │ │ │ │ +void Vnm_sleep ( int nusecs ) │ │ │ │ │ +Implement a sleep function with microsecond resolution. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + This is hacked out of the "sleep_us" example in Rick Steven's Advance │ │ │ │ │ + Unix Programming book. │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + nusecs number of microseconds │ │ │ │ │ +***** ◆ Vnm_system() ***** │ │ │ │ │ +int Vnm_system ( const char * cmd ) │ │ │ │ │ +An improved ANSI-C "system" call. │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Returns │ │ │ │ │ + Success enumeration │ │ │ │ │ + Parameters │ │ │ │ │ + cmd Pointer to the command │ │ │ │ │ +***** ◆ Vnm_systemBack() ***** │ │ │ │ │ +int Vnm_systemBack ( const char * cmd ) │ │ │ │ │ +A background variant of the ANSI-C "system" call. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + Success enumeration │ │ │ │ │ + Parameters │ │ │ │ │ + cmd Pointer to the command │ │ │ │ │ +***** ◆ Vnm_systemKill() ***** │ │ │ │ │ +int Vnm_systemKill ( const char * cmd ) │ │ │ │ │ +Something like a UNIX "killall" call. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + Success enumeration │ │ │ │ │ + Parameters │ │ │ │ │ + cmd Pointer to the command │ │ │ │ │ +***** ◆ Vnm_tprint() ***** │ │ │ │ │ +void Vnm_tprint ( const int  unit, │ │ │ │ │ + const char * format, │ │ │ │ │ +   ...  │ │ │ │ │ + ) │ │ │ │ │ +Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or Vnm_print!) in │ │ │ │ │ +this routine. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + For a tag to be added, both of the following conditions must hold: │ │ │ │ │ + Vnm_ioTag() >= 0 (I.e., I must have been given a tag) │ │ │ │ │ + Vnm_nTags() > 1 (I must not be the only one given a tag) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + unit index for the file unit │ │ │ │ │ + format Pointer to the print format │ │ │ │ │ +***** ◆ Vnm_tstart() ***** │ │ │ │ │ +void Vnm_tstart ( int  timer, │ │ │ │ │ + const char * name  │ │ │ │ │ + ) │ │ │ │ │ +Starts the timer on the particular machine. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + timer index for the starting timer │ │ │ │ │ + name Pointer to the object │ │ │ │ │ +***** ◆ Vnm_tstop() ***** │ │ │ │ │ +void Vnm_tstop ( int  timer, │ │ │ │ │ + const char * name  │ │ │ │ │ + ) │ │ │ │ │ +Stops the timer on the particular machine. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ + Parameters │ │ │ │ │ + timer index for the starting timer │ │ │ │ │ + name Pointer to the object │ │ │ │ │ +***** ◆ Vnm_typeChk() ***** │ │ │ │ │ +void Vnm_typeChk ( void  ) │ │ │ │ │ +Check out the sizes of various datatypes. │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + Useful constants and functions (timers, epsilon, token generators, i/o) │ │ │ │ │ + Returns │ │ │ │ │ + None │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00026_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vset.h Source File │ │ │ │ +MALOC: vnm.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -39,196 +39,152 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
vset.h
│ │ │ │ +
vnm.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │ -
38#ifndef _VSET_H_
│ │ │ │ -
39#define _VSET_H_
│ │ │ │ -
40
│ │ │ │ -
41#include <maloc/maloc_base.h>
│ │ │ │ -
42
│ │ │ │ -
43#include <maloc/vnm.h>
│ │ │ │ -
44#include <maloc/vmem.h>
│ │ │ │ -
45
│ │ │ │ -
46/*
│ │ │ │ -
47 * ***************************************************************************
│ │ │ │ -
48 * Class Vset: Parameters and datatypes
│ │ │ │ -
49 * ***************************************************************************
│ │ │ │ -
50 */
│ │ │ │ -
51
│ │ │ │ -
57struct sVset {
│ │ │ │ -
58
│ │ │ │ - │ │ │ │ - │ │ │ │ -
63
│ │ │ │ -
65 int curT;
│ │ │ │ -
66
│ │ │ │ - │ │ │ │ -
70 int sizeT;
│ │ │ │ -
71
│ │ │ │ - │ │ │ │ -
75 int numT;
│ │ │ │ -
77 int prtT;
│ │ │ │ -
78
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
89
│ │ │ │ -
91 char **table;
│ │ │ │ +
33#ifndef _VNM_H_
│ │ │ │ +
34#define _VNM_H_
│ │ │ │ +
35
│ │ │ │ +
36#include <maloc/maloc_base.h>
│ │ │ │ +
37
│ │ │ │ +
38
│ │ │ │ +
46int Vnm_sigInt(void);
│ │ │ │ +
47
│ │ │ │ +
55void Vnm_sigIntSet(void);
│ │ │ │ +
56
│ │ │ │ +
64void Vnm_sigIntClear(void);
│ │ │ │ +
65
│ │ │ │ +
73int Vnm_jmpOk(void);
│ │ │ │ +
74
│ │ │ │ +
82void Vnm_jmpOkSet(void);
│ │ │ │ +
83
│ │ │ │ +
91void Vnm_jmpOkClear(void);
│ │ │ │
92
│ │ │ │ -
93};
│ │ │ │ -
94
│ │ │ │ -
100typedef struct sVset Vset;
│ │ │ │ +
100jmp_buf *Vnm_signalInit(void);
│ │ │ │
101
│ │ │ │ -
102/****************************************************************/
│ │ │ │ -
103/* Class Vset: Inlineable method (vset.c) */
│ │ │ │ -
104/****************************************************************/
│ │ │ │ -
105
│ │ │ │ -
106#if !defined(VINLINE_MALOC)
│ │ │ │ -
115 int Vset_num(Vset *thee);
│ │ │ │ -
116
│ │ │ │ -
126 char *Vset_access(Vset *thee, int i);
│ │ │ │ -
127
│ │ │ │ -
136 char *Vset_create(Vset *thee);
│ │ │ │ +
109void Vnm_regHand(void);
│ │ │ │ +
110
│ │ │ │ +
119void Vnm_sigHand(int num);
│ │ │ │ +
120
│ │ │ │ +
125#define VPOW_SAFE(x,y) (Vnm_powsafe(x,y))
│ │ │ │ +
126
│ │ │ │ +
136double Vnm_powsafe(double x, double y);
│ │ │ │
137
│ │ │ │ -
146 char *Vset_first(Vset *thee);
│ │ │ │ -
147
│ │ │ │ -
156 char *Vset_last(Vset *thee);
│ │ │ │ -
157
│ │ │ │ -
166 char *Vset_next(Vset *thee);
│ │ │ │ -
167
│ │ │ │ -
176 char *Vset_prev(Vset *thee);
│ │ │ │ -
177
│ │ │ │ -
186 char *Vset_peekFirst(Vset *thee);
│ │ │ │ -
187
│ │ │ │ -
196 char *Vset_peekLast(Vset *thee);
│ │ │ │ -
197
│ │ │ │ -
206 void Vset_destroy(Vset *thee);
│ │ │ │ -
207#else /* if defined(VINLINE_MALOC) */
│ │ │ │ -
216# define Vset_num(thee) ((thee)->numT)
│ │ │ │ -
217
│ │ │ │ -
227# define Vset_access(thee,i) ( \
│ │ │ │ -
228 ((i >= 0) && (i < thee->numT)) \
│ │ │ │ -
229 ? &((thee)->table[ (i)>>(thee)->blockPower ] \
│ │ │ │ -
230 [ (thee)->sizeT*((i)&(thee)->blockModulo) ]) \
│ │ │ │ -
231 : VNULL \
│ │ │ │ -
232 )
│ │ │ │ -
233
│ │ │ │ -
242# define Vset_create(thee) ( \
│ │ │ │ -
243 ( ((((thee)->numT)>>(thee)->blockPower) >= (thee)->numBlocks) \
│ │ │ │ -
244 || ((((thee)->numT+1)%(thee)->prtT) == 0) ) \
│ │ │ │ -
245 ? (Vset_createLast((thee))) \
│ │ │ │ -
246 : (++((thee)->numT), (Vset_access((thee),(thee)->numT-1))) \
│ │ │ │ -
247 )
│ │ │ │ +
145void Vnm_typeChk(void);
│ │ │ │ +
146
│ │ │ │ +
160double Vnm_epsmac(void);
│ │ │ │ +
161
│ │ │ │ +
196int Vnm_gentokens(char *buf, char **argv,
│ │ │ │ +
197 const int argvmax, const char *white, const char *comment);
│ │ │ │ +
198
│ │ │ │ +
203#define VTIMERS 100
│ │ │ │ +
204
│ │ │ │ +
214void Vnm_tstart(int timer, const char *name);
│ │ │ │ +
215
│ │ │ │ +
225void Vnm_tstop(int timer, const char *name);
│ │ │ │ +
226
│ │ │ │ +
236char *Vnm_getuser(char *user, int usermax);
│ │ │ │ +
237
│ │ │ │ +
247char *Vnm_getos(char *os, int osmax);
│ │ │ │
248
│ │ │ │ -
257# define Vset_first(thee) ( \
│ │ │ │ -
258 (thee)->curT = 0, \
│ │ │ │ -
259 Vset_access((thee), (thee)->curT) \
│ │ │ │ -
260 )
│ │ │ │ -
261
│ │ │ │ -
270# define Vset_last(thee) ( \
│ │ │ │ -
271 (thee)->curT = (thee)->numT-1, \
│ │ │ │ -
272 Vset_access((thee), (thee)->curT) \
│ │ │ │ -
273 )
│ │ │ │ -
274
│ │ │ │ -
283# define Vset_next(thee) ( \
│ │ │ │ -
284 (thee)->curT++, \
│ │ │ │ -
285 ((thee)->curT < (thee)->numT) \
│ │ │ │ -
286 ? Vset_access((thee), (thee)->curT) \
│ │ │ │ -
287 : VNULL \
│ │ │ │ -
288 )
│ │ │ │ -
289
│ │ │ │ -
298# define Vset_prev(thee) ( \
│ │ │ │ -
299 (thee)->curT--, \
│ │ │ │ -
300 ((thee)->curT >= 0) \
│ │ │ │ -
301 ? Vset_access((thee), (thee)->curT) \
│ │ │ │ -
302 : VNULL \
│ │ │ │ -
303 )
│ │ │ │ -
304
│ │ │ │ -
313# define Vset_peekFirst(thee) ( \
│ │ │ │ -
314 Vset_access((thee), 0) \
│ │ │ │ -
315 )
│ │ │ │ -
316
│ │ │ │ -
325# define Vset_peekLast(thee) ( \
│ │ │ │ -
326 Vset_access((thee), (thee)->numT-1) \
│ │ │ │ -
327 )
│ │ │ │ +
258char *Vnm_gethost(char *host, int hostmax);
│ │ │ │ +
259
│ │ │ │ +
279char *Vnm_gethome(char *path, int pathmax);
│ │ │ │ +
280
│ │ │ │ +
297char *Vnm_getcwd(char *path, int pathmax);
│ │ │ │ +
298
│ │ │ │ +
307int Vnm_chdir(const char *path);
│ │ │ │ +
308
│ │ │ │ +
317int Vnm_mkdir(const char *path);
│ │ │ │ +
318
│ │ │ │ +
327int Vnm_system(const char *cmd);
│ │ │ │
328
│ │ │ │ -
337# define Vset_destroy(thee) ( \
│ │ │ │ -
338 ( ((((thee)->numT-1)>>(thee)->blockPower) < (thee)->numBlocks-1) \
│ │ │ │ -
339 || ((thee)->numT == 1) || ((((thee)->numT)%(thee)->prtT) == 0) ) \
│ │ │ │ -
340 ? (Vset_destroyLast((thee))) : (void)(((thee)->numT)--) \
│ │ │ │ -
341 )
│ │ │ │ -
342#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ -
343
│ │ │ │ - │ │ │ │ -
357 const char *tname, int tsize, int tmaxNum, int ioKey);
│ │ │ │ -
358
│ │ │ │ -
367void Vset_dtor(Vset **thee);
│ │ │ │ -
368
│ │ │ │ - │ │ │ │ -
378
│ │ │ │ - │ │ │ │ -
388
│ │ │ │ -
397void Vset_initData(Vset *thee);
│ │ │ │ -
398
│ │ │ │ -
407void Vset_reset(Vset *thee);
│ │ │ │ -
408
│ │ │ │ -
422void Vset_check(Vset *thee,
│ │ │ │ -
423 int *tnum, int *tsize, int *tVecUse, int *tVecMal, int *tVecOhd);
│ │ │ │ -
424
│ │ │ │ -
433void Vset_memChk(Vset *thee);
│ │ │ │ -
434
│ │ │ │ -
435#endif /* _VSET_H_ */
│ │ │ │ -
436
│ │ │ │ +
337int Vnm_systemBack(const char *cmd);
│ │ │ │ +
338
│ │ │ │ +
347int Vnm_systemKill(const char *cmd);
│ │ │ │ +
348
│ │ │ │ +
359int Vnm_exec(int argc, char **argv);
│ │ │ │ +
360
│ │ │ │ +
371void Vnm_sleep(int nusecs);
│ │ │ │ +
372
│ │ │ │ +
380int Vnm_ioTag(void);
│ │ │ │ +
381
│ │ │ │ +
389int Vnm_nTags(void);
│ │ │ │ +
390
│ │ │ │ +
400void Vnm_setIoTag(int myTag, int numTags);
│ │ │ │ +
401
│ │ │ │ +
429FILE *Vnm_open(const int unit);
│ │ │ │ +
430
│ │ │ │ +
440int Vnm_close(const int unit);
│ │ │ │ +
441
│ │ │ │ +
451void Vnm_flush(const int unit);
│ │ │ │ +
452
│ │ │ │ +
463void Vnm_redirect(const int flag);
│ │ │ │ +
464
│ │ │ │ +
475void Vnm_print(const int unit, const char *format, ...);
│ │ │ │ +
476
│ │ │ │ +
490void Vnm_tprint(const int unit, const char *format, ...);
│ │ │ │ +
491
│ │ │ │ +
501void Vnm_qsort(int *u, int size);
│ │ │ │ +
502
│ │ │ │ +
513void Vnm_qsortOrd(int *u, int *ord, int size);
│ │ │ │ +
514
│ │ │ │ +
524void Vnm_dqsort(double *u, int size);
│ │ │ │ +
525
│ │ │ │ +
536void Vnm_dqsortOrd(double *u, int *ord, int size);
│ │ │ │ +
537
│ │ │ │ +
538#endif /* _VNM_H_ */
│ │ │ │ +
539
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ -
#define VMAX_ARGLEN
Global constant.
Definition: maloc_base.h:227
│ │ │ │ -
Header file for an ISO C [V]irtual [N]umerical [M]achine.
│ │ │ │ -
Class Vmem: A safer, object-oriented, malloc/free object.
│ │ │ │ -
char * Vset_peekFirst(Vset *thee)
Return the first object in the set.
│ │ │ │ -
char * Vset_prev(Vset *thee)
Return the prev object in the set.
│ │ │ │ -
void Vset_dtor(Vset **thee)
Destroy the set object.
│ │ │ │ -
char * Vset_first(Vset *thee)
Return the first object in the set.
│ │ │ │ -
Vset * Vset_ctor(Vmem *vmem, const char *tname, int tsize, int tmaxNum, int ioKey)
Construct the set object.
│ │ │ │ -
void Vset_reset(Vset *thee)
Release all Ram controlled by this (thee) and re-initialize.
│ │ │ │ -
char * Vset_next(Vset *thee)
Return the next object in the set.
│ │ │ │ -
void Vset_initData(Vset *thee)
Initialize the Vset data (thee).
│ │ │ │ -
void Vset_destroyLast(Vset *thee)
Free up the object currently on the end of the list.
│ │ │ │ -
char * Vset_create(Vset *thee)
Create an object on the end of the list.
│ │ │ │ -
void Vset_memChk(Vset *thee)
Print the exact current malloc usage.
│ │ │ │ -
void Vset_check(Vset *thee, int *tnum, int *tsize, int *tVecUse, int *tVecMal, int *tVecOhd)
Get and return the RAM Control Block (thee) information.
│ │ │ │ -
int Vset_num(Vset *thee)
Return the number of things currently in the list.
│ │ │ │ -
char * Vset_peekLast(Vset *thee)
Return the last object in the set.
│ │ │ │ -
char * Vset_last(Vset *thee)
Return the last object in the set.
│ │ │ │ -
void Vset_destroy(Vset *thee)
Delete an object from the end of the list.
│ │ │ │ -
char * Vset_createLast(Vset *thee)
Create an object on the end of the list.
│ │ │ │ -
char * Vset_access(Vset *thee, int i)
Access an object in an arbitrary place in the list.
│ │ │ │ -
Contains public data members for Vmem class.
Definition: vmem.h:57
│ │ │ │ -
Contains public data members for Vset class.
Definition: vset.h:57
│ │ │ │ -
int blockModulo
=blockSize-1; for determining which block fast
Definition: vset.h:88
│ │ │ │ -
char nameT[VMAX_ARGLEN]
name of object we are managing
Definition: vset.h:68
│ │ │ │ -
int iMadeVmem
did i make vmem or was it inherited
Definition: vset.h:62
│ │ │ │ -
int blockSize
blocksize is 2^(blockPower)
Definition: vset.h:84
│ │ │ │ -
char ** table
list of pointers to blocks of storage we manage
Definition: vset.h:91
│ │ │ │ -
int numBlocks
total number of allocated blocks
Definition: vset.h:73
│ │ │ │ -
int prtT
for i/o at appropriate block creation/deletion
Definition: vset.h:77
│ │ │ │ -
Vmem * vmem
the memory manager
Definition: vset.h:60
│ │ │ │ -
int curT
the current "T" object in our collection
Definition: vset.h:65
│ │ │ │ -
int blockMax
num blocks = blockMax=(maxObjects/blockSize)
Definition: vset.h:86
│ │ │ │ -
int sizeT
size of the object in bytes
Definition: vset.h:70
│ │ │ │ -
int blockPower
power of 2 for blocksize (e.g., =10, or =16)
Definition: vset.h:82
│ │ │ │ -
int maxObjects
number of objects to manage (user specified)
Definition: vset.h:80
│ │ │ │ -
int numT
the global "T" counter – how many "T"s in list
Definition: vset.h:75
│ │ │ │ +
int Vnm_mkdir(const char *path)
Interact with the system to make a new directory.
│ │ │ │ +
void Vnm_sigHand(int num)
Handle events such as SIGINT. We must have first been registered with "Vnm_signalInit".
│ │ │ │ +
int Vnm_close(const int unit)
Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in this routine.
│ │ │ │ +
char * Vnm_getos(char *os, int osmax)
Ask the system for the operating system name.
│ │ │ │ +
int Vnm_ioTag(void)
Return my I/O tag.
│ │ │ │ +
void Vnm_print(const int unit, const char *format,...)
External interface to the console i/o routine. We MUST NOT use VASSERT (or Vnm_print!...
│ │ │ │ +
void Vnm_setIoTag(int myTag, int numTags)
Set my id.
│ │ │ │ +
double Vnm_powsafe(double x, double y)
A safe VPOW function (avoids division by zero).
│ │ │ │ +
void Vnm_qsortOrd(int *u, int *ord, int size)
Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ +
int Vnm_nTags(void)
Return the total number of tags.
│ │ │ │ +
void Vnm_sigIntClear(void)
Signal and setjmp handling routine. Clear the signal interrupt flag.
│ │ │ │ +
void Vnm_flush(const int unit)
Attempt to flush the specified i/o stream. We MUST NOT use VASSERT (or Vnm_print!) in this routine.
│ │ │ │ +
FILE * Vnm_open(const int unit)
Open an I/O console.
│ │ │ │ +
int Vnm_sigInt(void)
Signal and setjmp handling routine. Return the signal interrupt flag.
│ │ │ │ +
int Vnm_system(const char *cmd)
An improved ANSI-C "system" call.
│ │ │ │ +
int Vnm_exec(int argc, char **argv)
An improved UNIX "exec" call. This routine does not return except on error.
│ │ │ │ +
void Vnm_dqsortOrd(double *u, int *ord, int size)
Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ +
void Vnm_jmpOkSet(void)
Signal and setjmp handling routine. Set the "okay-to-jump" flag.
│ │ │ │ +
void Vnm_tstart(int timer, const char *name)
Starts the timer on the particular machine.
│ │ │ │ +
char * Vnm_gethost(char *host, int hostmax)
Ask the system for the hostname.
│ │ │ │ +
void Vnm_sleep(int nusecs)
Implement a sleep function with microsecond resolution.
│ │ │ │ +
void Vnm_jmpOkClear(void)
Signal and setjmp handling routine. Clear the "okay-to-jump" flag.
│ │ │ │ +
jmp_buf * Vnm_signalInit(void)
Initialize the signal handling data structures.
│ │ │ │ +
int Vnm_chdir(const char *path)
Interact with the system to change the working directory.
│ │ │ │ +
void Vnm_typeChk(void)
Check out the sizes of various datatypes.
│ │ │ │ +
int Vnm_jmpOk(void)
Signal and setjmp handling routine. Return the "ok-to-jump" flag.
│ │ │ │ +
void Vnm_tprint(const int unit, const char *format,...)
Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or Vnm_print!) in this routine.
│ │ │ │ +
char * Vnm_gethome(char *path, int pathmax)
Ask the system for the home directory.
│ │ │ │ +
double Vnm_epsmac(void)
Computes the unit roundoff of the machine in single precision. This is defined as the smallest posi...
│ │ │ │ +
int Vnm_systemBack(const char *cmd)
A background variant of the ANSI-C "system" call.
│ │ │ │ +
int Vnm_gentokens(char *buf, char **argv, const int argvmax, const char *white, const char *comment)
Generate an [argv,argc] pair from a character string "buf" (assumed NULL-terminated) in which tokens ...
│ │ │ │ +
int Vnm_systemKill(const char *cmd)
Something like a UNIX "killall" call.
│ │ │ │ +
void Vnm_qsort(int *u, int size)
Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ +
void Vnm_sigIntSet(void)
Signal and setjmp handling routine. Set the signal interrupt flag.
│ │ │ │ +
void Vnm_redirect(const int flag)
Set/unset the redirect flag for UNIT zero. When redirected, I/O goes to the file: ${MCSH_HOME}/io....
│ │ │ │ +
char * Vnm_getcwd(char *path, int pathmax)
Ask the system for the current working directory.
│ │ │ │ +
char * Vnm_getuser(char *user, int usermax)
Ask the system for the username.
│ │ │ │ +
void Vnm_regHand(void)
Register the signal handler with the operating system.
│ │ │ │ +
void Vnm_dqsort(double *u, int size)
Front-end to quick sort integer array from [-large] to [+large].
│ │ │ │ +
void Vnm_tstop(int timer, const char *name)
Stops the timer on the particular machine.
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── encoding │ │ │ │ │ @@ -1 +1 @@ │ │ │ │ │ -utf-8 │ │ │ │ │ +us-ascii │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,283 +3,236 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -vset.h │ │ │ │ │ +vnm.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ 1 │ │ │ │ │ - 38#ifndef _VSET_H_ │ │ │ │ │ - 39#define _VSET_H_ │ │ │ │ │ - 40 │ │ │ │ │ - 41#include │ │ │ │ │ - 42 │ │ │ │ │ - 43#include │ │ │ │ │ - 44#include │ │ │ │ │ - 45 │ │ │ │ │ - 46/* │ │ │ │ │ - 47 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 48 * Class Vset: Parameters and datatypes │ │ │ │ │ - 49 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 50 */ │ │ │ │ │ - 51 │ │ │ │ │ -57struct sVset { │ │ │ │ │ - 58 │ │ │ │ │ -60 Vmem *vmem; │ │ │ │ │ -62 int iMadeVmem; │ │ │ │ │ - 63 │ │ │ │ │ -65 int curT; │ │ │ │ │ - 66 │ │ │ │ │ -68 char nameT[VMAX_ARGLEN]; │ │ │ │ │ -70 int sizeT; │ │ │ │ │ - 71 │ │ │ │ │ -73 int numBlocks; │ │ │ │ │ -75 int numT; │ │ │ │ │ -77 int prtT; │ │ │ │ │ - 78 │ │ │ │ │ -80 int maxObjects; │ │ │ │ │ -82 int blockPower; │ │ │ │ │ -84 int blockSize; │ │ │ │ │ -86 int blockMax; │ │ │ │ │ -88 int blockModulo; │ │ │ │ │ - 89 │ │ │ │ │ -91 char **table; │ │ │ │ │ + 33#ifndef _VNM_H_ │ │ │ │ │ + 34#define _VNM_H_ │ │ │ │ │ + 35 │ │ │ │ │ + 36#include │ │ │ │ │ + 37 │ │ │ │ │ + 38 │ │ │ │ │ +46int Vnm_sigInt(void); │ │ │ │ │ + 47 │ │ │ │ │ +55void Vnm_sigIntSet(void); │ │ │ │ │ + 56 │ │ │ │ │ +64void Vnm_sigIntClear(void); │ │ │ │ │ + 65 │ │ │ │ │ +73int Vnm_jmpOk(void); │ │ │ │ │ + 74 │ │ │ │ │ +82void Vnm_jmpOkSet(void); │ │ │ │ │ + 83 │ │ │ │ │ +91void Vnm_jmpOkClear(void); │ │ │ │ │ 92 │ │ │ │ │ - 93}; │ │ │ │ │ - 94 │ │ │ │ │ -100typedef struct sVset Vset; │ │ │ │ │ +100jmp_buf *Vnm_signalInit(void); │ │ │ │ │ 101 │ │ │ │ │ - 102/****************************************************************/ │ │ │ │ │ - 103/* Class Vset: Inlineable method (vset.c) */ │ │ │ │ │ - 104/****************************************************************/ │ │ │ │ │ - 105 │ │ │ │ │ - 106#if !defined(VINLINE_MALOC) │ │ │ │ │ -115 int Vset_num(Vset *thee); │ │ │ │ │ - 116 │ │ │ │ │ -126 char *Vset_access(Vset *thee, int i); │ │ │ │ │ - 127 │ │ │ │ │ -136 char *Vset_create(Vset *thee); │ │ │ │ │ +109void Vnm_regHand(void); │ │ │ │ │ + 110 │ │ │ │ │ +119void Vnm_sigHand(int num); │ │ │ │ │ + 120 │ │ │ │ │ +125#define VPOW_SAFE(x,y) (Vnm_powsafe(x,y)) │ │ │ │ │ + 126 │ │ │ │ │ +136double Vnm_powsafe(double x, double y); │ │ │ │ │ 137 │ │ │ │ │ -146 char *Vset_first(Vset *thee); │ │ │ │ │ - 147 │ │ │ │ │ -156 char *Vset_last(Vset *thee); │ │ │ │ │ - 157 │ │ │ │ │ -166 char *Vset_next(Vset *thee); │ │ │ │ │ - 167 │ │ │ │ │ -176 char *Vset_prev(Vset *thee); │ │ │ │ │ - 177 │ │ │ │ │ -186 char *Vset_peekFirst(Vset *thee); │ │ │ │ │ - 187 │ │ │ │ │ -196 char *Vset_peekLast(Vset *thee); │ │ │ │ │ - 197 │ │ │ │ │ -206 void Vset_destroy(Vset *thee); │ │ │ │ │ - 207#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ - 216# define Vset_num(thee) ((thee)->numT) │ │ │ │ │ - 217 │ │ │ │ │ - 227# define Vset_access(thee,i) ( \ │ │ │ │ │ - 228 ((i >= 0) && (i < thee->numT)) \ │ │ │ │ │ - 229 ? &((thee)->table[ (i)>>(thee)->blockPower ] \ │ │ │ │ │ - 230 [ (thee)->sizeT*((i)&(thee)->blockModulo) ]) \ │ │ │ │ │ - 231 : VNULL \ │ │ │ │ │ - 232 ) │ │ │ │ │ - 233 │ │ │ │ │ - 242# define Vset_create(thee) ( \ │ │ │ │ │ - 243 ( ((((thee)->numT)>>(thee)->blockPower) >= (thee)->numBlocks) \ │ │ │ │ │ - 244 || ((((thee)->numT+1)%(thee)->prtT) == 0) ) \ │ │ │ │ │ - 245 ? (Vset_createLast((thee))) \ │ │ │ │ │ - 246 : (++((thee)->numT), (Vset_access((thee),(thee)->numT-1))) \ │ │ │ │ │ - 247 ) │ │ │ │ │ +145void Vnm_typeChk(void); │ │ │ │ │ + 146 │ │ │ │ │ +160double Vnm_epsmac(void); │ │ │ │ │ + 161 │ │ │ │ │ +196int Vnm_gentokens(char *buf, char **argv, │ │ │ │ │ + 197 const int argvmax, const char *white, const char *comment); │ │ │ │ │ + 198 │ │ │ │ │ +203#define VTIMERS 100 │ │ │ │ │ + 204 │ │ │ │ │ +214void Vnm_tstart(int timer, const char *name); │ │ │ │ │ + 215 │ │ │ │ │ +225void Vnm_tstop(int timer, const char *name); │ │ │ │ │ + 226 │ │ │ │ │ +236char *Vnm_getuser(char *user, int usermax); │ │ │ │ │ + 237 │ │ │ │ │ +247char *Vnm_getos(char *os, int osmax); │ │ │ │ │ 248 │ │ │ │ │ - 257# define Vset_first(thee) ( \ │ │ │ │ │ - 258 (thee)->curT = 0, \ │ │ │ │ │ - 259 Vset_access((thee), (thee)->curT) \ │ │ │ │ │ - 260 ) │ │ │ │ │ - 261 │ │ │ │ │ - 270# define Vset_last(thee) ( \ │ │ │ │ │ - 271 (thee)->curT = (thee)->numT-1, \ │ │ │ │ │ - 272 Vset_access((thee), (thee)->curT) \ │ │ │ │ │ - 273 ) │ │ │ │ │ - 274 │ │ │ │ │ - 283# define Vset_next(thee) ( \ │ │ │ │ │ - 284 (thee)->curT++, \ │ │ │ │ │ - 285 ((thee)->curT < (thee)->numT) \ │ │ │ │ │ - 286 ? Vset_access((thee), (thee)->curT) \ │ │ │ │ │ - 287 : VNULL \ │ │ │ │ │ - 288 ) │ │ │ │ │ - 289 │ │ │ │ │ - 298# define Vset_prev(thee) ( \ │ │ │ │ │ - 299 (thee)->curT--, \ │ │ │ │ │ - 300 ((thee)->curT >= 0) \ │ │ │ │ │ - 301 ? Vset_access((thee), (thee)->curT) \ │ │ │ │ │ - 302 : VNULL \ │ │ │ │ │ - 303 ) │ │ │ │ │ - 304 │ │ │ │ │ - 313# define Vset_peekFirst(thee) ( \ │ │ │ │ │ - 314 Vset_access((thee), 0) \ │ │ │ │ │ - 315 ) │ │ │ │ │ - 316 │ │ │ │ │ - 325# define Vset_peekLast(thee) ( \ │ │ │ │ │ - 326 Vset_access((thee), (thee)->numT-1) \ │ │ │ │ │ - 327 ) │ │ │ │ │ +258char *Vnm_gethost(char *host, int hostmax); │ │ │ │ │ + 259 │ │ │ │ │ +279char *Vnm_gethome(char *path, int pathmax); │ │ │ │ │ + 280 │ │ │ │ │ +297char *Vnm_getcwd(char *path, int pathmax); │ │ │ │ │ + 298 │ │ │ │ │ +307int Vnm_chdir(const char *path); │ │ │ │ │ + 308 │ │ │ │ │ +317int Vnm_mkdir(const char *path); │ │ │ │ │ + 318 │ │ │ │ │ +327int Vnm_system(const char *cmd); │ │ │ │ │ 328 │ │ │ │ │ - 337# define Vset_destroy(thee) ( \ │ │ │ │ │ - 338 ( ((((thee)->numT-1)>>(thee)->blockPower) < (thee)->numBlocks-1) \ │ │ │ │ │ - 339 || ((thee)->numT == 1) || ((((thee)->numT)%(thee)->prtT) == 0) ) \ │ │ │ │ │ - 340 ? (Vset_destroyLast((thee))) : (void)(((thee)->numT)--) \ │ │ │ │ │ - 341 ) │ │ │ │ │ - 342#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ - 343 │ │ │ │ │ -356Vset* Vset_ctor(Vmem *vmem, │ │ │ │ │ - 357 const char *tname, int tsize, int tmaxNum, int ioKey); │ │ │ │ │ - 358 │ │ │ │ │ -367void Vset_dtor(Vset **thee); │ │ │ │ │ - 368 │ │ │ │ │ -377char *Vset_createLast(Vset *thee); │ │ │ │ │ - 378 │ │ │ │ │ -387void Vset_destroyLast(Vset *thee); │ │ │ │ │ - 388 │ │ │ │ │ -397void Vset_initData(Vset *thee); │ │ │ │ │ - 398 │ │ │ │ │ -407void Vset_reset(Vset *thee); │ │ │ │ │ - 408 │ │ │ │ │ -422void Vset_check(Vset *thee, │ │ │ │ │ - 423 int *tnum, int *tsize, int *tVecUse, int *tVecMal, int *tVecOhd); │ │ │ │ │ - 424 │ │ │ │ │ -433void Vset_memChk(Vset *thee); │ │ │ │ │ - 434 │ │ │ │ │ - 435#endif /* _VSET_H_ */ │ │ │ │ │ - 436 │ │ │ │ │ +337int Vnm_systemBack(const char *cmd); │ │ │ │ │ + 338 │ │ │ │ │ +347int Vnm_systemKill(const char *cmd); │ │ │ │ │ + 348 │ │ │ │ │ +359int Vnm_exec(int argc, char **argv); │ │ │ │ │ + 360 │ │ │ │ │ +371void Vnm_sleep(int nusecs); │ │ │ │ │ + 372 │ │ │ │ │ +380int Vnm_ioTag(void); │ │ │ │ │ + 381 │ │ │ │ │ +389int Vnm_nTags(void); │ │ │ │ │ + 390 │ │ │ │ │ +400void Vnm_setIoTag(int myTag, int numTags); │ │ │ │ │ + 401 │ │ │ │ │ +429FILE *Vnm_open(const int unit); │ │ │ │ │ + 430 │ │ │ │ │ +440int Vnm_close(const int unit); │ │ │ │ │ + 441 │ │ │ │ │ +451void Vnm_flush(const int unit); │ │ │ │ │ + 452 │ │ │ │ │ +463void Vnm_redirect(const int flag); │ │ │ │ │ + 464 │ │ │ │ │ +475void Vnm_print(const int unit, const char *format, ...); │ │ │ │ │ + 476 │ │ │ │ │ +490void Vnm_tprint(const int unit, const char *format, ...); │ │ │ │ │ + 491 │ │ │ │ │ +501void Vnm_qsort(int *u, int size); │ │ │ │ │ + 502 │ │ │ │ │ +513void Vnm_qsortOrd(int *u, int *ord, int size); │ │ │ │ │ + 514 │ │ │ │ │ +524void Vnm_dqsort(double *u, int size); │ │ │ │ │ + 525 │ │ │ │ │ +536void Vnm_dqsortOrd(double *u, int *ord, int size); │ │ │ │ │ + 537 │ │ │ │ │ + 538#endif /* _VNM_H_ */ │ │ │ │ │ + 539 │ │ │ │ │ maloc_base.h │ │ │ │ │ The base (or foundation) header for MALOC. │ │ │ │ │ -VMAX_ARGLEN │ │ │ │ │ -#define VMAX_ARGLEN │ │ │ │ │ -Global constant. │ │ │ │ │ -Definition: maloc_base.h:227 │ │ │ │ │ -vnm.h │ │ │ │ │ -Header file for an ISO C [V]irtual [N]umerical [M]achine. │ │ │ │ │ -vmem.h │ │ │ │ │ -Class Vmem: A safer, object-oriented, malloc/free object. │ │ │ │ │ -Vset_peekFirst │ │ │ │ │ -char * Vset_peekFirst(Vset *thee) │ │ │ │ │ -Return the first object in the set. │ │ │ │ │ -Vset_prev │ │ │ │ │ -char * Vset_prev(Vset *thee) │ │ │ │ │ -Return the prev object in the set. │ │ │ │ │ -Vset_dtor │ │ │ │ │ -void Vset_dtor(Vset **thee) │ │ │ │ │ -Destroy the set object. │ │ │ │ │ -Vset_first │ │ │ │ │ -char * Vset_first(Vset *thee) │ │ │ │ │ -Return the first object in the set. │ │ │ │ │ -Vset_ctor │ │ │ │ │ -Vset * Vset_ctor(Vmem *vmem, const char *tname, int tsize, int tmaxNum, int │ │ │ │ │ -ioKey) │ │ │ │ │ -Construct the set object. │ │ │ │ │ -Vset_reset │ │ │ │ │ -void Vset_reset(Vset *thee) │ │ │ │ │ -Release all Ram controlled by this (thee) and re-initialize. │ │ │ │ │ -Vset_next │ │ │ │ │ -char * Vset_next(Vset *thee) │ │ │ │ │ -Return the next object in the set. │ │ │ │ │ -Vset_initData │ │ │ │ │ -void Vset_initData(Vset *thee) │ │ │ │ │ -Initialize the Vset data (thee). │ │ │ │ │ -Vset_destroyLast │ │ │ │ │ -void Vset_destroyLast(Vset *thee) │ │ │ │ │ -Free up the object currently on the end of the list. │ │ │ │ │ -Vset_create │ │ │ │ │ -char * Vset_create(Vset *thee) │ │ │ │ │ -Create an object on the end of the list. │ │ │ │ │ -Vset_memChk │ │ │ │ │ -void Vset_memChk(Vset *thee) │ │ │ │ │ -Print the exact current malloc usage. │ │ │ │ │ -Vset_check │ │ │ │ │ -void Vset_check(Vset *thee, int *tnum, int *tsize, int *tVecUse, int *tVecMal, │ │ │ │ │ -int *tVecOhd) │ │ │ │ │ -Get and return the RAM Control Block (thee) information. │ │ │ │ │ -Vset_num │ │ │ │ │ -int Vset_num(Vset *thee) │ │ │ │ │ -Return the number of things currently in the list. │ │ │ │ │ -Vset_peekLast │ │ │ │ │ -char * Vset_peekLast(Vset *thee) │ │ │ │ │ -Return the last object in the set. │ │ │ │ │ -Vset_last │ │ │ │ │ -char * Vset_last(Vset *thee) │ │ │ │ │ -Return the last object in the set. │ │ │ │ │ -Vset_destroy │ │ │ │ │ -void Vset_destroy(Vset *thee) │ │ │ │ │ -Delete an object from the end of the list. │ │ │ │ │ -Vset_createLast │ │ │ │ │ -char * Vset_createLast(Vset *thee) │ │ │ │ │ -Create an object on the end of the list. │ │ │ │ │ -Vset_access │ │ │ │ │ -char * Vset_access(Vset *thee, int i) │ │ │ │ │ -Access an object in an arbitrary place in the list. │ │ │ │ │ -sVmem │ │ │ │ │ -Contains public data members for Vmem class. │ │ │ │ │ -Definition: vmem.h:57 │ │ │ │ │ -sVset │ │ │ │ │ -Contains public data members for Vset class. │ │ │ │ │ -Definition: vset.h:57 │ │ │ │ │ -sVset::blockModulo │ │ │ │ │ -int blockModulo │ │ │ │ │ -=blockSize-1; for determining which block fast │ │ │ │ │ -Definition: vset.h:88 │ │ │ │ │ -sVset::nameT │ │ │ │ │ -char nameT[VMAX_ARGLEN] │ │ │ │ │ -name of object we are managing │ │ │ │ │ -Definition: vset.h:68 │ │ │ │ │ -sVset::iMadeVmem │ │ │ │ │ -int iMadeVmem │ │ │ │ │ -did i make vmem or was it inherited │ │ │ │ │ -Definition: vset.h:62 │ │ │ │ │ -sVset::blockSize │ │ │ │ │ -int blockSize │ │ │ │ │ -blocksize is 2^(blockPower) │ │ │ │ │ -Definition: vset.h:84 │ │ │ │ │ -sVset::table │ │ │ │ │ -char ** table │ │ │ │ │ -list of pointers to blocks of storage we manage │ │ │ │ │ -Definition: vset.h:91 │ │ │ │ │ -sVset::numBlocks │ │ │ │ │ -int numBlocks │ │ │ │ │ -total number of allocated blocks │ │ │ │ │ -Definition: vset.h:73 │ │ │ │ │ -sVset::prtT │ │ │ │ │ -int prtT │ │ │ │ │ -for i/o at appropriate block creation/deletion │ │ │ │ │ -Definition: vset.h:77 │ │ │ │ │ -sVset::vmem │ │ │ │ │ -Vmem * vmem │ │ │ │ │ -the memory manager │ │ │ │ │ -Definition: vset.h:60 │ │ │ │ │ -sVset::curT │ │ │ │ │ -int curT │ │ │ │ │ -the current "T" object in our collection │ │ │ │ │ -Definition: vset.h:65 │ │ │ │ │ -sVset::blockMax │ │ │ │ │ -int blockMax │ │ │ │ │ -num blocks = blockMax=(maxObjects/blockSize) │ │ │ │ │ -Definition: vset.h:86 │ │ │ │ │ -sVset::sizeT │ │ │ │ │ -int sizeT │ │ │ │ │ -size of the object in bytes │ │ │ │ │ -Definition: vset.h:70 │ │ │ │ │ -sVset::blockPower │ │ │ │ │ -int blockPower │ │ │ │ │ -power of 2 for blocksize (e.g., =10, or =16) │ │ │ │ │ -Definition: vset.h:82 │ │ │ │ │ -sVset::maxObjects │ │ │ │ │ -int maxObjects │ │ │ │ │ -number of objects to manage (user specified) │ │ │ │ │ -Definition: vset.h:80 │ │ │ │ │ -sVset::numT │ │ │ │ │ -int numT │ │ │ │ │ -the global "T" counter – how many "T"s in list │ │ │ │ │ -Definition: vset.h:75 │ │ │ │ │ +Vnm_mkdir │ │ │ │ │ +int Vnm_mkdir(const char *path) │ │ │ │ │ +Interact with the system to make a new directory. │ │ │ │ │ +Vnm_sigHand │ │ │ │ │ +void Vnm_sigHand(int num) │ │ │ │ │ +Handle events such as SIGINT. We must have first been registered with │ │ │ │ │ +"Vnm_signalInit". │ │ │ │ │ +Vnm_close │ │ │ │ │ +int Vnm_close(const int unit) │ │ │ │ │ +Close an I/O console. We MUST NOT use VASSERT (or Vnm_print!) in this routine. │ │ │ │ │ +Vnm_getos │ │ │ │ │ +char * Vnm_getos(char *os, int osmax) │ │ │ │ │ +Ask the system for the operating system name. │ │ │ │ │ +Vnm_ioTag │ │ │ │ │ +int Vnm_ioTag(void) │ │ │ │ │ +Return my I/O tag. │ │ │ │ │ +Vnm_print │ │ │ │ │ +void Vnm_print(const int unit, const char *format,...) │ │ │ │ │ +External interface to the console i/o routine. We MUST NOT use VASSERT (or │ │ │ │ │ +Vnm_print!... │ │ │ │ │ +Vnm_setIoTag │ │ │ │ │ +void Vnm_setIoTag(int myTag, int numTags) │ │ │ │ │ +Set my id. │ │ │ │ │ +Vnm_powsafe │ │ │ │ │ +double Vnm_powsafe(double x, double y) │ │ │ │ │ +A safe VPOW function (avoids division by zero). │ │ │ │ │ +Vnm_qsortOrd │ │ │ │ │ +void Vnm_qsortOrd(int *u, int *ord, int size) │ │ │ │ │ +Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ +Vnm_nTags │ │ │ │ │ +int Vnm_nTags(void) │ │ │ │ │ +Return the total number of tags. │ │ │ │ │ +Vnm_sigIntClear │ │ │ │ │ +void Vnm_sigIntClear(void) │ │ │ │ │ +Signal and setjmp handling routine. Clear the signal interrupt flag. │ │ │ │ │ +Vnm_flush │ │ │ │ │ +void Vnm_flush(const int unit) │ │ │ │ │ +Attempt to flush the specified i/o stream. We MUST NOT use VASSERT (or │ │ │ │ │ +Vnm_print!) in this routine. │ │ │ │ │ +Vnm_open │ │ │ │ │ +FILE * Vnm_open(const int unit) │ │ │ │ │ +Open an I/O console. │ │ │ │ │ +Vnm_sigInt │ │ │ │ │ +int Vnm_sigInt(void) │ │ │ │ │ +Signal and setjmp handling routine. Return the signal interrupt flag. │ │ │ │ │ +Vnm_system │ │ │ │ │ +int Vnm_system(const char *cmd) │ │ │ │ │ +An improved ANSI-C "system" call. │ │ │ │ │ +Vnm_exec │ │ │ │ │ +int Vnm_exec(int argc, char **argv) │ │ │ │ │ +An improved UNIX "exec" call. This routine does not return except on error. │ │ │ │ │ +Vnm_dqsortOrd │ │ │ │ │ +void Vnm_dqsortOrd(double *u, int *ord, int size) │ │ │ │ │ +Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ +Vnm_jmpOkSet │ │ │ │ │ +void Vnm_jmpOkSet(void) │ │ │ │ │ +Signal and setjmp handling routine. Set the "okay-to-jump" flag. │ │ │ │ │ +Vnm_tstart │ │ │ │ │ +void Vnm_tstart(int timer, const char *name) │ │ │ │ │ +Starts the timer on the particular machine. │ │ │ │ │ +Vnm_gethost │ │ │ │ │ +char * Vnm_gethost(char *host, int hostmax) │ │ │ │ │ +Ask the system for the hostname. │ │ │ │ │ +Vnm_sleep │ │ │ │ │ +void Vnm_sleep(int nusecs) │ │ │ │ │ +Implement a sleep function with microsecond resolution. │ │ │ │ │ +Vnm_jmpOkClear │ │ │ │ │ +void Vnm_jmpOkClear(void) │ │ │ │ │ +Signal and setjmp handling routine. Clear the "okay-to-jump" flag. │ │ │ │ │ +Vnm_signalInit │ │ │ │ │ +jmp_buf * Vnm_signalInit(void) │ │ │ │ │ +Initialize the signal handling data structures. │ │ │ │ │ +Vnm_chdir │ │ │ │ │ +int Vnm_chdir(const char *path) │ │ │ │ │ +Interact with the system to change the working directory. │ │ │ │ │ +Vnm_typeChk │ │ │ │ │ +void Vnm_typeChk(void) │ │ │ │ │ +Check out the sizes of various datatypes. │ │ │ │ │ +Vnm_jmpOk │ │ │ │ │ +int Vnm_jmpOk(void) │ │ │ │ │ +Signal and setjmp handling routine. Return the "ok-to-jump" flag. │ │ │ │ │ +Vnm_tprint │ │ │ │ │ +void Vnm_tprint(const int unit, const char *format,...) │ │ │ │ │ +Add our ioTag to Vnm_print output. We MUST NOT use VASSERT (or Vnm_print!) in │ │ │ │ │ +this routine. │ │ │ │ │ +Vnm_gethome │ │ │ │ │ +char * Vnm_gethome(char *path, int pathmax) │ │ │ │ │ +Ask the system for the home directory. │ │ │ │ │ +Vnm_epsmac │ │ │ │ │ +double Vnm_epsmac(void) │ │ │ │ │ +Computes the unit roundoff of the machine in single precision. This is defined │ │ │ │ │ +as the smallest posi... │ │ │ │ │ +Vnm_systemBack │ │ │ │ │ +int Vnm_systemBack(const char *cmd) │ │ │ │ │ +A background variant of the ANSI-C "system" call. │ │ │ │ │ +Vnm_gentokens │ │ │ │ │ +int Vnm_gentokens(char *buf, char **argv, const int argvmax, const char *white, │ │ │ │ │ +const char *comment) │ │ │ │ │ +Generate an [argv,argc] pair from a character string "buf" (assumed NULL- │ │ │ │ │ +terminated) in which tokens ... │ │ │ │ │ +Vnm_systemKill │ │ │ │ │ +int Vnm_systemKill(const char *cmd) │ │ │ │ │ +Something like a UNIX "killall" call. │ │ │ │ │ +Vnm_qsort │ │ │ │ │ +void Vnm_qsort(int *u, int size) │ │ │ │ │ +Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ +Vnm_sigIntSet │ │ │ │ │ +void Vnm_sigIntSet(void) │ │ │ │ │ +Signal and setjmp handling routine. Set the signal interrupt flag. │ │ │ │ │ +Vnm_redirect │ │ │ │ │ +void Vnm_redirect(const int flag) │ │ │ │ │ +Set/unset the redirect flag for UNIT zero. When redirected, I/O goes to the │ │ │ │ │ +file: ${MCSH_HOME}/io.... │ │ │ │ │ +Vnm_getcwd │ │ │ │ │ +char * Vnm_getcwd(char *path, int pathmax) │ │ │ │ │ +Ask the system for the current working directory. │ │ │ │ │ +Vnm_getuser │ │ │ │ │ +char * Vnm_getuser(char *user, int usermax) │ │ │ │ │ +Ask the system for the username. │ │ │ │ │ +Vnm_regHand │ │ │ │ │ +void Vnm_regHand(void) │ │ │ │ │ +Register the signal handler with the operating system. │ │ │ │ │ +Vnm_dqsort │ │ │ │ │ +void Vnm_dqsort(double *u, int size) │ │ │ │ │ +Front-end to quick sort integer array from [-large] to [+large]. │ │ │ │ │ +Vnm_tstop │ │ │ │ │ +void Vnm_tstop(int timer, const char *name) │ │ │ │ │ +Stops the timer on the particular machine. │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00028.dot │ │ │ │ @@ -1,27 +1,33 @@ │ │ │ │ -digraph "vset.h" │ │ │ │ +digraph "vnm.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vset.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ + Node1 [label="vnm.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ + Node2 [label="vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ - Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node4 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ - Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node5 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ - Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node6 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ - Node6 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node7 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ - Node7 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node8 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ - Node8 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node8 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node4 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ + Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node5 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node5 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node6 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ + Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node7 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ + Node7 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node8 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ + Node8 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node9 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ + Node9 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node9 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node10 [label="vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ + Node10 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00029.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vio.h File Reference │ │ │ │ +MALOC: vsys.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -39,169 +39,43 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
│ │ │ │ -Classes | │ │ │ │ -Macros | │ │ │ │ -Typedefs | │ │ │ │ -Enumerations | │ │ │ │ -Functions
│ │ │ │ -
vio.h File Reference
│ │ │ │ +
vsys.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ -

Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer. │ │ │ │ +

The primary header for VSYS. (Virtual SYStem utilities library.) │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ -#include <maloc/vnm.h>
│ │ │ │ +#include <maloc/vnm.h>
│ │ │ │ +#include <maloc/vmem.h>
│ │ │ │ +#include <maloc/vio.h>
│ │ │ │ +#include <maloc/vset.h>
│ │ │ │ +#include <maloc/vpred.h>
│ │ │ │
│ │ │ │ -Include dependency graph for vio.h:
│ │ │ │ +Include dependency graph for vsys.h:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Classes

struct  sVio
 Contains public data members for Vio class. More...
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Macros

#define VPORTNUMBER   14916
 our portbase; 5000 < VPORTNUMBER < 49152 More...
 
#define VIO_MAXBUF   10
 number of internal buffers (BUFF datatype) More...
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Typedefs

typedef enum VIOtype VIOtype
 Parameter for I/O type (sdio,buff,file,unix,inet) More...
 
typedef enum VIOfrmt VIOfrmt
 Parameter for compression type (XDR,ASC) More...
 
typedef enum VIOrwkey VIOrwkey
 Parameter for rw type (R,RW) More...
 
typedef struct sVio Vio
 Declaration of the Vio class as the Vio structure. More...
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Enumerations

enum  VIOtype {
│ │ │ │ -  VIO_NO_TYPE │ │ │ │ -, VIO_SDIO │ │ │ │ -, VIO_BUFF │ │ │ │ -, VIO_FILE │ │ │ │ -,
│ │ │ │ -  VIO_UNIX │ │ │ │ -, VIO_INET │ │ │ │ -
│ │ │ │ - }
 Parameter for I/O type (sdio,buff,file,unix,inet) More...
 
enum  VIOfrmt { VIO_NO_FRMT │ │ │ │ -, VIO_XDR │ │ │ │ -, VIO_ASC │ │ │ │ - }
 Parameter for compression type (XDR,ASC) More...
 
enum  VIOrwkey { VIO_NO_RW │ │ │ │ -, VIO_R │ │ │ │ -, VIO_W │ │ │ │ - }
 Parameter for rw type (R,RW) More...
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Functions

void Vio_start (void)
 Start Vio communication layer (init internal variables/buffers) More...
 
void Vio_stop (void)
 Shutdown Vio communication layer. More...
 
VioVio_ctor (const char *socktype, const char *datafrmt, const char *hostname, const char *filename, const char *rwkey)
 Construct the Vio object. More...
 
int Vio_ctor2 (Vio *thee, const char *socktype, const char *datafrmt, const char *hostname, const char *filename, const char *rwkey)
 Work routine that Vio_ctor calls to do most of the construction. More...
 
void Vio_dtor (Vio **thee)
 Destruct the Vio object. More...
 
void Vio_dtor2 (Vio *thee)
 Work routine that Vio_dtor calls to do most of the destruction. More...
 
void Vio_setWhiteChars (Vio *thee, char *whiteChars)
 Set the white character set for I/O stream. More...
 
void Vio_setCommChars (Vio *thee, char *commChars)
 Set the comment character set for I/O stream. More...
 
int Vio_accept (Vio *thee, int nonblock)
 Accept any waiting connect attempt to our socket on our machine. More...
 
void Vio_acceptFree (Vio *thee)
 Free the socket child that was used for the last accept. More...
 
int Vio_connect (Vio *thee, int nonblock)
 Connect to some socket on a remote machine (or on our machine) More...
 
void Vio_connectFree (Vio *thee)
 Purge any output buffers (for <UNIX/INET>, else a no-op) More...
 
int Vio_scanf (Vio *thee, char *parms,...)
 Mimic "scanf" from an arbitrary Vio device. More...
 
int Vio_printf (Vio *thee, char *parms,...)
 Mimic "printf" from an arbitrary Vio device. More...
 
int Vio_read (Vio *thee, char *buf, int bufsize)
 Read (up to) bufsize characters into buf from input device. More...
 
int Vio_write (Vio *thee, char *buf, int bufsize)
 Write bufsize characters from buf to output device. More...
 
void Vio_bufTake (Vio *thee, char *buf, int bufsize)
 Set the pointer to the internal buffer. More...
 
char * Vio_bufGive (Vio *thee)
 Return the pointer to the internal buffer. More...
 
int Vio_bufSize (Vio *thee)
 Return the length to the internal buffer. More...
 
VioVio_socketOpen (char *key, const char *iodev, const char *iofmt, const char *iohost, const char *iofile)
 Socket open for read or write. More...
 
void Vio_socketClose (Vio **sock)
 Socket close from read or write. More...
 
│ │ │ │

Detailed Description

│ │ │ │ -

Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer.

│ │ │ │ +

The primary header for VSYS. (Virtual SYStem utilities library.)

│ │ │ │ +
Author
Michael Holst
│ │ │ │
Version
│ │ │ │ -
Id
vio.h,v 1.28 2010/08/12 05:40:35 fetk Exp
│ │ │ │ -
Author
Michael Holst
│ │ │ │ +
Id
vsys.h,v 1.12 2010/08/12 05:40:37 fetk Exp
│ │ │ │
Attention
*
│ │ │ │  * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │  * Copyright (C) 1994-- Michael Holst
│ │ │ │  *
│ │ │ │  * This library is free software; you can redistribute it and/or
│ │ │ │  * modify it under the terms of the GNU Lesser General Public
│ │ │ │  * License as published by the Free Software Foundation; either
│ │ │ │ @@ -212,48 +86,15 @@
│ │ │ │  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
│ │ │ │  * Lesser General Public License for more details.
│ │ │ │  *
│ │ │ │  * You should have received a copy of the GNU Lesser General Public
│ │ │ │  * License along with this library; if not, write to the Free Software
│ │ │ │  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
│ │ │ │  * 
│ │ │ │ -* 
│ │ │ │ -

Macro Definition Documentation

│ │ │ │ - │ │ │ │ -

◆ VIO_MAXBUF

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define VIO_MAXBUF   10
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

number of internal buffers (BUFF datatype)

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ VPORTNUMBER

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define VPORTNUMBER   14916
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

our portbase; 5000 < VPORTNUMBER < 49152

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +* │ │ │ │ +
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,138 +3,33 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -Classes | Macros | Typedefs | Enumerations | Functions │ │ │ │ │ -vio.h File Reference │ │ │ │ │ -Vio_class │ │ │ │ │ -Class Vio: virtual I/O layer. More... │ │ │ │ │ +vsys.h File Reference │ │ │ │ │ +global_maloc_class │ │ │ │ │ +The primary header for VSYS. (Virtual SYStem utilities library.) More... │ │ │ │ │ #include │ │ │ │ │ #include │ │ │ │ │ -Include dependency graph for vio.h: │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +Include dependency graph for vsys.h: │ │ │ │ │ This graph shows which files directly or indirectly include this file: │ │ │ │ │ Go_to_the_source_code_of_this_file. │ │ │ │ │ - Classes │ │ │ │ │ -struct  sVio │ │ │ │ │ -  Contains public data members for Vio class. More... │ │ │ │ │ -  │ │ │ │ │ - Macros │ │ │ │ │ -#define VPORTNUMBER   14916 │ │ │ │ │ -  our portbase; 5000 < VPORTNUMBER < 49152 More... │ │ │ │ │ -  │ │ │ │ │ -#define VIO_MAXBUF   10 │ │ │ │ │ -  number of internal buffers (BUFF datatype) More... │ │ │ │ │ -  │ │ │ │ │ - Typedefs │ │ │ │ │ - typedef enum VIOtype VIOtype │ │ │ │ │ -  Parameter for I/O type (sdio,buff,file,unix,inet) │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - typedef enum VIOfrmt VIOfrmt │ │ │ │ │ -  Parameter for compression type (XDR,ASC) More... │ │ │ │ │ -  │ │ │ │ │ -typedef enum VIOrwkey VIOrwkey │ │ │ │ │ -  Parameter for rw type (R,RW) More... │ │ │ │ │ -  │ │ │ │ │ - typedef struct sVio Vio │ │ │ │ │ -  Declaration of the Vio class as the Vio structure. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - Enumerations │ │ │ │ │ -enum  VIOtype { │ │ │ │ │ -   VIO_NO_TYPE , VIO_SDIO , VIO_BUFF , VIO_FILE , │ │ │ │ │ -   VIO_UNIX , VIO_INET │ │ │ │ │ - } │ │ │ │ │ -  Parameter for I/O type (sdio,buff,file,unix,inet) More... │ │ │ │ │ -  │ │ │ │ │ -enum  VIOfrmt { VIO_NO_FRMT , VIO_XDR , VIO_ASC } │ │ │ │ │ -  Parameter for compression type (XDR,ASC) More... │ │ │ │ │ -  │ │ │ │ │ -enum  VIOrwkey { VIO_NO_RW , VIO_R , VIO_W } │ │ │ │ │ -  Parameter for rw type (R,RW) More... │ │ │ │ │ -  │ │ │ │ │ - Functions │ │ │ │ │ - void Vio_start (void) │ │ │ │ │ -  Start Vio communication layer (init internal variables/buffers) More... │ │ │ │ │ -  │ │ │ │ │ - void Vio_stop (void) │ │ │ │ │ -  Shutdown Vio communication layer. More... │ │ │ │ │ -  │ │ │ │ │ - Vio * Vio_ctor (const char *socktype, const char *datafrmt, const char │ │ │ │ │ - *hostname, const char *filename, const char *rwkey) │ │ │ │ │ -  Construct the Vio object. More... │ │ │ │ │ -  │ │ │ │ │ - int Vio_ctor2 (Vio *thee, const char *socktype, const char *datafrmt, const │ │ │ │ │ - char *hostname, const char *filename, const char *rwkey) │ │ │ │ │ -  Work routine that Vio_ctor calls to do most of the construction. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - void Vio_dtor (Vio **thee) │ │ │ │ │ -  Destruct the Vio object. More... │ │ │ │ │ -  │ │ │ │ │ - void Vio_dtor2 (Vio *thee) │ │ │ │ │ -  Work routine that Vio_dtor calls to do most of the destruction. More... │ │ │ │ │ -  │ │ │ │ │ - void Vio_setWhiteChars (Vio *thee, char *whiteChars) │ │ │ │ │ -  Set the white character set for I/O stream. More... │ │ │ │ │ -  │ │ │ │ │ - void Vio_setCommChars (Vio *thee, char *commChars) │ │ │ │ │ -  Set the comment character set for I/O stream. More... │ │ │ │ │ -  │ │ │ │ │ - int Vio_accept (Vio *thee, int nonblock) │ │ │ │ │ -  Accept any waiting connect attempt to our socket on our machine. │ │ │ │ │ - More... │ │ │ │ │ -  │ │ │ │ │ - void Vio_acceptFree (Vio *thee) │ │ │ │ │ -  Free the socket child that was used for the last accept. More... │ │ │ │ │ -  │ │ │ │ │ - int Vio_connect (Vio *thee, int nonblock) │ │ │ │ │ -  Connect to some socket on a remote machine (or on our machine) More... │ │ │ │ │ -  │ │ │ │ │ - void Vio_connectFree (Vio *thee) │ │ │ │ │ -  Purge any output buffers (for , else a no-op) More... │ │ │ │ │ -  │ │ │ │ │ - int Vio_scanf (Vio *thee, char *parms,...) │ │ │ │ │ -  Mimic "scanf" from an arbitrary Vio device. More... │ │ │ │ │ -  │ │ │ │ │ - int Vio_printf (Vio *thee, char *parms,...) │ │ │ │ │ -  Mimic "printf" from an arbitrary Vio device. More... │ │ │ │ │ -  │ │ │ │ │ - int Vio_read (Vio *thee, char *buf, int bufsize) │ │ │ │ │ -  Read (up to) bufsize characters into buf from input device. More... │ │ │ │ │ -  │ │ │ │ │ - int Vio_write (Vio *thee, char *buf, int bufsize) │ │ │ │ │ -  Write bufsize characters from buf to output device. More... │ │ │ │ │ -  │ │ │ │ │ - void Vio_bufTake (Vio *thee, char *buf, int bufsize) │ │ │ │ │ -  Set the pointer to the internal buffer. More... │ │ │ │ │ -  │ │ │ │ │ -char * Vio_bufGive (Vio *thee) │ │ │ │ │ -  Return the pointer to the internal buffer. More... │ │ │ │ │ -  │ │ │ │ │ - int Vio_bufSize (Vio *thee) │ │ │ │ │ -  Return the length to the internal buffer. More... │ │ │ │ │ -  │ │ │ │ │ - Vio * Vio_socketOpen (char *key, const char *iodev, const char *iofmt, const │ │ │ │ │ - char *iohost, const char *iofile) │ │ │ │ │ -  Socket open for read or write. More... │ │ │ │ │ -  │ │ │ │ │ - void Vio_socketClose (Vio **sock) │ │ │ │ │ -  Socket close from read or write. More... │ │ │ │ │ -  │ │ │ │ │ ***** Detailed Description ***** │ │ │ │ │ -Class Vio: virtual I/O layer. │ │ │ │ │ - Version │ │ │ │ │ - Id │ │ │ │ │ - vio.h,v 1.28 2010/08/12 05:40:35 fetk Exp │ │ │ │ │ +The primary header for VSYS. (Virtual SYStem utilities library.) │ │ │ │ │ Author │ │ │ │ │ Michael Holst │ │ │ │ │ + Version │ │ │ │ │ + Id │ │ │ │ │ + vsys.h,v 1.12 2010/08/12 05:40:37 fetk Exp │ │ │ │ │ Attention │ │ │ │ │ * │ │ │ │ │ * MALOC = < Minimal Abstraction Layer for Object-oriented C > │ │ │ │ │ * Copyright (C) 1994-- Michael Holst │ │ │ │ │ * │ │ │ │ │ * This library is free software; you can redistribute it and/or │ │ │ │ │ * modify it under the terms of the GNU Lesser General Public │ │ │ │ │ @@ -147,17 +42,10 @@ │ │ │ │ │ * Lesser General Public License for more details. │ │ │ │ │ * │ │ │ │ │ * You should have received a copy of the GNU Lesser General Public │ │ │ │ │ * License along with this library; if not, write to the Free Software │ │ │ │ │ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA │ │ │ │ │ * │ │ │ │ │ * │ │ │ │ │ -***** Macro Definition Documentation ***** │ │ │ │ │ -***** ◆ VIO_MAXBUF ***** │ │ │ │ │ -#define VIO_MAXBUF   10 │ │ │ │ │ -number of internal buffers (BUFF datatype) │ │ │ │ │ -***** ◆ VPORTNUMBER ***** │ │ │ │ │ -#define VPORTNUMBER   14916 │ │ │ │ │ -our portbase; 5000 < VPORTNUMBER < 49152 │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00029_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vio.h Source File │ │ │ │ +MALOC: vsys.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -39,211 +39,37 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
vio.h
│ │ │ │ +
vsys.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │ -
39#ifndef _VIO_H_
│ │ │ │ -
40#define _VIO_H_
│ │ │ │ +
31#ifndef _VSYS_H_
│ │ │ │ +
32#define _VSYS_H_
│ │ │ │ +
33
│ │ │ │ +
34#include <maloc/maloc_base.h>
│ │ │ │ +
35
│ │ │ │ +
36#include <maloc/vnm.h>
│ │ │ │ +
37#include <maloc/vmem.h>
│ │ │ │ +
38#include <maloc/vio.h>
│ │ │ │ +
39#include <maloc/vset.h>
│ │ │ │ +
40#include <maloc/vpred.h>
│ │ │ │
41
│ │ │ │ -
42#include <maloc/maloc_base.h>
│ │ │ │ +
42#endif /* _VSYS_H_ */
│ │ │ │
43
│ │ │ │ -
44#include <maloc/vnm.h>
│ │ │ │ -
45
│ │ │ │ -
46/*
│ │ │ │ -
47 * ***************************************************************************
│ │ │ │ -
48 * Class Vio: Parameters and datatypes
│ │ │ │ -
49 * ***************************************************************************
│ │ │ │ -
50 */
│ │ │ │ -
51
│ │ │ │ -
53#define VPORTNUMBER 14916
│ │ │ │ -
55#define VIO_MAXBUF 10
│ │ │ │ -
56
│ │ │ │ -
62typedef enum VIOtype {
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
70
│ │ │ │ -
76typedef enum VIOfrmt {
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
81
│ │ │ │ -
87typedef enum VIOrwkey {
│ │ │ │ - │ │ │ │ - │ │ │ │ -
90 VIO_W
│ │ │ │ - │ │ │ │ -
92
│ │ │ │ -
98struct sVio {
│ │ │ │ -
99
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
122 int error;
│ │ │ │ -
123 int dirty;
│ │ │ │ -
125 FILE *fp;
│ │ │ │ -
126 int so;
│ │ │ │ -
127 int soc;
│ │ │ │ -
128 void *name;
│ │ │ │ -
129 void *axdr;
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
140 char *VIObuffer;
│ │ │ │ - │ │ │ │ - │ │ │ │ -
144};
│ │ │ │ -
145
│ │ │ │ -
151typedef struct sVio Vio;
│ │ │ │ -
152
│ │ │ │ -
153/*
│ │ │ │ -
154 * ***************************************************************************
│ │ │ │ -
155 * Class Vio: Inlineable methods (vio.c)
│ │ │ │ -
156 * ***************************************************************************
│ │ │ │ -
157 */
│ │ │ │ -
158
│ │ │ │ -
159#if !defined(VINLINE_MALOC)
│ │ │ │ -
160#else /* if defined(VINLINE_MALOC) */
│ │ │ │ -
161#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ -
162
│ │ │ │ -
163/*
│ │ │ │ -
164 * ***************************************************************************
│ │ │ │ -
165 * Class Vio: Non-Inlineable methods (vio.c)
│ │ │ │ -
166 * ***************************************************************************
│ │ │ │ -
167 */
│ │ │ │ -
168
│ │ │ │ -
176void Vio_start(void);
│ │ │ │ -
177
│ │ │ │ -
185void Vio_stop(void);
│ │ │ │ -
186
│ │ │ │ -
199Vio* Vio_ctor(const char *socktype, const char *datafrmt,
│ │ │ │ -
200 const char *hostname, const char *filename, const char *rwkey);
│ │ │ │ -
201
│ │ │ │ -
215int Vio_ctor2(Vio *thee, const char *socktype, const char *datafrmt,
│ │ │ │ -
216 const char *hostname, const char *filename, const char *rwkey);
│ │ │ │ -
217
│ │ │ │ -
226void Vio_dtor(Vio **thee);
│ │ │ │ -
227
│ │ │ │ -
236void Vio_dtor2(Vio *thee);
│ │ │ │ -
237
│ │ │ │ - │ │ │ │ -
248
│ │ │ │ -
258void Vio_setCommChars(Vio *thee, char *commChars);
│ │ │ │ -
259
│ │ │ │ -
272int Vio_accept(Vio *thee, int nonblock);
│ │ │ │ -
273
│ │ │ │ -
282void Vio_acceptFree(Vio *thee);
│ │ │ │ -
283
│ │ │ │ -
296int Vio_connect(Vio *thee, int nonblock);
│ │ │ │ -
297
│ │ │ │ - │ │ │ │ -
307
│ │ │ │ -
317int Vio_scanf(Vio *thee, char *parms, ...);
│ │ │ │ -
318
│ │ │ │ -
328int Vio_printf(Vio *thee, char *parms, ...);
│ │ │ │ -
329
│ │ │ │ -
340int Vio_read(Vio *thee, char *buf, int bufsize);
│ │ │ │ -
341
│ │ │ │ -
352int Vio_write(Vio *thee, char *buf, int bufsize);
│ │ │ │ -
353
│ │ │ │ -
364void Vio_bufTake(Vio *thee, char *buf, int bufsize);
│ │ │ │ -
365
│ │ │ │ -
374char* Vio_bufGive(Vio *thee);
│ │ │ │ -
375
│ │ │ │ -
384int Vio_bufSize(Vio *thee);
│ │ │ │ -
385
│ │ │ │ - │ │ │ │ -
399 const char *iodev, const char *iofmt,
│ │ │ │ -
400 const char *iohost, const char *iofile);
│ │ │ │ -
401
│ │ │ │ -
410void Vio_socketClose(Vio **sock);
│ │ │ │ -
411
│ │ │ │ -
412#endif /* _VIO_H_ */
│ │ │ │ -
413
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ -
#define VMAX_ARGNUM
Global constant.
Definition: maloc_base.h:225
│ │ │ │ -
#define VMAX_BUFSIZE
Global constant.
Definition: maloc_base.h:229
│ │ │ │ -
#define VMAX_ARGLEN
Global constant.
Definition: maloc_base.h:227
│ │ │ │ -
Header file for an ISO C [V]irtual [N]umerical [M]achine.
│ │ │ │ -
int Vio_bufSize(Vio *thee)
Return the length to the internal buffer.
│ │ │ │ -
void Vio_stop(void)
Shutdown Vio communication layer.
│ │ │ │ -
int Vio_write(Vio *thee, char *buf, int bufsize)
Write bufsize characters from buf to output device.
│ │ │ │ -
int Vio_scanf(Vio *thee, char *parms,...)
Mimic "scanf" from an arbitrary Vio device.
│ │ │ │ -
void Vio_acceptFree(Vio *thee)
Free the socket child that was used for the last accept.
│ │ │ │ -
void Vio_start(void)
Start Vio communication layer (init internal variables/buffers)
│ │ │ │ -
int Vio_printf(Vio *thee, char *parms,...)
Mimic "printf" from an arbitrary Vio device.
│ │ │ │ -
Vio * Vio_socketOpen(char *key, const char *iodev, const char *iofmt, const char *iohost, const char *iofile)
Socket open for read or write.
│ │ │ │ -
void Vio_setWhiteChars(Vio *thee, char *whiteChars)
Set the white character set for I/O stream.
│ │ │ │ -
void Vio_socketClose(Vio **sock)
Socket close from read or write.
│ │ │ │ -
int Vio_connect(Vio *thee, int nonblock)
Connect to some socket on a remote machine (or on our machine)
│ │ │ │ -
VIOfrmt
Parameter for compression type (XDR,ASC)
Definition: vio.h:76
│ │ │ │ -
int Vio_accept(Vio *thee, int nonblock)
Accept any waiting connect attempt to our socket on our machine.
│ │ │ │ -
Vio * Vio_ctor(const char *socktype, const char *datafrmt, const char *hostname, const char *filename, const char *rwkey)
Construct the Vio object.
│ │ │ │ -
VIOtype
Parameter for I/O type (sdio,buff,file,unix,inet)
Definition: vio.h:62
│ │ │ │ -
void Vio_dtor(Vio **thee)
Destruct the Vio object.
│ │ │ │ -
int Vio_read(Vio *thee, char *buf, int bufsize)
Read (up to) bufsize characters into buf from input device.
│ │ │ │ -
void Vio_bufTake(Vio *thee, char *buf, int bufsize)
Set the pointer to the internal buffer.
│ │ │ │ -
void Vio_connectFree(Vio *thee)
Purge any output buffers (for <UNIX/INET>, else a no-op)
│ │ │ │ -
void Vio_setCommChars(Vio *thee, char *commChars)
Set the comment character set for I/O stream.
│ │ │ │ -
char * Vio_bufGive(Vio *thee)
Return the pointer to the internal buffer.
│ │ │ │ -
VIOrwkey
Parameter for rw type (R,RW)
Definition: vio.h:87
│ │ │ │ -
void Vio_dtor2(Vio *thee)
Work routine that Vio_dtor calls to do most of the destruction.
│ │ │ │ -
int Vio_ctor2(Vio *thee, const char *socktype, const char *datafrmt, const char *hostname, const char *filename, const char *rwkey)
Work routine that Vio_ctor calls to do most of the construction.
│ │ │ │ -
@ VIO_XDR
Definition: vio.h:78
│ │ │ │ -
@ VIO_NO_FRMT
Definition: vio.h:77
│ │ │ │ -
@ VIO_ASC
Definition: vio.h:79
│ │ │ │ -
@ VIO_NO_TYPE
Definition: vio.h:63
│ │ │ │ -
@ VIO_FILE
Definition: vio.h:66
│ │ │ │ -
@ VIO_UNIX
Definition: vio.h:67
│ │ │ │ -
@ VIO_BUFF
Definition: vio.h:65
│ │ │ │ -
@ VIO_SDIO
Definition: vio.h:64
│ │ │ │ -
@ VIO_INET
Definition: vio.h:68
│ │ │ │ -
@ VIO_NO_RW
Definition: vio.h:88
│ │ │ │ -
@ VIO_W
Definition: vio.h:90
│ │ │ │ -
@ VIO_R
Definition: vio.h:89
│ │ │ │ -
Contains public data members for Vio class.
Definition: vio.h:98
│ │ │ │ -
char putBuffer[VMAX_BUFSIZE]
Definition: vio.h:137
│ │ │ │ -
VIOtype type
Definition: vio.h:100
│ │ │ │ -
int ioBufferLen
Definition: vio.h:135
│ │ │ │ -
VIOrwkey rwkey
Definition: vio.h:113
│ │ │ │ -
char commChars[VMAX_ARGNUM]
Definition: vio.h:132
│ │ │ │ -
int VIObufferPtr
Definition: vio.h:142
│ │ │ │ -
FILE * fp
Definition: vio.h:125
│ │ │ │ -
VIOfrmt frmt
Definition: vio.h:108
│ │ │ │ -
int dirty
Definition: vio.h:123
│ │ │ │ -
int soc
Definition: vio.h:127
│ │ │ │ -
char lhost[VMAX_ARGLEN]
Definition: vio.h:119
│ │ │ │ -
char whiteChars[VMAX_ARGNUM]
Definition: vio.h:131
│ │ │ │ -
char ioBuffer[VMAX_BUFSIZE]
Definition: vio.h:134
│ │ │ │ -
int VIObufferLen
Definition: vio.h:141
│ │ │ │ -
char file[VMAX_ARGLEN]
Definition: vio.h:118
│ │ │ │ -
void * name
Definition: vio.h:128
│ │ │ │ -
void * axdr
Definition: vio.h:129
│ │ │ │ -
char * VIObuffer
Definition: vio.h:140
│ │ │ │ -
int putBufferLen
Definition: vio.h:138
│ │ │ │ -
int so
Definition: vio.h:126
│ │ │ │ -
char rhost[VMAX_ARGLEN]
Definition: vio.h:120
│ │ │ │ -
int error
Definition: vio.h:122
│ │ │ │ +
Class Vmem: A safer, object-oriented, malloc/free object.
│ │ │ │ +
Header file for the Geometric Predicates.
│ │ │ │ +
Header file for an ISO C [V]irtual [N]umerical [M]achine.
│ │ │ │ +
Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer.
│ │ │ │ +
Class Vset: a dynamic set object.
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,347 +3,38 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -vio.h │ │ │ │ │ +vsys.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ 1 │ │ │ │ │ - 39#ifndef _VIO_H_ │ │ │ │ │ - 40#define _VIO_H_ │ │ │ │ │ + 31#ifndef _VSYS_H_ │ │ │ │ │ + 32#define _VSYS_H_ │ │ │ │ │ + 33 │ │ │ │ │ + 34#include │ │ │ │ │ + 35 │ │ │ │ │ + 36#include │ │ │ │ │ + 37#include │ │ │ │ │ + 38#include │ │ │ │ │ + 39#include │ │ │ │ │ + 40#include │ │ │ │ │ 41 │ │ │ │ │ - 42#include │ │ │ │ │ + 42#endif /* _VSYS_H_ */ │ │ │ │ │ 43 │ │ │ │ │ - 44#include │ │ │ │ │ - 45 │ │ │ │ │ - 46/* │ │ │ │ │ - 47 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 48 * Class Vio: Parameters and datatypes │ │ │ │ │ - 49 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 50 */ │ │ │ │ │ - 51 │ │ │ │ │ -53#define VPORTNUMBER 14916 │ │ │ │ │ -55#define VIO_MAXBUF 10 │ │ │ │ │ - 56 │ │ │ │ │ -62typedef enum VIOtype { │ │ │ │ │ -63 VIO_NO_TYPE, │ │ │ │ │ -64 VIO_SDIO, │ │ │ │ │ -65 VIO_BUFF, │ │ │ │ │ -66 VIO_FILE, │ │ │ │ │ -67 VIO_UNIX, │ │ │ │ │ - 68 VIO_INET │ │ │ │ │ -69} VIOtype; │ │ │ │ │ - 70 │ │ │ │ │ -76typedef enum VIOfrmt { │ │ │ │ │ -77 VIO_NO_FRMT, │ │ │ │ │ -78 VIO_XDR, │ │ │ │ │ - 79 VIO_ASC │ │ │ │ │ -80} VIOfrmt; │ │ │ │ │ - 81 │ │ │ │ │ -87typedef enum VIOrwkey { │ │ │ │ │ -88 VIO_NO_RW, │ │ │ │ │ -89 VIO_R, │ │ │ │ │ - 90 VIO_W │ │ │ │ │ -91} VIOrwkey; │ │ │ │ │ - 92 │ │ │ │ │ -98struct sVio { │ │ │ │ │ - 99 │ │ │ │ │ -100 VIOtype type; │ │ │ │ │ -108 VIOfrmt frmt; │ │ │ │ │ -113 VIOrwkey rwkey; │ │ │ │ │ -118 char file[VMAX_ARGLEN]; │ │ │ │ │ -119 char lhost[VMAX_ARGLEN]; │ │ │ │ │ -120 char rhost[VMAX_ARGLEN]; │ │ │ │ │ -122 int error; │ │ │ │ │ -123 int dirty; │ │ │ │ │ -125 FILE *fp; │ │ │ │ │ -126 int so; │ │ │ │ │ -127 int soc; │ │ │ │ │ -128 void *name; │ │ │ │ │ -129 void *axdr; │ │ │ │ │ -131 char whiteChars[VMAX_ARGNUM]; │ │ │ │ │ -132 char commChars[VMAX_ARGNUM]; │ │ │ │ │ -134 char ioBuffer[VMAX_BUFSIZE]; │ │ │ │ │ -135 int ioBufferLen; │ │ │ │ │ -137 char putBuffer[VMAX_BUFSIZE]; │ │ │ │ │ -138 int putBufferLen; │ │ │ │ │ -140 char *VIObuffer; │ │ │ │ │ -141 int VIObufferLen; │ │ │ │ │ -142 int VIObufferPtr; │ │ │ │ │ - 144}; │ │ │ │ │ - 145 │ │ │ │ │ -151typedef struct sVio Vio; │ │ │ │ │ - 152 │ │ │ │ │ - 153/* │ │ │ │ │ - 154 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 155 * Class Vio: Inlineable methods (vio.c) │ │ │ │ │ - 156 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 157 */ │ │ │ │ │ - 158 │ │ │ │ │ - 159#if !defined(VINLINE_MALOC) │ │ │ │ │ - 160#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ - 161#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ - 162 │ │ │ │ │ - 163/* │ │ │ │ │ - 164 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 165 * Class Vio: Non-Inlineable methods (vio.c) │ │ │ │ │ - 166 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 167 */ │ │ │ │ │ - 168 │ │ │ │ │ -176void Vio_start(void); │ │ │ │ │ - 177 │ │ │ │ │ -185void Vio_stop(void); │ │ │ │ │ - 186 │ │ │ │ │ -199Vio* Vio_ctor(const char *socktype, const char *datafrmt, │ │ │ │ │ - 200 const char *hostname, const char *filename, const char *rwkey); │ │ │ │ │ - 201 │ │ │ │ │ -215int Vio_ctor2(Vio *thee, const char *socktype, const char *datafrmt, │ │ │ │ │ - 216 const char *hostname, const char *filename, const char *rwkey); │ │ │ │ │ - 217 │ │ │ │ │ -226void Vio_dtor(Vio **thee); │ │ │ │ │ - 227 │ │ │ │ │ -236void Vio_dtor2(Vio *thee); │ │ │ │ │ - 237 │ │ │ │ │ -247void Vio_setWhiteChars(Vio *thee, char *whiteChars); │ │ │ │ │ - 248 │ │ │ │ │ -258void Vio_setCommChars(Vio *thee, char *commChars); │ │ │ │ │ - 259 │ │ │ │ │ -272int Vio_accept(Vio *thee, int nonblock); │ │ │ │ │ - 273 │ │ │ │ │ -282void Vio_acceptFree(Vio *thee); │ │ │ │ │ - 283 │ │ │ │ │ -296int Vio_connect(Vio *thee, int nonblock); │ │ │ │ │ - 297 │ │ │ │ │ -306void Vio_connectFree(Vio *thee); │ │ │ │ │ - 307 │ │ │ │ │ -317int Vio_scanf(Vio *thee, char *parms, ...); │ │ │ │ │ - 318 │ │ │ │ │ -328int Vio_printf(Vio *thee, char *parms, ...); │ │ │ │ │ - 329 │ │ │ │ │ -340int Vio_read(Vio *thee, char *buf, int bufsize); │ │ │ │ │ - 341 │ │ │ │ │ -352int Vio_write(Vio *thee, char *buf, int bufsize); │ │ │ │ │ - 353 │ │ │ │ │ -364void Vio_bufTake(Vio *thee, char *buf, int bufsize); │ │ │ │ │ - 365 │ │ │ │ │ -374char* Vio_bufGive(Vio *thee); │ │ │ │ │ - 375 │ │ │ │ │ -384int Vio_bufSize(Vio *thee); │ │ │ │ │ - 385 │ │ │ │ │ -398Vio *Vio_socketOpen(char *key, │ │ │ │ │ - 399 const char *iodev, const char *iofmt, │ │ │ │ │ - 400 const char *iohost, const char *iofile); │ │ │ │ │ - 401 │ │ │ │ │ -410void Vio_socketClose(Vio **sock); │ │ │ │ │ - 411 │ │ │ │ │ - 412#endif /* _VIO_H_ */ │ │ │ │ │ - 413 │ │ │ │ │ maloc_base.h │ │ │ │ │ The base (or foundation) header for MALOC. │ │ │ │ │ -VMAX_ARGNUM │ │ │ │ │ -#define VMAX_ARGNUM │ │ │ │ │ -Global constant. │ │ │ │ │ -Definition: maloc_base.h:225 │ │ │ │ │ -VMAX_BUFSIZE │ │ │ │ │ -#define VMAX_BUFSIZE │ │ │ │ │ -Global constant. │ │ │ │ │ -Definition: maloc_base.h:229 │ │ │ │ │ -VMAX_ARGLEN │ │ │ │ │ -#define VMAX_ARGLEN │ │ │ │ │ -Global constant. │ │ │ │ │ -Definition: maloc_base.h:227 │ │ │ │ │ +vmem.h │ │ │ │ │ +Class Vmem: A safer, object-oriented, malloc/free object. │ │ │ │ │ +vpred.h │ │ │ │ │ +Header file for the Geometric Predicates. │ │ │ │ │ vnm.h │ │ │ │ │ Header file for an ISO C [V]irtual [N]umerical [M]achine. │ │ │ │ │ -Vio_bufSize │ │ │ │ │ -int Vio_bufSize(Vio *thee) │ │ │ │ │ -Return the length to the internal buffer. │ │ │ │ │ -Vio_stop │ │ │ │ │ -void Vio_stop(void) │ │ │ │ │ -Shutdown Vio communication layer. │ │ │ │ │ -Vio_write │ │ │ │ │ -int Vio_write(Vio *thee, char *buf, int bufsize) │ │ │ │ │ -Write bufsize characters from buf to output device. │ │ │ │ │ -Vio_scanf │ │ │ │ │ -int Vio_scanf(Vio *thee, char *parms,...) │ │ │ │ │ -Mimic "scanf" from an arbitrary Vio device. │ │ │ │ │ -Vio_acceptFree │ │ │ │ │ -void Vio_acceptFree(Vio *thee) │ │ │ │ │ -Free the socket child that was used for the last accept. │ │ │ │ │ -Vio_start │ │ │ │ │ -void Vio_start(void) │ │ │ │ │ -Start Vio communication layer (init internal variables/buffers) │ │ │ │ │ -Vio_printf │ │ │ │ │ -int Vio_printf(Vio *thee, char *parms,...) │ │ │ │ │ -Mimic "printf" from an arbitrary Vio device. │ │ │ │ │ -Vio_socketOpen │ │ │ │ │ -Vio * Vio_socketOpen(char *key, const char *iodev, const char *iofmt, const │ │ │ │ │ -char *iohost, const char *iofile) │ │ │ │ │ -Socket open for read or write. │ │ │ │ │ -Vio_setWhiteChars │ │ │ │ │ -void Vio_setWhiteChars(Vio *thee, char *whiteChars) │ │ │ │ │ -Set the white character set for I/O stream. │ │ │ │ │ -Vio_socketClose │ │ │ │ │ -void Vio_socketClose(Vio **sock) │ │ │ │ │ -Socket close from read or write. │ │ │ │ │ -Vio_connect │ │ │ │ │ -int Vio_connect(Vio *thee, int nonblock) │ │ │ │ │ -Connect to some socket on a remote machine (or on our machine) │ │ │ │ │ -VIOfrmt │ │ │ │ │ -VIOfrmt │ │ │ │ │ -Parameter for compression type (XDR,ASC) │ │ │ │ │ -Definition: vio.h:76 │ │ │ │ │ -Vio_accept │ │ │ │ │ -int Vio_accept(Vio *thee, int nonblock) │ │ │ │ │ -Accept any waiting connect attempt to our socket on our machine. │ │ │ │ │ -Vio_ctor │ │ │ │ │ -Vio * Vio_ctor(const char *socktype, const char *datafrmt, const char │ │ │ │ │ -*hostname, const char *filename, const char *rwkey) │ │ │ │ │ -Construct the Vio object. │ │ │ │ │ -VIOtype │ │ │ │ │ -VIOtype │ │ │ │ │ -Parameter for I/O type (sdio,buff,file,unix,inet) │ │ │ │ │ -Definition: vio.h:62 │ │ │ │ │ -Vio_dtor │ │ │ │ │ -void Vio_dtor(Vio **thee) │ │ │ │ │ -Destruct the Vio object. │ │ │ │ │ -Vio_read │ │ │ │ │ -int Vio_read(Vio *thee, char *buf, int bufsize) │ │ │ │ │ -Read (up to) bufsize characters into buf from input device. │ │ │ │ │ -Vio_bufTake │ │ │ │ │ -void Vio_bufTake(Vio *thee, char *buf, int bufsize) │ │ │ │ │ -Set the pointer to the internal buffer. │ │ │ │ │ -Vio_connectFree │ │ │ │ │ -void Vio_connectFree(Vio *thee) │ │ │ │ │ -Purge any output buffers (for , else a no-op) │ │ │ │ │ -Vio_setCommChars │ │ │ │ │ -void Vio_setCommChars(Vio *thee, char *commChars) │ │ │ │ │ -Set the comment character set for I/O stream. │ │ │ │ │ -Vio_bufGive │ │ │ │ │ -char * Vio_bufGive(Vio *thee) │ │ │ │ │ -Return the pointer to the internal buffer. │ │ │ │ │ -VIOrwkey │ │ │ │ │ -VIOrwkey │ │ │ │ │ -Parameter for rw type (R,RW) │ │ │ │ │ -Definition: vio.h:87 │ │ │ │ │ -Vio_dtor2 │ │ │ │ │ -void Vio_dtor2(Vio *thee) │ │ │ │ │ -Work routine that Vio_dtor calls to do most of the destruction. │ │ │ │ │ -Vio_ctor2 │ │ │ │ │ -int Vio_ctor2(Vio *thee, const char *socktype, const char *datafrmt, const char │ │ │ │ │ -*hostname, const char *filename, const char *rwkey) │ │ │ │ │ -Work routine that Vio_ctor calls to do most of the construction. │ │ │ │ │ -VIO_XDR │ │ │ │ │ -@ VIO_XDR │ │ │ │ │ -Definition: vio.h:78 │ │ │ │ │ -VIO_NO_FRMT │ │ │ │ │ -@ VIO_NO_FRMT │ │ │ │ │ -Definition: vio.h:77 │ │ │ │ │ -VIO_ASC │ │ │ │ │ -@ VIO_ASC │ │ │ │ │ -Definition: vio.h:79 │ │ │ │ │ -VIO_NO_TYPE │ │ │ │ │ -@ VIO_NO_TYPE │ │ │ │ │ -Definition: vio.h:63 │ │ │ │ │ -VIO_FILE │ │ │ │ │ -@ VIO_FILE │ │ │ │ │ -Definition: vio.h:66 │ │ │ │ │ -VIO_UNIX │ │ │ │ │ -@ VIO_UNIX │ │ │ │ │ -Definition: vio.h:67 │ │ │ │ │ -VIO_BUFF │ │ │ │ │ -@ VIO_BUFF │ │ │ │ │ -Definition: vio.h:65 │ │ │ │ │ -VIO_SDIO │ │ │ │ │ -@ VIO_SDIO │ │ │ │ │ -Definition: vio.h:64 │ │ │ │ │ -VIO_INET │ │ │ │ │ -@ VIO_INET │ │ │ │ │ -Definition: vio.h:68 │ │ │ │ │ -VIO_NO_RW │ │ │ │ │ -@ VIO_NO_RW │ │ │ │ │ -Definition: vio.h:88 │ │ │ │ │ -VIO_W │ │ │ │ │ -@ VIO_W │ │ │ │ │ -Definition: vio.h:90 │ │ │ │ │ -VIO_R │ │ │ │ │ -@ VIO_R │ │ │ │ │ -Definition: vio.h:89 │ │ │ │ │ -sVio │ │ │ │ │ -Contains public data members for Vio class. │ │ │ │ │ -Definition: vio.h:98 │ │ │ │ │ -sVio::putBuffer │ │ │ │ │ -char putBuffer[VMAX_BUFSIZE] │ │ │ │ │ -Definition: vio.h:137 │ │ │ │ │ -sVio::type │ │ │ │ │ -VIOtype type │ │ │ │ │ -Definition: vio.h:100 │ │ │ │ │ -sVio::ioBufferLen │ │ │ │ │ -int ioBufferLen │ │ │ │ │ -Definition: vio.h:135 │ │ │ │ │ -sVio::rwkey │ │ │ │ │ -VIOrwkey rwkey │ │ │ │ │ -Definition: vio.h:113 │ │ │ │ │ -sVio::commChars │ │ │ │ │ -char commChars[VMAX_ARGNUM] │ │ │ │ │ -Definition: vio.h:132 │ │ │ │ │ -sVio::VIObufferPtr │ │ │ │ │ -int VIObufferPtr │ │ │ │ │ -Definition: vio.h:142 │ │ │ │ │ -sVio::fp │ │ │ │ │ -FILE * fp │ │ │ │ │ -Definition: vio.h:125 │ │ │ │ │ -sVio::frmt │ │ │ │ │ -VIOfrmt frmt │ │ │ │ │ -Definition: vio.h:108 │ │ │ │ │ -sVio::dirty │ │ │ │ │ -int dirty │ │ │ │ │ -Definition: vio.h:123 │ │ │ │ │ -sVio::soc │ │ │ │ │ -int soc │ │ │ │ │ -Definition: vio.h:127 │ │ │ │ │ -sVio::lhost │ │ │ │ │ -char lhost[VMAX_ARGLEN] │ │ │ │ │ -Definition: vio.h:119 │ │ │ │ │ -sVio::whiteChars │ │ │ │ │ -char whiteChars[VMAX_ARGNUM] │ │ │ │ │ -Definition: vio.h:131 │ │ │ │ │ -sVio::ioBuffer │ │ │ │ │ -char ioBuffer[VMAX_BUFSIZE] │ │ │ │ │ -Definition: vio.h:134 │ │ │ │ │ -sVio::VIObufferLen │ │ │ │ │ -int VIObufferLen │ │ │ │ │ -Definition: vio.h:141 │ │ │ │ │ -sVio::file │ │ │ │ │ -char file[VMAX_ARGLEN] │ │ │ │ │ -Definition: vio.h:118 │ │ │ │ │ -sVio::name │ │ │ │ │ -void * name │ │ │ │ │ -Definition: vio.h:128 │ │ │ │ │ -sVio::axdr │ │ │ │ │ -void * axdr │ │ │ │ │ -Definition: vio.h:129 │ │ │ │ │ -sVio::VIObuffer │ │ │ │ │ -char * VIObuffer │ │ │ │ │ -Definition: vio.h:140 │ │ │ │ │ -sVio::putBufferLen │ │ │ │ │ -int putBufferLen │ │ │ │ │ -Definition: vio.h:138 │ │ │ │ │ -sVio::so │ │ │ │ │ -int so │ │ │ │ │ -Definition: vio.h:126 │ │ │ │ │ -sVio::rhost │ │ │ │ │ -char rhost[VMAX_ARGLEN] │ │ │ │ │ -Definition: vio.h:120 │ │ │ │ │ -sVio::error │ │ │ │ │ -int error │ │ │ │ │ -Definition: vio.h:122 │ │ │ │ │ +vio.h │ │ │ │ │ +Class Vio: virtual I/O layer. │ │ │ │ │ +vset.h │ │ │ │ │ +Class Vset: a dynamic set object. │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00031.dot │ │ │ │ @@ -1,27 +1,25 @@ │ │ │ │ -digraph "vio.h" │ │ │ │ +digraph "vsys.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vio.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ + Node1 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ - Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ - Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node4 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ - Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node5 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ - Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node6 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ - Node6 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node7 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ - Node7 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node8 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ - Node8 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node8 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node2 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node4 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ + Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node5 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ + Node5 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node6 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ + Node6 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node7 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ + Node7 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node7 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00032.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vmem.h File Reference │ │ │ │ +MALOC: vio.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -41,108 +41,167 @@ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ +Macros | │ │ │ │ Typedefs | │ │ │ │ +Enumerations | │ │ │ │ Functions
│ │ │ │ -
vmem.h File Reference
│ │ │ │ +
vio.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ -

Class Vmem: A safer, object-oriented, malloc/free object. │ │ │ │ +

Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer. │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ +#include <maloc/vnm.h>
│ │ │ │
│ │ │ │ -Include dependency graph for vmem.h:
│ │ │ │ +Include dependency graph for vio.h:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

struct  sVmem
 Contains public data members for Vmem class. More...
struct  sVio
 Contains public data members for Vio class. More...
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Macros

#define VPORTNUMBER   14916
 our portbase; 5000 < VPORTNUMBER < 49152 More...
 
#define VIO_MAXBUF   10
 number of internal buffers (BUFF datatype) More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ Typedefs

typedef struct sVmem Vmem
 Declaration of the Vmem class as the Vmem structure. More...
 
typedef enum VIOtype VIOtype
 Parameter for I/O type (sdio,buff,file,unix,inet) More...
 
typedef enum VIOfrmt VIOfrmt
 Parameter for compression type (XDR,ASC) More...
 
typedef enum VIOrwkey VIOrwkey
 Parameter for rw type (R,RW) More...
 
typedef struct sVio Vio
 Declaration of the Vio class as the Vio structure. More...
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ +Enumerations

enum  VIOtype {
│ │ │ │ +  VIO_NO_TYPE │ │ │ │ +, VIO_SDIO │ │ │ │ +, VIO_BUFF │ │ │ │ +, VIO_FILE │ │ │ │ +,
│ │ │ │ +  VIO_UNIX │ │ │ │ +, VIO_INET │ │ │ │ +
│ │ │ │ + }
 Parameter for I/O type (sdio,buff,file,unix,inet) More...
 
enum  VIOfrmt { VIO_NO_FRMT │ │ │ │ +, VIO_XDR │ │ │ │ +, VIO_ASC │ │ │ │ + }
 Parameter for compression type (XDR,ASC) More...
 
enum  VIOrwkey { VIO_NO_RW │ │ │ │ +, VIO_R │ │ │ │ +, VIO_W │ │ │ │ + }
 Parameter for rw type (R,RW) More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Functions

size_t Vmem_bytesTotal (void)
 Return total of all active Vmem malloc areas (current footprint) More...
 
size_t Vmem_mallocBytesTotal (void)
 Return total of all Vmem malloc allocations. More...
 
size_t Vmem_freeBytesTotal (void)
 Return total of all Vmem free calls. More...
 
size_t Vmem_highWaterTotal (void)
 Return the high-water byte mark (largest footprint) More...
 
size_t Vmem_mallocAreasTotal (void)
 Return total of all active Vmem malloc areas by groups. More...
 
void Vmem_printTotal (void)
 Print current memory statistics for all Vmem malloc/free areas. More...
 
VmemVmem_ctor (char *name)
 Construct the dynamic memory allocation logging object. More...
 
void Vmem_dtor (Vmem **thee)
 Destruct the dynamic memory allocation logging object. More...
 
void * Vmem_malloc (Vmem *thee, size_t num, size_t size)
 A safe logged version of malloc. More...
 
void Vmem_free (Vmem *thee, size_t num, size_t size, void **ram)
 A safe logged version of free. More...
 
void * Vmem_realloc (Vmem *thee, size_t num, size_t size, void **ram, size_t newNum)
 A safe logged version of realloc (usually a bad idea to use this) More...
 
size_t Vmem_bytes (Vmem *thee)
 Return total of all ACTIVE malloc areas used by Vmem object. More...
 
size_t Vmem_mallocBytes (Vmem *thee)
 Return total of all mallocs performed by Vmem object. More...
 
size_t Vmem_freeBytes (Vmem *thee)
 Return total of all frees performed by Vmem object. More...
 
size_t Vmem_highWater (Vmem *thee)
 Return high-water malloc bytemark hit by Vmem object. More...
 
size_t Vmem_mallocAreas (Vmem *thee)
 Return total number of individual active malloc areas. More...
 
void Vmem_print (Vmem *thee)
 Print current memory stats associated with this Vmem object. More...
 
void Vio_start (void)
 Start Vio communication layer (init internal variables/buffers) More...
 
void Vio_stop (void)
 Shutdown Vio communication layer. More...
 
VioVio_ctor (const char *socktype, const char *datafrmt, const char *hostname, const char *filename, const char *rwkey)
 Construct the Vio object. More...
 
int Vio_ctor2 (Vio *thee, const char *socktype, const char *datafrmt, const char *hostname, const char *filename, const char *rwkey)
 Work routine that Vio_ctor calls to do most of the construction. More...
 
void Vio_dtor (Vio **thee)
 Destruct the Vio object. More...
 
void Vio_dtor2 (Vio *thee)
 Work routine that Vio_dtor calls to do most of the destruction. More...
 
void Vio_setWhiteChars (Vio *thee, char *whiteChars)
 Set the white character set for I/O stream. More...
 
void Vio_setCommChars (Vio *thee, char *commChars)
 Set the comment character set for I/O stream. More...
 
int Vio_accept (Vio *thee, int nonblock)
 Accept any waiting connect attempt to our socket on our machine. More...
 
void Vio_acceptFree (Vio *thee)
 Free the socket child that was used for the last accept. More...
 
int Vio_connect (Vio *thee, int nonblock)
 Connect to some socket on a remote machine (or on our machine) More...
 
void Vio_connectFree (Vio *thee)
 Purge any output buffers (for <UNIX/INET>, else a no-op) More...
 
int Vio_scanf (Vio *thee, char *parms,...)
 Mimic "scanf" from an arbitrary Vio device. More...
 
int Vio_printf (Vio *thee, char *parms,...)
 Mimic "printf" from an arbitrary Vio device. More...
 
int Vio_read (Vio *thee, char *buf, int bufsize)
 Read (up to) bufsize characters into buf from input device. More...
 
int Vio_write (Vio *thee, char *buf, int bufsize)
 Write bufsize characters from buf to output device. More...
 
void Vio_bufTake (Vio *thee, char *buf, int bufsize)
 Set the pointer to the internal buffer. More...
 
char * Vio_bufGive (Vio *thee)
 Return the pointer to the internal buffer. More...
 
int Vio_bufSize (Vio *thee)
 Return the length to the internal buffer. More...
 
VioVio_socketOpen (char *key, const char *iodev, const char *iofmt, const char *iohost, const char *iofile)
 Socket open for read or write. More...
 
void Vio_socketClose (Vio **sock)
 Socket close from read or write. More...
 
│ │ │ │

Detailed Description

│ │ │ │ -

Class Vmem: A safer, object-oriented, malloc/free object.

│ │ │ │ -
Author
Michael Holst
│ │ │ │ -
Note
None
│ │ │ │ +

Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer.

│ │ │ │
Version
│ │ │ │ -
Id
vmem.h,v 1.21 2010/08/12 05:40:36 fetk Exp
│ │ │ │ +
Id
vio.h,v 1.28 2010/08/12 05:40:35 fetk Exp
│ │ │ │ +
Author
Michael Holst
│ │ │ │
Attention
*
│ │ │ │  * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │  * Copyright (C) 1994-- Michael Holst
│ │ │ │  *
│ │ │ │  * This library is free software; you can redistribute it and/or
│ │ │ │  * modify it under the terms of the GNU Lesser General Public
│ │ │ │  * License as published by the Free Software Foundation; either
│ │ │ │ @@ -154,14 +213,47 @@
│ │ │ │  * Lesser General Public License for more details.
│ │ │ │  *
│ │ │ │  * You should have received a copy of the GNU Lesser General Public
│ │ │ │  * License along with this library; if not, write to the Free Software
│ │ │ │  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
│ │ │ │  * 
│ │ │ │  * 
│ │ │ │ -
│ │ │ │ +

Macro Definition Documentation

│ │ │ │ + │ │ │ │ +

◆ VIO_MAXBUF

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
#define VIO_MAXBUF   10
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

number of internal buffers (BUFF datatype)

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

◆ VPORTNUMBER

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
#define VPORTNUMBER   14916
│ │ │ │ +
│ │ │ │ + │ │ │ │ +

our portbase; 5000 < VPORTNUMBER < 49152

│ │ │ │ + │ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,95 +3,138 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -Classes | Typedefs | Functions │ │ │ │ │ -vmem.h File Reference │ │ │ │ │ -Vmem_class │ │ │ │ │ -Class Vmem: A safer, object-oriented, malloc/free object. More... │ │ │ │ │ +Classes | Macros | Typedefs | Enumerations | Functions │ │ │ │ │ +vio.h File Reference │ │ │ │ │ +Vio_class │ │ │ │ │ +Class Vio: virtual I/O layer. More... │ │ │ │ │ #include │ │ │ │ │ -Include dependency graph for vmem.h: │ │ │ │ │ +#include │ │ │ │ │ +Include dependency graph for vio.h: │ │ │ │ │ This graph shows which files directly or indirectly include this file: │ │ │ │ │ Go_to_the_source_code_of_this_file. │ │ │ │ │ Classes │ │ │ │ │ -struct  sVmem │ │ │ │ │ -  Contains public data members for Vmem class. More... │ │ │ │ │ +struct  sVio │ │ │ │ │ +  Contains public data members for Vio class. More... │ │ │ │ │ +  │ │ │ │ │ + Macros │ │ │ │ │ +#define VPORTNUMBER   14916 │ │ │ │ │ +  our portbase; 5000 < VPORTNUMBER < 49152 More... │ │ │ │ │ +  │ │ │ │ │ +#define VIO_MAXBUF   10 │ │ │ │ │ +  number of internal buffers (BUFF datatype) More... │ │ │ │ │   │ │ │ │ │ Typedefs │ │ │ │ │ -typedef struct sVmem Vmem │ │ │ │ │ -  Declaration of the Vmem class as the Vmem structure. │ │ │ │ │ - More... │ │ │ │ │ + typedef enum VIOtype VIOtype │ │ │ │ │ +  Parameter for I/O type (sdio,buff,file,unix,inet) │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + typedef enum VIOfrmt VIOfrmt │ │ │ │ │ +  Parameter for compression type (XDR,ASC) More... │ │ │ │ │ +  │ │ │ │ │ +typedef enum VIOrwkey VIOrwkey │ │ │ │ │ +  Parameter for rw type (R,RW) More... │ │ │ │ │ +  │ │ │ │ │ + typedef struct sVio Vio │ │ │ │ │ +  Declaration of the Vio class as the Vio structure. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ + Enumerations │ │ │ │ │ +enum  VIOtype { │ │ │ │ │ +   VIO_NO_TYPE , VIO_SDIO , VIO_BUFF , VIO_FILE , │ │ │ │ │ +   VIO_UNIX , VIO_INET │ │ │ │ │ + } │ │ │ │ │ +  Parameter for I/O type (sdio,buff,file,unix,inet) More... │ │ │ │ │ +  │ │ │ │ │ +enum  VIOfrmt { VIO_NO_FRMT , VIO_XDR , VIO_ASC } │ │ │ │ │ +  Parameter for compression type (XDR,ASC) More... │ │ │ │ │ +  │ │ │ │ │ +enum  VIOrwkey { VIO_NO_RW , VIO_R , VIO_W } │ │ │ │ │ +  Parameter for rw type (R,RW) More... │ │ │ │ │   │ │ │ │ │ Functions │ │ │ │ │ -size_t Vmem_bytesTotal (void) │ │ │ │ │ -  Return total of all active Vmem malloc areas (current footprint) │ │ │ │ │ + void Vio_start (void) │ │ │ │ │ +  Start Vio communication layer (init internal variables/buffers) More... │ │ │ │ │ +  │ │ │ │ │ + void Vio_stop (void) │ │ │ │ │ +  Shutdown Vio communication layer. More... │ │ │ │ │ +  │ │ │ │ │ + Vio * Vio_ctor (const char *socktype, const char *datafrmt, const char │ │ │ │ │ + *hostname, const char *filename, const char *rwkey) │ │ │ │ │ +  Construct the Vio object. More... │ │ │ │ │ +  │ │ │ │ │ + int Vio_ctor2 (Vio *thee, const char *socktype, const char *datafrmt, const │ │ │ │ │ + char *hostname, const char *filename, const char *rwkey) │ │ │ │ │ +  Work routine that Vio_ctor calls to do most of the construction. │ │ │ │ │ More... │ │ │ │ │   │ │ │ │ │ -size_t Vmem_mallocBytesTotal (void) │ │ │ │ │ -  Return total of all Vmem malloc allocations. More... │ │ │ │ │ + void Vio_dtor (Vio **thee) │ │ │ │ │ +  Destruct the Vio object. More... │ │ │ │ │   │ │ │ │ │ -size_t Vmem_freeBytesTotal (void) │ │ │ │ │ -  Return total of all Vmem free calls. More... │ │ │ │ │ + void Vio_dtor2 (Vio *thee) │ │ │ │ │ +  Work routine that Vio_dtor calls to do most of the destruction. More... │ │ │ │ │   │ │ │ │ │ -size_t Vmem_highWaterTotal (void) │ │ │ │ │ -  Return the high-water byte mark (largest footprint) More... │ │ │ │ │ + void Vio_setWhiteChars (Vio *thee, char *whiteChars) │ │ │ │ │ +  Set the white character set for I/O stream. More... │ │ │ │ │   │ │ │ │ │ -size_t Vmem_mallocAreasTotal (void) │ │ │ │ │ -  Return total of all active Vmem malloc areas by groups. More... │ │ │ │ │ + void Vio_setCommChars (Vio *thee, char *commChars) │ │ │ │ │ +  Set the comment character set for I/O stream. More... │ │ │ │ │   │ │ │ │ │ - void Vmem_printTotal (void) │ │ │ │ │ -  Print current memory statistics for all Vmem malloc/free areas. More... │ │ │ │ │ + int Vio_accept (Vio *thee, int nonblock) │ │ │ │ │ +  Accept any waiting connect attempt to our socket on our machine. │ │ │ │ │ + More... │ │ │ │ │   │ │ │ │ │ -Vmem * Vmem_ctor (char *name) │ │ │ │ │ -  Construct the dynamic memory allocation logging object. More... │ │ │ │ │ + void Vio_acceptFree (Vio *thee) │ │ │ │ │ +  Free the socket child that was used for the last accept. More... │ │ │ │ │   │ │ │ │ │ - void Vmem_dtor (Vmem **thee) │ │ │ │ │ -  Destruct the dynamic memory allocation logging object. More... │ │ │ │ │ + int Vio_connect (Vio *thee, int nonblock) │ │ │ │ │ +  Connect to some socket on a remote machine (or on our machine) More... │ │ │ │ │   │ │ │ │ │ -void * Vmem_malloc (Vmem *thee, size_t num, size_t size) │ │ │ │ │ -  A safe logged version of malloc. More... │ │ │ │ │ + void Vio_connectFree (Vio *thee) │ │ │ │ │ +  Purge any output buffers (for , else a no-op) More... │ │ │ │ │   │ │ │ │ │ - void Vmem_free (Vmem *thee, size_t num, size_t size, void **ram) │ │ │ │ │ -  A safe logged version of free. More... │ │ │ │ │ + int Vio_scanf (Vio *thee, char *parms,...) │ │ │ │ │ +  Mimic "scanf" from an arbitrary Vio device. More... │ │ │ │ │   │ │ │ │ │ -void * Vmem_realloc (Vmem *thee, size_t num, size_t size, void **ram, size_t │ │ │ │ │ - newNum) │ │ │ │ │ -  A safe logged version of realloc (usually a bad idea to use this) │ │ │ │ │ - More... │ │ │ │ │ + int Vio_printf (Vio *thee, char *parms,...) │ │ │ │ │ +  Mimic "printf" from an arbitrary Vio device. More... │ │ │ │ │ +  │ │ │ │ │ + int Vio_read (Vio *thee, char *buf, int bufsize) │ │ │ │ │ +  Read (up to) bufsize characters into buf from input device. More... │ │ │ │ │   │ │ │ │ │ -size_t Vmem_bytes (Vmem *thee) │ │ │ │ │ -  Return total of all ACTIVE malloc areas used by Vmem object. More... │ │ │ │ │ + int Vio_write (Vio *thee, char *buf, int bufsize) │ │ │ │ │ +  Write bufsize characters from buf to output device. More... │ │ │ │ │   │ │ │ │ │ -size_t Vmem_mallocBytes (Vmem *thee) │ │ │ │ │ -  Return total of all mallocs performed by Vmem object. More... │ │ │ │ │ + void Vio_bufTake (Vio *thee, char *buf, int bufsize) │ │ │ │ │ +  Set the pointer to the internal buffer. More... │ │ │ │ │   │ │ │ │ │ -size_t Vmem_freeBytes (Vmem *thee) │ │ │ │ │ -  Return total of all frees performed by Vmem object. More... │ │ │ │ │ +char * Vio_bufGive (Vio *thee) │ │ │ │ │ +  Return the pointer to the internal buffer. More... │ │ │ │ │   │ │ │ │ │ -size_t Vmem_highWater (Vmem *thee) │ │ │ │ │ -  Return high-water malloc bytemark hit by Vmem object. More... │ │ │ │ │ + int Vio_bufSize (Vio *thee) │ │ │ │ │ +  Return the length to the internal buffer. More... │ │ │ │ │   │ │ │ │ │ -size_t Vmem_mallocAreas (Vmem *thee) │ │ │ │ │ -  Return total number of individual active malloc areas. More... │ │ │ │ │ + Vio * Vio_socketOpen (char *key, const char *iodev, const char *iofmt, const │ │ │ │ │ + char *iohost, const char *iofile) │ │ │ │ │ +  Socket open for read or write. More... │ │ │ │ │   │ │ │ │ │ - void Vmem_print (Vmem *thee) │ │ │ │ │ -  Print current memory stats associated with this Vmem object. More... │ │ │ │ │ + void Vio_socketClose (Vio **sock) │ │ │ │ │ +  Socket close from read or write. More... │ │ │ │ │   │ │ │ │ │ ***** Detailed Description ***** │ │ │ │ │ -Class Vmem: A safer, object-oriented, malloc/free object. │ │ │ │ │ - Author │ │ │ │ │ - Michael Holst │ │ │ │ │ - Note │ │ │ │ │ - None │ │ │ │ │ +Class Vio: virtual I/O layer. │ │ │ │ │ Version │ │ │ │ │ Id │ │ │ │ │ - vmem.h,v 1.21 2010/08/12 05:40:36 fetk Exp │ │ │ │ │ + vio.h,v 1.28 2010/08/12 05:40:35 fetk Exp │ │ │ │ │ + Author │ │ │ │ │ + Michael Holst │ │ │ │ │ Attention │ │ │ │ │ * │ │ │ │ │ * MALOC = < Minimal Abstraction Layer for Object-oriented C > │ │ │ │ │ * Copyright (C) 1994-- Michael Holst │ │ │ │ │ * │ │ │ │ │ * This library is free software; you can redistribute it and/or │ │ │ │ │ * modify it under the terms of the GNU Lesser General Public │ │ │ │ │ @@ -104,10 +147,17 @@ │ │ │ │ │ * Lesser General Public License for more details. │ │ │ │ │ * │ │ │ │ │ * You should have received a copy of the GNU Lesser General Public │ │ │ │ │ * License along with this library; if not, write to the Free Software │ │ │ │ │ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA │ │ │ │ │ * │ │ │ │ │ * │ │ │ │ │ +***** Macro Definition Documentation ***** │ │ │ │ │ +***** ◆ VIO_MAXBUF ***** │ │ │ │ │ +#define VIO_MAXBUF   10 │ │ │ │ │ +number of internal buffers (BUFF datatype) │ │ │ │ │ +***** ◆ VPORTNUMBER ***** │ │ │ │ │ +#define VPORTNUMBER   14916 │ │ │ │ │ +our portbase; 5000 < VPORTNUMBER < 49152 │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00032_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vmem.h Source File │ │ │ │ +MALOC: vio.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -39,119 +39,211 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
vmem.h
│ │ │ │ +
vio.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │ -
40#ifndef _VMEM_H_
│ │ │ │ -
41#define _VMEM_H_
│ │ │ │ -
42
│ │ │ │ -
43#include <maloc/maloc_base.h>
│ │ │ │ -
44
│ │ │ │ -
45/*
│ │ │ │ -
46 * ***************************************************************************
│ │ │ │ -
47 * Class Vmem: Parameters and datatypes
│ │ │ │ -
48 * ***************************************************************************
│ │ │ │ -
49 */
│ │ │ │ -
50
│ │ │ │ +
39#ifndef _VIO_H_
│ │ │ │ +
40#define _VIO_H_
│ │ │ │ +
41
│ │ │ │ +
42#include <maloc/maloc_base.h>
│ │ │ │ +
43
│ │ │ │ +
44#include <maloc/vnm.h>
│ │ │ │ +
45
│ │ │ │ +
46/*
│ │ │ │ +
47 * ***************************************************************************
│ │ │ │ +
48 * Class Vio: Parameters and datatypes
│ │ │ │ +
49 * ***************************************************************************
│ │ │ │ +
50 */
│ │ │ │
51
│ │ │ │ -
57struct sVmem {
│ │ │ │ -
58
│ │ │ │ - │ │ │ │ -
61 size_t mallocBytes;
│ │ │ │ -
62 size_t freeBytes;
│ │ │ │ -
63 size_t highWater;
│ │ │ │ -
64 size_t mallocAreas;
│ │ │ │ -
66};
│ │ │ │ -
67
│ │ │ │ -
73typedef struct sVmem Vmem;
│ │ │ │ -
74
│ │ │ │ -
75/*
│ │ │ │ -
76 * ***************************************************************************
│ │ │ │ -
77 * Class Vmem: Inlineable methods (vmem.c)
│ │ │ │ -
78 * ***************************************************************************
│ │ │ │ -
79 */
│ │ │ │ -
80
│ │ │ │ -
81#if !defined(VINLINE_MALOC)
│ │ │ │ -
82#else /* if defined(VINLINE_MALOC) */
│ │ │ │ -
83#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ -
84
│ │ │ │ -
85/*
│ │ │ │ -
86 * ***************************************************************************
│ │ │ │ -
87 * Class Vmem: Non-Inlineable methods (vmem.c)
│ │ │ │ -
88 * ***************************************************************************
│ │ │ │ -
89 */
│ │ │ │ -
90
│ │ │ │ -
98size_t Vmem_bytesTotal(void);
│ │ │ │ +
53#define VPORTNUMBER 14916
│ │ │ │ +
55#define VIO_MAXBUF 10
│ │ │ │ +
56
│ │ │ │ +
62typedef enum VIOtype {
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
70
│ │ │ │ +
76typedef enum VIOfrmt {
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
81
│ │ │ │ +
87typedef enum VIOrwkey {
│ │ │ │ + │ │ │ │ + │ │ │ │ +
90 VIO_W
│ │ │ │ + │ │ │ │ +
92
│ │ │ │ +
98struct sVio {
│ │ │ │
99
│ │ │ │ - │ │ │ │ -
108
│ │ │ │ - │ │ │ │ -
117
│ │ │ │ - │ │ │ │ -
126
│ │ │ │ - │ │ │ │ -
135
│ │ │ │ - │ │ │ │ -
144
│ │ │ │ - │ │ │ │ -
154
│ │ │ │ -
163void Vmem_dtor(Vmem **thee);
│ │ │ │ -
164
│ │ │ │ -
175void *Vmem_malloc(Vmem *thee, size_t num, size_t size);
│ │ │ │ -
176
│ │ │ │ -
188void Vmem_free(Vmem *thee, size_t num, size_t size, void **ram);
│ │ │ │ -
189
│ │ │ │ -
202void *Vmem_realloc(Vmem *thee, size_t num, size_t size, void **ram,
│ │ │ │ -
203 size_t newNum);
│ │ │ │ -
204
│ │ │ │ -
213size_t Vmem_bytes(Vmem *thee);
│ │ │ │ -
214
│ │ │ │ -
223size_t Vmem_mallocBytes(Vmem *thee);
│ │ │ │ -
224
│ │ │ │ -
233size_t Vmem_freeBytes(Vmem *thee);
│ │ │ │ -
234
│ │ │ │ -
243size_t Vmem_highWater(Vmem *thee);
│ │ │ │ -
244
│ │ │ │ -
253size_t Vmem_mallocAreas(Vmem *thee);
│ │ │ │ -
254
│ │ │ │ -
263void Vmem_print(Vmem *thee);
│ │ │ │ -
264
│ │ │ │ -
265#endif /* _VMEM_H_ */
│ │ │ │ -
266
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
122 int error;
│ │ │ │ +
123 int dirty;
│ │ │ │ +
125 FILE *fp;
│ │ │ │ +
126 int so;
│ │ │ │ +
127 int soc;
│ │ │ │ +
128 void *name;
│ │ │ │ +
129 void *axdr;
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
140 char *VIObuffer;
│ │ │ │ + │ │ │ │ + │ │ │ │ +
144};
│ │ │ │ +
145
│ │ │ │ +
151typedef struct sVio Vio;
│ │ │ │ +
152
│ │ │ │ +
153/*
│ │ │ │ +
154 * ***************************************************************************
│ │ │ │ +
155 * Class Vio: Inlineable methods (vio.c)
│ │ │ │ +
156 * ***************************************************************************
│ │ │ │ +
157 */
│ │ │ │ +
158
│ │ │ │ +
159#if !defined(VINLINE_MALOC)
│ │ │ │ +
160#else /* if defined(VINLINE_MALOC) */
│ │ │ │ +
161#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ +
162
│ │ │ │ +
163/*
│ │ │ │ +
164 * ***************************************************************************
│ │ │ │ +
165 * Class Vio: Non-Inlineable methods (vio.c)
│ │ │ │ +
166 * ***************************************************************************
│ │ │ │ +
167 */
│ │ │ │ +
168
│ │ │ │ +
176void Vio_start(void);
│ │ │ │ +
177
│ │ │ │ +
185void Vio_stop(void);
│ │ │ │ +
186
│ │ │ │ +
199Vio* Vio_ctor(const char *socktype, const char *datafrmt,
│ │ │ │ +
200 const char *hostname, const char *filename, const char *rwkey);
│ │ │ │ +
201
│ │ │ │ +
215int Vio_ctor2(Vio *thee, const char *socktype, const char *datafrmt,
│ │ │ │ +
216 const char *hostname, const char *filename, const char *rwkey);
│ │ │ │ +
217
│ │ │ │ +
226void Vio_dtor(Vio **thee);
│ │ │ │ +
227
│ │ │ │ +
236void Vio_dtor2(Vio *thee);
│ │ │ │ +
237
│ │ │ │ + │ │ │ │ +
248
│ │ │ │ +
258void Vio_setCommChars(Vio *thee, char *commChars);
│ │ │ │ +
259
│ │ │ │ +
272int Vio_accept(Vio *thee, int nonblock);
│ │ │ │ +
273
│ │ │ │ +
282void Vio_acceptFree(Vio *thee);
│ │ │ │ +
283
│ │ │ │ +
296int Vio_connect(Vio *thee, int nonblock);
│ │ │ │ +
297
│ │ │ │ + │ │ │ │ +
307
│ │ │ │ +
317int Vio_scanf(Vio *thee, char *parms, ...);
│ │ │ │ +
318
│ │ │ │ +
328int Vio_printf(Vio *thee, char *parms, ...);
│ │ │ │ +
329
│ │ │ │ +
340int Vio_read(Vio *thee, char *buf, int bufsize);
│ │ │ │ +
341
│ │ │ │ +
352int Vio_write(Vio *thee, char *buf, int bufsize);
│ │ │ │ +
353
│ │ │ │ +
364void Vio_bufTake(Vio *thee, char *buf, int bufsize);
│ │ │ │ +
365
│ │ │ │ +
374char* Vio_bufGive(Vio *thee);
│ │ │ │ +
375
│ │ │ │ +
384int Vio_bufSize(Vio *thee);
│ │ │ │ +
385
│ │ │ │ + │ │ │ │ +
399 const char *iodev, const char *iofmt,
│ │ │ │ +
400 const char *iohost, const char *iofile);
│ │ │ │ +
401
│ │ │ │ +
410void Vio_socketClose(Vio **sock);
│ │ │ │ +
411
│ │ │ │ +
412#endif /* _VIO_H_ */
│ │ │ │ +
413
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ +
#define VMAX_ARGNUM
Global constant.
Definition: maloc_base.h:225
│ │ │ │ +
#define VMAX_BUFSIZE
Global constant.
Definition: maloc_base.h:229
│ │ │ │
#define VMAX_ARGLEN
Global constant.
Definition: maloc_base.h:227
│ │ │ │ -
void Vmem_free(Vmem *thee, size_t num, size_t size, void **ram)
A safe logged version of free.
│ │ │ │ -
size_t Vmem_mallocAreas(Vmem *thee)
Return total number of individual active malloc areas.
│ │ │ │ -
size_t Vmem_mallocAreasTotal(void)
Return total of all active Vmem malloc areas by groups.
│ │ │ │ -
void Vmem_printTotal(void)
Print current memory statistics for all Vmem malloc/free areas.
│ │ │ │ -
size_t Vmem_freeBytes(Vmem *thee)
Return total of all frees performed by Vmem object.
│ │ │ │ -
size_t Vmem_highWater(Vmem *thee)
Return high-water malloc bytemark hit by Vmem object.
│ │ │ │ -
void * Vmem_malloc(Vmem *thee, size_t num, size_t size)
A safe logged version of malloc.
│ │ │ │ -
size_t Vmem_bytesTotal(void)
Return total of all active Vmem malloc areas (current footprint)
│ │ │ │ -
size_t Vmem_freeBytesTotal(void)
Return total of all Vmem free calls.
│ │ │ │ -
void * Vmem_realloc(Vmem *thee, size_t num, size_t size, void **ram, size_t newNum)
A safe logged version of realloc (usually a bad idea to use this)
│ │ │ │ -
Vmem * Vmem_ctor(char *name)
Construct the dynamic memory allocation logging object.
│ │ │ │ -
size_t Vmem_highWaterTotal(void)
Return the high-water byte mark (largest footprint)
│ │ │ │ -
size_t Vmem_bytes(Vmem *thee)
Return total of all ACTIVE malloc areas used by Vmem object.
│ │ │ │ -
void Vmem_print(Vmem *thee)
Print current memory stats associated with this Vmem object.
│ │ │ │ -
void Vmem_dtor(Vmem **thee)
Destruct the dynamic memory allocation logging object.
│ │ │ │ -
size_t Vmem_mallocBytes(Vmem *thee)
Return total of all mallocs performed by Vmem object.
│ │ │ │ -
size_t Vmem_mallocBytesTotal(void)
Return total of all Vmem malloc allocations.
│ │ │ │ -
Contains public data members for Vmem class.
Definition: vmem.h:57
│ │ │ │ -
char name[VMAX_ARGLEN]
Definition: vmem.h:59
│ │ │ │ -
size_t freeBytes
Definition: vmem.h:62
│ │ │ │ -
size_t mallocBytes
Definition: vmem.h:61
│ │ │ │ -
size_t mallocAreas
Definition: vmem.h:64
│ │ │ │ -
size_t highWater
Definition: vmem.h:63
│ │ │ │ +
Header file for an ISO C [V]irtual [N]umerical [M]achine.
│ │ │ │ +
int Vio_bufSize(Vio *thee)
Return the length to the internal buffer.
│ │ │ │ +
void Vio_stop(void)
Shutdown Vio communication layer.
│ │ │ │ +
int Vio_write(Vio *thee, char *buf, int bufsize)
Write bufsize characters from buf to output device.
│ │ │ │ +
int Vio_scanf(Vio *thee, char *parms,...)
Mimic "scanf" from an arbitrary Vio device.
│ │ │ │ +
void Vio_acceptFree(Vio *thee)
Free the socket child that was used for the last accept.
│ │ │ │ +
void Vio_start(void)
Start Vio communication layer (init internal variables/buffers)
│ │ │ │ +
int Vio_printf(Vio *thee, char *parms,...)
Mimic "printf" from an arbitrary Vio device.
│ │ │ │ +
Vio * Vio_socketOpen(char *key, const char *iodev, const char *iofmt, const char *iohost, const char *iofile)
Socket open for read or write.
│ │ │ │ +
void Vio_setWhiteChars(Vio *thee, char *whiteChars)
Set the white character set for I/O stream.
│ │ │ │ +
void Vio_socketClose(Vio **sock)
Socket close from read or write.
│ │ │ │ +
int Vio_connect(Vio *thee, int nonblock)
Connect to some socket on a remote machine (or on our machine)
│ │ │ │ +
VIOfrmt
Parameter for compression type (XDR,ASC)
Definition: vio.h:76
│ │ │ │ +
int Vio_accept(Vio *thee, int nonblock)
Accept any waiting connect attempt to our socket on our machine.
│ │ │ │ +
Vio * Vio_ctor(const char *socktype, const char *datafrmt, const char *hostname, const char *filename, const char *rwkey)
Construct the Vio object.
│ │ │ │ +
VIOtype
Parameter for I/O type (sdio,buff,file,unix,inet)
Definition: vio.h:62
│ │ │ │ +
void Vio_dtor(Vio **thee)
Destruct the Vio object.
│ │ │ │ +
int Vio_read(Vio *thee, char *buf, int bufsize)
Read (up to) bufsize characters into buf from input device.
│ │ │ │ +
void Vio_bufTake(Vio *thee, char *buf, int bufsize)
Set the pointer to the internal buffer.
│ │ │ │ +
void Vio_connectFree(Vio *thee)
Purge any output buffers (for <UNIX/INET>, else a no-op)
│ │ │ │ +
void Vio_setCommChars(Vio *thee, char *commChars)
Set the comment character set for I/O stream.
│ │ │ │ +
char * Vio_bufGive(Vio *thee)
Return the pointer to the internal buffer.
│ │ │ │ +
VIOrwkey
Parameter for rw type (R,RW)
Definition: vio.h:87
│ │ │ │ +
void Vio_dtor2(Vio *thee)
Work routine that Vio_dtor calls to do most of the destruction.
│ │ │ │ +
int Vio_ctor2(Vio *thee, const char *socktype, const char *datafrmt, const char *hostname, const char *filename, const char *rwkey)
Work routine that Vio_ctor calls to do most of the construction.
│ │ │ │ +
@ VIO_XDR
Definition: vio.h:78
│ │ │ │ +
@ VIO_NO_FRMT
Definition: vio.h:77
│ │ │ │ +
@ VIO_ASC
Definition: vio.h:79
│ │ │ │ +
@ VIO_NO_TYPE
Definition: vio.h:63
│ │ │ │ +
@ VIO_FILE
Definition: vio.h:66
│ │ │ │ +
@ VIO_UNIX
Definition: vio.h:67
│ │ │ │ +
@ VIO_BUFF
Definition: vio.h:65
│ │ │ │ +
@ VIO_SDIO
Definition: vio.h:64
│ │ │ │ +
@ VIO_INET
Definition: vio.h:68
│ │ │ │ +
@ VIO_NO_RW
Definition: vio.h:88
│ │ │ │ +
@ VIO_W
Definition: vio.h:90
│ │ │ │ +
@ VIO_R
Definition: vio.h:89
│ │ │ │ +
Contains public data members for Vio class.
Definition: vio.h:98
│ │ │ │ +
char putBuffer[VMAX_BUFSIZE]
Definition: vio.h:137
│ │ │ │ +
VIOtype type
Definition: vio.h:100
│ │ │ │ +
int ioBufferLen
Definition: vio.h:135
│ │ │ │ +
VIOrwkey rwkey
Definition: vio.h:113
│ │ │ │ +
char commChars[VMAX_ARGNUM]
Definition: vio.h:132
│ │ │ │ +
int VIObufferPtr
Definition: vio.h:142
│ │ │ │ +
FILE * fp
Definition: vio.h:125
│ │ │ │ +
VIOfrmt frmt
Definition: vio.h:108
│ │ │ │ +
int dirty
Definition: vio.h:123
│ │ │ │ +
int soc
Definition: vio.h:127
│ │ │ │ +
char lhost[VMAX_ARGLEN]
Definition: vio.h:119
│ │ │ │ +
char whiteChars[VMAX_ARGNUM]
Definition: vio.h:131
│ │ │ │ +
char ioBuffer[VMAX_BUFSIZE]
Definition: vio.h:134
│ │ │ │ +
int VIObufferLen
Definition: vio.h:141
│ │ │ │ +
char file[VMAX_ARGLEN]
Definition: vio.h:118
│ │ │ │ +
void * name
Definition: vio.h:128
│ │ │ │ +
void * axdr
Definition: vio.h:129
│ │ │ │ +
char * VIObuffer
Definition: vio.h:140
│ │ │ │ +
int putBufferLen
Definition: vio.h:138
│ │ │ │ +
int so
Definition: vio.h:126
│ │ │ │ +
char rhost[VMAX_ARGLEN]
Definition: vio.h:120
│ │ │ │ +
int error
Definition: vio.h:122
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,171 +3,347 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -vmem.h │ │ │ │ │ +vio.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ 1 │ │ │ │ │ - 40#ifndef _VMEM_H_ │ │ │ │ │ - 41#define _VMEM_H_ │ │ │ │ │ - 42 │ │ │ │ │ - 43#include │ │ │ │ │ - 44 │ │ │ │ │ - 45/* │ │ │ │ │ - 46 * │ │ │ │ │ + 39#ifndef _VIO_H_ │ │ │ │ │ + 40#define _VIO_H_ │ │ │ │ │ + 41 │ │ │ │ │ + 42#include │ │ │ │ │ + 43 │ │ │ │ │ + 44#include │ │ │ │ │ + 45 │ │ │ │ │ + 46/* │ │ │ │ │ + 47 * │ │ │ │ │ *************************************************************************** │ │ │ │ │ - 47 * Class Vmem: Parameters and datatypes │ │ │ │ │ - 48 * │ │ │ │ │ + 48 * Class Vio: Parameters and datatypes │ │ │ │ │ + 49 * │ │ │ │ │ *************************************************************************** │ │ │ │ │ - 49 */ │ │ │ │ │ - 50 │ │ │ │ │ + 50 */ │ │ │ │ │ 51 │ │ │ │ │ -57struct sVmem { │ │ │ │ │ - 58 │ │ │ │ │ -59 char name[VMAX_ARGLEN]; │ │ │ │ │ -61 size_t mallocBytes; │ │ │ │ │ -62 size_t freeBytes; │ │ │ │ │ -63 size_t highWater; │ │ │ │ │ -64 size_t mallocAreas; │ │ │ │ │ - 66}; │ │ │ │ │ - 67 │ │ │ │ │ -73typedef struct sVmem Vmem; │ │ │ │ │ - 74 │ │ │ │ │ - 75/* │ │ │ │ │ - 76 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 77 * Class Vmem: Inlineable methods (vmem.c) │ │ │ │ │ - 78 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 79 */ │ │ │ │ │ - 80 │ │ │ │ │ - 81#if !defined(VINLINE_MALOC) │ │ │ │ │ - 82#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ - 83#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ - 84 │ │ │ │ │ - 85/* │ │ │ │ │ - 86 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 87 * Class Vmem: Non-Inlineable methods (vmem.c) │ │ │ │ │ - 88 * │ │ │ │ │ -*************************************************************************** │ │ │ │ │ - 89 */ │ │ │ │ │ - 90 │ │ │ │ │ -98size_t Vmem_bytesTotal(void); │ │ │ │ │ +53#define VPORTNUMBER 14916 │ │ │ │ │ +55#define VIO_MAXBUF 10 │ │ │ │ │ + 56 │ │ │ │ │ +62typedef enum VIOtype { │ │ │ │ │ +63 VIO_NO_TYPE, │ │ │ │ │ +64 VIO_SDIO, │ │ │ │ │ +65 VIO_BUFF, │ │ │ │ │ +66 VIO_FILE, │ │ │ │ │ +67 VIO_UNIX, │ │ │ │ │ + 68 VIO_INET │ │ │ │ │ +69} VIOtype; │ │ │ │ │ + 70 │ │ │ │ │ +76typedef enum VIOfrmt { │ │ │ │ │ +77 VIO_NO_FRMT, │ │ │ │ │ +78 VIO_XDR, │ │ │ │ │ + 79 VIO_ASC │ │ │ │ │ +80} VIOfrmt; │ │ │ │ │ + 81 │ │ │ │ │ +87typedef enum VIOrwkey { │ │ │ │ │ +88 VIO_NO_RW, │ │ │ │ │ +89 VIO_R, │ │ │ │ │ + 90 VIO_W │ │ │ │ │ +91} VIOrwkey; │ │ │ │ │ + 92 │ │ │ │ │ +98struct sVio { │ │ │ │ │ 99 │ │ │ │ │ -107size_t Vmem_mallocBytesTotal(void); │ │ │ │ │ - 108 │ │ │ │ │ -116size_t Vmem_freeBytesTotal(void); │ │ │ │ │ - 117 │ │ │ │ │ -125size_t Vmem_highWaterTotal(void); │ │ │ │ │ - 126 │ │ │ │ │ -134size_t Vmem_mallocAreasTotal(void); │ │ │ │ │ - 135 │ │ │ │ │ -143void Vmem_printTotal(void); │ │ │ │ │ - 144 │ │ │ │ │ -153Vmem* Vmem_ctor(char *name); │ │ │ │ │ - 154 │ │ │ │ │ -163void Vmem_dtor(Vmem **thee); │ │ │ │ │ - 164 │ │ │ │ │ -175void *Vmem_malloc(Vmem *thee, size_t num, size_t size); │ │ │ │ │ - 176 │ │ │ │ │ -188void Vmem_free(Vmem *thee, size_t num, size_t size, void **ram); │ │ │ │ │ - 189 │ │ │ │ │ -202void *Vmem_realloc(Vmem *thee, size_t num, size_t size, void **ram, │ │ │ │ │ - 203 size_t newNum); │ │ │ │ │ - 204 │ │ │ │ │ -213size_t Vmem_bytes(Vmem *thee); │ │ │ │ │ - 214 │ │ │ │ │ -223size_t Vmem_mallocBytes(Vmem *thee); │ │ │ │ │ - 224 │ │ │ │ │ -233size_t Vmem_freeBytes(Vmem *thee); │ │ │ │ │ - 234 │ │ │ │ │ -243size_t Vmem_highWater(Vmem *thee); │ │ │ │ │ - 244 │ │ │ │ │ -253size_t Vmem_mallocAreas(Vmem *thee); │ │ │ │ │ - 254 │ │ │ │ │ -263void Vmem_print(Vmem *thee); │ │ │ │ │ - 264 │ │ │ │ │ - 265#endif /* _VMEM_H_ */ │ │ │ │ │ - 266 │ │ │ │ │ +100 VIOtype type; │ │ │ │ │ +108 VIOfrmt frmt; │ │ │ │ │ +113 VIOrwkey rwkey; │ │ │ │ │ +118 char file[VMAX_ARGLEN]; │ │ │ │ │ +119 char lhost[VMAX_ARGLEN]; │ │ │ │ │ +120 char rhost[VMAX_ARGLEN]; │ │ │ │ │ +122 int error; │ │ │ │ │ +123 int dirty; │ │ │ │ │ +125 FILE *fp; │ │ │ │ │ +126 int so; │ │ │ │ │ +127 int soc; │ │ │ │ │ +128 void *name; │ │ │ │ │ +129 void *axdr; │ │ │ │ │ +131 char whiteChars[VMAX_ARGNUM]; │ │ │ │ │ +132 char commChars[VMAX_ARGNUM]; │ │ │ │ │ +134 char ioBuffer[VMAX_BUFSIZE]; │ │ │ │ │ +135 int ioBufferLen; │ │ │ │ │ +137 char putBuffer[VMAX_BUFSIZE]; │ │ │ │ │ +138 int putBufferLen; │ │ │ │ │ +140 char *VIObuffer; │ │ │ │ │ +141 int VIObufferLen; │ │ │ │ │ +142 int VIObufferPtr; │ │ │ │ │ + 144}; │ │ │ │ │ + 145 │ │ │ │ │ +151typedef struct sVio Vio; │ │ │ │ │ + 152 │ │ │ │ │ + 153/* │ │ │ │ │ + 154 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 155 * Class Vio: Inlineable methods (vio.c) │ │ │ │ │ + 156 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 157 */ │ │ │ │ │ + 158 │ │ │ │ │ + 159#if !defined(VINLINE_MALOC) │ │ │ │ │ + 160#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ + 161#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ + 162 │ │ │ │ │ + 163/* │ │ │ │ │ + 164 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 165 * Class Vio: Non-Inlineable methods (vio.c) │ │ │ │ │ + 166 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 167 */ │ │ │ │ │ + 168 │ │ │ │ │ +176void Vio_start(void); │ │ │ │ │ + 177 │ │ │ │ │ +185void Vio_stop(void); │ │ │ │ │ + 186 │ │ │ │ │ +199Vio* Vio_ctor(const char *socktype, const char *datafrmt, │ │ │ │ │ + 200 const char *hostname, const char *filename, const char *rwkey); │ │ │ │ │ + 201 │ │ │ │ │ +215int Vio_ctor2(Vio *thee, const char *socktype, const char *datafrmt, │ │ │ │ │ + 216 const char *hostname, const char *filename, const char *rwkey); │ │ │ │ │ + 217 │ │ │ │ │ +226void Vio_dtor(Vio **thee); │ │ │ │ │ + 227 │ │ │ │ │ +236void Vio_dtor2(Vio *thee); │ │ │ │ │ + 237 │ │ │ │ │ +247void Vio_setWhiteChars(Vio *thee, char *whiteChars); │ │ │ │ │ + 248 │ │ │ │ │ +258void Vio_setCommChars(Vio *thee, char *commChars); │ │ │ │ │ + 259 │ │ │ │ │ +272int Vio_accept(Vio *thee, int nonblock); │ │ │ │ │ + 273 │ │ │ │ │ +282void Vio_acceptFree(Vio *thee); │ │ │ │ │ + 283 │ │ │ │ │ +296int Vio_connect(Vio *thee, int nonblock); │ │ │ │ │ + 297 │ │ │ │ │ +306void Vio_connectFree(Vio *thee); │ │ │ │ │ + 307 │ │ │ │ │ +317int Vio_scanf(Vio *thee, char *parms, ...); │ │ │ │ │ + 318 │ │ │ │ │ +328int Vio_printf(Vio *thee, char *parms, ...); │ │ │ │ │ + 329 │ │ │ │ │ +340int Vio_read(Vio *thee, char *buf, int bufsize); │ │ │ │ │ + 341 │ │ │ │ │ +352int Vio_write(Vio *thee, char *buf, int bufsize); │ │ │ │ │ + 353 │ │ │ │ │ +364void Vio_bufTake(Vio *thee, char *buf, int bufsize); │ │ │ │ │ + 365 │ │ │ │ │ +374char* Vio_bufGive(Vio *thee); │ │ │ │ │ + 375 │ │ │ │ │ +384int Vio_bufSize(Vio *thee); │ │ │ │ │ + 385 │ │ │ │ │ +398Vio *Vio_socketOpen(char *key, │ │ │ │ │ + 399 const char *iodev, const char *iofmt, │ │ │ │ │ + 400 const char *iohost, const char *iofile); │ │ │ │ │ + 401 │ │ │ │ │ +410void Vio_socketClose(Vio **sock); │ │ │ │ │ + 411 │ │ │ │ │ + 412#endif /* _VIO_H_ */ │ │ │ │ │ + 413 │ │ │ │ │ maloc_base.h │ │ │ │ │ The base (or foundation) header for MALOC. │ │ │ │ │ +VMAX_ARGNUM │ │ │ │ │ +#define VMAX_ARGNUM │ │ │ │ │ +Global constant. │ │ │ │ │ +Definition: maloc_base.h:225 │ │ │ │ │ +VMAX_BUFSIZE │ │ │ │ │ +#define VMAX_BUFSIZE │ │ │ │ │ +Global constant. │ │ │ │ │ +Definition: maloc_base.h:229 │ │ │ │ │ VMAX_ARGLEN │ │ │ │ │ #define VMAX_ARGLEN │ │ │ │ │ Global constant. │ │ │ │ │ Definition: maloc_base.h:227 │ │ │ │ │ -Vmem_free │ │ │ │ │ -void Vmem_free(Vmem *thee, size_t num, size_t size, void **ram) │ │ │ │ │ -A safe logged version of free. │ │ │ │ │ -Vmem_mallocAreas │ │ │ │ │ -size_t Vmem_mallocAreas(Vmem *thee) │ │ │ │ │ -Return total number of individual active malloc areas. │ │ │ │ │ -Vmem_mallocAreasTotal │ │ │ │ │ -size_t Vmem_mallocAreasTotal(void) │ │ │ │ │ -Return total of all active Vmem malloc areas by groups. │ │ │ │ │ -Vmem_printTotal │ │ │ │ │ -void Vmem_printTotal(void) │ │ │ │ │ -Print current memory statistics for all Vmem malloc/free areas. │ │ │ │ │ -Vmem_freeBytes │ │ │ │ │ -size_t Vmem_freeBytes(Vmem *thee) │ │ │ │ │ -Return total of all frees performed by Vmem object. │ │ │ │ │ -Vmem_highWater │ │ │ │ │ -size_t Vmem_highWater(Vmem *thee) │ │ │ │ │ -Return high-water malloc bytemark hit by Vmem object. │ │ │ │ │ -Vmem_malloc │ │ │ │ │ -void * Vmem_malloc(Vmem *thee, size_t num, size_t size) │ │ │ │ │ -A safe logged version of malloc. │ │ │ │ │ -Vmem_bytesTotal │ │ │ │ │ -size_t Vmem_bytesTotal(void) │ │ │ │ │ -Return total of all active Vmem malloc areas (current footprint) │ │ │ │ │ -Vmem_freeBytesTotal │ │ │ │ │ -size_t Vmem_freeBytesTotal(void) │ │ │ │ │ -Return total of all Vmem free calls. │ │ │ │ │ -Vmem_realloc │ │ │ │ │ -void * Vmem_realloc(Vmem *thee, size_t num, size_t size, void **ram, size_t │ │ │ │ │ -newNum) │ │ │ │ │ -A safe logged version of realloc (usually a bad idea to use this) │ │ │ │ │ -Vmem_ctor │ │ │ │ │ -Vmem * Vmem_ctor(char *name) │ │ │ │ │ -Construct the dynamic memory allocation logging object. │ │ │ │ │ -Vmem_highWaterTotal │ │ │ │ │ -size_t Vmem_highWaterTotal(void) │ │ │ │ │ -Return the high-water byte mark (largest footprint) │ │ │ │ │ -Vmem_bytes │ │ │ │ │ -size_t Vmem_bytes(Vmem *thee) │ │ │ │ │ -Return total of all ACTIVE malloc areas used by Vmem object. │ │ │ │ │ -Vmem_print │ │ │ │ │ -void Vmem_print(Vmem *thee) │ │ │ │ │ -Print current memory stats associated with this Vmem object. │ │ │ │ │ -Vmem_dtor │ │ │ │ │ -void Vmem_dtor(Vmem **thee) │ │ │ │ │ -Destruct the dynamic memory allocation logging object. │ │ │ │ │ -Vmem_mallocBytes │ │ │ │ │ -size_t Vmem_mallocBytes(Vmem *thee) │ │ │ │ │ -Return total of all mallocs performed by Vmem object. │ │ │ │ │ -Vmem_mallocBytesTotal │ │ │ │ │ -size_t Vmem_mallocBytesTotal(void) │ │ │ │ │ -Return total of all Vmem malloc allocations. │ │ │ │ │ -sVmem │ │ │ │ │ -Contains public data members for Vmem class. │ │ │ │ │ -Definition: vmem.h:57 │ │ │ │ │ -sVmem::name │ │ │ │ │ -char name[VMAX_ARGLEN] │ │ │ │ │ -Definition: vmem.h:59 │ │ │ │ │ -sVmem::freeBytes │ │ │ │ │ -size_t freeBytes │ │ │ │ │ -Definition: vmem.h:62 │ │ │ │ │ -sVmem::mallocBytes │ │ │ │ │ -size_t mallocBytes │ │ │ │ │ -Definition: vmem.h:61 │ │ │ │ │ -sVmem::mallocAreas │ │ │ │ │ -size_t mallocAreas │ │ │ │ │ -Definition: vmem.h:64 │ │ │ │ │ -sVmem::highWater │ │ │ │ │ -size_t highWater │ │ │ │ │ -Definition: vmem.h:63 │ │ │ │ │ +vnm.h │ │ │ │ │ +Header file for an ISO C [V]irtual [N]umerical [M]achine. │ │ │ │ │ +Vio_bufSize │ │ │ │ │ +int Vio_bufSize(Vio *thee) │ │ │ │ │ +Return the length to the internal buffer. │ │ │ │ │ +Vio_stop │ │ │ │ │ +void Vio_stop(void) │ │ │ │ │ +Shutdown Vio communication layer. │ │ │ │ │ +Vio_write │ │ │ │ │ +int Vio_write(Vio *thee, char *buf, int bufsize) │ │ │ │ │ +Write bufsize characters from buf to output device. │ │ │ │ │ +Vio_scanf │ │ │ │ │ +int Vio_scanf(Vio *thee, char *parms,...) │ │ │ │ │ +Mimic "scanf" from an arbitrary Vio device. │ │ │ │ │ +Vio_acceptFree │ │ │ │ │ +void Vio_acceptFree(Vio *thee) │ │ │ │ │ +Free the socket child that was used for the last accept. │ │ │ │ │ +Vio_start │ │ │ │ │ +void Vio_start(void) │ │ │ │ │ +Start Vio communication layer (init internal variables/buffers) │ │ │ │ │ +Vio_printf │ │ │ │ │ +int Vio_printf(Vio *thee, char *parms,...) │ │ │ │ │ +Mimic "printf" from an arbitrary Vio device. │ │ │ │ │ +Vio_socketOpen │ │ │ │ │ +Vio * Vio_socketOpen(char *key, const char *iodev, const char *iofmt, const │ │ │ │ │ +char *iohost, const char *iofile) │ │ │ │ │ +Socket open for read or write. │ │ │ │ │ +Vio_setWhiteChars │ │ │ │ │ +void Vio_setWhiteChars(Vio *thee, char *whiteChars) │ │ │ │ │ +Set the white character set for I/O stream. │ │ │ │ │ +Vio_socketClose │ │ │ │ │ +void Vio_socketClose(Vio **sock) │ │ │ │ │ +Socket close from read or write. │ │ │ │ │ +Vio_connect │ │ │ │ │ +int Vio_connect(Vio *thee, int nonblock) │ │ │ │ │ +Connect to some socket on a remote machine (or on our machine) │ │ │ │ │ +VIOfrmt │ │ │ │ │ +VIOfrmt │ │ │ │ │ +Parameter for compression type (XDR,ASC) │ │ │ │ │ +Definition: vio.h:76 │ │ │ │ │ +Vio_accept │ │ │ │ │ +int Vio_accept(Vio *thee, int nonblock) │ │ │ │ │ +Accept any waiting connect attempt to our socket on our machine. │ │ │ │ │ +Vio_ctor │ │ │ │ │ +Vio * Vio_ctor(const char *socktype, const char *datafrmt, const char │ │ │ │ │ +*hostname, const char *filename, const char *rwkey) │ │ │ │ │ +Construct the Vio object. │ │ │ │ │ +VIOtype │ │ │ │ │ +VIOtype │ │ │ │ │ +Parameter for I/O type (sdio,buff,file,unix,inet) │ │ │ │ │ +Definition: vio.h:62 │ │ │ │ │ +Vio_dtor │ │ │ │ │ +void Vio_dtor(Vio **thee) │ │ │ │ │ +Destruct the Vio object. │ │ │ │ │ +Vio_read │ │ │ │ │ +int Vio_read(Vio *thee, char *buf, int bufsize) │ │ │ │ │ +Read (up to) bufsize characters into buf from input device. │ │ │ │ │ +Vio_bufTake │ │ │ │ │ +void Vio_bufTake(Vio *thee, char *buf, int bufsize) │ │ │ │ │ +Set the pointer to the internal buffer. │ │ │ │ │ +Vio_connectFree │ │ │ │ │ +void Vio_connectFree(Vio *thee) │ │ │ │ │ +Purge any output buffers (for , else a no-op) │ │ │ │ │ +Vio_setCommChars │ │ │ │ │ +void Vio_setCommChars(Vio *thee, char *commChars) │ │ │ │ │ +Set the comment character set for I/O stream. │ │ │ │ │ +Vio_bufGive │ │ │ │ │ +char * Vio_bufGive(Vio *thee) │ │ │ │ │ +Return the pointer to the internal buffer. │ │ │ │ │ +VIOrwkey │ │ │ │ │ +VIOrwkey │ │ │ │ │ +Parameter for rw type (R,RW) │ │ │ │ │ +Definition: vio.h:87 │ │ │ │ │ +Vio_dtor2 │ │ │ │ │ +void Vio_dtor2(Vio *thee) │ │ │ │ │ +Work routine that Vio_dtor calls to do most of the destruction. │ │ │ │ │ +Vio_ctor2 │ │ │ │ │ +int Vio_ctor2(Vio *thee, const char *socktype, const char *datafrmt, const char │ │ │ │ │ +*hostname, const char *filename, const char *rwkey) │ │ │ │ │ +Work routine that Vio_ctor calls to do most of the construction. │ │ │ │ │ +VIO_XDR │ │ │ │ │ +@ VIO_XDR │ │ │ │ │ +Definition: vio.h:78 │ │ │ │ │ +VIO_NO_FRMT │ │ │ │ │ +@ VIO_NO_FRMT │ │ │ │ │ +Definition: vio.h:77 │ │ │ │ │ +VIO_ASC │ │ │ │ │ +@ VIO_ASC │ │ │ │ │ +Definition: vio.h:79 │ │ │ │ │ +VIO_NO_TYPE │ │ │ │ │ +@ VIO_NO_TYPE │ │ │ │ │ +Definition: vio.h:63 │ │ │ │ │ +VIO_FILE │ │ │ │ │ +@ VIO_FILE │ │ │ │ │ +Definition: vio.h:66 │ │ │ │ │ +VIO_UNIX │ │ │ │ │ +@ VIO_UNIX │ │ │ │ │ +Definition: vio.h:67 │ │ │ │ │ +VIO_BUFF │ │ │ │ │ +@ VIO_BUFF │ │ │ │ │ +Definition: vio.h:65 │ │ │ │ │ +VIO_SDIO │ │ │ │ │ +@ VIO_SDIO │ │ │ │ │ +Definition: vio.h:64 │ │ │ │ │ +VIO_INET │ │ │ │ │ +@ VIO_INET │ │ │ │ │ +Definition: vio.h:68 │ │ │ │ │ +VIO_NO_RW │ │ │ │ │ +@ VIO_NO_RW │ │ │ │ │ +Definition: vio.h:88 │ │ │ │ │ +VIO_W │ │ │ │ │ +@ VIO_W │ │ │ │ │ +Definition: vio.h:90 │ │ │ │ │ +VIO_R │ │ │ │ │ +@ VIO_R │ │ │ │ │ +Definition: vio.h:89 │ │ │ │ │ +sVio │ │ │ │ │ +Contains public data members for Vio class. │ │ │ │ │ +Definition: vio.h:98 │ │ │ │ │ +sVio::putBuffer │ │ │ │ │ +char putBuffer[VMAX_BUFSIZE] │ │ │ │ │ +Definition: vio.h:137 │ │ │ │ │ +sVio::type │ │ │ │ │ +VIOtype type │ │ │ │ │ +Definition: vio.h:100 │ │ │ │ │ +sVio::ioBufferLen │ │ │ │ │ +int ioBufferLen │ │ │ │ │ +Definition: vio.h:135 │ │ │ │ │ +sVio::rwkey │ │ │ │ │ +VIOrwkey rwkey │ │ │ │ │ +Definition: vio.h:113 │ │ │ │ │ +sVio::commChars │ │ │ │ │ +char commChars[VMAX_ARGNUM] │ │ │ │ │ +Definition: vio.h:132 │ │ │ │ │ +sVio::VIObufferPtr │ │ │ │ │ +int VIObufferPtr │ │ │ │ │ +Definition: vio.h:142 │ │ │ │ │ +sVio::fp │ │ │ │ │ +FILE * fp │ │ │ │ │ +Definition: vio.h:125 │ │ │ │ │ +sVio::frmt │ │ │ │ │ +VIOfrmt frmt │ │ │ │ │ +Definition: vio.h:108 │ │ │ │ │ +sVio::dirty │ │ │ │ │ +int dirty │ │ │ │ │ +Definition: vio.h:123 │ │ │ │ │ +sVio::soc │ │ │ │ │ +int soc │ │ │ │ │ +Definition: vio.h:127 │ │ │ │ │ +sVio::lhost │ │ │ │ │ +char lhost[VMAX_ARGLEN] │ │ │ │ │ +Definition: vio.h:119 │ │ │ │ │ +sVio::whiteChars │ │ │ │ │ +char whiteChars[VMAX_ARGNUM] │ │ │ │ │ +Definition: vio.h:131 │ │ │ │ │ +sVio::ioBuffer │ │ │ │ │ +char ioBuffer[VMAX_BUFSIZE] │ │ │ │ │ +Definition: vio.h:134 │ │ │ │ │ +sVio::VIObufferLen │ │ │ │ │ +int VIObufferLen │ │ │ │ │ +Definition: vio.h:141 │ │ │ │ │ +sVio::file │ │ │ │ │ +char file[VMAX_ARGLEN] │ │ │ │ │ +Definition: vio.h:118 │ │ │ │ │ +sVio::name │ │ │ │ │ +void * name │ │ │ │ │ +Definition: vio.h:128 │ │ │ │ │ +sVio::axdr │ │ │ │ │ +void * axdr │ │ │ │ │ +Definition: vio.h:129 │ │ │ │ │ +sVio::VIObuffer │ │ │ │ │ +char * VIObuffer │ │ │ │ │ +Definition: vio.h:140 │ │ │ │ │ +sVio::putBufferLen │ │ │ │ │ +int putBufferLen │ │ │ │ │ +Definition: vio.h:138 │ │ │ │ │ +sVio::so │ │ │ │ │ +int so │ │ │ │ │ +Definition: vio.h:126 │ │ │ │ │ +sVio::rhost │ │ │ │ │ +char rhost[VMAX_ARGLEN] │ │ │ │ │ +Definition: vio.h:120 │ │ │ │ │ +sVio::error │ │ │ │ │ +int error │ │ │ │ │ +Definition: vio.h:122 │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00033.dot │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ -digraph "vmem.h" │ │ │ │ +digraph "vio.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vmem.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ + Node1 [label="vio.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node2 [label="maloc/maloc_base.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00002.html",tooltip="The base (or foundation) header for MALOC."]; │ │ │ │ Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node3 [label="assert.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node4 [label="ctype.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ @@ -32,8 +32,11 @@ │ │ │ │ Node14 [label="stdlib.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node15 [label="string.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node16 [label="time.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ Node2 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node17 [label="setjmp.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ + Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node18 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ + Node18 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00034.dot │ │ │ │ @@ -1,30 +1,27 @@ │ │ │ │ -digraph "vmem.h" │ │ │ │ +digraph "vio.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vmem.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ + Node1 [label="vio.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 [label="vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ + Node2 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ - Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node4 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ - Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node5 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ - Node5 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node6 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ - Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node7 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ - Node7 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node8 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ - Node8 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node3 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node9 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ - Node9 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node9 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node3 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ + Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node4 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node5 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ + Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node6 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ + Node6 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node2 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node7 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ + Node7 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node8 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ + Node8 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ + Node8 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00035.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vpred.h File Reference │ │ │ │ +MALOC: vset.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -40,104 +40,116 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -Macros | │ │ │ │ +Classes | │ │ │ │ +Typedefs | │ │ │ │ Functions
│ │ │ │ -
vpred.h File Reference
│ │ │ │ +
vset.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ -

Header file for the Geometric Predicates. │ │ │ │ +

Class Vset: a dynamic set object. │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ +#include <maloc/vnm.h>
│ │ │ │ +#include <maloc/vmem.h>
│ │ │ │
│ │ │ │ -Include dependency graph for vpred.h:
│ │ │ │ +Include dependency graph for vset.h:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ This graph shows which files directly or indirectly include this file:
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ -Macros

#define INEXACT   /* Nothing */
 Parameters and constants "INEXACT". More...
 
#define REAL   double
 float or double More...
 
#define REALPRINT   doubleprint
 Print the bit representation of a double. More...
 
#define REALRAND   doublerand
 Generate a double with random 53-bit significand and a random exponent in [0, 511]. More...
 
#define NARROWRAND   narrowdoublerand
 Generate a double with random 53-bit significand and a random exponent in [0, 7]. More...
 
#define UNIFORMRAND   uniformdoublerand
 Generate a double with random 53-bit significand. More...
 

│ │ │ │ +Classes

struct  sVset
 Contains public data members for Vset class. More...
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ +Typedefs

typedef struct sVset Vset
 Declaration of the Vset class as the Vset structure. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ Functions

void Vpred_exactinit (void)
 Initialize the variables used for exact arithmetic. More...
 
REAL Vpred_orient2d (REAL *pa, REAL *pb, REAL *pc)
 Adaptive exact 2D orientation test. Robust. More...
 
REAL Vpred_orient2dfast (REAL *pa, REAL *pb, REAL *pc)
 Approximate 2D orientation test. Nonrobust. More...
 
REAL Vpred_orient2dexact (REAL *pa, REAL *pb, REAL *pc)
 Exact 2D orientation test. Robust. More...
 
REAL Vpred_orient3d (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Adaptive exact 3D orientation test. Robust. More...
 
REAL Vpred_orient3dfast (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Approximate 3D orientation test. Nonrobust. More...
 
REAL Vpred_orient3dexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Exact 3D orientation test. Robust. More...
 
REAL Vpred_incircle (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Adaptive exact 2D incircle test. Robust. More...
 
REAL Vpred_incirclefast (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Approximate 2D incircle test. Nonrobust. More...
 
REAL Vpred_incircleexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 Exact 2D incircle test. Robust. More...
 
REAL Vpred_insphere (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
 Adaptive exact 3D insphere test. Robust. More...
 
REAL Vpred_inspherefast (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
 Approximate 3D insphere test. Nonrobust. More...
 
REAL Vpred_insphereexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
 Exact 3D insphere test. Robust. More...
 
int Vset_num (Vset *thee)
 Return the number of things currently in the list. More...
 
char * Vset_access (Vset *thee, int i)
 Access an object in an arbitrary place in the list. More...
 
char * Vset_create (Vset *thee)
 Create an object on the end of the list.
│ │ │ │ + More...
 
char * Vset_first (Vset *thee)
 Return the first object in the set.
│ │ │ │ + More...
 
char * Vset_last (Vset *thee)
 Return the last object in the set. More...
 
char * Vset_next (Vset *thee)
 Return the next object in the set. More...
 
char * Vset_prev (Vset *thee)
 Return the prev object in the set. More...
 
char * Vset_peekFirst (Vset *thee)
 Return the first object in the set. More...
 
char * Vset_peekLast (Vset *thee)
 Return the last object in the set. More...
 
void Vset_destroy (Vset *thee)
 Delete an object from the end of the list. More...
 
VsetVset_ctor (Vmem *vmem, const char *tname, int tsize, int tmaxNum, int ioKey)
 Construct the set object. More...
 
void Vset_dtor (Vset **thee)
 Destroy the set object. More...
 
char * Vset_createLast (Vset *thee)
 Create an object on the end of the list. More...
 
void Vset_destroyLast (Vset *thee)
 Free up the object currently on the end of the list. More...
 
void Vset_initData (Vset *thee)
 Initialize the Vset data (thee). More...
 
void Vset_reset (Vset *thee)
 Release all Ram controlled by this (thee) and re-initialize. More...
 
void Vset_check (Vset *thee, int *tnum, int *tsize, int *tVecUse, int *tVecMal, int *tVecOhd)
 Get and return the RAM Control Block (thee) information. More...
 
void Vset_memChk (Vset *thee)
 Print the exact current malloc usage. More...
 
│ │ │ │

Detailed Description

│ │ │ │ -

Header file for the Geometric Predicates.

│ │ │ │ +

Class Vset: a dynamic set object.

│ │ │ │ +
Author
Michael Holst
│ │ │ │ +
Note
None
│ │ │ │
Version
│ │ │ │ -
Id
vpred.h,v 1.4 2010/08/12 05:40:37 fetk Exp
│ │ │ │ -
Author
Michael Holst
│ │ │ │ +
Id
vset.h,v 1.20 2010/08/12 05:40:37 fetk Exp
│ │ │ │
Attention
*
│ │ │ │  * MALOC = < Minimal Abstraction Layer for Object-oriented C >
│ │ │ │  * Copyright (C) 1994-- Michael Holst
│ │ │ │  *
│ │ │ │  * This library is free software; you can redistribute it and/or
│ │ │ │  * modify it under the terms of the GNU Lesser General Public
│ │ │ │  * License as published by the Free Software Foundation; either
│ │ │ │ @@ -149,757 +161,14 @@
│ │ │ │  * Lesser General Public License for more details.
│ │ │ │  *
│ │ │ │  * You should have received a copy of the GNU Lesser General Public
│ │ │ │  * License along with this library; if not, write to the Free Software
│ │ │ │  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
│ │ │ │  * 
│ │ │ │  *  
│ │ │ │ -

Macro Definition Documentation

│ │ │ │ - │ │ │ │ -

◆ INEXACT

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define INEXACT   /* Nothing */
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Parameters and constants "INEXACT".

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ NARROWRAND

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define NARROWRAND   narrowdoublerand
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Generate a double with random 53-bit significand and a random exponent in [0, 7].

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ REAL

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define REAL   double
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

float or double

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ REALPRINT

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define REALPRINT   doubleprint
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Print the bit representation of a double.

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ REALRAND

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define REALRAND   doublerand
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Generate a double with random 53-bit significand and a random exponent in [0, 511].

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ UNIFORMRAND

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
#define UNIFORMRAND   uniformdoublerand
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Generate a double with random 53-bit significand.

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ -

Function Documentation

│ │ │ │ - │ │ │ │ -

◆ Vpred_exactinit()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
void Vpred_exactinit (void )
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Initialize the variables used for exact arithmetic.

│ │ │ │ -
Note
‘epsilon’ is the largest power of two such that 1.0 + epsilon = 1.0 in floating-point arithmetic. ‘epsilon’ bounds the relative roundoff error. It is used for floating-point error analysis. ‘splitter’ is used to split floating-point numbers into two half- length significands for exact multiplication. I imagine that a highly optimizing compiler might be too smart for its own good, and somehow cause this routine to fail, if it pretends that floating-point arithmetic is too much like real arithmetic. Don't change this routine unless you fully understand it.
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_incircle()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_incircle (REALpa,
REALpb,
REALpc,
REALpd 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Adaptive exact 2D incircle test. Robust.

│ │ │ │ -
Returns
a positive value if the point pd lies inside the circle passing through pa, pb, and pc; a negative value if it lies outside; and zero if the four points are cocircular. The points pa, pb, and pc must be in counterclockwise order, or the sign of the result will be reversed.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_incircleexact()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_incircleexact (REALpa,
REALpb,
REALpc,
REALpd 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Exact 2D incircle test. Robust.

│ │ │ │ -
Returns
a positive value if the point pd lies inside the circle passing through pa, pb, and pc; a negative value if it lies outside; and zero if the four points are cocircular. The points pa, pb, and pc must be in counterclockwise order, or the sign of the result will be reversed.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_incirclefast()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_incirclefast (REALpa,
REALpb,
REALpc,
REALpd 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Approximate 2D incircle test. Nonrobust.

│ │ │ │ -
Returns
a positive value if the point pd lies inside the circle passing through pa, pb, and pc; a negative value if it lies outside; and zero if the four points are cocircular. The points pa, pb, and pc must be in counterclockwise order, or the sign of the result will be reversed.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_insphere()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_insphere (REALpa,
REALpb,
REALpc,
REALpd,
REALpe 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Adaptive exact 3D insphere test. Robust.

│ │ │ │ -
Returns
a positive value if the point pe lies inside the sphere passing through pa, pb, pc, and pd; a negative value if it lies outside; and zero if the five points are cospherical. The points pa, pb, pc, and pd must be ordered so that they have a positive orientation (as defined by orient3d()), or the sign of the result will be reversed.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
pePointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_insphereexact()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_insphereexact (REALpa,
REALpb,
REALpc,
REALpd,
REALpe 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Exact 3D insphere test. Robust.

│ │ │ │ -
Returns
a positive value if the point pe lies inside the sphere passing through pa, pb, pc, and pd; a negative value if it lies outside; and zero if the five points are cospherical. The points pa, pb, pc, and pd must be ordered so that they have a positive orientation (as defined by orient3d()), or the sign of the result will be reversed.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
pePointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_inspherefast()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_inspherefast (REALpa,
REALpb,
REALpc,
REALpd,
REALpe 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Approximate 3D insphere test. Nonrobust.

│ │ │ │ -
Returns
a positive value if the point pe lies inside the sphere passing through pa, pb, pc, and pd; a negative value if it lies outside; and zero if the five points are cospherical. The points pa, pb, pc, and pd must be ordered so that they have a positive orientation (as defined by orient3d()), or the sign of the result will be reversed.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
pePointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_orient2d()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_orient2d (REALpa,
REALpb,
REALpc 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Adaptive exact 2D orientation test. Robust.

│ │ │ │ -
Returns
a positive value if the points pa, pb, and pc occur in counterclockwise order; a negative value if they occur in clockwise order; and zero if they are collinear. The result is also a rough approximation of twice the signed area of the triangle defined by the three points.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_orient2dexact()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_orient2dexact (REALpa,
REALpb,
REALpc 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Exact 2D orientation test. Robust.

│ │ │ │ -
Returns
a positive value if the points pa, pb, and pc occur in counterclockwise order; a negative value if they occur in clockwise order; and zero if they are collinear. The result is also a rough approximation of twice the signed area of the triangle defined by the three points.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_orient2dfast()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_orient2dfast (REALpa,
REALpb,
REALpc 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Approximate 2D orientation test. Nonrobust.

│ │ │ │ -
Returns
a positive value if the points pa, pb, and pc occur in counterclockwise order; a negative value if they occur in clockwise order; and zero if they are collinear. The result is also a rough approximation of twice the signed area of the triangle defined by the three points.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_orient3d()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_orient3d (REALpa,
REALpb,
REALpc,
REALpd 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Adaptive exact 3D orientation test. Robust.

│ │ │ │ -
Returns
a positive value if the point pd lies below the plane passing through pa, pb, and pc; "below" is defined so that pa, pb, and pc appear in counterclockwise order when viewed from above the plane. Returns a negative value if pd lies above the plane. Returns zero if the points are coplanar. The result is also a rough approximation of six times the signed volume of the tetrahedron defined by the four points.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_orient3dexact()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_orient3dexact (REALpa,
REALpb,
REALpc,
REALpd 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Exact 3D orientation test. Robust.

│ │ │ │ -
Returns
a positive value if the point pd lies below the plane passing through pa, pb, and pc; "below" is defined so that pa, pb, and pc appear in counterclockwise order when viewed from above the plane. Returns a negative value if pd lies above the plane. Returns zero if the points are coplanar. The result is also a rough approximation of six times the signed volume of the tetrahedron defined by the four points.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

◆ Vpred_orient3dfast()

│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
REAL Vpred_orient3dfast (REALpa,
REALpb,
REALpc,
REALpd 
)
│ │ │ │ -
│ │ │ │ - │ │ │ │ -

Approximate 3D orientation test. Nonrobust.

│ │ │ │ -
Returns
a positive value if the point pd lies below the plane passing through pa, pb, and pc; "below" is defined so that pa, pb, and pc appear in counterclockwise order when viewed from above the plane. Returns a negative value if pd lies above the plane. Returns zero if the points are coplanar. The result is also a rough approximation of six times the signed volume of the tetrahedron defined by the four points.
│ │ │ │ -
Parameters
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
paPointer to a real parameter
pbPointer to a real parameter
pcPointer to a real parameter
pdPointer to a real parameter
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,89 +3,101 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -Macros | Functions │ │ │ │ │ -vpred.h File Reference │ │ │ │ │ -Header file for the Geometric Predicates. More... │ │ │ │ │ +Classes | Typedefs | Functions │ │ │ │ │ +vset.h File Reference │ │ │ │ │ +Vset_class │ │ │ │ │ +Class Vset: a dynamic set object. More... │ │ │ │ │ #include │ │ │ │ │ -Include dependency graph for vpred.h: │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ +Include dependency graph for vset.h: │ │ │ │ │ This graph shows which files directly or indirectly include this file: │ │ │ │ │ Go_to_the_source_code_of_this_file. │ │ │ │ │ - Macros │ │ │ │ │ -#define INEXACT   /* Nothing */ │ │ │ │ │ -  Parameters and constants "INEXACT". More... │ │ │ │ │ -  │ │ │ │ │ -#define REAL   double │ │ │ │ │ -  float or double More... │ │ │ │ │ -  │ │ │ │ │ -#define REALPRINT   doubleprint │ │ │ │ │ -  Print the bit representation of a double. More... │ │ │ │ │ -  │ │ │ │ │ -#define REALRAND   doublerand │ │ │ │ │ -  Generate a double with random 53-bit significand and a random exponent │ │ │ │ │ - in [0, 511]. More... │ │ │ │ │ -  │ │ │ │ │ -#define NARROWRAND   narrowdoublerand │ │ │ │ │ -  Generate a double with random 53-bit significand and a random exponent │ │ │ │ │ - in [0, 7]. More... │ │ │ │ │ -  │ │ │ │ │ -#define UNIFORMRAND   uniformdoublerand │ │ │ │ │ -  Generate a double with random 53-bit significand. More... │ │ │ │ │ + Classes │ │ │ │ │ +struct  sVset │ │ │ │ │ +  Contains public data members for Vset class. More... │ │ │ │ │ +  │ │ │ │ │ + Typedefs │ │ │ │ │ +typedef struct sVset Vset │ │ │ │ │ +  Declaration of the Vset class as the Vset structure. │ │ │ │ │ + More... │ │ │ │ │   │ │ │ │ │ Functions │ │ │ │ │ -void Vpred_exactinit (void) │ │ │ │ │ -  Initialize the variables used for exact arithmetic. More... │ │ │ │ │ + int Vset_num (Vset *thee) │ │ │ │ │ +  Return the number of things currently in the list. More... │ │ │ │ │ +  │ │ │ │ │ +char * Vset_access (Vset *thee, int i) │ │ │ │ │ +  Access an object in an arbitrary place in the list. More... │ │ │ │ │ +  │ │ │ │ │ +char * Vset_create (Vset *thee) │ │ │ │ │ +  Create an object on the end of the list. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ +char * Vset_first (Vset *thee) │ │ │ │ │ +  Return the first object in the set. │ │ │ │ │ + More... │ │ │ │ │ +  │ │ │ │ │ +char * Vset_last (Vset *thee) │ │ │ │ │ +  Return the last object in the set. More... │ │ │ │ │ +  │ │ │ │ │ +char * Vset_next (Vset *thee) │ │ │ │ │ +  Return the next object in the set. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_orient2d (REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ -  Adaptive exact 2D orientation test. Robust. More... │ │ │ │ │ +char * Vset_prev (Vset *thee) │ │ │ │ │ +  Return the prev object in the set. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_orient2dfast (REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ -  Approximate 2D orientation test. Nonrobust. More... │ │ │ │ │ +char * Vset_peekFirst (Vset *thee) │ │ │ │ │ +  Return the first object in the set. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_orient2dexact (REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ -  Exact 2D orientation test. Robust. More... │ │ │ │ │ +char * Vset_peekLast (Vset *thee) │ │ │ │ │ +  Return the last object in the set. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_orient3d (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -  Adaptive exact 3D orientation test. Robust. More... │ │ │ │ │ + void Vset_destroy (Vset *thee) │ │ │ │ │ +  Delete an object from the end of the list. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_orient3dfast (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -  Approximate 3D orientation test. Nonrobust. More... │ │ │ │ │ +Vset * Vset_ctor (Vmem *vmem, const char *tname, int tsize, int tmaxNum, int │ │ │ │ │ + ioKey) │ │ │ │ │ +  Construct the set object. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_orient3dexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -  Exact 3D orientation test. Robust. More... │ │ │ │ │ + void Vset_dtor (Vset **thee) │ │ │ │ │ +  Destroy the set object. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_incircle (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -  Adaptive exact 2D incircle test. Robust. More... │ │ │ │ │ +char * Vset_createLast (Vset *thee) │ │ │ │ │ +  Create an object on the end of the list. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_incirclefast (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -  Approximate 2D incircle test. Nonrobust. More... │ │ │ │ │ + void Vset_destroyLast (Vset *thee) │ │ │ │ │ +  Free up the object currently on the end of the list. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_incircleexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -  Exact 2D incircle test. Robust. More... │ │ │ │ │ + void Vset_initData (Vset *thee) │ │ │ │ │ +  Initialize the Vset data (thee). More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_insphere (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ -  Adaptive exact 3D insphere test. Robust. More... │ │ │ │ │ + void Vset_reset (Vset *thee) │ │ │ │ │ +  Release all Ram controlled by this (thee) and re-initialize. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_inspherefast (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ -  Approximate 3D insphere test. Nonrobust. More... │ │ │ │ │ + void Vset_check (Vset *thee, int *tnum, int *tsize, int *tVecUse, int │ │ │ │ │ + *tVecMal, int *tVecOhd) │ │ │ │ │ +  Get and return the RAM Control Block (thee) information. More... │ │ │ │ │   │ │ │ │ │ -REAL Vpred_insphereexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ -  Exact 3D insphere test. Robust. More... │ │ │ │ │ + void Vset_memChk (Vset *thee) │ │ │ │ │ +  Print the exact current malloc usage. More... │ │ │ │ │   │ │ │ │ │ ***** Detailed Description ***** │ │ │ │ │ -Header file for the Geometric Predicates. │ │ │ │ │ - Version │ │ │ │ │ - Id │ │ │ │ │ - vpred.h,v 1.4 2010/08/12 05:40:37 fetk Exp │ │ │ │ │ +Class Vset: a dynamic set object. │ │ │ │ │ Author │ │ │ │ │ Michael Holst │ │ │ │ │ + Note │ │ │ │ │ + None │ │ │ │ │ + Version │ │ │ │ │ + Id │ │ │ │ │ + vset.h,v 1.20 2010/08/12 05:40:37 fetk Exp │ │ │ │ │ Attention │ │ │ │ │ * │ │ │ │ │ * MALOC = < Minimal Abstraction Layer for Object-oriented C > │ │ │ │ │ * Copyright (C) 1994-- Michael Holst │ │ │ │ │ * │ │ │ │ │ * This library is free software; you can redistribute it and/or │ │ │ │ │ * modify it under the terms of the GNU Lesser General Public │ │ │ │ │ @@ -98,257 +110,10 @@ │ │ │ │ │ * Lesser General Public License for more details. │ │ │ │ │ * │ │ │ │ │ * You should have received a copy of the GNU Lesser General Public │ │ │ │ │ * License along with this library; if not, write to the Free Software │ │ │ │ │ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA │ │ │ │ │ * │ │ │ │ │ * │ │ │ │ │ -***** Macro Definition Documentation ***** │ │ │ │ │ -***** ◆ INEXACT ***** │ │ │ │ │ -#define INEXACT   /* Nothing */ │ │ │ │ │ -Parameters and constants "INEXACT". │ │ │ │ │ -***** ◆ NARROWRAND ***** │ │ │ │ │ -#define NARROWRAND   narrowdoublerand │ │ │ │ │ -Generate a double with random 53-bit significand and a random exponent in [0, │ │ │ │ │ -7]. │ │ │ │ │ -***** ◆ REAL ***** │ │ │ │ │ -#define REAL   double │ │ │ │ │ -float or double │ │ │ │ │ -***** ◆ REALPRINT ***** │ │ │ │ │ -#define REALPRINT   doubleprint │ │ │ │ │ -Print the bit representation of a double. │ │ │ │ │ -***** ◆ REALRAND ***** │ │ │ │ │ -#define REALRAND   doublerand │ │ │ │ │ -Generate a double with random 53-bit significand and a random exponent in [0, │ │ │ │ │ -511]. │ │ │ │ │ -***** ◆ UNIFORMRAND ***** │ │ │ │ │ -#define UNIFORMRAND   uniformdoublerand │ │ │ │ │ -Generate a double with random 53-bit significand. │ │ │ │ │ -***** Function Documentation ***** │ │ │ │ │ -***** ◆ Vpred_exactinit() ***** │ │ │ │ │ -void Vpred_exactinit ( void  ) │ │ │ │ │ -Initialize the variables used for exact arithmetic. │ │ │ │ │ - Note │ │ │ │ │ - ‘epsilon’ is the largest power of two such that 1.0 + epsilon = 1.0 in │ │ │ │ │ - floating-point arithmetic. ‘epsilon’ bounds the relative roundoff error. │ │ │ │ │ - It is used for floating-point error analysis. ‘splitter’ is used to split │ │ │ │ │ - floating-point numbers into two half- length significands for exact │ │ │ │ │ - multiplication. I imagine that a highly optimizing compiler might be too │ │ │ │ │ - smart for its own good, and somehow cause this routine to fail, if it │ │ │ │ │ - pretends that floating-point arithmetic is too much like real arithmetic. │ │ │ │ │ - Don't change this routine unless you fully understand it. │ │ │ │ │ -***** ◆ Vpred_incircle() ***** │ │ │ │ │ -REAL Vpred_incircle ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc, │ │ │ │ │ - REAL * pd  │ │ │ │ │ - ) │ │ │ │ │ -Adaptive exact 2D incircle test. Robust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the point pd lies inside the circle passing through │ │ │ │ │ - pa, pb, and pc; a negative value if it lies outside; and zero if the four │ │ │ │ │ - points are cocircular. The points pa, pb, and pc must be in │ │ │ │ │ - counterclockwise order, or the sign of the result will be reversed. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ - pd Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_incircleexact() ***** │ │ │ │ │ -REAL Vpred_incircleexact ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc, │ │ │ │ │ - REAL * pd  │ │ │ │ │ - ) │ │ │ │ │ -Exact 2D incircle test. Robust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the point pd lies inside the circle passing through │ │ │ │ │ - pa, pb, and pc; a negative value if it lies outside; and zero if the four │ │ │ │ │ - points are cocircular. The points pa, pb, and pc must be in │ │ │ │ │ - counterclockwise order, or the sign of the result will be reversed. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ - pd Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_incirclefast() ***** │ │ │ │ │ -REAL Vpred_incirclefast ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc, │ │ │ │ │ - REAL * pd  │ │ │ │ │ - ) │ │ │ │ │ -Approximate 2D incircle test. Nonrobust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the point pd lies inside the circle passing through │ │ │ │ │ - pa, pb, and pc; a negative value if it lies outside; and zero if the four │ │ │ │ │ - points are cocircular. The points pa, pb, and pc must be in │ │ │ │ │ - counterclockwise order, or the sign of the result will be reversed. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ - pd Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_insphere() ***** │ │ │ │ │ -REAL Vpred_insphere ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc, │ │ │ │ │ - REAL * pd, │ │ │ │ │ - REAL * pe  │ │ │ │ │ - ) │ │ │ │ │ -Adaptive exact 3D insphere test. Robust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the point pe lies inside the sphere passing through │ │ │ │ │ - pa, pb, pc, and pd; a negative value if it lies outside; and zero if the │ │ │ │ │ - five points are cospherical. The points pa, pb, pc, and pd must be │ │ │ │ │ - ordered so that they have a positive orientation (as defined by orient3d │ │ │ │ │ - ()), or the sign of the result will be reversed. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ - pd Pointer to a real parameter │ │ │ │ │ - pe Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_insphereexact() ***** │ │ │ │ │ -REAL Vpred_insphereexact ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc, │ │ │ │ │ - REAL * pd, │ │ │ │ │ - REAL * pe  │ │ │ │ │ - ) │ │ │ │ │ -Exact 3D insphere test. Robust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the point pe lies inside the sphere passing through │ │ │ │ │ - pa, pb, pc, and pd; a negative value if it lies outside; and zero if the │ │ │ │ │ - five points are cospherical. The points pa, pb, pc, and pd must be │ │ │ │ │ - ordered so that they have a positive orientation (as defined by orient3d │ │ │ │ │ - ()), or the sign of the result will be reversed. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ - pd Pointer to a real parameter │ │ │ │ │ - pe Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_inspherefast() ***** │ │ │ │ │ -REAL Vpred_inspherefast ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc, │ │ │ │ │ - REAL * pd, │ │ │ │ │ - REAL * pe  │ │ │ │ │ - ) │ │ │ │ │ -Approximate 3D insphere test. Nonrobust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the point pe lies inside the sphere passing through │ │ │ │ │ - pa, pb, pc, and pd; a negative value if it lies outside; and zero if the │ │ │ │ │ - five points are cospherical. The points pa, pb, pc, and pd must be │ │ │ │ │ - ordered so that they have a positive orientation (as defined by orient3d │ │ │ │ │ - ()), or the sign of the result will be reversed. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ - pd Pointer to a real parameter │ │ │ │ │ - pe Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_orient2d() ***** │ │ │ │ │ -REAL Vpred_orient2d ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc  │ │ │ │ │ - ) │ │ │ │ │ -Adaptive exact 2D orientation test. Robust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the points pa, pb, and pc occur in counterclockwise │ │ │ │ │ - order; a negative value if they occur in clockwise order; and zero if │ │ │ │ │ - they are collinear. The result is also a rough approximation of twice the │ │ │ │ │ - signed area of the triangle defined by the three points. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_orient2dexact() ***** │ │ │ │ │ -REAL Vpred_orient2dexact ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc  │ │ │ │ │ - ) │ │ │ │ │ -Exact 2D orientation test. Robust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the points pa, pb, and pc occur in counterclockwise │ │ │ │ │ - order; a negative value if they occur in clockwise order; and zero if │ │ │ │ │ - they are collinear. The result is also a rough approximation of twice the │ │ │ │ │ - signed area of the triangle defined by the three points. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_orient2dfast() ***** │ │ │ │ │ -REAL Vpred_orient2dfast ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc  │ │ │ │ │ - ) │ │ │ │ │ -Approximate 2D orientation test. Nonrobust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the points pa, pb, and pc occur in counterclockwise │ │ │ │ │ - order; a negative value if they occur in clockwise order; and zero if │ │ │ │ │ - they are collinear. The result is also a rough approximation of twice the │ │ │ │ │ - signed area of the triangle defined by the three points. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_orient3d() ***** │ │ │ │ │ -REAL Vpred_orient3d ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc, │ │ │ │ │ - REAL * pd  │ │ │ │ │ - ) │ │ │ │ │ -Adaptive exact 3D orientation test. Robust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the point pd lies below the plane passing through pa, │ │ │ │ │ - pb, and pc; "below" is defined so that pa, pb, and pc appear in │ │ │ │ │ - counterclockwise order when viewed from above the plane. Returns a │ │ │ │ │ - negative value if pd lies above the plane. Returns zero if the points are │ │ │ │ │ - coplanar. The result is also a rough approximation of six times the │ │ │ │ │ - signed volume of the tetrahedron defined by the four points. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ - pd Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_orient3dexact() ***** │ │ │ │ │ -REAL Vpred_orient3dexact ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc, │ │ │ │ │ - REAL * pd  │ │ │ │ │ - ) │ │ │ │ │ -Exact 3D orientation test. Robust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the point pd lies below the plane passing through pa, │ │ │ │ │ - pb, and pc; "below" is defined so that pa, pb, and pc appear in │ │ │ │ │ - counterclockwise order when viewed from above the plane. Returns a │ │ │ │ │ - negative value if pd lies above the plane. Returns zero if the points are │ │ │ │ │ - coplanar. The result is also a rough approximation of six times the │ │ │ │ │ - signed volume of the tetrahedron defined by the four points. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ - pd Pointer to a real parameter │ │ │ │ │ -***** ◆ Vpred_orient3dfast() ***** │ │ │ │ │ -REAL Vpred_orient3dfast ( REAL * pa, │ │ │ │ │ - REAL * pb, │ │ │ │ │ - REAL * pc, │ │ │ │ │ - REAL * pd  │ │ │ │ │ - ) │ │ │ │ │ -Approximate 3D orientation test. Nonrobust. │ │ │ │ │ - Returns │ │ │ │ │ - a positive value if the point pd lies below the plane passing through pa, │ │ │ │ │ - pb, and pc; "below" is defined so that pa, pb, and pc appear in │ │ │ │ │ - counterclockwise order when viewed from above the plane. Returns a │ │ │ │ │ - negative value if pd lies above the plane. Returns zero if the points are │ │ │ │ │ - coplanar. The result is also a rough approximation of six times the │ │ │ │ │ - signed volume of the tetrahedron defined by the four points. │ │ │ │ │ - Parameters │ │ │ │ │ - pa Pointer to a real parameter │ │ │ │ │ - pb Pointer to a real parameter │ │ │ │ │ - pc Pointer to a real parameter │ │ │ │ │ - pd Pointer to a real parameter │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00035_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -MALOC: vpred.h Source File │ │ │ │ +MALOC: vset.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ @@ -39,95 +39,196 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -
vpred.h
│ │ │ │ +
vset.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │ -
30#ifndef _VPRED_H_
│ │ │ │ -
31#define _VPRED_H_
│ │ │ │ -
32
│ │ │ │ -
33#include <maloc/maloc_base.h>
│ │ │ │ -
34
│ │ │ │ -
35/* random() prototype seems to be missing in <stdlib.h> */
│ │ │ │ -
36/*
│ │ │ │ -
37 * if !defined(VOSF1)
│ │ │ │ -
38 * extern long int random(void);
│ │ │ │ -
39 * endif
│ │ │ │ -
40 */
│ │ │ │ -
41
│ │ │ │ -
42/* On some machines, the exact arithmetic routines might be defeated by the */
│ │ │ │ -
43/* use of internal extended precision floating-point registers. Sometimes */
│ │ │ │ -
44/* this problem can be fixed by defining certain values to be volatile, */
│ │ │ │ -
45/* thus forcing them to be stored to memory and rounded off. This isn't */
│ │ │ │ -
46/* a great solution, though, as it slows the arithmetic down. */
│ │ │ │ -
47/* */
│ │ │ │ -
48/* To try this out, write "#define INEXACT volatile" below. Normally, */
│ │ │ │ -
49/* however, INEXACT should be defined to be nothing. ("#define INEXACT".) */
│ │ │ │ -
50
│ │ │ │ -
52#define INEXACT /* Nothing */
│ │ │ │ -
53/* #define INEXACT volatile */
│ │ │ │ -
54
│ │ │ │ -
56#define REAL double
│ │ │ │ -
57
│ │ │ │ -
59#define REALPRINT doubleprint
│ │ │ │ -
60
│ │ │ │ -
63#define REALRAND doublerand
│ │ │ │ -
64
│ │ │ │ -
67#define NARROWRAND narrowdoublerand
│ │ │ │ -
68
│ │ │ │ -
70#define UNIFORMRAND uniformdoublerand
│ │ │ │ +
38#ifndef _VSET_H_
│ │ │ │ +
39#define _VSET_H_
│ │ │ │ +
40
│ │ │ │ +
41#include <maloc/maloc_base.h>
│ │ │ │ +
42
│ │ │ │ +
43#include <maloc/vnm.h>
│ │ │ │ +
44#include <maloc/vmem.h>
│ │ │ │ +
45
│ │ │ │ +
46/*
│ │ │ │ +
47 * ***************************************************************************
│ │ │ │ +
48 * Class Vset: Parameters and datatypes
│ │ │ │ +
49 * ***************************************************************************
│ │ │ │ +
50 */
│ │ │ │ +
51
│ │ │ │ +
57struct sVset {
│ │ │ │ +
58
│ │ │ │ + │ │ │ │ + │ │ │ │ +
63
│ │ │ │ +
65 int curT;
│ │ │ │ +
66
│ │ │ │ + │ │ │ │ +
70 int sizeT;
│ │ │ │
71
│ │ │ │ -
84void Vpred_exactinit(void);
│ │ │ │ -
85
│ │ │ │ - │ │ │ │ -
98
│ │ │ │ - │ │ │ │ -
111
│ │ │ │ - │ │ │ │ -
124
│ │ │ │ -
139REAL Vpred_orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd);
│ │ │ │ -
140
│ │ │ │ - │ │ │ │ -
156
│ │ │ │ - │ │ │ │ -
172
│ │ │ │ -
185REAL Vpred_incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd);
│ │ │ │ -
186
│ │ │ │ - │ │ │ │ -
200
│ │ │ │ - │ │ │ │ -
214
│ │ │ │ -
228REAL Vpred_insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe);
│ │ │ │ -
229
│ │ │ │ -
243REAL Vpred_inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe);
│ │ │ │ -
244
│ │ │ │ -
258REAL Vpred_insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe);
│ │ │ │ -
259
│ │ │ │ -
260#endif /* _VPRED_H_ */
│ │ │ │ + │ │ │ │ +
75 int numT;
│ │ │ │ +
77 int prtT;
│ │ │ │ +
78
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
89
│ │ │ │ +
91 char **table;
│ │ │ │ +
92
│ │ │ │ +
93};
│ │ │ │ +
94
│ │ │ │ +
100typedef struct sVset Vset;
│ │ │ │ +
101
│ │ │ │ +
102/****************************************************************/
│ │ │ │ +
103/* Class Vset: Inlineable method (vset.c) */
│ │ │ │ +
104/****************************************************************/
│ │ │ │ +
105
│ │ │ │ +
106#if !defined(VINLINE_MALOC)
│ │ │ │ +
115 int Vset_num(Vset *thee);
│ │ │ │ +
116
│ │ │ │ +
126 char *Vset_access(Vset *thee, int i);
│ │ │ │ +
127
│ │ │ │ +
136 char *Vset_create(Vset *thee);
│ │ │ │ +
137
│ │ │ │ +
146 char *Vset_first(Vset *thee);
│ │ │ │ +
147
│ │ │ │ +
156 char *Vset_last(Vset *thee);
│ │ │ │ +
157
│ │ │ │ +
166 char *Vset_next(Vset *thee);
│ │ │ │ +
167
│ │ │ │ +
176 char *Vset_prev(Vset *thee);
│ │ │ │ +
177
│ │ │ │ +
186 char *Vset_peekFirst(Vset *thee);
│ │ │ │ +
187
│ │ │ │ +
196 char *Vset_peekLast(Vset *thee);
│ │ │ │ +
197
│ │ │ │ +
206 void Vset_destroy(Vset *thee);
│ │ │ │ +
207#else /* if defined(VINLINE_MALOC) */
│ │ │ │ +
216# define Vset_num(thee) ((thee)->numT)
│ │ │ │ +
217
│ │ │ │ +
227# define Vset_access(thee,i) ( \
│ │ │ │ +
228 ((i >= 0) && (i < thee->numT)) \
│ │ │ │ +
229 ? &((thee)->table[ (i)>>(thee)->blockPower ] \
│ │ │ │ +
230 [ (thee)->sizeT*((i)&(thee)->blockModulo) ]) \
│ │ │ │ +
231 : VNULL \
│ │ │ │ +
232 )
│ │ │ │ +
233
│ │ │ │ +
242# define Vset_create(thee) ( \
│ │ │ │ +
243 ( ((((thee)->numT)>>(thee)->blockPower) >= (thee)->numBlocks) \
│ │ │ │ +
244 || ((((thee)->numT+1)%(thee)->prtT) == 0) ) \
│ │ │ │ +
245 ? (Vset_createLast((thee))) \
│ │ │ │ +
246 : (++((thee)->numT), (Vset_access((thee),(thee)->numT-1))) \
│ │ │ │ +
247 )
│ │ │ │ +
248
│ │ │ │ +
257# define Vset_first(thee) ( \
│ │ │ │ +
258 (thee)->curT = 0, \
│ │ │ │ +
259 Vset_access((thee), (thee)->curT) \
│ │ │ │ +
260 )
│ │ │ │
261
│ │ │ │ +
270# define Vset_last(thee) ( \
│ │ │ │ +
271 (thee)->curT = (thee)->numT-1, \
│ │ │ │ +
272 Vset_access((thee), (thee)->curT) \
│ │ │ │ +
273 )
│ │ │ │ +
274
│ │ │ │ +
283# define Vset_next(thee) ( \
│ │ │ │ +
284 (thee)->curT++, \
│ │ │ │ +
285 ((thee)->curT < (thee)->numT) \
│ │ │ │ +
286 ? Vset_access((thee), (thee)->curT) \
│ │ │ │ +
287 : VNULL \
│ │ │ │ +
288 )
│ │ │ │ +
289
│ │ │ │ +
298# define Vset_prev(thee) ( \
│ │ │ │ +
299 (thee)->curT--, \
│ │ │ │ +
300 ((thee)->curT >= 0) \
│ │ │ │ +
301 ? Vset_access((thee), (thee)->curT) \
│ │ │ │ +
302 : VNULL \
│ │ │ │ +
303 )
│ │ │ │ +
304
│ │ │ │ +
313# define Vset_peekFirst(thee) ( \
│ │ │ │ +
314 Vset_access((thee), 0) \
│ │ │ │ +
315 )
│ │ │ │ +
316
│ │ │ │ +
325# define Vset_peekLast(thee) ( \
│ │ │ │ +
326 Vset_access((thee), (thee)->numT-1) \
│ │ │ │ +
327 )
│ │ │ │ +
328
│ │ │ │ +
337# define Vset_destroy(thee) ( \
│ │ │ │ +
338 ( ((((thee)->numT-1)>>(thee)->blockPower) < (thee)->numBlocks-1) \
│ │ │ │ +
339 || ((thee)->numT == 1) || ((((thee)->numT)%(thee)->prtT) == 0) ) \
│ │ │ │ +
340 ? (Vset_destroyLast((thee))) : (void)(((thee)->numT)--) \
│ │ │ │ +
341 )
│ │ │ │ +
342#endif /* if !defined(VINLINE_MALOC) */
│ │ │ │ +
343
│ │ │ │ + │ │ │ │ +
357 const char *tname, int tsize, int tmaxNum, int ioKey);
│ │ │ │ +
358
│ │ │ │ +
367void Vset_dtor(Vset **thee);
│ │ │ │ +
368
│ │ │ │ + │ │ │ │ +
378
│ │ │ │ + │ │ │ │ +
388
│ │ │ │ +
397void Vset_initData(Vset *thee);
│ │ │ │ +
398
│ │ │ │ +
407void Vset_reset(Vset *thee);
│ │ │ │ +
408
│ │ │ │ +
422void Vset_check(Vset *thee,
│ │ │ │ +
423 int *tnum, int *tsize, int *tVecUse, int *tVecMal, int *tVecOhd);
│ │ │ │ +
424
│ │ │ │ +
433void Vset_memChk(Vset *thee);
│ │ │ │ +
434
│ │ │ │ +
435#endif /* _VSET_H_ */
│ │ │ │ +
436
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ -
REAL Vpred_orient2d(REAL *pa, REAL *pb, REAL *pc)
Adaptive exact 2D orientation test. Robust.
│ │ │ │ -
REAL Vpred_orient3dfast(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Approximate 3D orientation test. Nonrobust.
│ │ │ │ -
#define REAL
float or double
Definition: vpred.h:56
│ │ │ │ -
REAL Vpred_orient3dexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Exact 3D orientation test. Robust.
│ │ │ │ -
REAL Vpred_inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
Approximate 3D insphere test. Nonrobust.
│ │ │ │ -
REAL Vpred_orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Adaptive exact 3D orientation test. Robust.
│ │ │ │ -
REAL Vpred_insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
Exact 3D insphere test. Robust.
│ │ │ │ -
void Vpred_exactinit(void)
Initialize the variables used for exact arithmetic.
│ │ │ │ -
REAL Vpred_incircleexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Exact 2D incircle test. Robust.
│ │ │ │ -
REAL Vpred_insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
Adaptive exact 3D insphere test. Robust.
│ │ │ │ -
REAL Vpred_orient2dfast(REAL *pa, REAL *pb, REAL *pc)
Approximate 2D orientation test. Nonrobust.
│ │ │ │ -
REAL Vpred_orient2dexact(REAL *pa, REAL *pb, REAL *pc)
Exact 2D orientation test. Robust.
│ │ │ │ -
REAL Vpred_incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Adaptive exact 2D incircle test. Robust.
│ │ │ │ -
REAL Vpred_incirclefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd)
Approximate 2D incircle test. Nonrobust.
│ │ │ │ +
#define VMAX_ARGLEN
Global constant.
Definition: maloc_base.h:227
│ │ │ │ +
Class Vmem: A safer, object-oriented, malloc/free object.
│ │ │ │ +
Header file for an ISO C [V]irtual [N]umerical [M]achine.
│ │ │ │ +
char * Vset_peekFirst(Vset *thee)
Return the first object in the set.
│ │ │ │ +
char * Vset_prev(Vset *thee)
Return the prev object in the set.
│ │ │ │ +
void Vset_dtor(Vset **thee)
Destroy the set object.
│ │ │ │ +
char * Vset_first(Vset *thee)
Return the first object in the set.
│ │ │ │ +
Vset * Vset_ctor(Vmem *vmem, const char *tname, int tsize, int tmaxNum, int ioKey)
Construct the set object.
│ │ │ │ +
void Vset_reset(Vset *thee)
Release all Ram controlled by this (thee) and re-initialize.
│ │ │ │ +
char * Vset_next(Vset *thee)
Return the next object in the set.
│ │ │ │ +
void Vset_initData(Vset *thee)
Initialize the Vset data (thee).
│ │ │ │ +
void Vset_destroyLast(Vset *thee)
Free up the object currently on the end of the list.
│ │ │ │ +
char * Vset_create(Vset *thee)
Create an object on the end of the list.
│ │ │ │ +
void Vset_memChk(Vset *thee)
Print the exact current malloc usage.
│ │ │ │ +
void Vset_check(Vset *thee, int *tnum, int *tsize, int *tVecUse, int *tVecMal, int *tVecOhd)
Get and return the RAM Control Block (thee) information.
│ │ │ │ +
int Vset_num(Vset *thee)
Return the number of things currently in the list.
│ │ │ │ +
char * Vset_peekLast(Vset *thee)
Return the last object in the set.
│ │ │ │ +
char * Vset_last(Vset *thee)
Return the last object in the set.
│ │ │ │ +
void Vset_destroy(Vset *thee)
Delete an object from the end of the list.
│ │ │ │ +
char * Vset_createLast(Vset *thee)
Create an object on the end of the list.
│ │ │ │ +
char * Vset_access(Vset *thee, int i)
Access an object in an arbitrary place in the list.
│ │ │ │ +
Contains public data members for Vmem class.
Definition: vmem.h:57
│ │ │ │ +
Contains public data members for Vset class.
Definition: vset.h:57
│ │ │ │ +
int blockModulo
=blockSize-1; for determining which block fast
Definition: vset.h:88
│ │ │ │ +
char nameT[VMAX_ARGLEN]
name of object we are managing
Definition: vset.h:68
│ │ │ │ +
int iMadeVmem
did i make vmem or was it inherited
Definition: vset.h:62
│ │ │ │ +
int blockSize
blocksize is 2^(blockPower)
Definition: vset.h:84
│ │ │ │ +
char ** table
list of pointers to blocks of storage we manage
Definition: vset.h:91
│ │ │ │ +
int numBlocks
total number of allocated blocks
Definition: vset.h:73
│ │ │ │ +
int prtT
for i/o at appropriate block creation/deletion
Definition: vset.h:77
│ │ │ │ +
Vmem * vmem
the memory manager
Definition: vset.h:60
│ │ │ │ +
int curT
the current "T" object in our collection
Definition: vset.h:65
│ │ │ │ +
int blockMax
num blocks = blockMax=(maxObjects/blockSize)
Definition: vset.h:86
│ │ │ │ +
int sizeT
size of the object in bytes
Definition: vset.h:70
│ │ │ │ +
int blockPower
power of 2 for blocksize (e.g., =10, or =16)
Definition: vset.h:82
│ │ │ │ +
int maxObjects
number of objects to manage (user specified)
Definition: vset.h:80
│ │ │ │ +
int numT
the global "T" counter – how many "T"s in list
Definition: vset.h:75
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── encoding │ │ │ │ │ @@ -1 +1 @@ │ │ │ │ │ -us-ascii │ │ │ │ │ +utf-8 │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -3,121 +3,283 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MALOC 0.1 │ │ │ │ │ │ │ │ │ │ * src │ │ │ │ │ * vsys │ │ │ │ │ * maloc │ │ │ │ │ -vpred.h │ │ │ │ │ +vset.h │ │ │ │ │ Go_to_the_documentation_of_this_file. │ │ │ │ │ 1 │ │ │ │ │ - 30#ifndef _VPRED_H_ │ │ │ │ │ - 31#define _VPRED_H_ │ │ │ │ │ - 32 │ │ │ │ │ - 33#include │ │ │ │ │ - 34 │ │ │ │ │ - 35/* random() prototype seems to be missing in */ │ │ │ │ │ - 36/* │ │ │ │ │ - 37 * if !defined(VOSF1) │ │ │ │ │ - 38 * extern long int random(void); │ │ │ │ │ - 39 * endif │ │ │ │ │ - 40 */ │ │ │ │ │ - 41 │ │ │ │ │ - 42/* On some machines, the exact arithmetic routines might be defeated by the │ │ │ │ │ -*/ │ │ │ │ │ - 43/* use of internal extended precision floating-point registers. Sometimes */ │ │ │ │ │ - 44/* this problem can be fixed by defining certain values to be volatile, */ │ │ │ │ │ - 45/* thus forcing them to be stored to memory and rounded off. This isn't */ │ │ │ │ │ - 46/* a great solution, though, as it slows the arithmetic down. */ │ │ │ │ │ - 47/* */ │ │ │ │ │ - 48/* To try this out, write "#define INEXACT volatile" below. Normally, */ │ │ │ │ │ - 49/* however, INEXACT should be defined to be nothing. ("#define INEXACT".) */ │ │ │ │ │ - 50 │ │ │ │ │ -52#define INEXACT /* Nothing */ │ │ │ │ │ - 53/* #define INEXACT volatile */ │ │ │ │ │ - 54 │ │ │ │ │ -56#define REAL double │ │ │ │ │ - 57 │ │ │ │ │ -59#define REALPRINT doubleprint │ │ │ │ │ - 60 │ │ │ │ │ -63#define REALRAND doublerand │ │ │ │ │ - 64 │ │ │ │ │ -67#define NARROWRAND narrowdoublerand │ │ │ │ │ - 68 │ │ │ │ │ -70#define UNIFORMRAND uniformdoublerand │ │ │ │ │ + 38#ifndef _VSET_H_ │ │ │ │ │ + 39#define _VSET_H_ │ │ │ │ │ + 40 │ │ │ │ │ + 41#include │ │ │ │ │ + 42 │ │ │ │ │ + 43#include │ │ │ │ │ + 44#include │ │ │ │ │ + 45 │ │ │ │ │ + 46/* │ │ │ │ │ + 47 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 48 * Class Vset: Parameters and datatypes │ │ │ │ │ + 49 * │ │ │ │ │ +*************************************************************************** │ │ │ │ │ + 50 */ │ │ │ │ │ + 51 │ │ │ │ │ +57struct sVset { │ │ │ │ │ + 58 │ │ │ │ │ +60 Vmem *vmem; │ │ │ │ │ +62 int iMadeVmem; │ │ │ │ │ + 63 │ │ │ │ │ +65 int curT; │ │ │ │ │ + 66 │ │ │ │ │ +68 char nameT[VMAX_ARGLEN]; │ │ │ │ │ +70 int sizeT; │ │ │ │ │ 71 │ │ │ │ │ -84void Vpred_exactinit(void); │ │ │ │ │ - 85 │ │ │ │ │ -97REAL Vpred_orient2d(REAL *pa, REAL *pb, REAL *pc); │ │ │ │ │ - 98 │ │ │ │ │ -110REAL Vpred_orient2dfast(REAL *pa, REAL *pb, REAL *pc); │ │ │ │ │ - 111 │ │ │ │ │ -123REAL Vpred_orient2dexact(REAL *pa, REAL *pb, REAL *pc); │ │ │ │ │ - 124 │ │ │ │ │ -139REAL Vpred_orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ - 140 │ │ │ │ │ -155REAL Vpred_orient3dfast(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ - 156 │ │ │ │ │ -171REAL Vpred_orient3dexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ - 172 │ │ │ │ │ -185REAL Vpred_incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ - 186 │ │ │ │ │ -199REAL Vpred_incirclefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ - 200 │ │ │ │ │ -213REAL Vpred_incircleexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd); │ │ │ │ │ - 214 │ │ │ │ │ -228REAL Vpred_insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe); │ │ │ │ │ - 229 │ │ │ │ │ -243REAL Vpred_inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe); │ │ │ │ │ - 244 │ │ │ │ │ -258REAL Vpred_insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe); │ │ │ │ │ - 259 │ │ │ │ │ - 260#endif /* _VPRED_H_ */ │ │ │ │ │ +73 int numBlocks; │ │ │ │ │ +75 int numT; │ │ │ │ │ +77 int prtT; │ │ │ │ │ + 78 │ │ │ │ │ +80 int maxObjects; │ │ │ │ │ +82 int blockPower; │ │ │ │ │ +84 int blockSize; │ │ │ │ │ +86 int blockMax; │ │ │ │ │ +88 int blockModulo; │ │ │ │ │ + 89 │ │ │ │ │ +91 char **table; │ │ │ │ │ + 92 │ │ │ │ │ + 93}; │ │ │ │ │ + 94 │ │ │ │ │ +100typedef struct sVset Vset; │ │ │ │ │ + 101 │ │ │ │ │ + 102/****************************************************************/ │ │ │ │ │ + 103/* Class Vset: Inlineable method (vset.c) */ │ │ │ │ │ + 104/****************************************************************/ │ │ │ │ │ + 105 │ │ │ │ │ + 106#if !defined(VINLINE_MALOC) │ │ │ │ │ +115 int Vset_num(Vset *thee); │ │ │ │ │ + 116 │ │ │ │ │ +126 char *Vset_access(Vset *thee, int i); │ │ │ │ │ + 127 │ │ │ │ │ +136 char *Vset_create(Vset *thee); │ │ │ │ │ + 137 │ │ │ │ │ +146 char *Vset_first(Vset *thee); │ │ │ │ │ + 147 │ │ │ │ │ +156 char *Vset_last(Vset *thee); │ │ │ │ │ + 157 │ │ │ │ │ +166 char *Vset_next(Vset *thee); │ │ │ │ │ + 167 │ │ │ │ │ +176 char *Vset_prev(Vset *thee); │ │ │ │ │ + 177 │ │ │ │ │ +186 char *Vset_peekFirst(Vset *thee); │ │ │ │ │ + 187 │ │ │ │ │ +196 char *Vset_peekLast(Vset *thee); │ │ │ │ │ + 197 │ │ │ │ │ +206 void Vset_destroy(Vset *thee); │ │ │ │ │ + 207#else /* if defined(VINLINE_MALOC) */ │ │ │ │ │ + 216# define Vset_num(thee) ((thee)->numT) │ │ │ │ │ + 217 │ │ │ │ │ + 227# define Vset_access(thee,i) ( \ │ │ │ │ │ + 228 ((i >= 0) && (i < thee->numT)) \ │ │ │ │ │ + 229 ? &((thee)->table[ (i)>>(thee)->blockPower ] \ │ │ │ │ │ + 230 [ (thee)->sizeT*((i)&(thee)->blockModulo) ]) \ │ │ │ │ │ + 231 : VNULL \ │ │ │ │ │ + 232 ) │ │ │ │ │ + 233 │ │ │ │ │ + 242# define Vset_create(thee) ( \ │ │ │ │ │ + 243 ( ((((thee)->numT)>>(thee)->blockPower) >= (thee)->numBlocks) \ │ │ │ │ │ + 244 || ((((thee)->numT+1)%(thee)->prtT) == 0) ) \ │ │ │ │ │ + 245 ? (Vset_createLast((thee))) \ │ │ │ │ │ + 246 : (++((thee)->numT), (Vset_access((thee),(thee)->numT-1))) \ │ │ │ │ │ + 247 ) │ │ │ │ │ + 248 │ │ │ │ │ + 257# define Vset_first(thee) ( \ │ │ │ │ │ + 258 (thee)->curT = 0, \ │ │ │ │ │ + 259 Vset_access((thee), (thee)->curT) \ │ │ │ │ │ + 260 ) │ │ │ │ │ 261 │ │ │ │ │ + 270# define Vset_last(thee) ( \ │ │ │ │ │ + 271 (thee)->curT = (thee)->numT-1, \ │ │ │ │ │ + 272 Vset_access((thee), (thee)->curT) \ │ │ │ │ │ + 273 ) │ │ │ │ │ + 274 │ │ │ │ │ + 283# define Vset_next(thee) ( \ │ │ │ │ │ + 284 (thee)->curT++, \ │ │ │ │ │ + 285 ((thee)->curT < (thee)->numT) \ │ │ │ │ │ + 286 ? Vset_access((thee), (thee)->curT) \ │ │ │ │ │ + 287 : VNULL \ │ │ │ │ │ + 288 ) │ │ │ │ │ + 289 │ │ │ │ │ + 298# define Vset_prev(thee) ( \ │ │ │ │ │ + 299 (thee)->curT--, \ │ │ │ │ │ + 300 ((thee)->curT >= 0) \ │ │ │ │ │ + 301 ? Vset_access((thee), (thee)->curT) \ │ │ │ │ │ + 302 : VNULL \ │ │ │ │ │ + 303 ) │ │ │ │ │ + 304 │ │ │ │ │ + 313# define Vset_peekFirst(thee) ( \ │ │ │ │ │ + 314 Vset_access((thee), 0) \ │ │ │ │ │ + 315 ) │ │ │ │ │ + 316 │ │ │ │ │ + 325# define Vset_peekLast(thee) ( \ │ │ │ │ │ + 326 Vset_access((thee), (thee)->numT-1) \ │ │ │ │ │ + 327 ) │ │ │ │ │ + 328 │ │ │ │ │ + 337# define Vset_destroy(thee) ( \ │ │ │ │ │ + 338 ( ((((thee)->numT-1)>>(thee)->blockPower) < (thee)->numBlocks-1) \ │ │ │ │ │ + 339 || ((thee)->numT == 1) || ((((thee)->numT)%(thee)->prtT) == 0) ) \ │ │ │ │ │ + 340 ? (Vset_destroyLast((thee))) : (void)(((thee)->numT)--) \ │ │ │ │ │ + 341 ) │ │ │ │ │ + 342#endif /* if !defined(VINLINE_MALOC) */ │ │ │ │ │ + 343 │ │ │ │ │ +356Vset* Vset_ctor(Vmem *vmem, │ │ │ │ │ + 357 const char *tname, int tsize, int tmaxNum, int ioKey); │ │ │ │ │ + 358 │ │ │ │ │ +367void Vset_dtor(Vset **thee); │ │ │ │ │ + 368 │ │ │ │ │ +377char *Vset_createLast(Vset *thee); │ │ │ │ │ + 378 │ │ │ │ │ +387void Vset_destroyLast(Vset *thee); │ │ │ │ │ + 388 │ │ │ │ │ +397void Vset_initData(Vset *thee); │ │ │ │ │ + 398 │ │ │ │ │ +407void Vset_reset(Vset *thee); │ │ │ │ │ + 408 │ │ │ │ │ +422void Vset_check(Vset *thee, │ │ │ │ │ + 423 int *tnum, int *tsize, int *tVecUse, int *tVecMal, int *tVecOhd); │ │ │ │ │ + 424 │ │ │ │ │ +433void Vset_memChk(Vset *thee); │ │ │ │ │ + 434 │ │ │ │ │ + 435#endif /* _VSET_H_ */ │ │ │ │ │ + 436 │ │ │ │ │ maloc_base.h │ │ │ │ │ The base (or foundation) header for MALOC. │ │ │ │ │ -Vpred_orient2d │ │ │ │ │ -REAL Vpred_orient2d(REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ -Adaptive exact 2D orientation test. Robust. │ │ │ │ │ -Vpred_orient3dfast │ │ │ │ │ -REAL Vpred_orient3dfast(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -Approximate 3D orientation test. Nonrobust. │ │ │ │ │ -REAL │ │ │ │ │ -#define REAL │ │ │ │ │ -float or double │ │ │ │ │ -Definition: vpred.h:56 │ │ │ │ │ -Vpred_orient3dexact │ │ │ │ │ -REAL Vpred_orient3dexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -Exact 3D orientation test. Robust. │ │ │ │ │ -Vpred_inspherefast │ │ │ │ │ -REAL Vpred_inspherefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ -Approximate 3D insphere test. Nonrobust. │ │ │ │ │ -Vpred_orient3d │ │ │ │ │ -REAL Vpred_orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -Adaptive exact 3D orientation test. Robust. │ │ │ │ │ -Vpred_insphereexact │ │ │ │ │ -REAL Vpred_insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ -Exact 3D insphere test. Robust. │ │ │ │ │ -Vpred_exactinit │ │ │ │ │ -void Vpred_exactinit(void) │ │ │ │ │ -Initialize the variables used for exact arithmetic. │ │ │ │ │ -Vpred_incircleexact │ │ │ │ │ -REAL Vpred_incircleexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -Exact 2D incircle test. Robust. │ │ │ │ │ -Vpred_insphere │ │ │ │ │ -REAL Vpred_insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) │ │ │ │ │ -Adaptive exact 3D insphere test. Robust. │ │ │ │ │ -Vpred_orient2dfast │ │ │ │ │ -REAL Vpred_orient2dfast(REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ -Approximate 2D orientation test. Nonrobust. │ │ │ │ │ -Vpred_orient2dexact │ │ │ │ │ -REAL Vpred_orient2dexact(REAL *pa, REAL *pb, REAL *pc) │ │ │ │ │ -Exact 2D orientation test. Robust. │ │ │ │ │ -Vpred_incircle │ │ │ │ │ -REAL Vpred_incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -Adaptive exact 2D incircle test. Robust. │ │ │ │ │ -Vpred_incirclefast │ │ │ │ │ -REAL Vpred_incirclefast(REAL *pa, REAL *pb, REAL *pc, REAL *pd) │ │ │ │ │ -Approximate 2D incircle test. Nonrobust. │ │ │ │ │ +VMAX_ARGLEN │ │ │ │ │ +#define VMAX_ARGLEN │ │ │ │ │ +Global constant. │ │ │ │ │ +Definition: maloc_base.h:227 │ │ │ │ │ +vmem.h │ │ │ │ │ +Class Vmem: A safer, object-oriented, malloc/free object. │ │ │ │ │ +vnm.h │ │ │ │ │ +Header file for an ISO C [V]irtual [N]umerical [M]achine. │ │ │ │ │ +Vset_peekFirst │ │ │ │ │ +char * Vset_peekFirst(Vset *thee) │ │ │ │ │ +Return the first object in the set. │ │ │ │ │ +Vset_prev │ │ │ │ │ +char * Vset_prev(Vset *thee) │ │ │ │ │ +Return the prev object in the set. │ │ │ │ │ +Vset_dtor │ │ │ │ │ +void Vset_dtor(Vset **thee) │ │ │ │ │ +Destroy the set object. │ │ │ │ │ +Vset_first │ │ │ │ │ +char * Vset_first(Vset *thee) │ │ │ │ │ +Return the first object in the set. │ │ │ │ │ +Vset_ctor │ │ │ │ │ +Vset * Vset_ctor(Vmem *vmem, const char *tname, int tsize, int tmaxNum, int │ │ │ │ │ +ioKey) │ │ │ │ │ +Construct the set object. │ │ │ │ │ +Vset_reset │ │ │ │ │ +void Vset_reset(Vset *thee) │ │ │ │ │ +Release all Ram controlled by this (thee) and re-initialize. │ │ │ │ │ +Vset_next │ │ │ │ │ +char * Vset_next(Vset *thee) │ │ │ │ │ +Return the next object in the set. │ │ │ │ │ +Vset_initData │ │ │ │ │ +void Vset_initData(Vset *thee) │ │ │ │ │ +Initialize the Vset data (thee). │ │ │ │ │ +Vset_destroyLast │ │ │ │ │ +void Vset_destroyLast(Vset *thee) │ │ │ │ │ +Free up the object currently on the end of the list. │ │ │ │ │ +Vset_create │ │ │ │ │ +char * Vset_create(Vset *thee) │ │ │ │ │ +Create an object on the end of the list. │ │ │ │ │ +Vset_memChk │ │ │ │ │ +void Vset_memChk(Vset *thee) │ │ │ │ │ +Print the exact current malloc usage. │ │ │ │ │ +Vset_check │ │ │ │ │ +void Vset_check(Vset *thee, int *tnum, int *tsize, int *tVecUse, int *tVecMal, │ │ │ │ │ +int *tVecOhd) │ │ │ │ │ +Get and return the RAM Control Block (thee) information. │ │ │ │ │ +Vset_num │ │ │ │ │ +int Vset_num(Vset *thee) │ │ │ │ │ +Return the number of things currently in the list. │ │ │ │ │ +Vset_peekLast │ │ │ │ │ +char * Vset_peekLast(Vset *thee) │ │ │ │ │ +Return the last object in the set. │ │ │ │ │ +Vset_last │ │ │ │ │ +char * Vset_last(Vset *thee) │ │ │ │ │ +Return the last object in the set. │ │ │ │ │ +Vset_destroy │ │ │ │ │ +void Vset_destroy(Vset *thee) │ │ │ │ │ +Delete an object from the end of the list. │ │ │ │ │ +Vset_createLast │ │ │ │ │ +char * Vset_createLast(Vset *thee) │ │ │ │ │ +Create an object on the end of the list. │ │ │ │ │ +Vset_access │ │ │ │ │ +char * Vset_access(Vset *thee, int i) │ │ │ │ │ +Access an object in an arbitrary place in the list. │ │ │ │ │ +sVmem │ │ │ │ │ +Contains public data members for Vmem class. │ │ │ │ │ +Definition: vmem.h:57 │ │ │ │ │ +sVset │ │ │ │ │ +Contains public data members for Vset class. │ │ │ │ │ +Definition: vset.h:57 │ │ │ │ │ +sVset::blockModulo │ │ │ │ │ +int blockModulo │ │ │ │ │ +=blockSize-1; for determining which block fast │ │ │ │ │ +Definition: vset.h:88 │ │ │ │ │ +sVset::nameT │ │ │ │ │ +char nameT[VMAX_ARGLEN] │ │ │ │ │ +name of object we are managing │ │ │ │ │ +Definition: vset.h:68 │ │ │ │ │ +sVset::iMadeVmem │ │ │ │ │ +int iMadeVmem │ │ │ │ │ +did i make vmem or was it inherited │ │ │ │ │ +Definition: vset.h:62 │ │ │ │ │ +sVset::blockSize │ │ │ │ │ +int blockSize │ │ │ │ │ +blocksize is 2^(blockPower) │ │ │ │ │ +Definition: vset.h:84 │ │ │ │ │ +sVset::table │ │ │ │ │ +char ** table │ │ │ │ │ +list of pointers to blocks of storage we manage │ │ │ │ │ +Definition: vset.h:91 │ │ │ │ │ +sVset::numBlocks │ │ │ │ │ +int numBlocks │ │ │ │ │ +total number of allocated blocks │ │ │ │ │ +Definition: vset.h:73 │ │ │ │ │ +sVset::prtT │ │ │ │ │ +int prtT │ │ │ │ │ +for i/o at appropriate block creation/deletion │ │ │ │ │ +Definition: vset.h:77 │ │ │ │ │ +sVset::vmem │ │ │ │ │ +Vmem * vmem │ │ │ │ │ +the memory manager │ │ │ │ │ +Definition: vset.h:60 │ │ │ │ │ +sVset::curT │ │ │ │ │ +int curT │ │ │ │ │ +the current "T" object in our collection │ │ │ │ │ +Definition: vset.h:65 │ │ │ │ │ +sVset::blockMax │ │ │ │ │ +int blockMax │ │ │ │ │ +num blocks = blockMax=(maxObjects/blockSize) │ │ │ │ │ +Definition: vset.h:86 │ │ │ │ │ +sVset::sizeT │ │ │ │ │ +int sizeT │ │ │ │ │ +size of the object in bytes │ │ │ │ │ +Definition: vset.h:70 │ │ │ │ │ +sVset::blockPower │ │ │ │ │ +int blockPower │ │ │ │ │ +power of 2 for blocksize (e.g., =10, or =16) │ │ │ │ │ +Definition: vset.h:82 │ │ │ │ │ +sVset::maxObjects │ │ │ │ │ +int maxObjects │ │ │ │ │ +number of objects to manage (user specified) │ │ │ │ │ +Definition: vset.h:80 │ │ │ │ │ +sVset::numT │ │ │ │ │ +int numT │ │ │ │ │ +the global "T" counter – how many "T"s in list │ │ │ │ │ +Definition: vset.h:75 │ │ │ │ │ │ │ │ │ │ =============================================================================== │ │ │ │ │ Generated by [doxygen] 1.9.4 │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00037.dot │ │ │ │ @@ -1,27 +1,27 @@ │ │ │ │ -digraph "vpred.h" │ │ │ │ +digraph "vset.h" │ │ │ │ { │ │ │ │ // LATEX_PDF_SIZE │ │ │ │ edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"]; │ │ │ │ node [fontname="FreeSans",fontsize="10",shape=record]; │ │ │ │ - Node1 [label="vpred.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ + Node1 [label="vset.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node2 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ + Node2 [label="vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node3 [label="maloc.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00038.html",tooltip="The foundation header for MALOC."]; │ │ │ │ Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node4 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ + Node4 [label="psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node5 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ + Node5 [label="vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node6 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ + Node6 [label="vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ Node6 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node2 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ - Node7 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ + Node7 [label="vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ Node7 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node8 [label="vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ Node8 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ Node8 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00038.html │ │ │ │ @@ -47,17 +47,17 @@ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

The foundation header for MALOC.
│ │ │ │ │ │ │ │ More...

│ │ │ │
#include <maloc/maloc_base.h>
│ │ │ │ -#include <maloc/vsys.h>
│ │ │ │ +#include <maloc/vsys.h>
│ │ │ │ #include <maloc/vsh.h>
│ │ │ │ -#include <maloc/psh.h>
│ │ │ │ +#include <maloc/psh.h>
│ │ │ │
│ │ │ │ Include dependency graph for maloc.h:
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00038_source.html │ │ │ │ @@ -48,24 +48,24 @@ │ │ │ │
│ │ │ │ Go to the documentation of this file.
1
│ │ │ │
35#ifndef _MALOC_H_
│ │ │ │
36#define _MALOC_H_
│ │ │ │
37
│ │ │ │
38#include <maloc/maloc_base.h>
│ │ │ │
39
│ │ │ │ -
40#include <maloc/vsys.h>
│ │ │ │ +
40#include <maloc/vsys.h>
│ │ │ │
41#include <maloc/vsh.h>
│ │ │ │ -
42#include <maloc/psh.h>
│ │ │ │ +
42#include <maloc/psh.h>
│ │ │ │
43
│ │ │ │
44#endif /* _MALOC_H_ */
│ │ │ │
45
│ │ │ │
The base (or foundation) header for MALOC.
│ │ │ │ -
Header file for a simple parallel extension of ALOC's VSH.
│ │ │ │ +
Header file for a simple parallel extension of ALOC's VSH.
│ │ │ │
Header file for vsh, a bourne-compatible shell.
│ │ │ │ -
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │ +
The primary header for VSYS. (Virtual SYStem utilities library.)
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00039.dot.gz │ │ │ │ ├── a00039.dot │ │ │ │ │ @@ -33,49 +33,49 @@ │ │ │ │ │ Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node15 [label="string.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node16 [label="time.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node2 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node17 [label="setjmp.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; │ │ │ │ │ Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ + Node18 [label="maloc/vsys.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="The primary header for VSYS. (Virtual SYStem utilities library.)"]; │ │ │ │ │ Node18 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ + Node19 [label="maloc/vnm.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Header file for an ISO C [V]irtual [N]umerical [M]achine."]; │ │ │ │ │ Node19 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ + Node20 [label="maloc/vmem.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00020.html",tooltip="Class Vmem: A safer, object-oriented, malloc/free object."]; │ │ │ │ │ Node20 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00029.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ + Node21 [label="maloc/vio.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00032.html",tooltip="Class Vio: virtual I/O layer."]; │ │ │ │ │ Node21 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node21 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00026.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ + Node22 [label="maloc/vset.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Class Vset: a dynamic set object."]; │ │ │ │ │ Node22 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node22 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node18 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00035.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ + Node23 [label="maloc/vpred.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00023.html",tooltip="Header file for the Geometric Predicates."]; │ │ │ │ │ Node23 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node24 [label="maloc/vsh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00017.html",tooltip="Header file for vsh, a bourne-compatible shell."]; │ │ │ │ │ Node24 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node24 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node25 [label="maloc/psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ │ + Node25 [label="maloc/psh.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Header file for a simple parallel extension of ALOC's VSH."]; │ │ │ │ │ Node25 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node25 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node25 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node26 [label="maloc/vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ │ + Node26 [label="maloc/vmp.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00008.html",tooltip="Class Vmp: a Virtual MPI communication layer object."]; │ │ │ │ │ Node26 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node26 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node27 [label="maloc/vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ │ + Node27 [label="maloc/vmpi.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00014.html",tooltip="Class Vmpi: a Virtual MPI communication layer object."]; │ │ │ │ │ Node27 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node27 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node26 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ - Node28 [label="maloc/vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00005.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ │ + Node28 [label="maloc/vcom.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$a00011.html",tooltip="Class Vcom: virtual (currently just MPI) communications layer."]; │ │ │ │ │ Node28 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ Node28 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"]; │ │ │ │ │ } │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00047.html │ │ │ │ @@ -49,16 +49,16 @@ │ │ │ │ More...

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Files

file  maloc_base.h
 The base (or foundation) header for MALOC.
 
file  vsys.h
 The primary header for VSYS. (Virtual SYStem utilities library.)
file  vsys.h
 The primary header for VSYS. (Virtual SYStem utilities library.)
 
file  maloc.h
 The foundation header for MALOC.
│ │ │ │
 
│ │ │ │

Detailed Description

│ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00048.html │ │ │ │ @@ -49,16 +49,16 @@ │ │ │ │
│ │ │ │ │ │ │ │

Virtual (currently just MPI) communications layer. │ │ │ │ More...

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Files

file  vcom.h
 Class Vcom: virtual (currently just MPI) communications layer.
file  vcom.h
 Class Vcom: virtual (currently just MPI) communications layer.
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00049.html │ │ │ │ @@ -49,16 +49,16 @@ │ │ │ │
│ │ │ │ │ │ │ │

A Virtual MPI communication layer object. │ │ │ │ More...

│ │ │ │

│ │ │ │ Classes

struct  sVcom
 Contains public data members for Vcom class. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Files

file  vmp.h
 Class Vmp: a Virtual MPI communication layer object.
file  vmp.h
 Class Vmp: a Virtual MPI communication layer object.
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00050.html │ │ │ │ @@ -49,16 +49,16 @@ │ │ │ │
│ │ │ │ │ │ │ │

A Virtual MPI communication lawyer object. │ │ │ │ More...

│ │ │ │

│ │ │ │ Classes

struct  sVmp
 Contains public data members for Vmp class. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Files

file  vmpi.h
 Class Vmpi: a Virtual MPI communication layer object.
file  vmpi.h
 Class Vmpi: a Virtual MPI communication layer object.
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00051.html │ │ │ │ @@ -49,16 +49,16 @@ │ │ │ │
│ │ │ │ │ │ │ │

A bourne-compatible shell. │ │ │ │ More...

│ │ │ │

│ │ │ │ Classes

struct  sVmpi
 Class Vmpi: Definition. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Files

file  psh.h
 Header file for a simple parallel extension of ALOC's VSH.
file  psh.h
 Header file for a simple parallel extension of ALOC's VSH.
 
file  vsh.h
 Header file for vsh, a bourne-compatible shell.
 
│ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00052.html │ │ │ │ @@ -50,16 +50,16 @@ │ │ │ │
│ │ │ │ │ │ │ │

This class provides an I/O layer for files/bufferes/pipes/sockets. │ │ │ │ More...

│ │ │ │

│ │ │ │ Classes

│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Files

file  vio.h
 Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer.
file  vio.h
 Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer.
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00053.html │ │ │ │ @@ -49,16 +49,16 @@ │ │ │ │
│ │ │ │ │ │ │ │

This class provides a safe logged version of malloc and free. │ │ │ │ More...

│ │ │ │

│ │ │ │ Classes

struct  sVio
 Contains public data members for Vio class. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Files

file  vmem.h
 Class Vmem: A safer, object-oriented, malloc/free object.
file  vmem.h
 Class Vmem: A safer, object-oriented, malloc/free object.
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00054.html │ │ │ │ @@ -49,16 +49,16 @@ │ │ │ │
│ │ │ │ │ │ │ │

A dynamic set object. │ │ │ │ More...

│ │ │ │

│ │ │ │ Classes

struct  sVmem
 Contains public data members for Vmem class. More...
 
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Files

file  vset.h
 Class Vset: a dynamic set object.
file  vset.h
 Class Vset: a dynamic set object.
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00058.html │ │ │ │ @@ -45,15 +45,15 @@ │ │ │ │
sVcom Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Contains public data members for Vcom class. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <vcom.h>

│ │ │ │ +

#include <vcom.h>

│ │ │ │

│ │ │ │ Classes

struct  sVset
 Contains public data members for Vset class. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -155,15 +155,15 @@ │ │ │ │

Communication type.
│ │ │ │ 0 = not initialized
│ │ │ │ 1 = Message Passing Interface 1.1.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • vcom.h
  • │ │ │ │ +
  • vcom.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00062.html │ │ │ │ @@ -45,15 +45,15 @@ │ │ │ │
sVmp Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Contains public data members for Vmp class. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <vmp.h>

│ │ │ │ +

#include <vmp.h>

│ │ │ │

│ │ │ │ Public Attributes

int mpi_rank
 Local PE rank from MPI. More...
 
int mpi_size
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
│ │ │ │

number of processess in this execution
│ │ │ │

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • vmp.h
  • │ │ │ │ +
  • vmp.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00066.html │ │ │ │ @@ -45,15 +45,15 @@ │ │ │ │
sVmpi Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Class Vmpi: Definition. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <vmpi.h>

│ │ │ │ +

#include <vmpi.h>

│ │ │ │

│ │ │ │ Public Attributes

int mpi_rank
 
int mpi_size
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │
│ │ │ │

number of processess in this execution
│ │ │ │

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • vmpi.h
  • │ │ │ │ +
  • vmpi.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00074.html │ │ │ │ @@ -45,15 +45,15 @@ │ │ │ │
sVio Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Contains public data members for Vio class. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <vio.h>

│ │ │ │ +

#include <vio.h>

│ │ │ │

│ │ │ │ Public Attributes

int mpi_rank
 
int mpi_size
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -450,15 +450,15 @@ │ │ │ │
│ │ │ │

white space character set (ASC)
│ │ │ │

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • vio.h
  • │ │ │ │ +
  • vio.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00078.html │ │ │ │ @@ -45,15 +45,15 @@ │ │ │ │
sVmem Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Contains public data members for Vmem class. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <vmem.h>

│ │ │ │ +

#include <vmem.h>

│ │ │ │

│ │ │ │ Public Attributes

VIOtype type
 
VIOfrmt frmt
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -144,15 +144,15 @@ │ │ │ │
│ │ │ │

name of class we manage malloc areas for
│ │ │ │

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • vmem.h
  • │ │ │ │ +
  • vmem.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/a00082.html │ │ │ │ @@ -45,15 +45,15 @@ │ │ │ │
sVset Struct Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Contains public data members for Vset class. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <vset.h>

│ │ │ │ +

#include <vset.h>

│ │ │ │
│ │ │ │ Collaboration diagram for sVset:
│ │ │ │
│ │ │ │
Collaboration graph
│ │ │ │
[legend]
│ │ │ │

│ │ │ │ Public Attributes

char name [VMAX_ARGLEN]
 
size_t mallocBytes
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -354,15 +354,15 @@ │ │ │ │ │ │ │ │

the memory manager
│ │ │ │

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file:
    │ │ │ │ -
  • vset.h
  • │ │ │ │ +
  • vset.h
  • │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000000_000007.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

aaa_inc → psh Relation

File in src/aaa_incIncludes file in src/psh
maloc / maloc.hmaloc / psh.h
│ │ │ │ +

aaa_inc → psh Relation

File in src/aaa_incIncludes file in src/psh
maloc / maloc.hmaloc / psh.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000000_000010.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

aaa_inc → vsys Relation

File in src/aaa_incIncludes file in src/vsys
maloc / maloc.hmaloc / vsys.h
│ │ │ │ +

aaa_inc → vsys Relation

File in src/aaa_incIncludes file in src/vsys
maloc / maloc.hmaloc / vsys.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000002_000007.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

maloc → psh Relation

File in src/aaa_inc/malocIncludes file in src/psh
maloc.hmaloc / psh.h
│ │ │ │ +

maloc → psh Relation

File in src/aaa_inc/malocIncludes file in src/psh
maloc.hmaloc / psh.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000002_000010.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

maloc → vsys Relation

File in src/aaa_inc/malocIncludes file in src/vsys
maloc.hmaloc / vsys.h
│ │ │ │ +

maloc → vsys Relation

File in src/aaa_inc/malocIncludes file in src/vsys
maloc.hmaloc / vsys.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000004_000001.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

maloc → base Relation

File in src/psh/malocIncludes file in src/base
psh.hmaloc / maloc_base.h
vcom.hmaloc / maloc_base.h
vmp.hmaloc / maloc_base.h
vmpi.hmaloc / maloc_base.h
│ │ │ │ +

maloc → base Relation

File in src/psh/malocIncludes file in src/base
psh.hmaloc / maloc_base.h
vcom.hmaloc / maloc_base.h
vmp.hmaloc / maloc_base.h
vmpi.hmaloc / maloc_base.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000004_000009.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

maloc → vsh Relation

File in src/psh/malocIncludes file in src/vsh
psh.hmaloc / vsh.h
│ │ │ │ +

maloc → vsh Relation

File in src/psh/malocIncludes file in src/vsh
psh.hmaloc / vsh.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000004_000010.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

maloc → vsys Relation

File in src/psh/malocIncludes file in src/vsys
psh.hmaloc / vsys.h
vcom.hmaloc / vsys.h
vmp.hmaloc / vsys.h
vmpi.hmaloc / vsys.h
│ │ │ │ +

maloc → vsys Relation

File in src/psh/malocIncludes file in src/vsys
psh.hmaloc / vsys.h
vcom.hmaloc / vsys.h
vmp.hmaloc / vsys.h
vmpi.hmaloc / vsys.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000005_000010.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

maloc → vsys Relation

File in src/vsh/malocIncludes file in src/vsys
vsh.hmaloc / vsys.h
│ │ │ │ +

maloc → vsys Relation

File in src/vsh/malocIncludes file in src/vsys
vsh.hmaloc / vsys.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000006_000001.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

maloc → base Relation

File in src/vsys/malocIncludes file in src/base
vio.hmaloc / maloc_base.h
vmem.hmaloc / maloc_base.h
vnm.hmaloc / maloc_base.h
vpred.hmaloc / maloc_base.h
vset.hmaloc / maloc_base.h
vsys.hmaloc / maloc_base.h
│ │ │ │ +

maloc → base Relation

File in src/vsys/malocIncludes file in src/base
vio.hmaloc / maloc_base.h
vmem.hmaloc / maloc_base.h
vnm.hmaloc / maloc_base.h
vpred.hmaloc / maloc_base.h
vset.hmaloc / maloc_base.h
vsys.hmaloc / maloc_base.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000007_000001.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

psh → base Relation

File in src/pshIncludes file in src/base
maloc / psh.hmaloc / maloc_base.h
maloc / vcom.hmaloc / maloc_base.h
maloc / vmp.hmaloc / maloc_base.h
maloc / vmpi.hmaloc / maloc_base.h
│ │ │ │ +

psh → base Relation

File in src/pshIncludes file in src/base
maloc / psh.hmaloc / maloc_base.h
maloc / vcom.hmaloc / maloc_base.h
maloc / vmp.hmaloc / maloc_base.h
maloc / vmpi.hmaloc / maloc_base.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000007_000009.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

psh → vsh Relation

File in src/pshIncludes file in src/vsh
maloc / psh.hmaloc / vsh.h
│ │ │ │ +

psh → vsh Relation

File in src/pshIncludes file in src/vsh
maloc / psh.hmaloc / vsh.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000007_000010.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

psh → vsys Relation

File in src/pshIncludes file in src/vsys
maloc / psh.hmaloc / vsys.h
maloc / vcom.hmaloc / vsys.h
maloc / vmp.hmaloc / vsys.h
maloc / vmpi.hmaloc / vsys.h
│ │ │ │ +

psh → vsys Relation

File in src/pshIncludes file in src/vsys
maloc / psh.hmaloc / vsys.h
maloc / vcom.hmaloc / vsys.h
maloc / vmp.hmaloc / vsys.h
maloc / vmpi.hmaloc / vsys.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000009_000010.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

vsh → vsys Relation

File in src/vshIncludes file in src/vsys
maloc / vsh.hmaloc / vsys.h
│ │ │ │ +

vsh → vsys Relation

File in src/vshIncludes file in src/vsys
maloc / vsh.hmaloc / vsys.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_000010_000001.html │ │ │ │ @@ -39,14 +39,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -

vsys → base Relation

File in src/vsysIncludes file in src/base
maloc / vio.hmaloc / maloc_base.h
maloc / vmem.hmaloc / maloc_base.h
maloc / vnm.hmaloc / maloc_base.h
maloc / vpred.hmaloc / maloc_base.h
maloc / vset.hmaloc / maloc_base.h
maloc / vsys.hmaloc / maloc_base.h
│ │ │ │ +

vsys → base Relation

File in src/vsysIncludes file in src/base
maloc / vio.hmaloc / maloc_base.h
maloc / vmem.hmaloc / maloc_base.h
maloc / vnm.hmaloc / maloc_base.h
maloc / vpred.hmaloc / maloc_base.h
maloc / vset.hmaloc / maloc_base.h
maloc / vsys.hmaloc / maloc_base.h
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_4487082feb20b0a33d872f1cd04ae7e1.html │ │ │ │ @@ -50,25 +50,25 @@ │ │ │ │ Directory dependency graph for maloc: │ │ │ │
│ │ │ │
maloc
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Files

file  psh.h [code]
 Header file for a simple parallel extension of ALOC's VSH.
file  psh.h [code]
 Header file for a simple parallel extension of ALOC's VSH.
 
file  vcom.h [code]
 Class Vcom: virtual (currently just MPI) communications layer.
file  vcom.h [code]
 Class Vcom: virtual (currently just MPI) communications layer.
 
file  vmp.h [code]
 Class Vmp: a Virtual MPI communication layer object.
file  vmp.h [code]
 Class Vmp: a Virtual MPI communication layer object.
 
file  vmpi.h [code]
 Class Vmpi: a Virtual MPI communication layer object.
file  vmpi.h [code]
 Class Vmpi: a Virtual MPI communication layer object.
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/dir_dd09f1089953cfb53b7653deda4818f6.html │ │ │ │ @@ -50,31 +50,31 @@ │ │ │ │ Directory dependency graph for maloc: │ │ │ │
│ │ │ │
maloc
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Files

file  vio.h [code]
 Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer.
file  vio.h [code]
 Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer.
 
file  vmem.h [code]
 Class Vmem: A safer, object-oriented, malloc/free object.
file  vmem.h [code]
 Class Vmem: A safer, object-oriented, malloc/free object.
 
file  vnm.h [code]
 Header file for an ISO C [V]irtual [N]umerical [M]achine.
file  vnm.h [code]
 Header file for an ISO C [V]irtual [N]umerical [M]achine.
 
file  vpred.h [code]
 Header file for the Geometric Predicates.
file  vpred.h [code]
 Header file for the Geometric Predicates.
 
file  vset.h [code]
 Class Vset: a dynamic set object.
file  vset.h [code]
 Class Vset: a dynamic set object.
 
file  vsys.h [code]
 The primary header for VSYS. (Virtual SYStem utilities library.)
file  vsys.h [code]
 The primary header for VSYS. (Virtual SYStem utilities library.)
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/libmaloc-dev/html/files.html │ │ │ │ @@ -50,29 +50,29 @@ │ │ │ │
 maloc.hThe foundation header for MALOC.
│ │ │ │
  base
  maloc
 maloc_base.hThe base (or foundation) header for MALOC
  psh
  maloc
 psh.hHeader file for a simple parallel extension of ALOC's VSH
 vcom.hClass Vcom: virtual (currently just MPI) communications layer
 vmp.hClass Vmp: a Virtual MPI communication layer object
 vmpi.hClass Vmpi: a Virtual MPI communication layer object
 psh.hHeader file for a simple parallel extension of ALOC's VSH
 vcom.hClass Vcom: virtual (currently just MPI) communications layer
 vmp.hClass Vmp: a Virtual MPI communication layer object
 vmpi.hClass Vmpi: a Virtual MPI communication layer object
  vsh
  maloc
 vsh.hHeader file for vsh, a bourne-compatible shell
  vsys
  maloc
 vio.hClass Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer
 vmem.hClass Vmem: A safer, object-oriented, malloc/free object
 vnm.hHeader file for an ISO C [V]irtual [N]umerical [M]achine
 vpred.hHeader file for the Geometric Predicates
 vset.hClass Vset: a dynamic set object
 vsys.hThe primary header for VSYS. (Virtual SYStem utilities library.)
 vio.hClass Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer
 vmem.hClass Vmem: A safer, object-oriented, malloc/free object
 vnm.hHeader file for an ISO C [V]irtual [N]umerical [M]achine
 vpred.hHeader file for the Geometric Predicates
 vset.hClass Vset: a dynamic set object
 vsys.hThe primary header for VSYS. (Virtual SYStem utilities library.)
 prog.h
 license.h
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │