annotate lisp/oobr/br-smt.el @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children 4103f0995bd7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 ;;!emacs
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 ;; FILE: br-smt.el
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 ;; SUMMARY: Support routines for Smalltalk inheritance browsing and error parsing.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 ;; USAGE: GNU Emacs Lisp Library
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 ;; KEYWORDS: oop, tools
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 ;; AUTHOR: Bob Weiner
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 ;; ORG: Motorola Inc.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 ;; ORIG-DATE: 26-Jul-90
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 ;; LAST-MOD: 21-Sep-95 at 12:31:20 by Bob Weiner
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 ;; Copyright (C) 1990-1995 Free Software Foundation, Inc.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 ;; See the file BR-COPY for license information.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 ;; This file is part of the OO-Browser.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 ;; DESCRIPTION:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 ;; See 'smt-class-def-regexp' for regular expression that matches class
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 ;; definitions.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 ;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 ;; DESCRIP-END.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 ;;; ************************************************************************
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 ;;; Other required Elisp libraries
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 ;;; ************************************************************************
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 (require 'br-lib)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 ;;; ************************************************************************
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 ;;; User visible variables
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 ;;; ************************************************************************
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 (defvar smt-lib-search-dirs nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 "List of directories below which Smalltalk Library source files are found.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 Subdirectories of Library source are also searched. A Library is a stable
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 group of classes.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 (defvar smt-sys-search-dirs nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 "List of directories below which Smalltalk System source files are found.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 Subdirectories of System source are also searched. A System class is one
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 that is not yet reusable and is likely to change before release.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 (defconst smt-narrow-view-to-class nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 "*Non-nil means narrow buffer to just the matching class definition when displayed.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 ;;; ************************************************************************
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 ;;; Internal functions
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 ;;; ************************************************************************
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 (defun smt-get-classes-from-source (filename &rest ignore)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 "Scans FILENAME and returns cons of class list with parents-class alist.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 Handles multiple inheritance. Assumes file existence and readability have
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 already been checked."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 (let ((no-kill (get-file-buffer filename))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 classes class parents parent-cons)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 (if no-kill
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60 (set-buffer no-kill)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 (funcall br-view-file-function filename))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 (save-restriction
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 (save-excursion
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 (widen)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 (goto-char (point-min))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 (while (re-search-forward smt-class-def-regexp nil t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 (setq class (buffer-substring (match-beginning 3) (match-end 3))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 parent-cons
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 (cons
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 (and (match-end 1) (> (match-end 1) 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 (list (buffer-substring
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 (match-beginning 1)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 (match-end 1))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 class))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 ;; Assume class name not found within a comment.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 (setq classes (cons class classes)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 parents (cons parent-cons parents)))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 (or no-kill (kill-buffer (current-buffer)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 (cons classes (delq nil parents))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81 (defun smt-get-parents-from-source (filename class-name)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 "Scan source in FILENAME and return list of parents of CLASS-NAME.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 Assume file existence has already been checked."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 (or (null class-name)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 (car (car (br-rassoc
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 class-name
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 (cdr (smt-get-classes-from-source filename)))))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89 (defun smt-select-path (paths-htable-elt &optional feature-p)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 "Select proper pathname from PATHS-HTABLE-ELT based upon value of optional FEATURE-P.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91 Selection is between path of class definition and path for features associated
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92 with the class."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 (cdr paths-htable-elt))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 (defun smt-set-case (type)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 "Return string TYPE identifier for use as a class name."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 type)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99 (defun smt-set-case-type (class-name)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100 "Return string CLASS-NAME for use as a type identifier."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101 class-name)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
103 (defun smt-to-class-end ()
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
104 "Assuming point is at start of class, move to best guess start of line after end of class."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105 (interactive)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
106 (goto-char (point-max)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
107
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
108 (defun smt-to-comments-begin ()
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
109 "Skip back from current point past any preceding Smalltalk comments.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
110 Presently a no-op."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
111 )
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
112
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
113 ;;; ************************************************************************
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
114 ;;; Internal variables
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
115 ;;; ************************************************************************
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
116
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
117 (defconst smt-type-tag-separator "@"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
118 "String that separates a tag's type from its normalized definition form.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
119 This should be a single character which is unchanged when quoted for use as a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
120 literal in a regular expression.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
121
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
122 (defconst smt-subclass-separator
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
123 "\\(variableSubclass:\\|variableWordSubclass:\\|variableByteSubclass:\\|subclass:\\)"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
124 "Regexp matching delimiter following parent identifier.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
125
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
126 (defconst smt-identifier-chars "a-zA-Z0-9"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
127 "String of chars and char ranges that may be used within a Smalltalk identifier.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
128
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
129 (defconst smt-identifier (concat "\\([a-zA-Z][" smt-identifier-chars "]*\\)")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
130 "Regular expression matching a Smalltalk identifier.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
131
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
132
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
133 (defconst smt-class-name-before
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
134 (concat "^[ \t]*" smt-identifier
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
135 "[ \t\n]+" smt-subclass-separator
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
136 "[ \t\n]*#")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
137 "Regexp preceding the class name in a class definition.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
138
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
139 (defconst smt-class-name-after
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
140 ""
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
141 "Regexp following the class name in a class definition.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
142
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
143 (defconst smt-class-def-regexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
144 (concat smt-class-name-before smt-identifier smt-class-name-after)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
145 "Regular expression used to match to class definitions in source text.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
146 Class name identifier is grouped expression 3. 'subclass:' inheritance
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
147 indicator is grouped expression 2. Parent identifier is grouped
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
148 expression 1.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
149
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
150
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
151 (defconst smt-lang-prefix "smt-"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
152 "Prefix string that starts \"br-smt.el\" symbol names.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
153
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
154 (defconst smt-src-file-regexp ".\\.st$"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
155 "Regular expression matching a unique part of Smalltalk source file name and no others.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
156
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
157 (defvar smt-children-htable nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
158 "Htable whose elements are of the form: (LIST-OF-CHILD-CLASSES . CLASS-NAME).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
159 Used to traverse Smalltalk inheritance graph. 'br-build-children-htable' builds
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
160 this list.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
161 (defvar smt-parents-htable nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
162 "Htable whose elements are of the form: (LIST-OF-PARENT-CLASSES . CLASS-NAME).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
163 Used to traverse Smalltalk inheritance graph. 'br-build-parents-htable' builds
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
164 this list.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
165 (defvar smt-paths-htable nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
166 "Htable whose elements are of the form: (LIST-OF-CLASS-NAMES . FILE-PATH).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
167 FILE-PATH gives the location of classes found in LIST-OF-CLASS-NAMES.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
168 'br-build-paths-htable' builds this list.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
169
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
170
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
171 (defvar smt-lib-parents-htable nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
172 "Htable whose elements are of the form: (LIST-OF-PARENT-CLASSES . CLASS-NAME).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
173 Only classes from stable software libraries are used to build the list.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
174 (defvar smt-lib-paths-htable nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
175 "Htable whose elements are of the form: (LIST-OF-CLASS-NAMES . FILE-PATH).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
176 FILE-PATH gives the location of classes found in LIST-OF-CLASS-NAMES.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
177 Only classes from stable software libraries are used to build the list.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
178
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
179 (defvar smt-sys-parents-htable nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
180 "Htable whose elements are of the form: (LIST-OF-PARENT-CLASSES . CLASS-NAME).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
181 Only classes from systems that are likely to change are used to build the list.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
182 (defvar smt-sys-paths-htable nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
183 "Alist whose elements are of the form: (LIST-OF-CLASS-NAMES . FILE-PATH).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
184 FILE-PATH gives the location of classes found in LIST-OF-CLASS-NAMES.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
185 Only classes from systems that are likely to change are used to build the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
186 list.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
187
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
188 (defvar smt-lib-prev-search-dirs nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
189 "Used to check if 'smt-lib-classes-htable' must be regenerated.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
190 (defvar smt-sys-prev-search-dirs nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
191 "Used to check if 'smt-sys-classes-htable' must be regenerated.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
192
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
193 (defvar smt-env-spec nil
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
194 "Non-nil value means Environment specification has been given but not yet built.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
195 Nil means current Environment has been built, though it may still require updating.")
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
196
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
197 (provide 'br-smt)