From 7198a876b9ea2f65a29dec6caa9be67ee3b7d5e0 Mon Sep 17 00:00:00 2001 From: Sylvain Pion Date: Fri, 5 Jan 2001 14:12:06 +0000 Subject: [PATCH] Initial revision --- .gitattributes | 3 + Extension_Packages/Vanilla/INSTALLATION | 33 + Extension_Packages/Vanilla/README | 79 ++ Extension_Packages/Vanilla/cep_test | 75 ++ .../Vanilla/doc/Class_Flavored_object.html | 176 ++++ Extension_Packages/Vanilla/doc/biblio.html | 66 ++ Extension_Packages/Vanilla/doc/cgal-bg2.gif | Bin 0 -> 11841 bytes Extension_Packages/Vanilla/doc/cgal_small.gif | Bin 0 -> 1546 bytes Extension_Packages/Vanilla/doc/contents.html | 63 ++ Extension_Packages/Vanilla/doc/main.html | 175 ++++ .../Vanilla/doc/manual_index.html | 106 +++ Extension_Packages/Vanilla/doc/title.html | 20 + Extension_Packages/Vanilla/doc/vanilla.ps | 864 ++++++++++++++++++ .../include/CEP/Vanilla/Flavored_object.h | 46 + .../Vanilla/include/CEP/Vanilla/flavor.h | 19 + Extension_Packages/Vanilla/makefile | 49 + Extension_Packages/Vanilla/src/flavor.C | 64 ++ Extension_Packages/Vanilla/src/makefile | 54 ++ .../Vanilla/test_suite/makefile | 80 ++ .../Vanilla/test_suite/vanilla_test1.C | 39 + .../Vanilla/test_suite/vanilla_test2.C | 52 ++ .../Vanilla/test_suite/vanilla_test3.C | 40 + .../Vanilla/test_suite/vanilla_test3.cin | 1 + .../Vanilla/test_suite/vanilla_test3.cmd | 1 + .../Vanilla/test_suite/vanilla_test3.cout | 9 + 25 files changed, 2114 insertions(+) create mode 100644 Extension_Packages/Vanilla/INSTALLATION create mode 100644 Extension_Packages/Vanilla/README create mode 100755 Extension_Packages/Vanilla/cep_test create mode 100644 Extension_Packages/Vanilla/doc/Class_Flavored_object.html create mode 100644 Extension_Packages/Vanilla/doc/biblio.html create mode 100644 Extension_Packages/Vanilla/doc/cgal-bg2.gif create mode 100644 Extension_Packages/Vanilla/doc/cgal_small.gif create mode 100644 Extension_Packages/Vanilla/doc/contents.html create mode 100644 Extension_Packages/Vanilla/doc/main.html create mode 100644 Extension_Packages/Vanilla/doc/manual_index.html create mode 100644 Extension_Packages/Vanilla/doc/title.html create mode 100644 Extension_Packages/Vanilla/doc/vanilla.ps create mode 100644 Extension_Packages/Vanilla/include/CEP/Vanilla/Flavored_object.h create mode 100644 Extension_Packages/Vanilla/include/CEP/Vanilla/flavor.h create mode 100644 Extension_Packages/Vanilla/makefile create mode 100644 Extension_Packages/Vanilla/src/flavor.C create mode 100644 Extension_Packages/Vanilla/src/makefile create mode 100644 Extension_Packages/Vanilla/test_suite/makefile create mode 100644 Extension_Packages/Vanilla/test_suite/vanilla_test1.C create mode 100644 Extension_Packages/Vanilla/test_suite/vanilla_test2.C create mode 100644 Extension_Packages/Vanilla/test_suite/vanilla_test3.C create mode 100644 Extension_Packages/Vanilla/test_suite/vanilla_test3.cin create mode 100644 Extension_Packages/Vanilla/test_suite/vanilla_test3.cmd create mode 100644 Extension_Packages/Vanilla/test_suite/vanilla_test3.cout diff --git a/.gitattributes b/.gitattributes index cdb961b82aa..8cc94931bd1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,7 @@ * text=auto !eol +Extension_Packages/Vanilla/doc/cgal-bg2.gif -text svneol=unset#unset +Extension_Packages/Vanilla/doc/cgal_small.gif -text svneol=unset#unset +Extension_Packages/Vanilla/doc/vanilla.ps -text Old_Packages/Doc23/doc_tex/kernel/IsoCuboid.gif svneol=native#unset Old_Packages/Doc23/doc_tex/kernel/arrlinthree.gif svneol=native#unset Old_Packages/Doc23/doc_tex/kernel/arrlintwo.gif svneol=native#unset diff --git a/Extension_Packages/Vanilla/INSTALLATION b/Extension_Packages/Vanilla/INSTALLATION new file mode 100644 index 00000000000..2ff1e92206f --- /dev/null +++ b/Extension_Packages/Vanilla/INSTALLATION @@ -0,0 +1,33 @@ +#---------------------------------------------------------- +# INSTALLATION for Vanilla CGAL Extension Package +#---------------------------------------------------------- + +Edit the makefile in this directory as follows: + + (1) Set the value of CGAL_MAKEFILE to the location of the + proper makefile for the desired platform and compiler + if this environment variable is not set. (NOTE: It is + better to set this as an environment variable since the + cep_test script requires this.) + + (2) Set the value of CGAL_HOME to the root directory for the + local CGAL installation or establish an environment variable + with the appropriate value. + + (3) If you would like to use a program other than 'cp' to install + the extension package (e.g., the 'install') program, change + the values of INSTALL and INSTALL_FLAGS + +Compile the library type + % make + +Install the library with + % make install + +This will install the header files for the package in the directory +$(CGAL_HOME)/include/CEP/Vanilla, creating directories that don't +exist. The libVanill.a library will be installed in +$(CGAL_HOME)/lib/$(CGAL_OS_COMPILER), where $(CGAL_OS_COMPILER) is +the variable set in the CGAL_MAKEFILE indicating the desired platform- +compiler combination. + diff --git a/Extension_Packages/Vanilla/README b/Extension_Packages/Vanilla/README new file mode 100644 index 00000000000..be9942bf93b --- /dev/null +++ b/Extension_Packages/Vanilla/README @@ -0,0 +1,79 @@ + +Package Name: Vanilla + +Authors: Irene + +Address: Curvy Street + 10110 Flatland, Mars + +URL: http://www.cgal.org/CEP/packages/Vanilla/ + +Version: 1.1 (9 Sept 1999) + +CGAL Versions: 2.0 and greater + +Supported Compilers & Platforms: + SunOS-5.7_eg++-egcs-2.91.66_LEDA + SunOS-5.7_g++-2.95.2_LEDA + IRIX64-6.5_CC-n32-7.3.1.1m_LEDA + IRIX64-6.5_CC-64-7.3.1.1m_LEDA + +Purpose: + This package is an example of a CEP. + +Description: + + Distributed with this package are the following things: + README -- this file + INSTALLATION -- file describing more details about package installation + doc/ -- directory containing the package documentation in + postscript and HTML format + cep_test -- shell script for running the test suite + include/ -- directory containing the Vanilla header files + lib/ -- directory that will contain libVanill.a + makefile -- used to compile the libVanill.a and install the library + and header files + src/ -- directory containing source code for the Vanilla + library + test_suite/ -- directory containing the test suite source code, + input and output files + + This package provides a templated class that allows one to create + different flavors (e.g. vanilla, chocolate, ...) of geometric objects. + This is useful, for example, when ... + +Changes: + 1.1 fixed bugs that didn't allow fruity flavors + 1.0 initial release + +Installation: + The command 'make install' may be used to install the Vanilla header + files and the library libVanill.a. + + For further information on the installation process, see the + INSTALLATION file in this directory. + +Documentation: + Package documentation is provided in postscript and HTML format in + the subdirectory doc. + +Tested items: + The package provides the following functions and algorithms: + ... + + All functions and constructors have been tested. + +Testing process: + First, every function and constructor is called in isolation. Then, the + "flavor enhancement" algorithm is tested first with a random set of input + points that contains degeneracies, and then with a input provided in + an input file, for which the output is known. The output of the algorithm + with the data provided in the input file is compared with the correct + output provided in an output file. + +Hardware & Software requirements: + The software requires at least 16 Mbytes of memory. + +Constraints: + The package works with the configuration SunOS-5.6_g++-2.95.1_LEDA + only after some patches for the library have been installed. diff --git a/Extension_Packages/Vanilla/cep_test b/Extension_Packages/Vanilla/cep_test new file mode 100755 index 00000000000..aa11150bdc5 --- /dev/null +++ b/Extension_Packages/Vanilla/cep_test @@ -0,0 +1,75 @@ +#! /bin/sh + +# This is a script for running the Vanilla test suite. +# +# This script assumes that the CGAL_MAKEFILE environment variable is set + +#---------------------------------------------------------------------# +# compile_and_run +#---------------------------------------------------------------------# + +compile_and_run() +{ + echo "Compiling $1 ... " + if eval 'make CGAL_MAKEFILE=$CGAL_MAKEFILE $1'; then + echo " compilation of $1 succeeded" + else + echo " ERROR: compilation of $1 failed" + exit 1 + fi + + if [ -f $1 ] ; then + OUTPUTFILE=$1.out + rm -f $OUTPUTFILE + COMMAND="./$1" +# +# check for a .cmd file that contains command-line arguments for the program +# + if [ -f $1.cmd ] ; then + COMMAND="$COMMAND `cat $1.cmd`" + fi +# +# check for a .cin file that contains input to be provided to the program +# + if [ -f $1.cin ] ; then + COMMAND="cat $1.cin | $COMMAND" + fi + echo "Executing $1 ... " + echo + if eval 2>&1 $COMMAND > $OUTPUTFILE ; then + echo " execution of $1 succeeded" + else + echo " ERROR: execution of $1 failed" + exit 1 + fi + else + echo " ERROR: could not execute $1" + exit 1 + fi + + eval "2>&1 make CGAL_MAKEFILE=$CGAL_MAKEFILE clean > /dev/null " +} + +#---------------------------------------------------------------------# +# compile libVanill.a if it doesn't exist +#---------------------------------------------------------------------# +if [ ! -f lib/libVanill.a ]; then + make CGAL_MAKEFILE=$CGAL_MAKEFILE +fi + +#---------------------------------------------------------------------# +# compile and run the tests +#---------------------------------------------------------------------# + +cd test_suite + +if [ $# -ne 0 ] ; then + for file in $* ; do + compile_and_run $file + done +else + compile_and_run vanilla_test1 + compile_and_run vanilla_test2 + compile_and_run vanilla_test3 +fi + diff --git a/Extension_Packages/Vanilla/doc/Class_Flavored_object.html b/Extension_Packages/Vanilla/doc/Class_Flavored_object.html new file mode 100644 index 00000000000..e03da7b0dac --- /dev/null +++ b/Extension_Packages/Vanilla/doc/Class_Flavored_object.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + Vanilla: A CEP Example: + + + + + + + Navigation: + Up, + Table of Contents, + Bibliography, + Index, + Title Page +
+ + + + + + + +

