comparison lispref/processes.texi @ 75987:9012e6e12d0e

(Bindat Spec): Vector types can have optional element type. (Bindat Examples): Fix example. Add vector with element type.
author Kim F. Storm <storm@cua.dk>
date Sat, 17 Feb 2007 21:07:11 +0000
parents 6d19c76d81c5
children 035ff8761729
comparison
equal deleted inserted replaced
75986:6fcd34fb603e 75987:9012e6e12d0e
2144 String of length @var{len}. 2144 String of length @var{len}.
2145 2145
2146 @item strz @var{len} 2146 @item strz @var{len}
2147 Zero-terminated string, in a fixed-size field with length @var{len}. 2147 Zero-terminated string, in a fixed-size field with length @var{len}.
2148 2148
2149 @item vec @var{len} 2149 @item vec @var{len} [@var{type}]
2150 Vector of @var{len} bytes. 2150 Vector of @var{len} elements of type @var{type}, or bytes if not
2151 @var{type} is specified.
2152 The @var{type} is any of the simple types above, or another vector
2153 specified as a list @code{(vec @var{len} [@var{type}])}.
2151 2154
2152 @item ip 2155 @item ip
2153 Four-byte vector representing an Internet address. For example: 2156 Four-byte vector representing an Internet address. For example:
2154 @code{[127 0 0 1]} for localhost. 2157 @code{[127 0 0 1]} for localhost.
2155 2158
2427 @}; 2430 @};
2428 2431
2429 struct data @{ 2432 struct data @{
2430 unsigned char type; 2433 unsigned char type;
2431 unsigned char opcode; 2434 unsigned char opcode;
2432 unsigned long length; /* In little endian order */ 2435 unsigned long length; /* In network byte order */
2433 unsigned char id[8]; /* null-terminated string */ 2436 unsigned char id[8]; /* null-terminated string */
2434 unsigned char data[/* (length + 3) & ~3 */]; 2437 unsigned char data[/* (length + 3) & ~3 */];
2435 @}; 2438 @};
2436 2439
2437 struct packet @{ 2440 struct packet @{
2438 struct header header; 2441 struct header header;
2442 unsigned short counters[4]; /* In little endian order */
2439 unsigned char items; 2443 unsigned char items;
2440 unsigned char filler[3]; 2444 unsigned char filler[3];
2441 struct data item[/* items */]; 2445 struct data item[/* items */];
2442 2446
2443 @}; 2447 @};
2453 (src-port u16))) 2457 (src-port u16)))
2454 2458
2455 (setq data-spec 2459 (setq data-spec
2456 '((type u8) 2460 '((type u8)
2457 (opcode u8) 2461 (opcode u8)
2458 (length u16r) ;; little endian order 2462 (length u32) ;; network byte order
2459 (id strz 8) 2463 (id strz 8)
2460 (data vec (length)) 2464 (data vec (length))
2461 (align 4))) 2465 (align 4)))
2462 2466
2463 (setq packet-spec 2467 (setq packet-spec
2464 '((header struct header-spec) 2468 '((header struct header-spec)
2469 (counters vec 4 u16r) ;; little endian order
2465 (items u8) 2470 (items u8)
2466 (fill 3) 2471 (fill 3)
2467 (item repeat (items) 2472 (item repeat (items)
2468 (struct data-spec)))) 2473 (struct data-spec))))
2469 @end lisp 2474 @end lisp