
(provide (quote db-two-dbs))

(defun db-process-two-databases (db1 db2 process-lone-record-db1 process-lone-record-db2 process-corresponding-records &optional orderer) (byte-code "ÀˆÀ
?… ÒKÓÀ\"‰ˆÀˆÀˆÀˆÔ
\"?…, ÕÖ×H\"ˆØ
\"ˆÔ
\"?…@ ÕÖ×H\"ˆØ
\"ˆÕÙ!ˆÚHÚHÀ	À
ÀÛ!Û!Àˆ†q ?…ÜH	ÜH
Ý
	
#‰ˆÞUƒ° Ý	\"ˆÚH‰ˆ=…­ Ï‰‚×UƒÕ Ý
\"ˆÚH‰ˆ=…Ò Ï‰‚ßUƒÝ	
#ˆÚHÚH‰ˆ=…þ Ï‰ˆ=…Ï‰‚àá\"ˆ‚j ˆ?…>ÝÜH\"ˆÚH‰ˆ=…:Ï‰ˆ‚ˆ?…fÝÜH\"ˆÚH‰ˆ=…bÏ‰ˆ‚?ˆÀ.	)‡" [nil ordering-fields-converted orderer db1 db2 db1-first-link db1-link db2-first-link db2-link record1 record2 record-order done1 done2 process-lone-record-db1 t process-lone-record-db2 process-corresponding-records db-order-records db-convert-ordering-fields database-ordered-p db-message "db-process-two-databases:  sorting %s." 1 database-sort "Databases are properly ordered." 2 database-empty-p 6 funcall -1 0 error "Bad result %s from orderer."] 22))

(defun db-merge-internal (db1 db2 db3 buffer1 buffer2 buffer3) (byte-code "Å ˆÆ!ˆÇÈÉ Ê\"!ˆËÌ!ˆÆ	!ˆÇ ˆËÌ!ˆÆ
!ˆqˆÍÎÏÐ%‡" [buffer1 buffer2 buffer3 db1 db2 delete-other-windows switch-to-buffer split-window-vertically / window-height 2 other-window 1 db-process-two-databases (lambda (record) (byte-code "Â	\"‡" [record db3 database-add-record] 3)) (lambda (record) (byte-code "Â	\"‡" [record db3 database-add-record] 3)) (lambda (record1 record2) (byte-code "ÆÇ	
&
\"‡" [record1 record2 db3 buffer1 buffer2 buffer3 database-add-record db-merge-records] 8))] 16))

(defun db-merge nil "\
Merge two databases chosen with completion among read-in databases." (interactive) (byte-code "ÉˆÑÒ	\"ÉÉÉÉÉÉGÓWƒ\" ÔÕ!‚Z ÓGUƒ4 	@	A@‰‚Z Ö×ØÉÈÉ%\"‰ˆÙ
\"‰ˆ
A‰ˆÖ×ÚÉÈÉ%\"A‰ˆÛ
!@Û!@‰ˆÉˆÜ
!Û!@‰ˆÝÞß
ÝHàÝHá%IˆÉˆâ!p=ƒœ ‚â ãŽqˆä!å =?…· æ!`=…× p=…× ä!=…× å =?…ß ç`\"ˆ*)*â!p=ƒù ‚?èŽqˆä!å =?…æ!`=…4p=…4ä!=…4å =?…<ç`\"ˆ*)*
é
&ˆâ!p=ƒgê
!‚¯ëŽqˆä!å =?…‚æ!`=ê
!…¤p=…¤ä!=…¤å =?…¬ç`\"ˆ*)*ˆâ!p=ƒÉê!‚ìŽqˆä!å =?…äæ!`=ê!…p=…ä!=…å =?…ç`\"ˆ*)*ˆâ!p=ƒ*êÝ!‚qíŽqˆä!å =?…Eæ!`=êÝ!…fp=…fä!=…få =?…nç`\"ˆ*)**.ˆîï!‡" [databases-alist db-databases db1 db2 db3 db1-buffer db2-buffer db3-buffer t nil db1-index target-buffer this-buffer dbc-index target-window track-window-point-p db2-index mapcar (lambda (database) (byte-code "ÁHB‡" [database 1] 2)) 2 error "db-merge requires there to be at least two read-in databases." assoc completing-read "First database to merge?  [? for options] " delq "Second database to merge?  [? for options] " database-clean-data-display-buffers make-similar-database 1 concat "Merge of `" "' and `" "'" get-buffer-create ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) db-merge-internal db-jump-to-record ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) message "Done merging."] 57))

(defun db-merge-records (record1 record2 database buffer1 buffer2 buffer3) (byte-code "Àˆ×	
\"ƒ 	‚|qˆØ	Ä\"ˆqˆØ
Ä\"ˆqˆÙ!ÚÀÀÛ!p=ƒ= ‚ƒ ÜŽqˆÝ!Þ =?…X ß!`=…x p=…x Ý!=…x Þ =?…€ à`\"ˆ*)*ÀÛ!p=ƒš ‚à áŽqˆÝ!Þ =?…µ ß!`=…Õ p=…Õ Ý!=…Õ Þ =?…Ý à`\"ˆ*)*ÀÀ
		âHW…w	H	Hã	\"äåH		H\"
äåH
	H\"‰ˆ×
\"ƒDæ	
À$‚lç	\"ØÄ	#ˆæ	è
ç	\"%À$)ˆ	T‰	ˆ‚õ ˆ.	‡" [nil record1 record2 buffer1 t buffer2 buffer3 record3 database fieldno contents1 contents2 db1-displayspecs target-buffer this-buffer dbf-displayspecs target-window track-window-point-p db1-displayspec db2-displayspecs db2-displayspec recordfieldspec fieldname equal display-record make-record 0 get-buffer-create ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) 10 database-recordfieldspec db-funcall-maybe 3 record-set-field-from-index fieldnumber->fieldname choose-value] 36))

