ChangeLog 14.5 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
2003-12-11  Frode Vatvedt Fjeld  <frodef@cs.uit.no>

	* RELEASE: 0.90

	* API CHANGE! Map-binary-write functions now receive two
	arguments: The object (as before), and the name of the binary-type
	the object is supposed to be mapped to.

	* Imroved README a bit. Documented :map-binary-read and
	:map-binary-read-delayed.

	* Fixed bug as reported by Simon Leinen. Various minor
	bug-fixes. Changed the defpackage form to use gensym names.

2001-08-28  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp:
	Added utility functions SPLIT-BYTES and MERGE-BYTES that deals with
	converting lists of bytes to new byte-sizes.

2001-08-27  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Added generic function READ-BINARY-RECORD so
	that it may be specialized.

2001-08-27  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp:
	Added function ENUM-SYMBOLIC-VALUE, the inverse of ENUM-VALUE.

2001-08-27  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Added :binary-tags slot-option. The argument
	specifies a list of "tags" (intended to be symbols, but any lisp
	objects will do) that will be associated with the slot. The
	function BINARY-SLOT-TAGS will retrieve the set of tags for a
	slot. The function BINARY-RECORD-SLOT-NAMES has been modified to
	take the keyword argument :MATCH-TAGS so that only slots with at
	least one of those tags are returned.

	The idea is that sometimes you need to iterate over a sub-set of
	the slots, in which case a tag can be used to name and reference
	such sub-sets.

2001-08-24  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Changed they expansion function of
	DEFINE-BINARY-CLASS not to generate literal structure
	objects. Expansions should be much "nicer" for the compiler to
	handle now.

2001-08-17  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Added slot-options :MAP-ON-READ and
	:MAP-ON-READ-DELAYED.  The former is analogous to :MAP-ON-WRITE,
	i.e. at BINARY-READ-time the function named is applied to the
	(binary) value read, and the result is placed in the
	slot.

	:MAP-ON-READ-DELAYED is a variation that delays the mapping
	operation until the slot is read. Until that time, the slot is
	unbound and the binary value kept in a "hidden" slot. [This is
	implemented more or less seamlessly by specializing the
	SLOT-UNBOUND method.]  However, the "hidden" binary value can be
	read using BINARY-SLOT-VALUE; this will not cause the mapping to
	occur. The idea is that if you have slots that represent pointers
	to other records, you probalby don't want the READ-BINARY
	operation to automatically follow and recursively read such
	pointers. Using this mechanism, objects referenced by pointers
	will magically be loaded "on demand".

2001-07-27  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp:
	Removed LET from DEFINE-BINARY-STRUCT expansion, making it a proper top-level-form.

2001-07-27  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.84

	* binary-types.lisp: Removed (superfluous) LET* from
	DEFINE-BINARY-STRUCT's expansion, so as not to hinder such forms
	from being proper top-level forms.

2001-07-12  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.83

	* binary-types.lisp: Fixed READ-BINARY-STRING to work correctly
	for :SIZE 0. It will now return "" and 0, rather than entering
	an infinite loop.

2001-06-29  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.82

	* binary-types.lisp: Added macro WITH-BINARY-OUTPUT-TO-VECTOR.
	Supposed to resemble CL:WITH-OUTPUT-TO-STRING.

2001-06-26  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Fixed buggy function READ-BINARY-STRING.

2001-06-22  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Renamed many identifiers from xx-COMPUND-xx
	to xx-RECORD-xx. Of the exported symbols, only two are changed:
	WRITE-BINARY-RECORD, and BINARY-RECORD-SLOT-NAMES. A (binary)
	record is either a lisp struct or class.

	* RELEASE: 0.81

	* binary-types.lisp: Minor fixups to make BT work with CLISP.

2001-06-20  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.80

	* binary-types.lisp: Rewrote and renamed some the binary string
	types. Macros DEFINE-BINARY-STRING and
	DEFINE-NULL-TERMINATED-STRING should now be used to define string
	types.

	* binary-types.lisp: Added function READ-BINARY-STRING that should
	be general enough to read most kinds of strings. It still doesn't
	do character sets, though.

	* binary-types.lisp: Removed traces of variable-sized binary
	types. Everything is now constant-sized. Removed functions
	SIZEOF-MIN and SIZEOF-MAX.

2001-06-09  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Removed one more instance of upcased symbols
	in the code, in order to facilitate those using case-sensitive
	readers.

2001-06-06  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.76

	* binary-types.lisp: Added macro WITH-BINARY-INPUT-FROM-VECTOR.

	* binary-types.lisp: Added check for end-of-list in
	WITH-BINARY-INPUT-FROM-LIST macro.

	* Makefile: Forgot to include recently added file
	type-hierarchy.ps in the distribution tarball.

