
(def-db-struct (database (:constructor old-make-database)) print-name first-link no-of-records file file-local-variables aux-file data-display-buffers default-format-file omit-functions no-of-fields fieldnames fieldname-alist recordfieldspecs field-priorities omitted-to-end-p internal-file-layout-p record-sepinfo field-sepinfo alternative-sepinfo read-record-from-region write-region-from-record sub-fieldsep-string sub-recordsep-string quotation-char quotation-char-regexp quoted-regexp quoted-strings actual-quoted-regexp substitutions modified-p modifiable-p locals)

(defvar databases-made 0)

(defun make-database nil (byte-code "Â ÃÄ IˆÅÄ IˆÆÄ Iˆ	T‰ˆÇÈÉ	!PIˆ)‡" [db databases-made old-make-database 17 make-sepinfo 18 19 1 "Unnamed Database " int-to-string] 9))

(defun make-similar-database (original) (byte-code "Å	!ÂˆÆÇ	ÆHPIˆÂˆÈÂIˆÉÊIˆË	ËHÌPIˆÂˆÍÎÏÂÂ#Ã#CIˆÂˆB‰ˆ)‡" [result original nil t db-databases copy-sequence 1 "Copy of " 2 3 0 4 "-COPY" 7 db-setup-data-display-buffer choose-format-file] 8))

(defun database-last-link (database) (byte-code "ÁHÂH‡" [database 2 1] 2))

(proclaim-inline database-last-link)

(defun database-empty-p (database) (byte-code "ÁH?‡" [database 2] 2))

(proclaim-inline database-empty-p)

(defun database-unnamed-p (database) (byte-code "	ÂH?† ÃÄ\"† ÃÅÆÇG^O\")‡" [print-name dbc-database 1 equal "" "Unnamed Database " 0 17] 7))

(proclaim-inline database-unnamed-p)

(defun database-list-of-links (database) (byte-code "ÃÄKÁÁÂ%‡" [database nil t maplinks identity] 7))

(proclaim-inline database-list-of-links)

(defun database-make-local (symbol database &optional value) "\
Declare a database-local variable named by SYMBOL for DATABASE.
Each such variable should only be declared once.
If optional argument VALUE is specified, the variable is set to it." (byte-code "Ä	
ÅH\"ƒ ÆÇ	
ÈH#‚ 
Å	B
ÅHBI)‡" [lookup symbol database value assq 32 error "%s is already defined as a local variable in %s." 1] 7))

(defun database-set-local (symbol database value &optional no-error) "\
Set the value of database-local variable SYMBOL, in DATABASE, to VALUE.
SYMBOL must have been declared by a previous call to `database-make-local'
unless optional argument NO-ERROR is supplied, in which case the function
does that automatically." (byte-code "Å	
ÆH\"ƒ Ç\"‚% ƒ È	
#‚% ÉÊ	
ËH#)‡" [lookup symbol database value no-error assq 32 setcdr database-make-local error "%s is not a database-local variable for %s." 1] 8))

(defun database-get-local (symbol database &optional no-error) "\
Return the value of database-local variable SYMBOL for DATABASE.
SYMBOL must have been declared by a previous call to `database-make-local'
unless optional argument NO-ERROR is supplied, in which case nil is returned." (byte-code "Æ	
ÇH\"ƒ A‚ ƒ Ä‚ ÈÉ	
ÊH#)‡" [lookup symbol database no-error nil t assq 32 error "%s is not a database-local variable for %s." 1] 6))

(defun database-local-p (symbol database) "\
Return non-nil if SYMBOL is a database-local variable for DATABASE." (byte-code "Â	ÃH\"‡" [symbol database assq 32] 4))

(defun database-set-fieldnames-to-list (database fieldnames-list) "\
Set DATABASE's fieldnames and record field types according to FIELDNAMES-LIST.
Users should never call `database-set-fieldnames' directly.
FIELDNAMES-LIST is a list of fieldnames (symbols); each list element may
instead be a cons of fieldname and type to specify the field's
recordfieldtype as well.  If no type is specified for a field, the value of
`db-default-field-type' is used.

This function sets several database slots besides the fieldnames slot, but
has no effect if the fieldnames slot of the database is already set." (byte-code "ÂH?… Ã	\"‡" [database fieldnames-list 11 db-set-fieldname-vars] 3))

