File: TLStack.m

package info (click to toggle)
tom 1.1.1-2
  • links: PTS
  • area: main
  • in suites: potato
  • size: 6,340 kB
  • ctags: 2,244
  • sloc: objc: 27,863; ansic: 9,804; sh: 7,411; yacc: 3,377; lex: 966; asm: 208; makefile: 62; cpp: 10
file content (78 lines) | stat: -rw-r--r-- 1,448 bytes parent folder | download
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
/* Implementation of TLStack class.
   This file is part of TL, Tiggr's Library.
   Written by Tiggr <tiggr@es.ele.tue.nl>
   Copyright (C) 1995, 1996 Pieter J. Schoenmakers
   TL is distributed WITHOUT ANY WARRANTY.
   See the file LICENSE in the TL distribution for details.

   $Id: TLStack.m,v 1.3 1998/02/23 14:17:39 tiggr Exp $  */

#define TLSTACK_DECLARE_PRIVATE_METHODS

#import "tl/support.h"
#import "tl/TLStack.h"
#import "tl/TLSymbol.h"

@implementation TLStack

+(TLStack *) stack
{
  return ((id) [self vector]);
} /* +stack */

+(TLStack *) stackWithCapacity: (int) c
{
  return ((id) [self vectorWithCapacity: c]);
} /* +stackWithCapacity: */

+(TLStack *) stackWithElements: (int) n, ...
{
  va_list ap;
  id r;

  va_start (ap, n);
  r = (id) [self vectorWithElements: n : ap];
  va_end (ap);
  return (r);
} /* +stackWithElements: */

-(id) emptyp
{
  return (num ? nil : Qt);
} /* -emptyp */

-(id <TLEnumerator>) enumerator
{
  return ([super reverseEnumerator]);
} /* -enumerator */

-(id) pop
{
  if (!num)
    [self error: "pop from an empty stack"];
  return (contents[--num]);
} /* -pop */

-(id) push: (id) o
{
  return ([self addElement: o]);
} /* -push: */

-(id <TLEnumerator>) reverseEnumerator
{
  return ([super enumerator]);
} /* -reverseEnumerator */

-(id) stackp
{
  return (Qt);
} /* -stackp */

-(id) top
{
  if (!num)
    [self error: "top of empty stack"];
  return (contents[num - 1]);
} /* -top */

@end