2001-05-03  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Renamed the slot-options (the old ones still
	work though).
	:bt => :binary-type
	:btt => :binary-lisp-type
	:bt-on-write => :map-binary-write.

	* binary-types.lisp: Added a pseudo-type :LABEL available only
	inside DEFINE-BINARY-CLASS and which is a void type intended for
	"slots" that don't hold any data but are used as labels in the
	struct in order to determine offsets etc. If this type is declared
	with the :btt (or :binary-lisp-type) slot-option, the lisp :type
	NIL is declared (the empty type).

2001-04-24  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.75

2001-04-23  Frode Vatvedt Fjeld  <frodef@acm.org>

	* type-hierarchy.ps: Added. This is a postscript file displaying
	the type (meta-) hierarchy, for reference.

2001-04-22  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Added macro WITH-BINARY-INPUT-FROM-LIST that
	sets up a "stream" variable suitable for READ-BINARY that provides
	8-bit bytes from a list of integers.

2001-04-12  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.74

	* binary-types.lisp: The previous fix for DEFINE-BINARY-STRUCT's
	lambda list was wrong. Hopefully this actually fixes it.

2001-04-11  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.73

	* binary-types.lisp: Changed in DEFINE-BINARY-STRUCT a (format
	"MAKE-~A" name) to (format "~A-~A" '#:make name), which should
	allow for lower-case lisps to work.

	* binary-types.lisp: Modified DEFINE-BINARY-STRUCT's macro
	lambda-list slightly to accommodate a bug in clisp. (This
	shouldn't affect other systems at all.)

2001-03-29  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.72.

2001-03-28  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Added macro WITH-BINARY-OUTPUT-TO-LIST that,
	given a stream variable S, evaluates its body such that calls to
	WRITE-BINARY to stream S collects in a list the individual bytes
	as integers. This list is returned by the macro form.

	* binary-types.lisp: Added two dynamic variables that allows you
	to override the low-level IO functions binary-types use to read
	and write single octets: *BINARY-READ-BYTE* and
	*BINARY-WRITE-BYTE*, respectively. They default to the standard CL
	functions READ-BYTE and WRITE-BYTE, and you may rebind them to any
	function with the same signature.

	* binary-types.lisp: Fixed bug in the expansion of
	DEFINE-BINARY-STRUCT that caused nested declarations not to
	work. This bug even made example.lisp not work. Sigh.

2001-02-19  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.71.

	* README: Revamped the documentation somewhat. Fixed up some
	inconsistencies etc.

2001-02-13  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Changed some more syntax (slightly) in order
	to be more consistent with CL syntax. Specifically,
	DEFINE-BITFIELD now requires parens around the storage-type (as
	does DEFINE-ENUM).

	* example.lisp: Changed to reflext new syntax.

2001-02-12  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Changed syntax of DEFINE-ENUM. The
	storage-type must be put in braces, and you may optionally specify
	the :byte.

	* binary-types.lisp: Added function ENUM-VALUE.

2000-11-01  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Changed COMPOUND-SLOT-NAMES to not include
	padding slots, unless explicity requested.

	* binary-types.lisp: Added method WRITE-BINARY-COMPOUND that is
	like WRITE-BINARY only it will automatically look up the correct
	binary-type from the object, and it only works on compounds (that
	is, binary-classes and binary-structs).

2000-10-31  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Added slot-option :on-write, that provides a
	function that will be called (at binary-writing time) on the
	slot's value to obtain the actual value that is written.

2000-10-26  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.70.

	* binary-types.lisp: Renamed DEF-BINCLASS to DEFINE-BINARY-CLASS,
	and DEF-BINSTRUCT to DEFINE-BINARY-STRUCT, and DEF-* to DEFINE-*.

	* binary-types.lisp: Added a variation of the :BT slot-option. It
	is named :BTT, and will have the extra effect of adding a :TYPE
	slot-option to the class or struct slot. Be careful when using
	this in DEF-BINSTRUCT to provide an slot-initform that is of the
	correct type!

	* binary-types.lisp: Changed the way nested declarations are
	expanded. Now, even nested declarations will (in the expansion)
	become top-level forms, I believe. This means that the
	type-specifiers (the place after :BT in e.g. DEF-BINCLASS) is no
	longer really evaluated, rather it is parsed by the
	macro-expander. This means you no longer have to quote the
	type-names (See "example.lisp"). Bitfield types are represented
	symbolically by lists, so they are all of the lisp-type
	"list". Fixed-size-nt-strings are equivalent to lisp strings (they
	should really be strings of a maximum size, but lisp can't easily
	express that concept). Also note that padding binary types which
	are named by integer objects don't translate to lisp types at
	all. This is just fine, I think, since padding "slots" are not
	supposed to hold any lisp data.

	* binary-types.lisp: Added DEFTYPE declarations so that all
	binary-types also become lisp-types. For example, if you declare
	(def-unsigned raw-number 1), you implicitly declare a lisp
	type-specifier RAW-NUMBER that is equivalent to (integer 0 255).

2000-10-25  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.61

	* binary-types.lisp: Fixed bug in READ-BINARY for signed integers.

	* binary-types.lisp: Added a WRITE-BINARY for binary-type
	fixed-size-nt-string. Hopefully, read/write symmetry is complete
	now. At least it should be possible to write the elf-header from
	example.lisp.

	* binary-types.lisp: Added DEF-BINSTRUCT macro, which is (supposed
	to be) to DEFSTRUCT what DEF-BINCLASS is to DEFCLASS. If nothing
	else, structs prints and reads more easily than classes. See the
	definition of E-IDENT in the updated example.lisp.

2000-10-24  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Added class-option for DEF-BINCLASS
	:class-slot-align that allows you to adjust the offsets by
	declaring the offset of one slot. Like this
	(:class-slot-align slot-name offset)

	* binary-types.lisp: Added a class-option for DEF-BINCLASS,
	:class-slot-offset <integer>, that specifies an offset to add to
	any slot-offset as returned by SLOT-OFFSET.

	* README-bitfield: This is my response to a query about how
	DEF-BITFIELD works, included here to provide some documentation.

2000-10-23  Frode Vatvedt Fjeld  <frodef@acm.org>

	* RELEASE: 0.50

	* binary-types.lisp: Added a macro WITH-BINARY-FILE that is a thin
	wrapper around WITH-OPEN-FILE that tries to force the stream to
	have the correct element-type.

2000-10-22  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Changed syntax of DEF-BINCLASS again, so that
	it now completely matches the DEFCLASS syntax, only you have one
	extra slot-option, :BT, which declares the slot's
	binary-type. This slot-option is evaluated, so you may still have
	nested declarations. What is new is that you may have slots that
	don't have a binary-type. Such slots are simply ignored by
	READ-BINARY and WRITE-BINARY.

2000-10-21  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Added COMPOUND-SLOT-NAMES, to replace
	COMPOUND-ALIST and COMPOUND-MERGE which are now deprecated (the
	functions are still there, but their symbols are no longer
	exported..).

	* binary-types.lisp: Changed the two BITFIELD-COMPUTE-XX-VALUE
	from generic to regular functions (no reason for these to be
	generic functions).

2000-10-20  Frode Vatvedt Fjeld  <frodef@acm.org>

	* example.lisp: Changed the example ELF header declaration to work
	with the slightly changed syntax. Basically, all slots' type-field
	is evaluated, so type-names (symbols) must be quoted.

	* binary-types.lisp: Renamed DEF-COMPOUND to DEF-BINCLASS, and
	changed the syntax so it looks more like DEFCLASS.

	* binary-types.lisp: Added the capability of binary-integers to be
	declared a certain endianess. So an integer is either :BIG-ENDIAN
	or :LITTLE-ENDIAN (regardless of *ENDIAN*), or it depends
	dynamically on the value of *ENDIAN*. The DEF-INTEGER macros now
	takes and optional endianess argument.

	* binary-types.lisp: Changed the (previously very ugly)
	implementation of the binary-types name-space. Now use the new
	accessor FIND-BINARY-TYPE which is implemented with a simple
	hash-table. This means that BINARY TYPES MUST NOW BE NAMED BY
	SYMBOLS (binary-types no longer touches the symbol-value of
	symbols).

	* binary-types.lisp: Removed generic function BIT-SIZEOF, since we
	only deal with octets anyway.

	* binary-types.lisp: Changed *ENDIAN* to take keyword symbols
	:BIG-ENDIAN or :LITTLE-ENDIAN (old BT-interned symbols still
	work).

2000-08-25  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Fixed reading of signed integers.

2000-06-13  Frode Vatvedt Fjeld  <frodef@acm.org>

	* README: Added a little more documentation.

	* example.lisp: Cleaned up some small things.

2000-03-30  Frode Vatvedt Fjeld  <frodef@acm.org>

	* binary-types.lisp: Added write support for bitfield.

	* binary-types.lisp: Changed the bitfield type to use proper CL
	"bytes" for subfields.

1999-12-08  Frode Vatvedt Fjeld  <frodef@acm.org>

	* test.lisp: Added this file for tests of the BINARY-TYPES
	package. Not much in it so far.

	* binary-types.lisp: Fixed READ-BINARY for signed integers so it
	actually works.

	* binary-types.lisp: Added WRITE-BINARY for integers, char8,
	padding, and compound.

	* ChangeLog: Started