12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- .\"
- .\" Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
- .\" Universitaet Berlin. See the accompanying file "COPYRIGHT" for
- .\" details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
- .\"
- .PU
- .TH BITTER 1
- .SH NAME
- bitter, sweet \(em code-generators for packing bits
- .SH SYNOPSIS
- bitter < input > output
- .br
- sweet < input > output
- .SH "DESCRIPTION"
- Bitter and sweet are two filters which turn a description of the
- form
- .nf
- name number-of-bits
- name number-of-bits
- ...
- .nf
- into code.
- .PP
- Bitter generates code that packs the specified bits from their
- variables into an array of unsigned char referenced by an
- advancing pointer c.
- .PP
- Sweet generates code that unpacks the specified bits from an array
- of unsigned char referenced by a mutable pointer c into the
- named variables.
- .\" .SH OPTIONS
- .\" .SH "RETURN VALUE"
- .\" .SH ERRORS
- .SH EXAMPLES
- .nf
- % cat in
- amaretto 1
- banana 2
- cherry 3
- strawberry 4
- vanilla 15
- walnut 15
- % bitter < in
- *c++ = ((amaretto & 0x1) << 7)
- | ((banana & 0x3) << 5)
- | ((cherry & 0x7) << 2)
- | ((strawberry >> 2) & 0x3);
- *c++ = ((strawberry & 0x3) << 6)
- | ((vanilla >> 9) & 0x3F);
- *c++ = ((vanilla >> 1) & 0xFF);
- *c++ = ((vanilla & 0x1) << 7)
- | ((walnut >> 8) & 0x7F);
- *c++ = walnut & 0xFF;
- % sweet < in
- amaretto = (*c >> 7) & 0x1;
- banana = (*c >> 5) & 0x3;
- cherry = (*c >> 2) & 0x7;
- strawberry = (*c++ & 0x3) << 2;
- strawberry |= (*c >> 6) & 0x3;
- vanilla = (*c++ & 0x3F) << 9;
- vanilla |= (*c++ & 0xFF) << 1;
- vanilla |= (*c >> 7) & 0x1;
- walnut = (*c++ & 0x7F) << 8;
- walnut |= *c++;
- .SH NOTES
- This is a quick hack for the gsm_encode() and gsm_decode() routines.
- .SH BUGS
- Please direct bug reports to jutta@cs.tu-berlin.de and cabo@cs.tu-berlin.de.
|