pdfdir = $(pkgdatadir)/doc/pdf
pkgconfigdir = $(libdir)/pkgconfig
-#pkginclude_HEADERS = inkpot.h
-#lib_LTLIBRARIES = libinkpot.la
-#pkgconfig_DATA = libinkpot.pc
-#bin_PROGRAMS = inkpot
-#
-#noinst_HEADERS = inkpot_scheme.h inkpot_xlate.h inkpot_value.h \
-# inkpot_lib_define.h inkpot_lib_value.h inkpot_lib_scheme.h
-#noinst_LTLIBRARIES = libinkpot_C.la
-#
-#man_MANS = inkpot.3 inkpot.1
-#pdf_DATA = inkpot.3.pdf inkpot.1.pdf
+
+pkginclude_HEADERS = inkpot.h
+lib_LTLIBRARIES = libinkpot.la
+pkgconfig_DATA = libinkpot.pc
+bin_PROGRAMS = inkpot
+
+noinst_HEADERS = inkpot_scheme.h inkpot_xlate.h inkpot_value.h \
+ inkpot_lib_define.h inkpot_lib_value.h inkpot_lib_scheme.h
+noinst_LTLIBRARIES = libinkpot_C.la
+
+man_MANS = inkpot.3 inkpot.1
+pdf_DATA = inkpot.3.pdf inkpot.1.pdf
inkpot_SOURCES = inkpot.c
inkpot_LDADD = $(builddir)/libinkpot.la
libinkpot_la_SOURCES = $(libinkpot_C_la_SOURCES)
libinkpot_la_LIBADD = $(libinkpot_C_la_LIBADD)
-libinkpot_la_LDFLAGS = -version-info $(VERSION_INFO) -no-undefined
+libinkpot_la_LDFLAGS = -version-info $(VERSION_INFO) -no-undefined
+
+inkpot_scheme.o inkpot_scheme.lo: inkpot_lib_define.h inkpot_lib_scheme.h
+
+inkpot_value.o inkpot_value.lo: inkpot_lib_define.h inkpot_lib_value.h
-inkpot_lib_value.h: $(builddir)/inkpot_lib_define.h
+inkpot_lib_value.h: inkpot_lib_define.h
-inkpot_lib_scheme.h: $(builddir)/inkpot_lib_define.h
+inkpot_lib_scheme.h: inkpot_lib_define.h
inkpot_lib_define.h: inkpot_lib.tcl inkpot_lib_procs.tcl \
$(builddir)/inkpot_lib_tk.dat \
tab_finalize "};\n"
-if {0} {
-foreach {m2} [lsort -dictionary [mapm2 CV]] {
- foreach {value schemes} $m2 {break}
- foreach {m1} [map2m1 CV $value] {
- lappend ALL_ALIASES(m1) $m2
- }
-}
+foreach {color} [lsort -ascii [map1 CV]] {
+ set altset [lsort -dictionary [map1m2 CV $color]]
+ lappend ALL_ALTSETS($altset) $color
}
-
-
+
# generate TAB_ALTS
set SZT_ALTS 0
tab_initialize $f {set first_idx} {set aliases} \
"inkpot_name_t TAB_ALTS\[SZT_ALTS\] = {"
-#foreach {m1} [lsort -ascii [array names ALL_ALIASES]] {
-# foreach {color schemes} $m1 {break}
-foreach {r_set} [map3 CV] {
- set scheme_bits 0
- foreach {scheme} $schemes {
- foreach {scheme_idx scheme_bit} $ALL_SCHEMES_coded($scheme) {break}
- set scheme_bits [expr $scheme_bits | $scheme_bit]
- }
- set m2s [map3m2 CV $r_set]
-# set m2s $ALL_ALIASES($m1)
- set cnt [llength $m2s]
+foreach {altset} [lsort -dictionary [array names ALL_ALTSETS]] {
+ set aliases [lsort -ascii -unique $ALL_ALTSETS($altset)]
+ set cnt [llength $altset]
switch $cnt {
0 {
- puts stderr "shouldn't happen - zero alts: $color"
+ puts stderr "shouldn't happen - has to be at least one alt in an altset"
}
1 {
- foreach {m2} $m2s {break}
- foreach {value schemeset} $m2 {break}
- set ALL_ALTSETS_coded($color) "$ALL_VALUES_coded($value),[format {0x%x} $scheme_bits]"
+ foreach {value_schemes} $altset {break}
+ foreach {value schemes} $value_schemes {break}
+ set scheme_bits 0
+ foreach {scheme} $schemes {
+ foreach {scheme_idx scheme_bit} $ALL_SCHEMES_coded($scheme) {break}
+ set scheme_bits [expr $scheme_bits | $scheme_bit]
+ }
+ foreach {color} $aliases {
+ set ALL_ALTS_coded($color) "$ALL_VALUES_coded($value),[format {0x%x} $scheme_bits]"
+ }
# don't need entry in TAB_ALTS for this case
}
default {
set first_idx $SZT_ALTS
- foreach {m2} $m2s {
- foreach {value schemeset} $m2 {break}
+ foreach {value_schemes} $altset {
+ foreach {value schemes} $value_schemes {break}
+ set scheme_bits 0
+ foreach {scheme} $schemes {
+ foreach {scheme_idx scheme_bit} $ALL_SCHEMES_coded($scheme) {break}
+ set scheme_bits [expr $scheme_bits | $scheme_bit]
+ }
tab_elem "{[incr cnt -1],$ALL_VALUES_coded($value),[format {0x%x} $scheme_bits]},"
incr SZT_ALTS
- set aliases [mapm21 CV $m2]
foreach {color} $aliases {
- set ALL_ALTSETS_coded($color) "$first_idx,0"
+ set ALL_ALTS_coded($color) "$first_idx,0"
}
}
}
}
tab_row
-#}
+}
tab_finalize "};\n"
tab_initialize $f {set SZT_NAMES} {set color} \
"inkpot_name_t TAB_NAMES\[SZT_NAMES\] = {"
foreach {color} [map1 CV] {
- tab_elem "{$ALL_COLOR_STRINGS_coded($color),$ALL_ALTSETS_coded($color)},"
+ tab_elem "{$ALL_COLOR_STRINGS_coded($color),$ALL_ALTS_coded($color)},"
tab_row
set ALL_NAMES_coded($color) $SZT_NAMES
incr SZT_NAMES
#
# map1 {M} : get {x...}
# map2 {M} : get {y...}
-# map3 {M} : get {r...}
# mapm1 {M} : get {{x {r...}}...}
# mapm2 {M} : get {{y {r...}}...}
# map1m2 {M x} : from x get {y {r...}}
# map2m1 {M y} : from y get {x {r...}}
-# map3m1 {M r_set} : from r_set get {{x {r...}}...}
-# map3m2 {M r_set} : from r_set get {{y {r...}}...}
# mapm21 {M m2} : from m2 get {x...}
# mapm12 {M m1} : from m1 get {y...}
# map12 {M x} : from x get {y...}
if {[info exists MAP_m2_1]} {
puts stderr "flushing crunched MAP data for new values"
upvar #0 MAP_[set M]_m1_2 MAP_m1_2
- upvar #0 MAP_[set M]_m2_3 MAP_m2_3
- upvar #0 MAP_[set M]_m1_3 MAP_m1_3
- upvar #0 MAP_[set M]_3_m1 MAP_3_m1
- upvar #0 MAP_[set M]_3_m2 MAP_3_m2
upvar #0 MAP_[set M]_2_m1 MAP_2_m1
upvar #0 MAP_[set M]_1_m2 MAP_1_m2
array unset MAP_m2_1
array unset MAP_m1_2
- array unset MAP_m2_3
- array unset MAP_m1_3
- array unset MAP_3_m1
- array unset MAP_3_m2
array unset MAP_2_m1
array unset MAP_1_m2
}
puts stderr "MAP_[set M]_12_3 doesn't exist. Use the "map" proc to create and populate."
}
}
- m2_1 - m1_2 - m2_3 - m1_3 {
+ m2_1 - m1_2 {
upvar #0 MAP_[set M]_12_3 MAP_12_3
upvar #0 MAP_[set M]_m2_1 MAP_m2_1
upvar #0 MAP_[set M]_m1_2 MAP_m1_2
- upvar #0 MAP_[set M]_m2_3 MAP_m2_3
- upvar #0 MAP_[set M]_m1_3 MAP_m1_3
- #obtain sorted r_set's and use them as keys to the map
foreach {xy} [array names MAP_12_3] {
foreach {x y} $xy {break}
set r_set [lsort -unique $MAP_12_3($xy)]
set m2 [list $y $r_set]
lappend MAP_m2_1($m2) $x
lappend MAP_m1_2($m1) $y
- lappend MAP_m2_3($m2) $r_set
- lappend MAP_m1_3($m1) $r_set
}
}
1_m2 {
upvar #0 MAP_[set M]_m2_1 MAP_m2_1
upvar #0 MAP_[set M]_1_m2 MAP_1_m2
if {! [info exists MAP_m2_1]} {mapc $M m2_1}
- #set up for finding m2 from x, and for listing x
foreach {m2} [lsort [array names MAP_m2_1]] {
foreach {x} $MAP_m2_1($m2) {
lappend MAP_1_m2($x) $m2
upvar #0 MAP_[set M]_2_m1 MAP_2_m1
if {! [info exists MAP_m2_1]} {mapc $M m2_1}
if {! [info exists MAP_m1_2]} {mapc $M m1_2}
- #set up for finding m1 from y, and for listing y
foreach {m1} [lsort [array names MAP_m1_2]] {
foreach {y} $MAP_m1_2($m1) {
lappend MAP_2_m1($y) $m1
}
}
}
- 3_m2 {
- upvar #0 MAP_[set M]_m2_3 MAP_m2_3
- upvar #0 MAP_[set M]_3_m2 MAP_3_m2
- if {! [info exists MAP_m2_3]} {mapc $M m2_3}
- #set up for finding m2 from r_sets, and for listing r_sets
- foreach {m2} [lsort [array names MAP_m2_3]] {
- foreach {r_set} [lsort -unique $MAP_m2_3($m2)] {
- lappend MAP_3_m2($r_set) $m2
- }
- }
- }
- 3_m1 {
- upvar #0 MAP_[set M]_m1_3 MAP_m1_3
- upvar #0 MAP_[set M]_3_m1 MAP_3_m1
- if {! [info exists MAP_m1_3]} {mapc $M m1_3}
- #set up for finding m1 from r_sets, and for listing r_sets
- foreach {m1} [lsort [array names MAP_m1_3]] {
- foreach {r_set} [lsort -unique $MAP_m1_3($m1)] {
- lappend MAP_3_m1($r_set) $m1
- }
- }
- }
}
}
if {! [info exists MAP_2_m1]} {mapc $M 2_m1}
lsort [array names MAP_2_m1]
}
-proc map3 {M} { ;#get {r...}
- # the set of r is the same in both MAP_3_m1 and MAP_3_m2, so just use one
- upvar #0 MAP_[set M]_3_m1 MAP_3_m1
- if {! [info exists MAP_3_m1]} {mapc $M 3_m1}
- lsort [array names MAP_3_m1]
-}
proc mapm1 {M} { ;#get {{x {r...}}...}
upvar #0 MAP_[set M]_m1_2 MAP_m1_2
if {! [info exists MAP_m1_2]} {mapc $M m1_2}
if {! [info exists MAP_2_m1]} {mapc $M 2_m1}
set MAP_2_m1($y)
}
-proc map3m1 {M r_set} { ;#from r_set get {{x {r...}}...}
- upvar #0 MAP_[set M]_3_m1 MAP_3_m1
- if {! [info exists MAP_3_m1]} {mapc $M 3_m1}
- set MAP_3_m1($r_set)
-}
-proc map3m2 {M r_set} { ;#from r_set get {{y {r...}}...}
- upvar #0 MAP_[set M]_3_m2 MAP_3_m2
- if {! [info exists MAP_3_m2]} {mapc $M 3_m2}
- set MAP_3_m2($r_set)
-}
proc mapm21 {M m2} { ;#from m2 get {x...}
upvar #0 MAP_[set M]_m2_1 MAP_m2_1
if {! [info exists MAP_m2_1]} {mapc $M m2_1}
puts ""
map_debug CV
puts ""
-puts "m1_3 : [array get MAP_CV_m1_3]"
-puts "3_m1 : [array get MAP_CV_3_m1]"
puts "map1 CV : [map1 CV]"
puts " expected : black green grey0 lime noir vert"
puts "map2 CV : [map2 CV]"
puts " expected : 0 1 2"
- puts "map3 CV : [map3 CV]"
- puts " expected : french svg {svg tk x11} {tk x11}"
puts "map1m2 CV green : [map1m2 CV green]"
puts " expected : {1 {tk x11}} {2 svg}"
puts "map2m1 CV 2 : [map2m1 CV 2]"
puts " expected : {green svg}"
- puts "map3m1 CV {svg tk x11} : [map3m1 CV {svg tk x11}]"
- puts " expected : {black {svg tk x11}} {grey0 {svg tk x11}} {lime {svg tk x11}}"
- puts "map3m2 CV {svg tk x11} : [map3m2 CV {svg tk x11}]"
- puts " expected : {0 {svg tk x11}} {1 {svg tk x11}}"
- puts "map3m2 CV {svg} : [map3m2 CV {svg}]"
- puts " expected : {2 {svg}}"
puts "map12 CV green : [map12 CV green]"
puts " expected : 1 2"
puts "map21 CV 1 : [map21 CV 1]"