File: outcode.c

package info (click to toggle)
icmake 7.18.00-2
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 2,840 kB
  • sloc: ansic: 7,784; makefile: 3,811; sh: 319; cpp: 83
file content (35 lines) | stat: -rw-r--r-- 1,038 bytes parent folder | download | duplicates (2)
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
/*
                        O U T C O D E . C
*/

#include "iccomp.h"

void outcode(ESTRUC_ *ep, int value, register size_t size)
{
    register size_t
        codelen;
    union
    {
        char buffer[2];
        INT16 int16;
    } u;


    codelen = ep->code ?                    /* use local codelen in register */
                ep->codelen
            :
                0;                          /* 0 if not yet any code */

    if (size == sizeof(char))               /* assign char to write */
        u.buffer[0] = (char)value;
    else                                    /* use char[2] as intermediate */
        u.int16 = (INT16)value;             /* to store INT16 value        */

                                            /* make room for new code */
    ep->code = xrealloc(ep->code, (codelen + size) * sizeof(char));

                                            /* append the new code */
    memcpy(ep->code + codelen, u.buffer, size);

    ep->codelen = codelen + size;           /* update the codelen-counter */
}