(defun database-index-in-range (index database) (byte-code "ÂV… 	ÃHX‡" [index database 0 3] 3))

(proclaim-inline database-index-in-range)

(defun database-normalize-index (index database) (byte-code "Ã	
ÄH\"Å!ƒ 
ÄH‚ )‡" [remainder index database % 3 zerop] 4))

(proclaim-inline database-normalize-index)

(defun database-link (database n) (byte-code "Ã	ÂÂ$@‡" [database n nil database-link-and-index] 5))

(proclaim-inline database-link)

(defun database-full-fieldsep-string (database) (byte-code "ÃHƒ
 Á‚ ÄH
ÅH)‡" [database nil field-sepinfo 21 18 4] 2))

(defun database-full-recordsep-string (database) (byte-code "	ÃH	ÄHƒ ÅH‚ 	ÆH
ÇHÅH
ÈHQ))‡" [record-sepinfo database field-sepinfo 17 21 4 18 8 1] 4))

(def-db-struct (link (:constructor old-make-link)) prev next markedp omittedp summary record)

(defun make-link nil (byte-code "ÀÁ!‡" [error "Should use make-link-from-record instead."] 2))

(make-obsolete (quote make-link) (quote make-link-from-record))

(fset (quote link-set-record-slot) (symbol-function (quote link-set-record)))

(fmakunbound (quote link-set-record))

(defun link-set-record (link result) (byte-code "Ã	IˆÄÂI‡" [link result nil 6 5] 3))

(proclaim-inline link-set-record)

(defun link-two (link1 link2) (byte-code "Â	Iˆ	ÃI‡" [link1 link2 2 1] 3))

(proclaim-inline link-two)

(defun make-link-from-record (record) (byte-code "Â Ã	Iˆ)‡" [result record old-make-link 6] 4))

(defun record->link-and-index (record database) (byte-code "È
ÉH	ÊÆ	…? …? ËH=…( D‰ˆ	ÊH‰ˆÉHT‰ˆ	=…; È‰ˆ‚ ˆÈ,ˆ)‡" [result first-link database maplinks-link maplinks-index maplinks-not-done t record nil 2 1 6] 4))

(def-db-struct recordfieldspec type default-value common-form-function merge-function order-fn sort-fn match-function help-info actual->stored stored->actual change-hook constraint-function)

(defun recordfieldspecs-compatible (db1 db2) (byte-code "ÁÉÊHGÊHGËËU…F …\" 
W…D Ì
\"Ì
\"ÍHÍH=
T‰ˆ‚ ˆ.‡" [result t fno fields1 db1 fields2 db2 recordfieldspec1 recordfieldspec2 0 13 nil database-recordfieldspec 1] 6))

(defun database-recordfieldspec (database record-index) "\
Return the recordfieldspec of DATABASE corresponding to RECORD-INDEX.
Dereferences via `recordfieldtype->recordfieldspec' any symbol found in the
recordfieldspecs slot of DATABASE." (byte-code "	ÄH
H9ƒ Å!‚ Æ!ƒ ‚ ÇÈ\")‡" [rs database record-index t 13 recordfieldtype->recordfieldspec recordfieldspec-p error "database-recordfieldspec:  rs = %s"] 5))

(defun database-set-recordfieldspec (database record-index rs) "\
Set the recordfieldspec of DATABASE corresponding to RECORD-INDEX to RS.
Use this to redefine, on a per-field basis, subfields of the recordfieldspec." (byte-code "ÄH	
9ƒ Å
!‚ Æ
!ƒ 
‚ ÇÈ
\"I‡" [database record-index rs t 13 recordfieldtype->recordfieldspec recordfieldspec-p error "database-set-recordfieldspec: Bad spec: rs= %s"] 7))

(defun database-recordfieldspec-type (database record-index) "\
Return the type of the recordfieldspec of DATABASE corresponding to RECORD-INDEX." (byte-code "	ÄH
H9ƒ ‚ Å!ƒ ÆH‚ ÇÈ\")‡" [rs database record-index t 13 recordfieldspec-p 1 error "database-recordfieldspec:  rs = %s"] 4))

(defun recordfieldspec-sort-function (recordfieldspec &optional reversep) "\
Return a sort function for records described by RECORDFIELDSPEC.
If optional argument REVERSEP is non-nil, then the sort function goes in
the opposite order.
If the sort-fn slot of the appropriate recordfieldspec of  database  doesn't
contain one, one is made up on the fly from the order-fn slot.
If the order-fn slot is also empty, the resulting function always returns
nil, indicating that it is not the case that the first argument is less
than the second." (byte-code "	ÃHƒ 
ƒ ÄÅÆÇEE‚ ‚  È	ÉH
\")‡" [sort-fn recordfieldspec reversep 6 lambda (value1 value2) value2 value1 order->sort 5] 5))

(defun order->sort (order-fn reversep) (byte-code "ƒ Â	ƒ Ã‚ ÄÅÆÇÈDÉÊFEE‚ ËK‡" [order-fn reversep lambda (value2 value1) (value1 value2) = -1 funcall function value1 value2 nil-function] 8))

(defun recordfieldspec-order-function (recordfieldspec &optional reversep) "\
Return an order function for records described by RECORDFIELDSPEC.
If optional argument REVERSEP is non-nil, then the order function goes in
the opposite order.
If the order-fn slot of the appropriate recordfieldspec of  database  doesn't
contain one, one is made up on the fly from the sort-fn slot; `equal'
is used to determine whether two records are equal.
If the sort-fn slot is also empty, the resulting function always
returns 0, indicating equality." (byte-code "	ÃHƒ 
ƒ ÄÅÆÇEE‚ ‚  È	ÉH
\")‡" [order-fn recordfieldspec reversep 5 lambda (value1 value2) value2 value1 sort->order 6] 5))

(defun sort->order (sort-fn reversep) (byte-code "ƒ Â	ƒ Ã‚ ÄÅÆÇÈDÉÊFËDÌFE‚  Í‡" [sort-fn reversep lambda (value2 value1) (value1 value2) cond ((equal value1 value2) 0) funcall function value1 value2 -1 (t 1) (lambda (value1 value2) (byte-code "À‡" [0] 1))] 8))

(defun make-record (database) "\
Return a record with number of fields specified by argument DATABASE." (byte-code "ÂÃHÁ\"‡" [database nil make-vector 10] 3))

(proclaim-inline make-record)

(defmacro copy-record (record) "Return a copy of RECORD." (byte-code "ÁD‡" [record copy-sequence] 2))

(defun copy-record-to-record (source target) "\
Copy the field values of the SOURCE record to the TARGET record." (byte-code "Ä
G	W… 
HIˆT‰ˆ‚ *‡" [fno fields source target 0] 5))

(defun fieldname->fieldnumber (fieldname database) "\
Given a FIELDNAME and DATABASE, return a record fieldnumber.
Do not be fooled into thinking this is a format fieldnumber." (byte-code "Â	ÃH\"A‡" [fieldname database assq 12] 4))

(proclaim-inline fieldname->fieldnumber)

(defun fieldnumber->fieldname (fieldnumber database) "\
Given a record FIELDNUMBER and DATABASE, return a record fieldname.
The first argument is not a format fieldnumber." (byte-code "ÂH	H‡" [database fieldnumber 11] 2))

(proclaim-inline fieldnumber->fieldname)

(defmacro record-field-from-index (record fieldno) "Return from RECORD the value of the FIELDNOth field." (byte-code "Â	E‡" [record fieldno aref] 3))

(defun record-field (record fieldname database) "\
Return from RECORD the field with name FIELDNAME.  Third argument is DATABASE." (byte-code "Ä	
\"ƒ H‚ ÅÆ	\")‡" [fieldnumber fieldname database record fieldname->fieldnumber error "No %s field in current record."] 4))

(defun dbf-this-record-field (fieldname) "\
Return the value of the field with name FIELDNAME from `dbf-this-record'.
You may want to use `dbf-displayed-record-field' instead." (byte-code "Ã	
#‡" [dbf-this-record fieldname dbc-database record-field] 4))

(proclaim-inline dbf-this-record-field)

(defun record-check-constraint (field-value record record-index database) (byte-code "Å	
\"ÆH… Ç
	%?… ÈÉÊ
	\"#)‡" [constraint database record-index field-value record database-recordfieldspec 12 funcall error "The value `%s' does not satisfy the constraint for field %s." fieldnumber->fieldname] 8))

(defun record-set-field-from-index (record fieldno value database) "\
Set, in RECORD, the FIELDNOth field to VALUE.
Checks field constraints first if DATABASE is non-nil." (byte-code "…
 Ä	
$ˆ
	I‡" [database value record fieldno record-check-constraint] 5))

(proclaim-inline record-set-field-from-index)

(defun record-set-field-real (record fieldname value database &optional nocheck) "\
Set, in RECORD, field FIELDNAME to VALUE.  Fourth argument DATABASE.
Check constraints first unless optional fifth argument NOCHECK is non-nil." (byte-code "Æ	
\"ƒ Ç?… 
$‚ ÈÉ	\")‡" [fieldnumber fieldname database record value nocheck fieldname->fieldnumber record-set-field-from-index error "No %s field in current record."] 6))

(defun record-set-field (record fieldname value database &optional nocheck) "\
Set, in RECORD, field FIELDNAME to VALUE.  Fourth argument DATABASE.
Check constraints first unless optional fifth argument NOCHECK is non-nil.
This version correctly deals with reversed VALUE and DATABASE arguments." (byte-code "Å!ƒ ÆÇÈP!ˆÉ	
%‚ É	
%‡" [value record fieldname database nocheck database-p db-message "Warning: " "Third and fourth arguments to record-set-field reversed." record-set-field-real] 9))

(defun dbf-this-record-set-field (fieldname value) "\
Set field with name FIELDNAME in `dbf-this-record' to VALUE.
Causes the entire record to be redisplayed pretty soon.
You may want to use `dbf-displayed-record-set-field' instead." (byte-code "Æ	
$ˆÅ‰‡" [dbf-this-record fieldname value dbc-database dbf-redisplay-entire-record-p t record-set-field] 5))

(proclaim-inline dbf-this-record-set-field)

(defun dbf-this-record-set-field-and-redisplay (fieldname value) "\
Set field with name FIELDNAME in `dbf-this-record' to VALUE.
Causes the entire record to be redisplayed immediately.
You may want to use `dbf-displayed-record-set-field-and-redisplay' instead." (byte-code "Â	\"ˆÃ ‡" [fieldname value dbf-this-record-set-field dbf-redisplay-entire-record-maybe] 3))

(proclaim-inline dbf-this-record-set-field-and-redisplay)

(make-obsolete (quote dbf-this-record-set-field-and-redisplay) (quote dbf-displayed-record-set-field-and-redisplay))

(defun dbf-displayed-record-field (fieldname) "\
Return the value of the field named FIELDNAME from the displayed record." (byte-code "Åƒ	 	‚
 
#‡" [dbf-this-record-modified-p dbf-this-record dbf-this-record-original fieldname dbc-database record-field] 4))

(proclaim-inline dbf-displayed-record-field)

(defun dbf-displayed-record-set-field (fieldname value) "\
Set field with name FIELDNAME in displayed record to VALUE.
Cause the entire record to be redisplayed pretty soon." (byte-code "ÃÀ!ˆÄ	
\"‡" [t fieldname value dbf-set-this-record-modified-p dbf-this-record-set-field] 4))

(defun dbf-displayed-record-set-field-and-redisplay (fieldname value) "\
Set field with name FIELDNAME in displayed record to VALUE.
Cause the entire record to be redisplayed immediately." (byte-code "Â	\"ˆÃ ‡" [fieldname value dbf-this-record-set-field dbf-redisplay-entire-record-maybe] 3))

(proclaim-inline dbf-displayed-record-set-field-and-redisplay)

(defmacro mapfields (func record database) "Apply FUNC to each field in RECORD, with variable  mapfields-index  bound.
Third argument is DATABASE." (byte-code "ÃÄÅDÆÇ	DDEÈÉÊ
ËEÌFE‡" [record database func let (mapfields-index 0) mapfields-record mapfields-fields database-no-of-fields while (< mapfields-index mapfields-fields) funcall (record-field-from-index mapfields-record mapfields-index) (setq mapfields-index (1+ mapfields-index))] 7))

(defmacro mapfields-macro (body record database) "Execute BODY for each field of RECORD, a record of DATABASE,
with variables  mapfields-field  and  mapfields-index  bound." (byte-code "ÃÄÅDÆÇ	DDÈFÉÊËÌ
Í%E‡" [record database body let (mapfields-index 0) mapfields-record mapfields-fields database-no-of-fields mapfields-field list while (< this-field-index field-index-max) (setq mapfields-field (record-field-from-index this-record this-field-index)) (setq this-field-index (1+ mapfields-index))] 8))

(def-db-struct sepinfo pre-first-string pre-first-regexp pre-first-regexp-submatch sep-string sep-regexp sep-regexp-submatch sep-function post-last-string post-last-regexp post-last-regexp-submatch)

(defun make-n-line-sep-function (n) "\
Return a sep-function useful when all records have exactly N lines on disk." (byte-code "ÁÂÃDÄF‡" [n lambda (prev-end) forward-line (cons (point) (if (not (eobp)) (point)))] 4))

(defun read-sep-items (sepinfo beg end body-func) (byte-code "Àˆ
bˆËH… ÌËHÅ#ƒ ÀˆÍÎH!‚  
bˆÏH…< ÐÏH!…< ÑÒH†: Ó!bˆ`	W…D `ÀÀ…¨ bˆÔHƒr ÕÔH	\"		@	A‰)‚• ÌÖH	Å#ƒŽ Í×H!Ñ×H!‰‚• 	À‰ˆÕ
#ˆ‰ˆ‚L ,‡" [nil post-last-item-pos beg sepinfo end t start-of-this-item end-of-this-item start-of-next-item end-start body-func 9 re-search-forward match-beginning 10 2 looking-at match-end 3 0 7 funcall 5 6] 13))

(defun write-sep-items (sepinfo producer) (byte-code "À‡" [nil] 1))

(defun next-link-and-index (database link link-index n omitp markedp wraparoundp) (byte-code "	… ÊVƒ Ë!‚ ÌHÊV…& 	=?…k 	ÌHT‰ˆ†9 	ƒa …D 	ÍH†P 	…P 	ÎH??…^ 	S‰‚g S‰ˆ‚ ˆÊW…w 	=?…¼ 	ÏHS‰ˆ†Š 	ƒ² …• 	ÍH†¡ 	…¡ 	ÎH??…¯ 	T‰‚¸ T‰ˆ‚l ˆÐ!?ƒç †Ì 	ƒÛ Ñ
\"E‚ä 	Ñ\"E‚î 	Ñ\"D+‡" [recent-link link recent-index link-index test-link wraparoundp n database omitp markedp 0 database-last-link 2 4 3 1 zerop database-normalize-index] 8))

(defun database-link-and-index (database n omitp markedp) (byte-code "ÅÆHÇ	S
Ä&‡" [database n omitp markedp nil next-link-and-index 2 1] 8))

(proclaim-inline database-link-and-index)

(defun database-add-record (record database &optional location) (byte-code "ÀˆÈ
!ÀˆÉ!ƒ ÀˆÊ		\"ˆË	I‚N Ì!ƒ) Í\"‚, ËHÀÎHÀˆÊ	\"ˆÊ	\"ˆÏÎ\"…M Ë	I+ˆÐÐHTI)‡" [nil this-link record database afterlink location foo beforelink make-link-from-record database-empty-p link-two 2 numberp database-link 1 equal 3] 12))

(defun make-default-record (database) (byte-code "Ä	!Å
	ÆHW…\" Ç
È	
\"ÉHÃ$ˆ
T‰ˆ‚ ˆ*‡" [record database fno nil make-record 0 10 record-set-field-from-index database-recordfieldspec 2] 8))

(defun database-delete-link (database link) (byte-code "ÃH=ƒ 	ÃÂI‚& 	ÃH=… 	ÃÃHIˆÄÅHÃH\"ˆ	Æ	ÆHSI‡" [link database nil 2 link-two 1 3] 5))

(defun database-delete-record-at-index (database record-index) (byte-code "À‡" [nil] 1))

(defmacro maplinks-break nil "Cause the maplinks loop to quit after executing the current iteration.
This is not a nonlocal exit!  It sets a flag which prevents future iterations.
Actually, it sets  maplinks-link." (byte-code "À‡" [(setq maplinks-link (link-prev first-link))] 1))

(defun maplinks (maplinks-func database &optional omit message accumulate) "\
Apply FUNC to every link in DATABASE.
If optional third arg OMIT is non-nil, apply FUNC only to unomitted links.
If optional fourth arg MESSAGE is non-nil, it should be a format string
containing one numeric (%d) specifier.  That message will be issued every
`db-inform-interval' links.
If optional fifth arg ACCUMULATE is non-nil, return a list of the results;
otherwise return nil.

In the body, variable  maplinks-index  is bound to the index of the link being
operated upon, and  maplinks-link  is the argument to FUNC.
The loop may be short-circuited (aborted) by calling `maplinks-break'.
To avoid the per-link function call overhead, use `maplinks-macro' instead." (byte-code "	ÍHÎÌÆ… ‰ˆ…m …m 	…' 
ÏH?…A 
ƒ< Ð
\"B‰‚A Ð
\"ˆ…N ÑÒ\"!…V Ó\"ˆ
ÍHT‰ˆ
=…i Ì‰ˆ‚ ˆ
…v Ô!-‡" [first-link database maplinks-link maplinks-index results not-done t message db-inform-interval omit accumulate maplinks-func nil 2 1 4 funcall zerop % db-message nreverse] 8))

(defmacro maplinks-macro (maplinks-body database &optional omit message) "Execute BODY for each link in DATABASE, and return nil.
If optional third arg OMIT is non-nil, execute BODY only for unomitted links.
If optional fourth arg MESSAGE is non-nil, it should be a format string
containing one numeric (%d) specifier.  That message will be issued every
`db-inform-interval' links.

In the body, variable  maplinks-link  is bound to the link being operated upon,
and  maplinks-index  is bound to its index.
The loop may be short-circuited (aborted) by calling `maplinks-break'.
Speed demons should call this instead of `maplinks' to avoid a function call
overhead per link." (byte-code "ÄÅÄ… ÆDC	… ÇÈÉ	EDCÊË
DDCÌ$C…$ ÍÎÊÏÐÄÑƒ5 ÎÒE‚6 C	…< ÓÔ$EEÕD$‡" [omit message database maplinks-body append (let*) omitp message-evalled and db-inform-interval first-link database-first-link ((maplinks-link first-link) (maplinks-index 1) (maplinks-not-done t)) ((db-debug-message "maplinks-macro:  omitp = %s" omitp)) if while maplinks-not-done (progn) (not (and omitp (link-omittedp maplinks-link))) ((if (and message-evalled (zerop (% maplinks-index db-inform-interval))) (db-message message-evalled maplinks-index))) ((setq maplinks-link (link-next maplinks-link) maplinks-index (1+ maplinks-index)) (if (eq maplinks-link first-link) (setq maplinks-not-done nil))) nil] 14))

(put (quote maplinks-macro) (quote edebug-form-spec) (quote (form sexp &optional form form)))

(fset (quote maprecords-break) (quote maplinks-break))

(defun maprecords (maprecords-func database &optional omit message accumulate) "\
Apply FUNC to every record in DATABASE.  Return nil.
If optional third arg OMIT is non-nil, apply FUNC only to unomitted records.
If optional fourth arg MESSAGE is non-nil, it should be a format string
containing one numeric (%d) specifier.  That message will be issued every
`db-inform-interval' records.
If optional fifth arg ACCUMULATE is non-nil, return a list of the results;
otherwise return nil.

This is syntactic sugar for a call to `maplinks', which see.
See also `maprecords-macro'." (byte-code "ÄÅ	
%‡" [database omit message accumulate maplinks (lambda (thislink) (byte-code "Â	ÃH\"‡" [maprecords-func thislink funcall 6] 4))] 6))

(defmacro maprecords-macro (maprecords-body database &optional omit message) "Execute BODY for each record in DATABASE, and return nil.
If optional third arg OMIT is non-nil, execute BODY only for unomitted records.
If optional fourth arg MESSAGE is non-nil, it should be a format string
containing one numeric (%d) specifier.  That message will be issued every
`db-inform-interval' links.

In the body, variable  maprecords-record  is bound to the record being operated
upon.
The loop may be short-circuited (aborted) by calling `maprecords-break'.

This is syntactic sugar for a call to `maplinks-macro', which see.
See also `maprecords'." (byte-code "ÃÄÅÆÇE	
FE‡" [maprecords-body database omit let (maprecords-record) maplinks-macro progn (setq maprecords-record (link-record maplinks-link))] 6))

(put (quote maprecords-macro) (quote edebug-form-spec) (quote (form sexp &optional form form)))

(defun map-data-display-buffers (function database) "\
Apply FUNCTION to each data display buffer of DATABASE." (byte-code "Ã	!… Ä
@\"ˆA‰ˆ‚ )‡" [dd-buffers database function database-clean-data-display-buffers funcall] 5))

(defun print-database (database) (byte-code "ÁÂ\"‡" [database maprecords (lambda (record) (byte-code "Â	\"‡" [record database print-record] 3))] 3))

(defun print-record (record database) (byte-code "Å
ÆH
ÇHÈÉ!ˆ	W…( ÈÊËHH#!ˆT‰ˆ‚ +‡" [fno no-of-fields database fieldnames record 0 10 11 princ "
" format "%s:  %s
"] 8))

(defun print-compare-records (record1 record2 database) (byte-code "Ë
ÌHÍÍÍÍÍÎÏ!ˆ	W…~ Ð
\"Ñ
\"Ò!H	H‰ˆÓ\"ƒL ÎÔÕ#!‚u …Y Ö×#!ƒj ÎÔØ%!‚u ÎÔÙ%!ˆT‰ˆ‚ .‡" [field-number max-field-number database recordfieldspec fieldname order-function field1 field2 record1 record2 t 0 10 nil princ "
" database-recordfieldspec fieldnumber->fieldname recordfieldspec-order-function equal format "  %s:  %s
" zerop funcall ". %s:  %s
. %s:  %s
" "* %s:  %s
* %s:  %s
"] 19))
