File: stackassign.c

package info (click to toggle)
yodl 4.05.02-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,724 kB
  • sloc: ansic: 7,803; perl: 683; cpp: 570; sh: 411; xml: 190; makefile: 163
file content (19 lines) | stat: -rw-r--r-- 425 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stack.ih"

/*
    stack will own `value': its destructor will eventually be called by the
stack. stack_assign will push value on the stack if it's still empty.
*/

void stack_assign(register Stack *sp, register StackValue value)
{
    size_t n = sp->d_n;

    if (!n)
        stack_push(sp, value);
    else
    {
        (*sp->d_destructor)(sp->d_value[n - 1].u_voidp);
        sp->d_value[n - 1] = value;
    }
}