Class Flavored_object<O>

+ + + +

+ +

Definition

+

+ +The class Flavored_object<O> is a templated class that is +derived from the class of its template argument. It adds a +flavor to the object and provides member functions for flavor +enhancement and for checking the validity of the flavor, as +well as functions for setting and retrieving the flavor of +the object. +

+ +#include <CEP/Vanilla/Flavored_object.h> +

+ +

Creation

+

+ + + + + + + + + +
+ + Flavored_object<O> fo; + +
+ an unflavored empty object fo +

+ +


+ + Flavored_object<O> fo ( Flavor f); + +
+ fo is an empty object with flavor f +

+ +


+ + Flavored_object<O> fo ( Object o); + +
+ fo is a VANILLA object with value o +

+ +


+ + Flavored_object<O> fo ( Object o, Flavor f); + +
+ fo is an object with value o and flavor f +

+ +

+

+ +

Operations

+

+ + + + + + + + + +
+ + void + + + + fo.set_flavor ( Flavor f) + +
+ makes fo an object with flavor f
+ +Precondition: f must be a valid flavor +

+ + void + + + + fo.enhance_flavor () + +
+ enhances fo's flavor +

+ + bool + + + + fo.is_valid () + + + determines if fo's flavor is valid +

+ + Flavor + + + + fo.flavor () + + + retrieves fo's flavor +
+

+ + + + + + + +


+ Navigation: + Up, + Table of Contents, + Bibliography, + Index, + Title Page +
+ +
+ Irene. Tue, September 14, 1999. +
+ + + + diff --git a/Extension_Packages/Vanilla/doc/biblio.html b/Extension_Packages/Vanilla/doc/biblio.html new file mode 100644 index 00000000000..1ed11a549e1 --- /dev/null +++ b/Extension_Packages/Vanilla/doc/biblio.html @@ -0,0 +1,66 @@ + + + + + + + + + + + Vanilla: A CEP Example: Bibliography + + + + + + + Navigation: + Up, + Table of Contents, + Bibliography, + Index, + Title Page +
+ + +

Vanilla: A CEP Example
Bibliography

+
+ + + + + +

+ +