(defun choose-value (contents1 contents2 fieldname displayspec1 displayspec2) (byte-code "ÍÎÏ
ÐH	ƒ 	ÑÒÓ�*‚ ;ƒ' ‚( Ô+#!ƒ2 ‚} ÍÎÕÐH		ƒP 	
ÑÖ×�*‚Q ;ƒ[ ‚\\ Ô+#!ƒg 	‚} Ø
ÙHÙH\"ƒz Ú
\"‚} ÛÜ!‡" [fieldname adc-a->d displayspec1 adc-fieldtext contents1 adc-result vararg-common-1 vararg-common-2 displayspec2 contents2 vararg-common-1 vararg-common-2 t y-or-n-p format "Use first value for %s field? [%s] " 11 err (byte-code "Â	\"‡" [vararg-common-1 vararg-common-2 funcall] 3) ((wrong-number-of-arguments (byte-code "Ã	ÂÂ$‡" [vararg-common-1 vararg-common-2 nil funcall] 5)) (error (byte-code "À… Â	@	A\"ˆ‚  ‡" [t err signal] 4))) "<ERROR>" "Use second value for %s field? [%s] " (byte-code "Â	\"‡" [vararg-common-1 vararg-common-2 funcall] 3) ((wrong-number-of-arguments (byte-code "Ã	ÂÂ$‡" [vararg-common-1 vararg-common-2 nil funcall] 5)) (error (byte-code "À… Â	@	A\"ˆ‚  ‡" [t err signal] 4))) equal 12 read-fieldvalue-from-minibuffer error "displayspecs have different display->actual"] 9))

(defun read-fieldvalue-from-minibuffer (fieldname displayspec) (byte-code "	ÆHÇÈÉ\"!ƒ 
ÊËÌ�*‚ 
*‡" [dac-d->a displayspec dac-fieldtext fieldname vararg-common-1 vararg-common-2 12 read-from-minibuffer format "Enter value for %s field: " err (byte-code "Â	\"‡" [vararg-common-1 vararg-common-2 funcall] 3) ((wrong-number-of-arguments (byte-code "Ã	ÂÂÂ%‡" [vararg-common-1 vararg-common-2 nil funcall] 6)) (error (byte-code "À… Â	@	A\"ˆ‚  ‡" [t err signal] 4)))] 5))

(defun databases-compatible (db1 db2) "\
Return t if the database records have the same field names and type, nil otherwise." (byte-code "Â	\"‡" [db1 db2 recordfieldspecs-compatible] 3))

(defun database-compare-hack (db1 db2) (byte-code "Ë	\"?… ÌÍ!ˆÎH† Ï	ÎH† ÐÑÒ
P!ÑÒP!ÑÓ
ÔR!Ñ!p=ƒF Õ ‚Œ ÖŽqˆ×!		Ø =?…a Ù	!`=
Õ 
…� p=…� 	×!=…� 	Ø =?…‰ Ú	`\"ˆ*)*ˆÑ!p=ƒ£ Õ ‚é ÛŽqˆ×!		Ø =?…¾ Ù	!`=
Õ 
…Þ p=…Þ 	×!=…Þ 	Ø =?…æ Ú	`\"ˆ*)*ˆÑ!p=ƒÕ ‚GÜŽqˆ×!		Ø =?…Ù	!`=
Õ 
…<p=…<	×!=…<	Ø =?…DÚ	`\"ˆ*)*ˆÝ	Þßà%-‡" [db1 db2 name1 name2 loners1 loners2 discrep target-buffer this-buffer target-window track-window-point-p databases-compatible error "Incompatible databases." 1 "First Database" "Second Database" get-buffer-create "Loners for " "Discrepancies between " "and " erase-buffer ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) db-process-two-databases (lambda (record) (byte-code "Ç	!p
=ƒ È\"‚Q ÉŽqˆÊ!Ë =?…) Ì!`=È\"…G p=…G Ê!=…G Ë =?…N Í`\"ˆ*)*‡" [target-buffer loners1 this-buffer record db1 target-window track-window-point-p get-buffer-create print-record ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 12)) (lambda (record) (byte-code "Ç	!p
=ƒ È\"‚Q ÉŽqˆÊ!Ë =?…) Ì!`=È\"…G p=…G Ê!=…G Ë =?…N Í`\"ˆ*)*‡" [target-buffer loners2 this-buffer record db2 target-window track-window-point-p get-buffer-create print-record ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 12)) (lambda (record1 record2) (byte-code "È	\"?…b É!p
=ƒ Ê	#‚a ËŽ
qˆÌ
!Í =?…5 Î!`=Ê	#…V p
=…V Ì
!=…V Í =?…^ Ï`\"ˆ*)*‡" [record1 record2 target-buffer discrep this-buffer db1 target-window track-window-point-p equal get-buffer-create print-compare-records ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 13))] 38))
