Changeset 3656
- Timestamp:
- 07/28/08 14:31:09 (4 months ago)
- Files:
-
- trunk/projects/bos/m2/allocation-cache.lisp (modified) (3 diffs)
- trunk/projects/bos/m2/allocation.lisp (modified) (1 diff)
- trunk/projects/bos/m2/bitmap.lisp (modified) (5 diffs)
- trunk/projects/bos/m2/bos.m2.asd (modified) (1 diff)
- trunk/projects/bos/m2/cert-daemon.lisp (modified) (1 diff)
- trunk/projects/bos/m2/config.lisp (modified) (2 diffs)
- trunk/projects/bos/m2/export.lisp (modified) (2 diffs)
- trunk/projects/bos/m2/geo-utm.lisp (modified) (8 diffs)
- trunk/projects/bos/m2/geometry.lisp (modified) (2 diffs)
- trunk/projects/bos/m2/import.lisp (modified) (1 diff)
- trunk/projects/bos/m2/initialization-subsystem.lisp (modified) (4 diffs)
- trunk/projects/bos/m2/m2-pdf.lisp (modified) (1 diff)
- trunk/projects/bos/m2/m2-store.lisp (modified) (1 diff)
- trunk/projects/bos/m2/m2.lisp (modified) (16 diffs)
- trunk/projects/bos/m2/mail-generator.lisp (modified) (7 diffs)
- trunk/projects/bos/m2/map.lisp (modified) (5 diffs)
- trunk/projects/bos/m2/news.lisp (modified) (1 diff)
- trunk/projects/bos/m2/packages.lisp (modified) (7 diffs)
- trunk/projects/bos/m2/poi.lisp (modified) (4 diffs)
- trunk/projects/bos/m2/tiled-index.lisp (modified) (2 diffs)
- trunk/projects/bos/m2/utils.lisp (modified) (1 diff)
- trunk/projects/bos/m2/warm-kml-cache.lisp (modified) (4 diffs)
- trunk/projects/bos/test/allocation.lisp (modified) (1 diff)
- trunk/projects/bos/test/bos.test.asd (modified) (1 diff)
- trunk/projects/bos/test/fixtures.lisp (modified) (3 diffs)
- trunk/projects/bos/test/geo-utm.lisp (modified) (1 diff)
- trunk/projects/bos/test/geometry.lisp (modified) (1 diff)
- trunk/projects/bos/test/package.lisp (modified) (2 diffs)
- trunk/projects/bos/test/suites.lisp (modified) (1 diff)
- trunk/projects/bos/test/web/drakma-requests.lisp (modified) (1 diff)
- trunk/projects/bos/test/web/quad-tree.lisp (modified) (1 diff)
- trunk/projects/bos/test/web/sat-tree.lisp (modified) (1 diff)
- trunk/projects/bos/web/allocation-area-handlers.lisp (modified) (8 diffs)
- trunk/projects/bos/web/allocation-cache-handlers.lisp (modified) (1 diff)
- trunk/projects/bos/web/boi-handlers.lisp (modified) (1 diff)
- trunk/projects/bos/web/cms-links.lisp (modified) (2 diffs)
- trunk/projects/bos/web/config.lisp (modified) (1 diff)
- trunk/projects/bos/web/contract-handlers.lisp (modified) (1 diff)
- trunk/projects/bos/web/contract-image-handler.lisp (modified) (2 diffs)
- trunk/projects/bos/web/contract-tree.lisp (modified) (9 diffs)
- trunk/projects/bos/web/countries.lisp (modified) (1 diff)
- trunk/projects/bos/web/daily.lisp (modified) (2 diffs)
- trunk/projects/bos/web/dictionary.lisp (modified) (8 diffs)
- trunk/projects/bos/web/geo-coord.lisp (modified) (1 diff)
- trunk/projects/bos/web/kml-handlers.lisp (modified) (14 diffs)
- trunk/projects/bos/web/kml-utils.lisp (modified) (1 diff)
- trunk/projects/bos/web/map-browser-handler.lisp (modified) (3 diffs)
- trunk/projects/bos/web/map-handlers.lisp (modified) (2 diffs)
- trunk/projects/bos/web/news-handlers.lisp (modified) (2 diffs)
- trunk/projects/bos/web/news-tags.lisp (modified) (2 diffs)
- trunk/projects/bos/web/packages.lisp (modified) (1 diff)
- trunk/projects/bos/web/poi-handlers.lisp (modified) (1 diff)
- trunk/projects/bos/web/quad-tree.lisp (modified) (8 diffs)
- trunk/projects/bos/web/reports-xml-handler.lisp (modified) (1 diff)
- trunk/projects/bos/web/rss.lisp (modified) (1 diff)
- trunk/projects/bos/web/sat-tree.lisp (modified) (7 diffs)
- trunk/projects/bos/web/spendenquittung.lisp (modified) (2 diffs)
- trunk/projects/bos/web/sponsor-handlers.lisp (modified) (4 diffs)
- trunk/projects/bos/web/startup.lisp (modified) (3 diffs)
- trunk/projects/bos/web/tags.lisp (modified) (4 diffs)
- trunk/projects/bos/web/utf-8.lisp (modified) (2 diffs)
- trunk/projects/bos/web/utils.lisp (modified) (11 diffs)
- trunk/projects/bos/web/web-macros.lisp (modified) (2 diffs)
- trunk/projects/bos/web/web-utils.lisp (modified) (3 diffs)
- trunk/projects/bos/web/webserver.lisp (modified) (5 diffs)
- trunk/projects/bos/web/website-language.lisp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/projects/bos/m2/allocation-cache.lisp
r3638 r3656 220 220 (misses-perc (round (* 100.0 (/ (float misses) total))))) 221 221 (format t "cache hits:~15T~5D~25T~3D%~%" hits hits-perc) 222 (format t "cache misses:~15T~5D~25T~3D%~3%" misses misses-perc) 222 (format t "cache misses:~15T~5D~25T~3D%~3%" misses misses-perc) 223 223 (format t "CACHE ENTRIES~2%") 224 224 (format t "number of m2 not in cache: ~A~2%" (ignored-size *allocation-cache*)) … … 232 232 (format t "~5D~10T~5D~%" size count)))))) 233 233 234 (defun rebuild-allocation-cache () 234 (defun rebuild-allocation-cache () 235 235 (assert (or (in-transaction-p) (eql :snapshot (store-state *store*))) nil 236 "rebuild-allocation-cache may only be called in a transaction context") 236 "rebuild-allocation-cache may only be called in a transaction context") 237 237 (unless *allocation-cache* 238 238 (setq *allocation-cache* (make-allocation-cache))) … … 257 257 (index-push (length m2s) (make-cache-entry :area allocation-area 258 258 :region m2s))))) 259 trunk/projects/bos/m2/allocation.lisp
r3639 r3656 347 347 (m2 (ensure-m2 x y)) 348 348 (result (search-adjacent n m2 #'allocatable-p))) 349 (when result350 (assert (alexandria:setp result :test #'equal))351 (assert (= n (length result)))352 (decf (allocation-area-free-m2s area) n)353 (return result))354 (when (> (get-internal-real-time) deadline)355 (return nil)))))))349 (when result 350 (assert (alexandria:setp result :test #'equal)) 351 (assert (= n (length result))) 352 (decf (allocation-area-free-m2s area) n) 353 (return result)) 354 (when (> (get-internal-real-time) deadline) 355 (return nil))))))) 356 356 357 357 (defun allocate-m2s-for-sale (n) trunk/projects/bos/m2/bitmap.lisp
r2098 r3656 68 68 nil))) 69 69 (loop for contract in contracts 70 do (when (or (not seen)71 (not (gethash contract seen)))72 (when seen (setf (gethash contract seen) t))73 (let ((free (copy-seq (cdr (coerce colors 'list)))))74 (dolist (m2 (contract-m2s contract))75 (flet ((doit (x y)76 (let ((c (get-pixel x y)))77 (when c78 (setf free (delete c free))))))79 (doit (+ (m2-x m2) 0) (+ (m2-y m2) -1))80 (doit (+ (m2-x m2) -1) (+ (m2-y m2) 0))81 (doit (+ (m2-x m2) +1) (+ (m2-y m2) 0))82 (doit (+ (m2-x m2) 0) (+ (m2-y m2) +1))))83 (let ((color (or (car free)84 (elt colors (1+ (random 15))))))85 (dolist (m2 (contract-m2s contract))86 (set-pixel (m2-x m2) (m2-y m2) color)))))))70 do (when (or (not seen) 71 (not (gethash contract seen))) 72 (when seen (setf (gethash contract seen) t)) 73 (let ((free (copy-seq (cdr (coerce colors 'list))))) 74 (dolist (m2 (contract-m2s contract)) 75 (flet ((doit (x y) 76 (let ((c (get-pixel x y))) 77 (when c 78 (setf free (delete c free)))))) 79 (doit (+ (m2-x m2) 0) (+ (m2-y m2) -1)) 80 (doit (+ (m2-x m2) -1) (+ (m2-y m2) 0)) 81 (doit (+ (m2-x m2) +1) (+ (m2-y m2) 0)) 82 (doit (+ (m2-x m2) 0) (+ (m2-y m2) +1)))) 83 (let ((color (or (car free) 84 (elt colors (1+ (random 15)))))) 85 (dolist (m2 (contract-m2s contract)) 86 (set-pixel (m2-x m2) (m2-y m2) color))))))) 87 87 (cl-gd:do-rows (y) 88 88 (cl-gd:do-pixels-in-row (x) … … 127 127 (if step 128 128 (loop for i from 0 to (ceiling (length (all-contracts)) step) 129 do130 (let ((filename131 (merge-pathnames (format nil "test-~3,'0D.png" i)132 directory)))133 (print filename)134 (force-output)135 (write-allocation-bitmap filename (* i step))))129 do 130 (let ((filename 131 (merge-pathnames (format nil "test-~3,'0D.png" i) 132 directory))) 133 (print filename) 134 (force-output) 135 (write-allocation-bitmap filename (* i step)))) 136 136 (write-allocation-bitmap 137 137 (merge-pathnames "test.png" directory)))) … … 141 141 (defun test-allocation 142 142 (&key (initial-random-state *initial-random-state*) 143 (limit nil))143 (limit nil)) 144 144 (let ((*random-state* (make-random-state initial-random-state))) 145 145 (when *bitmap* … … 154 154 (let* ((limit 0.0001) 155 155 (n (max 1 (round (/ 0.5 (+ (random (- 1.0 limit)) limit)))))) 156 156 157 157 (format t " ~D" n) 158 158 (force-output) … … 162 162 (make-one-contract)) 163 163 (loop 164 (make-one-contract)))))))164 (make-one-contract))))))) 165 165 166 166 #+(or) trunk/projects/bos/m2/bos.m2.asd
r3565 r3656 1 (in-package :cl-user)1 (in-package :cl-user) 2 2 3 (asdf:defsystem :bos.m24 :depends-on (:bknr.datastore :bknr.modules :cl-smtp :cl-mime5 :kmrcl :iterate :arnesi6 :cl-pdf :screamer :cl-fad)7 :components ((:file "packages")8 (:file "geo-utm" :depends-on ("packages"))9 (:file "geometry" :depends-on ("packages" "m2-store"))10 (:file "config" :depends-on ("packages"))11 (:file "utils" :depends-on ("config"))12 (:file "news" :depends-on ("poi"))13 (:file "tiled-index" :depends-on ("config"))14 (:file "mail-generator" :depends-on ("config"))15 (:file "make-certificate" :depends-on ("config"))16 (:file "initialization-subsystem" :depends-on ("packages"))17 (:file "m2-store" :depends-on ("packages" "utils"))18 (:file "m2" :depends-on ("initialization-subsystem"19 "tiled-index"20 "utils"21 "make-certificate"22 "mail-generator"23 "geo-utm"24 "geometry"))25 (:file "m2-pdf" :depends-on ("m2"))26 (:file "contract-expiry" :depends-on ("m2"))27 (:file "allocation" :depends-on ("m2"))28 (:file "allocation-cache" :depends-on ("packages" "geometry"))29 (:file "poi" :depends-on ("utils" "allocation"))30 (:file "bitmap" :depends-on ("allocation"))31 (:file "import" :depends-on ("m2"))32 (:file "map" :depends-on ("m2" "allocation" "geometry"))33 (:file "export" :depends-on ("m2"))34 (:file "cert-daemon" :depends-on ("config"))))3 (asdf:defsystem :bos.m2 4 :depends-on (:bknr.datastore :bknr.modules :cl-smtp :cl-mime 5 :kmrcl :iterate :arnesi 6 :cl-pdf :screamer :cl-fad) 7 :components ((:file "packages") 8 (:file "geo-utm" :depends-on ("packages")) 9 (:file "geometry" :depends-on ("packages" "m2-store")) 10 (:file "config" :depends-on ("packages")) 11 (:file "utils" :depends-on ("config")) 12 (:file "news" :depends-on ("poi")) 13 (:file "tiled-index" :depends-on ("config")) 14 (:file "mail-generator" :depends-on ("config")) 15 (:file "make-certificate" :depends-on ("config")) 16 (:file "initialization-subsystem" :depends-on ("packages")) 17 (:file "m2-store" :depends-on ("packages" "utils")) 18 (:file "m2" :depends-on ("initialization-subsystem" 19 "tiled-index" 20 "utils" 21 "make-certificate" 22 "mail-generator" 23 "geo-utm" 24 "geometry")) 25 (:file "m2-pdf" :depends-on ("m2")) 26 (:file "contract-expiry" :depends-on ("m2")) 27 (:file "allocation" :depends-on ("m2")) 28 (:file "allocation-cache" :depends-on ("packages" "geometry")) 29 (:file "poi" :depends-on ("utils" "allocation")) 30 (:file "bitmap" :depends-on ("allocation")) 31 (:file "import" :depends-on ("m2")) 32 (:file "map" :depends-on ("m2" "allocation" "geometry")) 33 (:file "export" :depends-on ("m2")) 34 (:file "cert-daemon" :depends-on ("config")))) trunk/projects/bos/m2/cert-daemon.lisp
r3478 r3656 42 42 (fill-form fdf-pathname 43 43 (if (probe-file language-specific-template-pathname) 44 language-specific-template-pathname45 template-pathname)44 language-specific-template-pathname 45 template-pathname) 46 46 m2-pdf-pathname 47 47 output-pathname))) trunk/projects/bos/m2/config.lisp
r3160 r3656 32 32 (defparameter *pdf-base-directory* (merge-pathnames #p"certs/" (user-homedir-pathname))) 33 33 (defparameter *cert-mail-directory* (merge-pathnames "mail-spool/" *pdf-base-directory*) 34 "Verzeichnis fÃŒr per Post zu versendende Urkunden-FDF-Dateien")34 "Verzeichnis fÃŒr per Post zu versendende Urkunden-FDF-Dateien") 35 35 (defparameter *cert-download-directory* (merge-pathnames "download-spool/" *pdf-base-directory*) 36 "Verzeichnis fÃŒr Urkunden-FDF-Dateien, aus denen36 "Verzeichnis fÃŒr Urkunden-FDF-Dateien, aus denen 37 37 Download-Urkunden erzeugt werden sollen") 38 38 (defparameter *receipt-mail-directory* (merge-pathnames "receipt-mail-spool/" *pdf-base-directory*) 39 "Verzeichnis fÃŒr per Post zu versendende Urkunden-FDF-Dateien")39 "Verzeichnis fÃŒr per Post zu versendende Urkunden-FDF-Dateien") 40 40 (defparameter *receipt-download-directory* (merge-pathnames "receipt-download-spool/" *pdf-base-directory*) 41 "Verzeichnis fÃŒr Urkunden-FDF-Dateien, aus denen41 "Verzeichnis fÃŒr Urkunden-FDF-Dateien, aus denen 42 42 Download-Urkunden erzeugt werden sollen") 43 43 44 44 (defparameter *cert-mail-template* (merge-pathnames #p"urkunde-print.pdf" 45 *pdf-base-directory*))45 *pdf-base-directory*)) 46 46 (defparameter *cert-download-template* (merge-pathnames #p"urkunde-download.pdf" 47 *pdf-base-directory*))47 *pdf-base-directory*)) 48 48 (defparameter *receipt-mail-template* (merge-pathnames #p"spendenbescheinigung-print.pdf" 49 49 *pdf-base-directory*)) 50 50 (defparameter *receipt-download-template* (merge-pathnames #p"spendenbescheinigung-download.pdf" 51 *pdf-base-directory*))51 *pdf-base-directory*)) 52 52 (defparameter *cert-daemon-poll-seconds* 2 53 53 "Wartezeit zwischen zwei Directory-Scans des Urkunden-Daemons") … … 74 74 ;; Einschalten des Mail-Versands (normalerweise aus) 75 75 (defvar *enable-mails* nil) 76 trunk/projects/bos/m2/export.lisp
r1131 r3656 92 92 (with-element "polygon" 93 93 (map nil 94 (lambda (vertex)95 (export-point (car vertex) (cdr vertex)))96 vertices))94 (lambda (vertex) 95 (export-point (car vertex) (cdr vertex))) 96 vertices)) 97 97 (with-element "stripes" 98 98 (map-sorted #'export-stripe #'stripe< stripes))))) … … 116 116 (defun export-database (pathname 117 117 &key (indentation 2) 118 (include-database-id *include-database-id*))118 (include-database-id *include-database-id*)) 119 119 (with-open-file (target-stream 120 120 pathname trunk/projects/bos/m2/geo-utm.lisp
r3041 r3656 91 91 (+ (+ 1 (/ (expt n 2) 4)) (/ (expt n 4) 64)))) 92 92 (y_ (/ y alpha_)) 93 beta_ gamma_ delta_ epsilon_) 93 beta_ gamma_ delta_ epsilon_) 94 94 (setq beta_ 95 95 (+ … … 131 131 (* (* t2 t2) t2))) 132 132 (l4 (expt (abs l) 4)) 133 (l5 (* l l4)) 133 (l5 (* l l4)) 134 134 (l6 (* l l5)) 135 135 (l7 (* l l6)) … … 142 142 (expt-cos-phi-6 (* expt-cos-phi-5 cos-phi)) 143 143 (expt-cos-phi-7 (* expt-cos-phi-6 cos-phi)) 144 (expt-cos-phi-8 (* expt-cos-phi-7 cos-phi))) 144 (expt-cos-phi-8 (* expt-cos-phi-7 cos-phi))) 145 145 (values 146 146 (+ … … 221 221 (setq x8poly 222 222 (+ (+ (+ 1385.0 (* 3633.0 tf2)) (* 4095.0 tf4)) 223 (* 1575 (* tf4 tf2)))) 223 (* 1575 (* tf4 tf2)))) 224 224 (let* ((x4 (expt (abs x) 4)) 225 225 (x5 (* x4 x)) … … 246 246 ((double-float -90d0 90d0) lat) 247 247 (float-pair float-pair)) 248 (let ((zone (+ (floor (+ lon 180.0) 6.0) 1))) 248 (let ((zone (+ (floor (+ lon 180.0) 6.0) 1))) 249 249 (multiple-value-bind (x y) 250 250 (map-lat-lon-to-xy (deg-to-rad lat) (deg-to-rad lon) (utmcentral-meridian zone)) … … 255 255 (aref float-pair 1) y) 256 256 (values float-pair zone (minusp lat))))) 257 257 258 258 (defun utm-x-y-to-lon-lat* (x y zone southhemi-p float-pair) 259 259 "Returns list (LON LAT)." 260 260 (declare (double-float x y) (float-pair float-pair)) 261 (let ((cmeridian (utmcentral-meridian zone))) 261 (let ((cmeridian (utmcentral-meridian zone))) 262 262 (decf x 500000.0) 263 263 (dividef x utmscale-factor) … … 265 265 (dividef y utmscale-factor) 266 266 (multiple-value-bind (lat lon) 267 (map-xyto-lat-lon x y cmeridian) 267 (map-xyto-lat-lon x y cmeridian) 268 268 (setf (aref float-pair 0) (rad-to-deg lon) 269 269 (aref float-pair 1) (rad-to-deg lat)) 270 270 float-pair)))))) 271 271 272 (defun lon-lat-to-utm-x-y (lon lat) 272 (defun lon-lat-to-utm-x-y (lon lat) 273 273 (multiple-value-bind (float-pair zone southhemi-p) 274 274 (lon-lat-to-utm-x-y* (float lon 0d0) (float lat 0d0) (make-float-pair)) … … 277 277 278 278 (defun utm-x-y-to-lon-lat (x y zone southhemi-p) 279 "Returns list (LON LAT)." 279 "Returns list (LON LAT)." 280 280 (let ((lon-lat (utm-x-y-to-lon-lat* (float x 0d0) (float y 0d0) 281 281 zone southhemi-p (make-float-pair)))) 282 282 (list (aref lon-lat 0) (aref lon-lat 1)))) 283 283 284 (eval-when (:compile-toplevel :load-toplevel :execute) 284 (eval-when (:compile-toplevel :load-toplevel :execute) 285 285 (setq *read-default-float-format* *initial-read-default-float-format*)) 286 trunk/projects/bos/m2/geometry.lisp
r3588 r3656 447 447 (unless (visited-p neighbour) 448 448 (push neighbour stack))) 449 (traverse stack))))) 449 (traverse stack))))) 450 450 (traverse (list (first nodes))) 451 451 (= (length nodes) … … 462 462 else do (princ ".")) 463 463 do (terpri))))) 464 trunk/projects/bos/m2/import.lisp
r1131 r3656 70 70 (when y (assert (eql (parse-integer y) (m2-y m2)))) 71 71 (when utm-x (assert (= (read-from-string utm-x) (m2-utm-x m2)))) 72 (when utm-y (assert (= (read-from-string utm-y) (m2-utm-y m2))))72 (when utm-y (assert (= (read-from-string utm-y) (m2-utm-y m2)))) 73 73 (push m2 (importer-m2s handler)))) 74 74 ((string= qname "allocation-area") trunk/projects/bos/m2/initialization-subsystem.lisp
r3638 r3656 16 16 have been called." 17 17 (labels ((ignorant-tie-breaker (choices reverse-partial-solution) 18 (declare (ignore reverse-partial-solution)) 18 (declare (ignore reverse-partial-solution)) 19 19 ;; we dont care about making any particular choice here - 20 20 ;; this would be different for computing the class … … 27 27 (check-type init-function symbol) 28 28 (dolist (dependency dependencies) 29 (check-type dependency symbol)) 29 (check-type dependency symbol)) 30 30 (let (new-transient-init-functions 31 31 new-transient-init-constraints) … … 34 34 ;; we want to be able to abort without changes 35 35 (*transient-init-functions* *transient-init-functions*) 36 (*transient-init-constraints* *transient-init-constraints*)) 36 (*transient-init-constraints* *transient-init-constraints*)) 37 37 (pushnew init-function *transient-init-functions*) 38 38 (dolist (dependency dependencies) … … 74 74 ;; restored. 75 75 (invoke-transient-init-functions)) 76 trunk/projects/bos/m2/m2-pdf.lisp
r3644 r3656 6 6 (with-output-to-string (s) 7 7 (apply #'geometry:format-lon-lat s coord))))) 8 (pdf:draw-left-text x y part font 8 300)9 (incf y 10))))8 (pdf:draw-left-text x y part font 8 300) 9 (incf y 10)))) 10 10 11 11 (defun make-m2-pdf (contract &key print) trunk/projects/bos/m2/m2-store.lisp
r3537 r3656 14 14 (setf (slot-value store 'tile-index) 15 15 (indexed-class-index-named (find-class 'm2) 'm2-index))) 16 trunk/projects/bos/m2/m2.lisp
r3638 r3656 1 2 1 (in-package :bos.m2) 3 2 4 ;;; 3 ;;; 5 4 (defun get-map-tile (x y) 6 5 (get-tile (m2-store-tile-index *m2-store*) x y)) … … 190 189 (eq sponsor (contract-sponsor contract)))) 191 190 (let ((consistent t)) 192 (unless (every #'contract-points-to-sponsor (sponsor-contracts sponsor)) 191 (unless (every #'contract-points-to-sponsor (sponsor-contracts sponsor)) 193 192 (let ((*print-length* 5)) 194 193 (warn "~s of ~s dont point to it by CONTRACT-SPONSOR~ … … 302 301 (error "invalid contract id (wrong type) ~A" id))))) 303 302 304 (defun publish-contract-change (contract &key type) 303 (defun publish-contract-change (contract &key type) 305 304 (publish-rect-change *rect-publisher* (contract-bounding-box contract) contract :type type)) 306 305 … … 379 378 (collect (list (m2-x m2) (m2-y m2)))))) 380 379 381 (defun contracts-bounding-box (&optional (contracts (all-contracts))) 380 (defun contracts-bounding-box (&optional (contracts (all-contracts))) 382 381 (geometry:with-bounding-box-collect (collect) 383 382 (dolist (contract contracts) … … 461 460 (dolist (m2 (contract-m2s contract) contracts) 462 461 (let ((x (m2-x m2)) 463 (y (m2-y m2))) 462 (y (m2-y m2))) 464 463 (push-neighbour (1- x) y) 465 464 (push-neighbour x (1- y)) … … 570 569 #'eq))) 571 570 (let ((consistent t)) 572 (unless (every #'m2-points-to-contract (contract-m2s contract)) 571 (unless (every #'m2-points-to-contract (contract-m2s contract)) 573 572 (let ((*print-length* 5)) 574 573 (warn "~s of ~s dont point to it by M2-CONTRACT~ … … 581 580 (when (null (contract-m2s contract)) 582 581 (warn "~s has no m2s" contract) 583 (setq consistent nil)) 582 (setq consistent nil)) 584 583 (when (not (contract-connected-p contract)) 585 584 (warn "~s has m2s that are not connected" contract) … … 650 649 (values 0 0)))) 651 650 652 (defun last-paid-contracts () 651 (defun last-paid-contracts () 653 652 (remove-if (lambda (contract) 654 653 (or (null contract) … … 696 695 (force-output) 697