+ + + + + + + +
+ [Ire99] +Irene. +Flavor Enhancement for Fun and Profit. +Morgan-Kaufmann, San Mateo, CA, 1999. +
+ + +
+ Navigation: + Table of Contents, + Bibliography, + Index, + Title Page +
+ +
+ Irene. Tue, September 14, 1999. +
+ + + + diff --git a/Extension_Packages/Vanilla/doc/cgal-bg2.gif b/Extension_Packages/Vanilla/doc/cgal-bg2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4f13298207a9f8115290fb0f97e7dec1634dc74 GIT binary patch literal 11841 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 literal 0 HcmV?d00001 diff --git a/Extension_Packages/Vanilla/doc/cgal_small.gif b/Extension_Packages/Vanilla/doc/cgal_small.gif new file mode 100644 index 0000000000000000000000000000000000000000..359be6f16a48acc17b9cac836157b245f935410f GIT binary patch literal 1546 zcmV+l2KD(zNk%w1Vc!5c0P+9;00030{{a90|D~UR+SkfkS4IE;00000A^8LW00062 zEC2ui0N(&Q000C2D7xJKFv>}*y_kW_yZ>M)j-&%@WvZ@h>rUt^&vb2{^oh@UrvJcT zOfXytk3Wq~0SFXXv8O7!Kpq3wtafWnO1i?WSPPb#%0Vm|`CYr$#A;-78r#RchFK1w z*YS5`JA5z}Kx!yn6nk_;T!~*DjZ}S2S#E+vLwihLk7#5}l!a}OmQH7!aebP9h;Oii zt0sc7MQn+Xkq@qlomF9ZII6$APp7DrbIX3A#k?Q4XP0Kxe!8usdeqgd*|W0CXMJ34 z(3Q>9&nD4&+pps6xqgJ+8r<=E!#z>N$DYo1DKUqPoOOB`H`r4po^mYtT83TtaJlsU|6|Q?*KRceNW*n={!y zwO5kWrnqc(QVYltEnkcnZW-;#)2czcB#0D=rMIGg!-; zsTK>{bI#nfqEr3&Tl#`TC;r4Lqrxb%&6{H(;+9P_5o^E=Q3HpnFd1Cpv`xcKz5C>^ zi_RBKcFGy=^IDgEtTZljQ9|g&A@dfs>A79K(}kP!n8|wc%eGTM}gp>RMBFCL1j%zq-E7#dFq{4Q7CtPr5zLZ^>t2uQ8g&qF$u}B zpLsBVM#pcAIpj=vZ@E?+cT@?c)rkid7)OaMMfja`nytuUa2KA2l#U{aXvhxk<+YBI zl=YL6lTR+T-FHLkXN-{39fc%$9BLM&V>05{p?69#DGiLHr6{IvS)$0FCIJEU9y4^F z31E|BL8vD)L_I^INhfM#XN4WDsY5NXxRK{8jYjGxq>;u#Xe(WCg9M{s47H)#6D53Lg{t6oy zoF1WIN~{ekNiM#6)(L{xyhdzv*FIN}DX(e(Zf}98@t=u1y4aytfkn7bv0B#H=61El zIO~ku4RfhdGdg7lsY!TMp`Dby#3F%K5-BXbwNMVm{5=-!U2A?@! zU5U;MOtc@T`{;6xvAJ+>r$%w^OX_ZGBgaW*Vr@}i#k&>6v0ck0DiNz(XvVv0Td&Ca z9n9_0NlsUP+%zTGW}uP?ajW5U=o)yOttGQ)|BqOo^`cavQ^9!wh!4QXa-TdE4K} zcZj9?-2V6(>k4d!y>rFOBjP6c>2LHH6=wM3FSN9YD6+#-0qHk51S9H*3@&X+pM6EsU z(Q$P&h2^Y75$Xg@Fm^Pg^)LboNuE&%k12yCFBvtkWbl*d_#`X}cEd6lh6Io#W4Az% zzz`tvauYn|3%*3aDbNyv(co7uO{JQq#4iQBR17d>2&NJQGgwQYr3ZeQ3LXTLnXFXi wvu?12&Ef8ts5F}{p}?zZg3Oyi@TMoX=}ccr)0N^(r#fxfg>}aA0to;BJ4 + + + + + + + + + + Vanilla: A CEP Example: Table of Contents + + + + + + + Navigation: + Table of Contents, + Bibliography, + Index, + Title Page +
+ + +

Vanilla: A CEP Example
Table of Contents

+
+ + +
    +
  1. Title Page +
  2. Table of Contents + + + + + + + + + + + +
  3. Bibliography +
  4. Index +
+ + +
+ Navigation: + Table of Contents, + Bibliography, + Index, + Title Page +
+ +
+ Irene. Tue, September 14, 1999. +
+ + + + diff --git a/Extension_Packages/Vanilla/doc/main.html b/Extension_Packages/Vanilla/doc/main.html new file mode 100644 index 00000000000..0aaf52ece6d --- /dev/null +++ b/Extension_Packages/Vanilla/doc/main.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + Vanilla: A CEP Example: + + + + + + + Navigation: + Table of Contents, + Bibliography, + Index, + Title Page +
+ + +

+ + +

Introduction

+ + +

+ +Flavored objects are known to be very useful in computational geometry, +especially in industrial applications. +This extension package allows one to create flavored objects and provides +an implementation of Irene's Flavor Enhancement algorithm +[Ire99] on these objects. +

+ + +

Flavors and flavor enhancement

+

+ +#include <CEP/Vanilla/flavor.h> +

+ +The following enumerated type is provided in the header file flavor.h +of the Vanilla package. The functions listed here are precompiled into +the library libVanill.a provided with the package. +

+ + + +

+ +

+ + +
+ enum Flavor { + VANILLA,
+ +CHOCOLATE_CHIP,
+ +MINT_CHOCOLATE_CHIP,
+ +CHOCOLATE,
+ +STRAWBERRY,
+ +NEAPOLITAN,
+ +PEACH,
+ +ROCKY_ROAD,
+ +PISTACHIO};
+ +
+
+

+ + + + + + + + + +
+ + +bool + + + + valid_flavor ( Flavor f) + +
+ is true if f is a valid flavor and false otherwise. +

+ + +Flavor + + + + flavor_enhance ( Flavor f) + +
+ implements the Flavor Enhancement algorithm. The return value of +the function is the enhancement of flavor f. +

+ + +ostream& + + + + ostream& os << Flavor f + +
+ output insertion operator for flavors. Inserts the string associated +with the enumeration f into os and returns the modified +stream. +

+ + +istream& + + + + istream& is >> Flavor& f + +
+ input extraction operator for flavors. Extracts the next string from +is and converts it to the corresponding Flavor value. If the +string does not match any of the valid flavor names, the value of f +does not change and the stream is goes into failure state. +
+

+ + +

Reference Pages for Vanilla CEP

+

+ +

+

+ + + + + + + +


+ Navigation: + Up, + Table of Contents, + Bibliography, + Index, + Title Page +
+ +
+ Irene. Tue, September 14, 1999. +
+ + + + diff --git a/Extension_Packages/Vanilla/doc/manual_index.html b/Extension_Packages/Vanilla/doc/manual_index.html new file mode 100644 index 00000000000..e5b01443cc4 --- /dev/null +++ b/Extension_Packages/Vanilla/doc/manual_index.html @@ -0,0 +1,106 @@ + + + + + + + + + + + Vanilla: A CEP Example: Index + + + + + + + Navigation: + Table of Contents, + Bibliography, + Index, + Title Page +
+ + +

Vanilla: A CEP Example
Index

+
+ + + + + +
+ Navigation: + Table of Contents, + Bibliography, + Index, + Title Page +
+ +
+ Irene. Tue, September 14, 1999. +
+ + + + diff --git a/Extension_Packages/Vanilla/doc/title.html b/Extension_Packages/Vanilla/doc/title.html new file mode 100644 index 00000000000..20aa2900987 --- /dev/null +++ b/Extension_Packages/Vanilla/doc/title.html @@ -0,0 +1,20 @@ + +Vanilla: A CGAL Extension Package Example + + + + + + + + Navigation: + Table of Contents, + Bibliography, + Index, + Title Page +
+ + +
CGAL
+

Extension Packages:

+

The Vanilla Example

diff --git a/Extension_Packages/Vanilla/doc/vanilla.ps b/Extension_Packages/Vanilla/doc/vanilla.ps new file mode 100644 index 00000000000..f954a896df7 --- /dev/null +++ b/Extension_Packages/Vanilla/doc/vanilla.ps @@ -0,0 +1,864 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com) +%%Title: wrapper.dvi +%%Pages: 2 +%%PageOrder: Ascend +%%BoundingBox: 0 0 596 842 +%%EndComments +%DVIPSCommandLine: dvips -o vanilla.ps wrapper.dvi +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 1999.09.14:1809 +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N +/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 +mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} +ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale +isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div +hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul +TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} +forall round exch round exch]setmatrix}N /@landscape{/isls true N}B +/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B +/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ +/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N +string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N +end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ +/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] +N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup +length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ +128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub +get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data +dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N +/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup +/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx +0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff +setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff +.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N +/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id +gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp +add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add +/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ +dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 +adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 +idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string +putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval +adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} +{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ +adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 +chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] +}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup +length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ +cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin +0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul +add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict +/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook +known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X +/IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn +put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N +/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley +X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[ +(Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup +length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} +forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false +RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 +false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform +round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg +rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail +{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} +B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ +4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ +p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p +a}B /bos{/SS save N}B /eos{SS restore}B end + +%%EndProcSet +TeXDict begin 39158280 55380996 1000 600 600 (wrapper.dvi) +@start +%DVIPSBitmapFont: Fa cmbx10 10 13 +/Fa 13 117 df<913803FFC0027F13F00103B512FC010FEB00FED93FF8133FD97FE0EBFF +8049485A5A1480484A13C04A6C1380A36F1300167E93C7FCA592383FFFC0B8FCA4000390 +C7FCB3ABB5D8FC3F13FFA4303A7EB935>12 D67 DI79 D97 D<903803FF80011F13F0017F13FC39 +01FF83FE3A03FE007F804848133F484814C0001FEC1FE05B003FEC0FF0A2485A16F81507 +12FFA290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F000071403D801FFEB +0FE06C9038C07FC06DB51200010F13FC010113E025257DA42C>101 +D105 D<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C0113 +80000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435> +110 D<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E4848 +6D7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C49 +5A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9039 +FF01FF80B5000F13F0023F13FC9138FE07FFDAF00113800007496C13C06C0180EB7FE091 +C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E06EEBFFC0 +DAF00313809139FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FCA42F357E +A435>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA291 +38807F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427>114 +D<90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC15787E +7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE +140700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000F81400 +38E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7 +FCB21578A815F86CEB80F014816CEBC3E090383FFFC06D1380903803FE001D357EB425> +I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fb cmtt12 14.4 2 +/Fb 2 63 df<177817FCEE03FE1607161F163FEEFFFC030313F84B13F0031F13C04B1380 +9238FFFE004A13F802075B4A13C0023F5B4A48C7FC49485A4913F0010F5B491380017F90 +C8FCEBFFFC00035B4813E0001F5B4890C9FC485AEAFFF85BA27FEA7FFE6C7E6C13C00007 +7F6C13F8C67F6DB4FC011F7F6D13E001037F6D13FC6D6C7E6E6C7E020F7F6E13F0020113 +FC6E7F92383FFF806F13C0030713F06F13F8030013FCEE7FFE161F16071603EE00FC1778 +2F3C79C23E>60 D<123C127EB47E7F13F07FEA7FFE6C6C7E6C7F000713F06C7FC613FE6D +7E011F13C001077F6D13F801007F6EB4FC021F7F6E13E002037F6E13FC6E6C7E92383FFF +80030F13C06F13F0030113F86F13FCEE3FFE161FA2163FEEFFFC4B13F8030713F04B13C0 +033F138092387FFE004A485A4A13F0020F5B4A1380027F90C7FCECFFFC01035B4913E001 +1F5B017F90C8FC495A000313F8485B001F13C0485B4848C9FCEAFFF85B13C05B007ECAFC +123C2F3C79C23E>62 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fc cmmi10 10 2 +/Fc 2 63 df60 +D<126012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007F +C0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE +01FF9338007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07FCED +1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA +07FCEA3FF0EA7FC048CBFC12FC1270323279AD41>62 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fd cmsy10 10 2 +/Fd 2 104 df102 D<12FCEAFFC0EA07F0EA01FCEA +007E7F80131F80130FB3A7801307806D7E6D7EEB007EEC1FF0EC07F8EC1FF0EC7E00495A +495A495A5C130F5CB3A7131F5C133F91C7FC137E485AEA07F0EAFFC000FCC8FC1D537ABD +2A>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fe cmtt10 10 15 +/Fe 15 119 df38 D<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>46 +D<1507ED1F80153F15FF14034A1300EC1FFC4A5AECFFE0491380010790C7FCEB0FFCEB3F +F8EB7FE048485A4890C8FCEA0FFEEA1FF8EA7FF0EAFFC05BA27FEA7FF0EA1FF8EA0FFEEA +03FF6C13C06C6C7EEB3FF8EB0FFC6DB4FC01017F6D13E0EC3FF86E7EEC07FF6E13801400 +153F151FED0700212A7BAD2C>60 D<127012FC7E6C7E13E06C7EEA1FFC6C7E3803FF80C6 +7FEB7FF0EB1FF8EB0FFEEB03FF6D13C06D6C7EEC3FF8EC0FFC6EB4FC0201138080A25C02 +071300EC0FFCEC3FF8EC7FE049485A4990C7FCEB0FFEEB1FF8EB7FF0EBFFC000035BD80F +FEC8FC485AEA7FF0485A138048C9FC5A1270212A7BAD2C>62 D86 D<3801FFF0000713FE001F6D7E15E048 +809038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F48 +EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15FE +6C14BF0001EBFE1F3A003FF007FC27247CA32C>97 DI102 D104 D<1307EB1FC0A2497EA36D5AA201 +07C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512FCB612FEA36C14FC1F3479 +B32C>I<387FFFE0B57EA37EEA0003B3B3A5007FB61280B712C0A36C158022337BB22C> +108 D<397FF01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F0280 +7FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>110 +DI114 +D<3A7FFF01FFFCB514FE148314016C15FC3A03E0000F80A26D131F00011500A26D5B0000 +143EA26D137E017C137CA2017E13FC013E5BA2EB3F01011F5BA21483010F5BA214C70107 +5BA214EF01035BA214FF6D90C7FCA26D5A147C27247EA32C>118 +D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Ff cmti10 10 45 +/Ff 45 119 df12 D<150C151C153815F0EC01E0EC03C0EC0780EC0F00141E5C147C5C5C495A1303 +495A5C130F49C7FCA2133EA25BA25BA2485AA212035B12075BA2120F5BA2121FA290C8FC +A25AA2123EA2127EA2127CA412FC5AAD1278A57EA3121C121EA2120E7EA26C7E6C7EA212 +001E5274BD22>40 D<140C140E80EC0380A2EC01C015E0A2140015F0A21578A4157C153C +AB157CA715FCA215F8A21401A215F0A21403A215E0A21407A215C0140F1580A2141F1500 +A2143EA25CA25CA2495AA2495A5C1307495A91C7FC5B133E133C5B5B485A12035B48C8FC +120E5A12785A12C01E527FBD22>I44 +D<120EEA3F80127F12FFA31300127E123C0909778819>46 D<1703EF0780170FA2EF1F00 +5F173E5FA25FA24C5A16035F4C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA24B5A15 +075E4B5AA24BC8FCA2153E157E157C5DA24A5AA24A5A14075D4A5AA24AC9FCA2143EA25C +14FC5C495AA2495AA2495A130F5C49CAFCA2133EA25B13FC5B485AA2485AA2485A120F5B +48CBFCA2123EA25AA25AA2127031537FBD2A>I59 D65 D<0107B612FCEFFF8018C0903B000FF0001FF04BEB07F81703021F15FC17014B14FE +A2023F1400A24B1301A2147F18FC92C7120318F84A140718F04AEC0FE0EF1FC00101ED3F +80EF7F004AEB01FEEE07F849B612E05F9139F80007F0EE01FC01076E7E177F4AEC3F80A2 +010F16C0171F5CA2131F173F5CA2133FEF7F805C1800017F5D4C5A91C7485A5F49140FEE +1FE0494A5A00014AB45AB748C7FC16F816C037397BB83A>II<0103B612FEEFFFC018F0903B00 +07F8000FF84BEB03FCEF00FE020F157FF03F804B141F19C0021F150F19E05D1807143F19 +F05DA2147FA292C8FCA25C180F5CA2130119E04A151FA2130319C04A153FA20107178018 +7F4A1600A2010F16FEA24A4A5A60011F15034D5A4A5D4D5A013F4B5A173F4A4AC7FC17FC +017FEC03F84C5A91C7EA1FC04949B45A007F90B548C8FCB712F016803C397CB83F>I<01 +07B8FCA3903A000FF000034BEB007F183E141F181E5DA2143FA25D181C147FA292380003 +80A24A130718004A91C7FC5E13015E4A133E167E49B512FEA25EECF8000107147C163C4A +1338A2010F147818E04A13701701011F16C016004A14031880013F150718004A5CA2017F +151E173E91C8123C177C4915FC4C5A4914070001ED7FF0B8FCA25F38397BB838>I<0107 +B712FEA3903A000FF000074B1300187C021F153CA25DA2143FA25D1838147FA292C8FCEE +03804A130718004A91C7FCA201015CA24A131E163E010314FE91B5FC5EA2903807F80016 +7C4A1378A2130FA24A1370A2011F14F0A24A90C8FCA2133FA25CA2137FA291CAFCA25BA2 +5B487EB6FCA337397BB836>I<0103B5D8F80FB512E0A390260007F8C7381FE0004B5DA2 +020F153F615DA2021F157F96C7FC5DA2023F5D605DA2027F14016092C7FCA24A1403605C +A249B7FC60A202FCC712070103150F605CA20107151F605CA2010F153F605CA2011F157F +95C8FC5CA2013F5D5F5CA2017F14015F91C7FC491403007FD9FE01B512F8B55BA243397C +B83E>72 D<0103B512F8A390390007F8005DA2140FA25DA2141FA25DA2143FA25DA2147F +A292C7FCA25CA25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133F +A25CA2137FA291C8FC497EB6FCA25C25397CB820>I<0103B500F890387FFFE0A21AC090 +260007F8C7380FFC004B15E061020F4BC7FC183E4B5C18F0021F4A5A4D5A4BEB0F804DC8 +FC023F143C5F4B5B4C5A027FEB07C04CC9FCED001E5E4A5BED01FCECFE0315070101497E +151FECFC7C4B7E903903FDE07FDAFFC07F1580ED003F49488014F84A131F83130F160F4A +801607011F81A24A130383133F16014A80A2017F6E7EA291C8FC494A7F007F01FE011F13 +FCB55CA243397CB840>75 D<0107B512FCA25E9026000FF8C7FC5D5D141FA25DA2143FA2 +5DA2147FA292C8FCA25CA25CA21301A25CA21303A25CA21307A25CA2130F170C4A141CA2 +011F153C17384A1478A2013F157017F04A14E01601017F140317C091C71207160F49EC1F +80163F4914FF000102071300B8FCA25E2E397BB834>I<902607FFF8923807FFF0614F13 +E0D9000FEFF0004F5AA2021F167FF1EFC0141DDA1CFCEC01CF023C16DF9538039F800238 +ED071FA20278ED0E3F97C7FC0270151CA202F04B5AF0707E14E0037E14E0010117FE4D48 +5A02C0EC0380A20103ED0701610280140EA20107ED1C0305385B14006F137049160705E0 +5B010EEC01C0A2011E913803800F61011CEC0700A2013C020E131F4C5C1338ED1FB80178 +163F04F091C8FC01705CA201F04A5B187E00015DD807F816FEB500C09039007FFFFC151E +150E4C397AB84A>I<902603FFF891B512E0A281D90007923807F8006F6E5A61020F5E81 +DA0E7F5DA2021E6D1307033F92C7FC141C82DA3C1F5C70130EEC380FA202786D131E0307 +141C147082DAF003143C70133814E0150101016E1378030014705C8201036E13F0604A14 +80163F010715C1041F5B91C7FC17E149EC0FE360010E15F31607011E15FF95C8FC011C80 +A2013C805F1338160013785F01F8157CEA03FC267FFFE0143CB51538A243397CB83E>I< +ED03FE92383FFFC09238FC07F0913903E001F891390F80007C023FC77E027E8002F81580 +4948EC0FC0EB07E04948EC07E0131F4A15F049C81203137E01FE16F8485AA2485AA2485A +A2120F5B001F16075B123FA34848ED0FF0A448C9EA1FE0A3EF3FC0A21880177F18005F5F +16015F6C4B5A4C5AA24C5A6C4B5A6D4A5A001F93C7FC6D147E000F5D6C6CEB03F06C6C49 +5A6C6CEB0F806C6C013FC8FC90383F01FC90381FFFE0010190C9FC353D74BA40>I<0107 +B612F817FF1880903B000FF0003FE04BEB0FF0EF03F8141FEF01FC5DA2023F15FEA25DA2 +147FEF03FC92C7FCA24A15F817074A15F0EF0FE01301EF1FC04AEC3F80EFFE0001034A5A +EE0FF091B612C04CC7FCD907F8C9FCA25CA2130FA25CA2131FA25CA2133FA25CA2137FA2 +91CAFCA25BA25B1201B512FCA337397BB838>I<0103B612F017FEEFFF80903B0007F800 +3FC04BEB0FF01707020FEC03F8EF01FC5DA2021F15FEA25DA2143FEF03FC5DA2027FEC07 +F818F092C7120F18E04AEC1FC0EF3F004A14FEEE01F80101EC0FE091B6128004FCC7FC91 +38FC003F0103EC0F80834A6D7E8301071403A25C83010F14075F5CA2011F140FA25CA213 +3F161F4AECE007A2017F160F180E91C7FC49020F131C007F01FE153CB5913807F0780403 +13F0CAEAFFE0EF3F80383B7CB83D>82 D<92383FC00E913901FFF01C020713FC91391FC0 +7E3C91393F001F7C027CEB0FF84A130749481303495A4948EB01F0A2495AA2011F15E091 +C7FCA34915C0A36E90C7FCA2806D7E14FCECFF806D13F015FE6D6D7E6D14E0010080023F +7F14079138007FFC150F15031501A21500A2167C120EA3001E15FC5EA3003E4A5AA24B5A +A2007F4A5A4B5A6D49C7FC6D133ED8F9F013FC39F8FC03F839F07FFFE0D8E01F138026C0 +03FCC8FC2F3D7ABA2F>I<0007B812E0A25AD9F800EB001F01C049EB07C0485AD9000114 +03121E001C5C003C17801403123800785C00701607140700F01700485CA2140FC792C7FC +5DA2141FA25DA2143FA25DA2147FA292C9FCA25CA25CA21301A25CA21303A25CA21307A2 +5CA2130FA25CEB3FF0007FB512F8B6FCA2333971B83B>I86 DI89 D<14F8EB07FE90381F871C90383E03FE137CEBF801 +120148486C5A485A120FEBC001001F5CA2EA3F801403007F5C1300A21407485C5AA2140F +5D48ECC1C0A2141F15831680143F1587007C017F1300ECFF076C485B9038038F8E391F0F +079E3907FE03FC3901F000F0222677A42A>97 D<133FEA1FFFA3C67E137EA313FE5BA312 +015BA312035BA31207EBE0F8EBE7FE9038EF0F80390FFC07C013F89038F003E013E0D81F +C013F0A21380A2123F1300A214075A127EA2140F12FE4814E0A2141F15C05AEC3F80A215 +005C147E5C387801F8007C5B383C03E0383E07C0381E1F80D80FFEC7FCEA01F01C3B77B9 +26>I<147F903803FFC090380FC1E090381F0070017E13784913383901F801F83803F003 +120713E0120FD81FC013F091C7FC485AA2127F90C8FCA35A5AA45AA3153015381578007C +14F0007EEB01E0003EEB03C0EC0F806CEB3E00380F81F83803FFE0C690C7FC1D2677A426 +>II<147F903803FFC090380FC1E090383F00F0017E13785B485A485A485A120F49 +13F8001F14F0383F8001EC07E0EC1F80397F81FF00EBFFF891C7FC90C8FC5A5AA55AA215 +30007C14381578007E14F0003EEB01E0EC03C06CEB0F806CEB3E00380781F83803FFE0C6 +90C7FC1D2677A426>II104 DI<150E153F157FA3157E151C1500ABEC1F +80EC7FC0ECF1F0EB01C090380380F813071401130F130E131EEB1C03133C013813F0A2EB +0007A215E0A2140FA215C0A2141FA21580A2143FA21500A25CA2147EA214FEA25CA21301 +A25CA213035C121C387E07E0A238FE0FC05C49C7FCEAF83EEA787CEA3FF0EA0FC0204883 +B619>I108 +DII<147F903803FFC090380FC1F090381F00F8 +017E137C5B4848137E4848133E0007143F5B120F485AA2485A157F127F90C7FCA215FF5A +4814FEA2140115FC5AEC03F8A2EC07F015E0140F007C14C0007EEB1F80003EEB3F00147E +6C13F8380F83F03803FFC0C648C7FC202677A42A>I<3903C003F0390FF01FFC391E783C +0F381C7C703A3C3EE03F8038383FC0EB7F800078150000701300151CD8F07E90C7FCEAE0 +FE5BA2120012015BA312035BA312075BA3120F5BA3121F5BA3123F90C9FC120E212679A4 +23>114 D<14FE903807FF8090380F83C090383E00E04913F00178137001F813F0000113 +0313F0A215E00003EB01C06DC7FC7FEBFFC06C13F814FE6C7F6D13807F010F13C0130014 +3F141F140F123E127E00FE1480A348EB1F0012E06C133E00705B6C5B381E03E06CB45AD8 +01FEC7FC1C267AA422>I +I<13F8D803FEEB01C0D8078FEB03E0390E0F8007121E121C0038140F131F007815C01270 +013F131F00F0130000E015805BD8007E133FA201FE14005B5D120149137EA215FE120349 +EBFC0EA20201131E161C15F813E0163CD9F003133814070001ECF07091381EF8F03A00F8 +3C78E090393FF03FC090390FC00F00272679A42D>I<01F0130ED803FC133FD8071EEB7F +80EA0E1F121C123C0038143F49131F0070140FA25BD8F07E140000E08013FEC6485B150E +12015B151E0003141C5BA2153C000714385B5DA35DA24A5A140300035C6D48C7FC000113 +0E3800F83CEB7FF8EB0FC0212679A426>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fg cmr10 10 50 +/Fg 50 122 df12 DI<030C1303031E497EA2033E130FA2033C91C7FCA2037C5BA2 +0378131EA303F8133EA24B133CA20201147CA24B1378A2020314F8A24B5BA30207130100 +7FB91280BA12C0A26C1880C7271F0007C0C7FC021E5CA3023E130FA2023C91C8FCA2027C +5BA20278131EA302F8133E007FB91280BA12C0A26C1880280003E000F8C8FC4A5BA30107 +1301A202805BA2010F1303A202005BA2491307A2011E5CA3013E130FA2013C91C9FCA201 +7C5BA20178131EA20130130C3A4A7BB945>35 D<121C127FEAFF80A213C0A3127F121C12 +00A412011380A2120313005A1206120E5A5A5A12600A1979B917>39 +D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A +12600A19798817>44 DI<121C127FEAFF80A5EA7F00121C0909 +798817>I49 DI57 D<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A3 +17>I<121C127FEAFF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201A41203 +1300A25A1206A2120E5A121812385A1260093479A317>I<1538A3157CA315FEA34A7EA3 +4A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC +6003A202C07F1501A2D901807F81A249C77F167FA20106810107B6FCA24981010CC7121F +A2496E7EA3496E7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3 +373C7DBB3E>65 D<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03FC00 +0F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F484815 +0FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A3123F7F +001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE05C6D +6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D7BBA +3C>67 D69 +DI73 +D75 DIII83 D<003FB812E0A3D9C003EB001F273E0001FE130348EE01F00078160000 +701770A300601730A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397D +B83C>I86 D91 +D93 D97 +DIIII<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213 +FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I< +ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E0 +10000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38 +060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048 +C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB +0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A>IIIIII<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F8380 +3F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A348 +6C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F90 +39F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280 +A329257EA42E>II<3903F01FE000FFEB7FF89038F1E07E9039F3801F +803A0FF7000FC0D803FEEB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3 +ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FF +F8EC1FC091C8FCAB487EB512C0A328357EA42E>I<3807E01F00FFEB7FC09038E1E3E090 +38E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512F0A3 +1C257EA421>114 DI<1318A51338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215 +C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220>IIIIII +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fh cmbx12 14.4 31 +/Fh 31 119 df13 D<157815FC14031407141F14FF130F0007B5FCB6 +FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>49 +DI<91380FFFC091B512FC0107ECFF80011F15E09026 +3FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15 +E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B +5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E701380 +7013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FC +A25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A +6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<9326 +01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003 +EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249 +49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F +A3485B1B0FA25AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C +1A1F6C7F1C006C6D606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC +4C5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0 +020091B612C0033F93C8FC030715FCDB007F14E0040101FCC9FC525479D261>67 +D69 +DI73 D<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF +020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF4949 +6F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83481B804A8348 +1BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C +1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D +4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F +01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0565479D265> +79 D +I82 D86 D97 +DI<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001 +FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A48 +92C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC +3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC +020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91 +B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F484980 +485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C +6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9 +003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C04901 +817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191 +C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01 +F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE +903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>IIII<137F497E +000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3 +A6B612E0A51B547BD325>I<157FEDFF80020313E04A13F0A24A13F8A76E13F0A26E13E0 +02001380ED7F0092C7FCADED1FF891B5FCA51401EC007FB3B3B1EA0780EA1FE0487E487E +486C13FF16F0A216E05C16C04A13806C4848130049485A003F495A000FB512F06C5C0001 +148026001FFCC7FC256C87D329>I108 DII<913801FFE0021F +13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F4849 +6D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC00 +7F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C49 +5BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387C +B643>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003 +D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55C +B3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD8 +0FF81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC0 +6C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC +003F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F +8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC +2C387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90 +B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEB +F0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I +II E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fi cmr12 12 13 +/Fi 13 117 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113 +80120313005A1206120E5A5A5A12600B1D78891B>44 D<143014F013011303131F13FFB5 +FC13E713071200B3B3B0497E497E007FB6FCA3204278C131>49 D52 +D<14FF010713E0011F13F890387F80FC9038FC007E48487F4848EB1F804848EB0FC0000F +EC07E0485AED03F0485A16F8007F140190C713FCA25AA216FE1500A516FFA46C5CA36C7E +5D121F7F000F5C6C6C130E150C6C6C131C6C6C5BD8007C5B90383F01E090390FFF80FE90 +3801FE0090C8FC150116FCA4ED03F8A216F0D80F801307486C14E0486C130F16C0ED1F80 +A249EB3F0049137E001EC75A001C495A000F495A3907E01FE06CB51280C649C7FCEB1FF0 +28447CC131>57 D73 D<49B41303010FEBE007013F13F89039FE00FE0FD801F8131FD807E0EB079F49EB +03DF48486DB4FC48C8FC4881003E81127E82127C00FC81A282A37E82A27EA26C6C91C7FC +7F7FEA3FF813FE381FFFE06C13FE6CEBFFE06C14FC6C14FF6C15C0013F14F0010F800101 +80D9001F7F14019138001FFF03031380816F13C0167F163F161F17E000C0150FA31607A3 +7EA36C16C0160F7E17806C151F6C16006C5D6D147ED8FBC05CD8F9F0495AD8F07C495A90 +393FC00FE0D8E00FB51280010149C7FC39C0003FF02B487BC536>83 +D98 +D101 D109 D<3901FC01FE00FF903807FFC091 +381E07F091383801F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35B +B3A8486CECFF80B5D8F83F13FEA32F2C7DAB36>I<3901FC03FC00FF90380FFF8091383C +07E091387001F83A07FDE000FE00030180137FD801FFEC3F8091C7EA1FC04915E049140F +17F0160717F8160317FCA3EE01FEABEE03FCA3EE07F8A217F0160F6D15E0EE1FC06D143F +17806EEB7E00D9FDC05B9039FCF003F891383C0FE091381FFF80DA03FCC7FC91C9FCAE48 +7EB512F8A32F3F7DAB36>112 D<3903F803F000FFEB1FFCEC3C3EEC707F0007EBE0FF38 +03F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA3202C7DAB26> +114 D<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FCB3 +A4150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC09038 +007F001E3E7EBC26>116 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fj cmr17 17.28 20 +/Fj 20 121 df<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F00C7FCB3B3A2120FEA +3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C3E74BD24>58 D69 +D80 D<003FBC12F8A49126C000039038C0 +000301FCC76C49EB007F01F0190F01C019074848F103FC90C81701007E1A00007C1B7CA3 +00781B3CA400701B1CA600F01B1E481B0EA7C91800B3B3B3A54C7FA2041F13F84AB87EA4 +57627CE160>84 D86 D97 D<4AB47E020F13F8023F13FE9139FF007F80D903FCEB07 +E0D907F0EB01F0D91FE0EB007849488049488049C87E48485D4915FF00034B138048485C +A2485AA2485AA2003F6F130049EC007C94C7FC127FA35B12FFAD127F7FA4123F7FA2001F +EE01C07F000F16036D168012076C6C15076D160000015E6C6C151E6D6C5C6D6C5C6D6C5C +D90FF8495AD903FCEB07C0903A00FF803F8091263FFFFEC7FC020F13F80201138032417C +BF3A>99 D +101 D103 DI<133C13FF487F487FA66C5B6C90C7FC13 +3C90C8FCB3A2EB03C0EA07FF127FA41201EA007FA2133FB3B3AC497E497EB612E0A41B5F +7DDE23>I107 DIIIII<9139FFE00180010FEBFC03017FEBFF07 +3A01FF001FCFD803F8EB03EFD807E0EB01FF48487F4848147F48C8123F003E151F007E15 +0F127CA200FC1507A316037EA27E7F6C7E6D91C7FC13F8EA3FFE381FFFF06CEBFF806C14 +F86C14FF6C15C06C6C14F0011F80010714FED9007F7F02031480DA003F13C01503030013 +E0167F00E0ED1FF0160F17F86C15071603A36C1501A37EA26C16F016037E17E06D14076D +EC0FC06D1580D8FDF0141FD8F8F8EC7F00013E14FC3AF01FC00FF80107B512E0D8E00114 +8027C0003FF8C7FC2D417DBF34>115 D<1438A71478A414F8A31301A31303A21307130F +131FA2137F13FF1203000F90B6FCB8FCA3260007F8C8FCB3AE17E0AE6D6CEB01C0A31603 +6D6C148016076D6C14006E6C5A91383FC01E91381FF07C6EB45A020313E09138007F802B +597FD733>I<007FB500C0010FB512E0A4C691C70003EBFC00D93FFE6E13E0D90FFC1680 +7148C7FC01075E6D6C4A5A6D6C5D6D6D495A606E6C495A6E6C49C8FC6E6C130E171E6E6C +5B6E6C5B6E6C5B5F913801FF016EEB83C092387FC780033F90C9FC16EFED1FFE6F5A6F5A +826F7E6F7E5D834B7F92380F3FE0ED1E1F033C7F9238380FF892387807FCEDF003DA01E0 +7F4A486C7E707F4A486D7E4AC7FC021E6E7E021C6E7E023C6E7E5C4A6E7E01016F7E4948 +6E7E1307010F6F7F013F83D9FFF04A7F00076D4A13FCB56C020FEBFFF8A4453E80BD46> +120 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fk cmcsc10 17.28 4 +/Fk 4 109 df<942607FFE0157094B500FE15F0040FDAFFC01301047F15F04BB700FC13 +0303079126800FFF1307031F9026F00001EBC00F037F01809038003FE0DBFFFCC8380FF0 +1F020301F0923803F83F4A49ED00FC4A0180EE7E7F023F90CAEA3FFFDA7FFC834A488349 +4983494983494983495B92CCFC491A7F495A4948193FA24948191F5A4A190F5A4A19075A +5C481B03A2485BA21C015A91CDFCA25A99C7FCA35B12FFB0127F7FA47E1DF0807EA36C7F +A26C1B016E1AE07E806C1B036E1AC06C1B076D7EF40F806D7E6D6CF11F007F6F183E6D6D +606D6D18FC6D6D606D6D4D5A6E6C4D5A6EB4EF0FC0020F6D4C5A6E01E0047FC7FC6E01F8 +16FE020001FEED03FC6F6C6CEC0FF8031F01F0EC7FE00307903AFF800FFFC0030191B6C8 +FC6F6C15FC040F15E0040092C9FC050713E05C6876E471>67 D<16074C7E4C7EA34C7EA3 +4C7EA24C7EA34B7FA24B7F16CFA203077F1687A2DB0F077F82031F80ED1E01A2033E80ED +3C00A24B80177F03F8804B133FA20201814B131FA24A4880170F0207814B7FA2020F8292 +C77EA2021E6E7FA2023E82023C80023FB7FC4A82A291B87E02F0C8123FA20101834A151F +A2494882180F0107834A81A2010F8491C97E5B86498249848001FF8400036D4B7F000F01 +F0030F13FEB500FC92B612F8A44D4D7BCC58>97 D103 D108 D E +%EndDVIPSBitmapFont +end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%PaperSize: a4 + +%%EndSetup +%%Page: 1 1 +1 0 bop 1130 416 a Fk(Cgal)42 b Fj(Extension)i(P)l(ac)l(k)-7 +b(ages:)1304 599 y(The)44 b(V)-11 b(anilla)46 b(Example)1806 +931 y Fi(Irene)1496 1218 y(Septem)m(b)s(er)33 b(14,)g(1999)71 +1667 y Fh(1)135 b(In)l(tro)t(duction)71 1940 y Fg(Fla)n(v)n(ored)22 +b(ob)5 b(jects)23 b(are)f(kno)n(wn)h(to)h(b)r(e)g(v)n(ery)e(useful)i +(in)g(computational)f(geometry)-7 b(,)23 b(esp)r(ecially)g(in)h +(industrial)f(appli-)71 2040 y(cations.)36 b(This)27 +b(extension)g(pac)n(k)-5 b(age)25 b(allo)n(ws)h(one)h(to)g(create)f +(\015a)n(v)n(ored)f(ob)5 b(jects)26 b(and)h(pro)n(vides)f(an)h +(implemen)n(tation)71 2139 y(of)g(Irene's)g(Fla)n(v)n(or)f(Enhancemen)n +(t)h(algorithm)f([Ire99)o(])i(on)f(these)h(ob)5 b(jects.)71 +2505 y Fh(2)135 b(Fla)l(v)l(ors)45 b(and)g(\015a)l(v)l(or)h(enhancemen) +l(t)71 2778 y Fg(#)p Ff(include)30 b Fe(<)p Ff(CEP/Vanilla/flavor.h)6 +b Fe(>)71 2969 y Fg(The)32 b(follo)n(wing)g(en)n(umerated)f(t)n(yp)r(e) +i(is)f(pro)n(vided)f(in)i(the)g(header)e(\014le)i Fe(flavor.h)c +Fg(of)j(the)h(V)-7 b(anilla)32 b(pac)n(k)-5 b(age.)50 +b(The)71 3069 y(functions)28 b(listed)g(here)f(are)f(precompiled)h(in)n +(to)h(the)g(library)e Fe(libVanill.a)d Fg(pro)n(vided)k(with)h(the)g +(pac)n(k)-5 b(age.)71 3285 y Ff(enum)29 b(Flavor)i Fd(f)e +Ff(VANILLA,)632 3384 y(CHOCOLATE)p 1174 3386 26 4 v 35 +w(CHIP,)632 3484 y(MINT)p 864 3486 V 36 w(CHOCOLATE)p +1437 3486 V 35 w(CHIP,)632 3584 y(CHOCOLATE,)632 3683 +y(STRAWBERRY,)632 3783 y(NEAPOLITAN,)632 3882 y(PEACH,)632 +3982 y(ROCKY)p 947 3984 V 34 w(ROAD,)632 4082 y(PISTACHIO)8 +b Fd(g)71 4397 y Ff(bool)312 b(valid)p 699 4399 V 37 +w(flavor\()31 b(Flavor)h(f\))610 b Fg(is)27 b Ff(true)33 +b Fg(if)28 b Ff(f)46 b Fg(is)28 b(a)f(v)-5 b(alid)28 +b(\015a)n(v)n(or)d(and)j Ff(false)35 b Fg(otherwise.)71 +4638 y Ff(Flavor)223 b(flavor)p 734 4640 V 37 w(enhance\()30 +b(Flavor)i(f\))487 b Fg(implemen)n(ts)49 b(the)h(Fla)n(v)n(or)d +(Enhancemen)n(t)i(algorithm.)1932 4738 y(The)37 b(return)g(v)-5 +b(alue)37 b(of)g(the)h(function)g(is)f(the)h(enhance-)1932 +4837 y(men)n(t)28 b(of)f(\015a)n(v)n(or)f Ff(f)18 b Fg(.)71 +5060 y Ff(ostream)6 b Fe(&)118 b Ff(ostream)6 b Fe(&)31 +b Ff(os)f Fc(<)-14 b(<)22 b Ff(Flavor)31 b(f)506 b Fg(output)36 +b(insertion)g(op)r(erator)e(for)i(\015a)n(v)n(ors.)60 +b(Inserts)36 b(the)1932 5160 y(string)g(asso)r(ciated)g(with)i(the)g +(en)n(umeration)e Ff(f)55 b Fg(in)n(to)38 b Ff(os)1932 +5260 y Fg(and)27 b(returns)g(the)h(mo)r(di\014ed)g(stream.)1893 +5659 y(1)p eop +%%Page: 2 2 +2 1 bop 71 59 a Ff(istream)6 b Fe(&)135 b Ff(istream)6 +b Fe(&)31 b Ff(is)f Fc(>)-14 b(>)22 b Ff(Flavor)9 b Fe(&)31 +b Ff(f)487 b Fg(input)28 b(extraction)f(op)r(erator)f(for)h(\015a)n(v)n +(ors.)35 b(Extracts)27 b(the)1932 159 y(next)37 b(string)g(from)g +Ff(is)45 b Fg(and)37 b(con)n(v)n(erts)f(it)i(to)f(the)h(corre-)1932 +259 y(sp)r(onding)19 b(Fla)n(v)n(or)f(v)-5 b(alue.)35 +b(If)20 b(the)g(string)g(do)r(es)f(not)h(matc)n(h)1932 +358 y(an)n(y)30 b(of)i(the)g(v)-5 b(alid)32 b(\015a)n(v)n(or)d(names,)k +(the)f(v)-5 b(alue)31 b(of)h Ff(f)49 b Fg(do)r(es)1932 +458 y(not)25 b(c)n(hange)f(and)h(the)g(stream)g Ff(is)32 +b Fg(go)r(es)24 b(in)n(to)h(error)e(state.)71 804 y Fh(3)135 +b(Reference)46 b(P)l(ages)g(for)f(V)-11 b(anilla)46 b(CEP)71 +1126 y(Class)g(Flavored)p 946 1129 41 4 v 55 w(object)p +Fb(<)p Fh(O)p Fb(>)71 1494 y Fa(De\014nition)71 1684 +y Fg(The)33 b(class)e Ff(Flavored)p 763 1686 26 4 v 37 +w(object)8 b Fe(<)p Ff(O)g Fe(>)33 b Fg(is)f(a)g(templated)h(class)f +(that)h(is)g(deriv)n(ed)f(from)g(the)h(class)f(of)g(its)h(template)g +(ar-)71 1783 y(gumen)n(t.)58 b(It)35 b(adds)g(a)f(\015a)n(v)n(or)f(to)h +(the)h(ob)5 b(ject)35 b(and)g(pro)n(vides)e(mem)n(b)r(er)i(functions)g +(for)f(\015a)n(v)n(or)f(enhancemen)n(t)h(and)71 1883 +y(for)29 b(c)n(hec)n(king)g(the)i(v)-5 b(alidit)n(y)30 +b(of)g(the)g(\015a)n(v)n(or,)f(as)g(w)n(ell)h(as)f(functions)i(for)e +(setting)h(and)g(retrieving)f(the)i(\015a)n(v)n(or)d(of)i(the)71 +1983 y(ob)5 b(ject.)71 2173 y(#)p Ff(include)30 b Fe(<)p +Ff(CEP/Vanilla/Flavored)p 1302 2175 V 40 w(object.h)6 +b Fe(>)71 2458 y Fa(Creation)71 2672 y Ff(Flavored)p +388 2674 V 37 w(object)i Fe(<)p Ff(O)g Fe(>)59 b Ff(fo)5 +b Fg(;)1033 b(an)27 b(un\015a)n(v)n(ored)f(empt)n(y)i(ob)5 +b(ject)27 b Ff(fo)71 2910 y(Flavored)p 388 2912 V 37 +w(object)8 b Fe(<)p Ff(O)g Fe(>)59 b Ff(fo)5 b(\()30 +b(Flavor)i(f)18 b(\);)626 b(fo)34 b Fg(is)27 b(an)g(empt)n(y)h(ob)5 +b(ject)27 b(with)i(\015a)n(v)n(or)c Ff(f)71 3148 y(Flavored)p +388 3150 V 37 w(object)8 b Fe(<)p Ff(O)g Fe(>)59 b Ff(fo)5 +b(\()30 b(Object)g(o)5 b(\);)625 b(fo)34 b Fg(is)27 b(a)g(V)-9 +b(ANILLA)29 b(ob)5 b(ject)27 b(with)h(v)-5 b(alue)27 +b Ff(o)71 3385 y(Flavored)p 388 3387 V 37 w(object)8 +b Fe(<)p Ff(O)g Fe(>)59 b Ff(fo)5 b(\()30 b(Object)g(o,)h(Flavor)g(f)18 +b(\);)268 b(fo)34 b Fg(is)27 b(an)g(ob)5 b(ject)28 b(with)g(v)-5 +b(alue)27 b Ff(o)34 b Fg(and)27 b(\015a)n(v)n(or)f Ff(f)71 +3695 y Fa(Op)s(erations)71 3909 y Ff(void)213 b(fo)5 +b(.set)p 633 3911 V 36 w(flavor\()32 b(Flavor)f(f\))331 +b Fg(mak)n(es)27 b Ff(fo)34 b Fg(an)27 b(ob)5 b(ject)27 +b(with)h(\015a)n(v)n(or)e Ff(f)1586 4008 y(Pr)l(e)l(c)l(ondition)p +Fg(:)38 b Ff(f)46 b Fg(m)n(ust)28 b(b)r(e)g(a)f(v)-5 +b(alid)28 b(\015a)n(v)n(or)71 4233 y Ff(void)213 b(fo)5 +b(.enhance)p 825 4235 V 38 w(flavor\(\))457 b Fg(enhances)27 +b Ff(fo)5 b Fg('s)29 b(\015a)n(v)n(or)71 4471 y Ff(bool)217 +b(fo)5 b(.is)p 592 4473 V 37 w(valid\(\))726 b Fg(determines)28 +b(if)g Ff(fo)5 b Fg('s)28 b(\015a)n(v)n(or)e(is)h(v)-5 +b(alid)71 4709 y Ff(Flavor)128 b(fo)5 b(.flavor\(\))787 +b Fg(retriev)n(es)26 b Ff(fo)5 b Fg('s)29 b(\015a)n(v)n(or)71 +5097 y Fh(References)71 5311 y Fg([Ire99])153 b(Irene.)36 +b Ff(Flavor)31 b(Enhanc)l(ement)f(for)g(F)-6 b(un)29 +b(and)h(Pr)l(o\014t)p Fg(.)37 b(Morgan-Kaufmann,)25 b(San)j(Mateo,)f +(CA,)h(1999.)1893 5659 y(2)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/Extension_Packages/Vanilla/include/CEP/Vanilla/Flavored_object.h b/Extension_Packages/Vanilla/include/CEP/Vanilla/Flavored_object.h new file mode 100644 index 00000000000..24cd8aa58ad --- /dev/null +++ b/Extension_Packages/Vanilla/include/CEP/Vanilla/Flavored_object.h @@ -0,0 +1,46 @@ +#ifndef FLAVORED_OBJECT_H +#define FLAVORED_OBJECT_H + +#include + +template +class Flavored_object : public Object +{ +public: + Flavored_object() + { } + + Flavored_object(Flavor f) : _flavor(f) + { } + + Flavored_object(Object o) : Object(o), _flavor(VANILLA) + { } + + Flavored_object(Object o, Flavor f): Object(o), _flavor(f) + { } + + void set_flavor(Flavor f) + { + _flavor = f; + } + + void enhance_flavor() + { + _flavor = flavor_enhance(_flavor); + } + + bool is_valid() const + { + return valid_flavor(_flavor); + } + + Flavor flavor() const + { + return _flavor; + } + +private: + Flavor _flavor; +}; + +#endif // FLAVORED_OBJECT_H diff --git a/Extension_Packages/Vanilla/include/CEP/Vanilla/flavor.h b/Extension_Packages/Vanilla/include/CEP/Vanilla/flavor.h new file mode 100644 index 00000000000..7dbbd136a04 --- /dev/null +++ b/Extension_Packages/Vanilla/include/CEP/Vanilla/flavor.h @@ -0,0 +1,19 @@ +#ifndef FLAVOR_H +#define FLAVOR_H + +#include +#include + + +enum Flavor {VANILLA, CHOCOLATE_CHIP, MINT_CHOCOLATE_CHIP, CHOCOLATE, + STRAWBERRY, NEAPOLITAN, PEACH, ROCKY_ROAD, PISTACHIO}; + +bool valid_flavor(Flavor f); + +Flavor flavor_enhance(Flavor f); + +std::ostream& operator<<(std::ostream& os, Flavor f); + +std::istream& operator>>(std::istream& is, Flavor& f); + +#endif // FLAVOR_H diff --git a/Extension_Packages/Vanilla/makefile b/Extension_Packages/Vanilla/makefile new file mode 100644 index 00000000000..2c3e7afaa6f --- /dev/null +++ b/Extension_Packages/Vanilla/makefile @@ -0,0 +1,49 @@ +# This is the makefile for compiling and installing the library libVanill.a + +#---------------------------------------------------------------------# +# include platform specific settings +#---------------------------------------------------------------------# +# Choose the right include file from the /make directory. +#CGAL_MAKEFILE = +include $(CGAL_MAKEFILE) + +#---------------------------------------------------------------------# +# directory where CGAL is installed +#---------------------------------------------------------------------# +#CGAL_HOME= + + +#---------------------------------------------------------------------# +# installation program +#---------------------------------------------------------------------# +INSTALL = cp +INSTALL_FLAGS = -R + +#---------------------------------------------------------------------# +# target entries +#---------------------------------------------------------------------# + + +library: + cd src; make + +install: + $(INSTALL) $(INSTALL_FLAGS) include/* $(CGAL_HOME)/include + $(INSTALL) $(INSTALL_FLAGS) lib/* $(CGAL_HOME)/lib/$(CGAL_OS_COMPILER) + +clean: + cd src; make clean + cd test_suite; make clean + +really_clean: + cd src; make really_clean + cd test_suite; make really_clean + rm -f lib/libVanill.a + +#---------------------------------------------------------------------# +# suffix rules +#---------------------------------------------------------------------# + +.C.o: + $(CC) $(CXXFLAGS) -c $< + diff --git a/Extension_Packages/Vanilla/src/flavor.C b/Extension_Packages/Vanilla/src/flavor.C new file mode 100644 index 00000000000..5889818da90 --- /dev/null +++ b/Extension_Packages/Vanilla/src/flavor.C @@ -0,0 +1,64 @@ +#include +#include + +// is f one of the valid flavors +bool valid_flavor(Flavor f) +{ + return (VANILLA <= f && f <= PISTACHIO); +} + +// +// implementation of the complicated flavor_enhancement algorithm of +// Irene, et al. +// +// Precondition: f is valid +// +Flavor flavor_enhance(Flavor f) +{ + return f = (PISTACHIO == f) ? VANILLA : Flavor(f+1); +} + +std::ostream& operator<<(std::ostream& os, Flavor f) +{ + switch (f) + { + case VANILLA: os << "VANILLA"; break; + case CHOCOLATE_CHIP: os << "CHOCOLATE_CHIP"; break; + case MINT_CHOCOLATE_CHIP: os << "MINT_CHOCOLATE_CHIP"; break; + case CHOCOLATE: os << "CHOCOLATE"; break; + case STRAWBERRY: os << "STRAWBERRY"; break; + case NEAPOLITAN: os << "NEAPOLITAN"; break; + case PEACH: os << "PEACH"; break; + case ROCKY_ROAD: os << "ROCKY_ROAD"; break; + case PISTACHIO: os << "PISTACHIO"; break; + } + return os; +} + +std::istream& operator>>(std::istream& is, Flavor& f) +{ + leda_string name; + + is >> name; + if (name == "VANILLA") + f = VANILLA; + else if (name == "CHOCOLATE_CHIP") + f = CHOCOLATE_CHIP; + else if (name == "MINT_CHOCOLATE_CHIP") + f = MINT_CHOCOLATE_CHIP; + else if (name == "CHOCOLATE") + f = CHOCOLATE; + else if (name == "STRAWBERRY") + f = STRAWBERRY; + else if (name == "NEAPOLITAN") + f = NEAPOLITAN; + else if (name == "PEACH") + f = PEACH; + else if (name == "ROCKY_ROAD") + f = ROCKY_ROAD; + else if (name == "PISTACHIO") + f = PISTACHIO; + else + is.clear(std::ios::badbit); + return is; +} diff --git a/Extension_Packages/Vanilla/src/makefile b/Extension_Packages/Vanilla/src/makefile new file mode 100644 index 00000000000..ffa5f6f8b78 --- /dev/null +++ b/Extension_Packages/Vanilla/src/makefile @@ -0,0 +1,54 @@ +# This is the makefile for compiling the library libVanill.a + +#---------------------------------------------------------------------# +# the library name +#---------------------------------------------------------------------# +LIB_NAME = libVanill.a + +#---------------------------------------------------------------------# +# include platform specific settings +#---------------------------------------------------------------------# +# Choose the right include file from the /make directory. +#CGAL_MAKEFILE = +include $(CGAL_MAKEFILE) + +#---------------------------------------------------------------------# +# compiler flags +#---------------------------------------------------------------------# +# + +CC = $(CGAL_CXX) + +CXXFLAGS = \ + -I../include \ + $(CGAL_CXXFLAGS) \ + -g + + +#---------------------------------------------------------------------# +# target entries +#---------------------------------------------------------------------# + +LIB_OBJECTS = flavor.o + +all: $(LIB_OBJECTS) + rm -f $(LIB_NAME) + ar rcv $(LIB_NAME) $(LIB_OBJECTS) + mv $(LIB_NAME) ../lib + +flavor.o: \ + ../include/CEP/Vanilla/flavor.h + +clean: + /bin/rm -f *.o \ + core + +really_clean: clean + +#---------------------------------------------------------------------# +# suffix rules +#---------------------------------------------------------------------# + +.C.o: + $(CC) $(CXXFLAGS) -c $< + diff --git a/Extension_Packages/Vanilla/test_suite/makefile b/Extension_Packages/Vanilla/test_suite/makefile new file mode 100644 index 00000000000..eebc5483da1 --- /dev/null +++ b/Extension_Packages/Vanilla/test_suite/makefile @@ -0,0 +1,80 @@ +# This is the makefile for compiling a CGAL application. + +#---------------------------------------------------------------------# +# include platform specific settings +#---------------------------------------------------------------------# +# Choose the right include file from the /make directory. +#CGAL_MAKEFILE = +include $(CGAL_MAKEFILE) + +#---------------------------------------------------------------------# +# compiler flags +#---------------------------------------------------------------------# +# + +CC = $(CGAL_CXX) + +CXXFLAGS = \ + -I../include \ + $(CGAL_CXXFLAGS) \ + -g + + +#---------------------------------------------------------------------# +# linker flags +#---------------------------------------------------------------------# + +LDFLAGS = \ + -L../lib -lVanill \ + $(CGAL_WINDOW_LDFLAGS) + +#---------------------------------------------------------------------# +# target entries +#---------------------------------------------------------------------# + +TARGETS = vanilla_test1 vanilla_test2 vanilla_test3 + +TEST1_OBJECTS = vanilla_test1.o + +TEST2_OBJECTS = vanilla_test2.o + +TEST3_OBJECTS = vanilla_test3.o + +all: $(TARGETS) + +vanilla_test1 : $(TEST1_OBJECTS) + $(CC) -o vanilla_test1 $(TEST1_OBJECTS) $(LDFLAGS) + +vanilla_test2 : $(TEST2_OBJECTS) + $(CC) -o vanilla_test2 $(TEST2_OBJECTS) $(LDFLAGS) + +vanilla_test3 : $(TEST3_OBJECTS) + $(CC) -o vanilla_test3 $(TEST3_OBJECTS) $(LDFLAGS) + +vanilla_test1.o: vanilla_test1.C\ + ../include/CEP/Vanilla/Flavored_object.h + +vanilla_test2.o: vanilla_test2.C\ + ../include/CEP/Vanilla/Flavored_object.h + +vanilla_test3.o: vanilla_test3.C\ + ../include/CEP/Vanilla/Flavored_object.h + +flavor.o: \ + ../include/CEP/Vanilla/flavor.h + +clean: + /bin/rm -f *.o \ + core + +really_clean: clean + /bin/rm -f *.out \ + $(TARGETS) + +#---------------------------------------------------------------------# +# suffix rules +#---------------------------------------------------------------------# + +.C.o: + $(CC) $(CXXFLAGS) -c $< + diff --git a/Extension_Packages/Vanilla/test_suite/vanilla_test1.C b/Extension_Packages/Vanilla/test_suite/vanilla_test1.C new file mode 100644 index 00000000000..c96088da81d --- /dev/null +++ b/Extension_Packages/Vanilla/test_suite/vanilla_test1.C @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include + +typedef double NT; +typedef CGAL::Cartesian R; +typedef CGAL::Circle_2 Circle; +typedef CGAL::Point_2 Center; +typedef Flavored_object Scoop; + +int main(int argc, char** argv) +{ + Scoop ice_cream; + ice_cream.set_flavor(PISTACHIO); + + if (! ice_cream.is_valid() || ice_cream.flavor() != PISTACHIO) + exit (1); + + ice_cream.enhance_flavor(); + if (! ice_cream.is_valid() || ice_cream.flavor() != VANILLA ) + exit(1); + + Scoop vanilla_scoop = Scoop(Circle(Center(3,2),8)); + + if (!vanilla_scoop.is_valid() || vanilla_scoop.flavor() != VANILLA) + exit (1); + + Scoop chocolate_scoop(CHOCOLATE); + if (!chocolate_scoop.is_valid() || chocolate_scoop.flavor() != CHOCOLATE) + exit (1); + + Scoop peach = Scoop(Circle(Center(0,0),16),PEACH); + if (!peach.is_valid() || peach.flavor() != PEACH) + exit (1); + + exit (0); +} diff --git a/Extension_Packages/Vanilla/test_suite/vanilla_test2.C b/Extension_Packages/Vanilla/test_suite/vanilla_test2.C new file mode 100644 index 00000000000..fbafe1eb35a --- /dev/null +++ b/Extension_Packages/Vanilla/test_suite/vanilla_test2.C @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +typedef double NT; +typedef CGAL::Homogeneous R; +typedef CGAL::Point_2 Point; +typedef CGAL::Creator_uniform_2 Creator; +typedef std::vector Points; +typedef Points::iterator Point_it; + +typedef Flavored_object Flavored_point; + +int main(int argc, char** argv) +{ + Points points; + Point_it point_it; + CGAL::Random random; + int min_flavor = static_cast(VANILLA); + int max_flavor = static_cast(PISTACHIO); + + points.reserve(100); + + CGAL::Random_points_in_disc_2 g(1.0); + CGAL::copy_n(g, 90, std::back_inserter(points)); + CGAL::random_collinear_points_2(points.begin(), points.end(), 10, + std::back_inserter(points)); + std::random_shuffle(points.begin(), points.end(), CGAL::default_random); + + for (point_it = points.begin(); point_it != points.end() ; point_it++) + { + Flavored_point flav_pt(*point_it); + flav_pt.set_flavor(static_cast(random.get_int(min_flavor, + max_flavor+1))); + flav_pt.enhance_flavor(); + if (! flav_pt.is_valid()) + { + exit (1); + } + } + + exit (0); +} diff --git a/Extension_Packages/Vanilla/test_suite/vanilla_test3.C b/Extension_Packages/Vanilla/test_suite/vanilla_test3.C new file mode 100644 index 00000000000..8777a950ea4 --- /dev/null +++ b/Extension_Packages/Vanilla/test_suite/vanilla_test3.C @@ -0,0 +1,40 @@ +#include +#include +#include +#include + + + +int main(int argc, char** argv) +{ + if (argc != 2) + { + std::cerr << "Usage: " << argv[0] << " " << std::endl; + exit(1); + } + + std::ifstream answers(argv[1]); + + if (!answers) + { + std::cerr << argv[1] << ": no such file or directory" << std::endl; + exit(1); + } + + Flavor orig_f, f; + Flavor right_f; + std::cin >> orig_f; + f = orig_f; + do + { + answers >> right_f; + if (!answers || f != right_f) + { + std::cerr << f << " != " << right_f << std::endl; + exit(1); + } + f = flavor_enhance(f); + } + while (f != orig_f); + exit (0); +} diff --git a/Extension_Packages/Vanilla/test_suite/vanilla_test3.cin b/Extension_Packages/Vanilla/test_suite/vanilla_test3.cin new file mode 100644 index 00000000000..d5f1aae1284 --- /dev/null +++ b/Extension_Packages/Vanilla/test_suite/vanilla_test3.cin @@ -0,0 +1 @@ +MINT_CHOCOLATE_CHIP diff --git a/Extension_Packages/Vanilla/test_suite/vanilla_test3.cmd b/Extension_Packages/Vanilla/test_suite/vanilla_test3.cmd new file mode 100644 index 00000000000..77f00ab3890 --- /dev/null +++ b/Extension_Packages/Vanilla/test_suite/vanilla_test3.cmd @@ -0,0 +1 @@ +vanilla_test3.cout diff --git a/Extension_Packages/Vanilla/test_suite/vanilla_test3.cout b/Extension_Packages/Vanilla/test_suite/vanilla_test3.cout new file mode 100644 index 00000000000..e9c00e8f90c --- /dev/null +++ b/Extension_Packages/Vanilla/test_suite/vanilla_test3.cout @@ -0,0 +1,9 @@ +MINT_CHOCOLATE_CHIP +CHOCOLATE +STRAWBERRY +NEAPOLITAN +PEACH +ROCKY_ROAD +PISTACHIO +VANILLA +CHOCOLATE_CHIP