source: webkit/trunk/JavaScriptCore/kjs/LabelStack.h@ 27747

Last change on this file since 27747 was 27097, checked in by mjs, 18 years ago

JavaScriptCore:

Reviewed by Oliver.


  • moved Context class into ExecState.{h,cpp} in preparation for merging ExecState and Context classes.
  • kjs/ExecState.h: Moved CodeType enum and Context class here in preparation for merging ExecState and Context.
  • kjs/ExecState.cpp: Moved Context class here from Context.cpp. (KJS::Context::Context): (KJS::Context::~Context): (KJS::Context::mark):
  • kjs/context.h: Removed.
  • kjs/Context.cpp: Removed.
  • kjs/function.h: Removed CodeType enum.
  • kjs/LabelStack.h: Added. Pulled LabelStack class out of internal.h.
  • kjs/internal.h: Removed LabelStack.
  • JavaScriptCore.xcodeproj/project.pbxproj: Added new file, removed ones that are gone.
  • kjs/collector.cpp: Fixed includes.
  • kjs/function.cpp: ditto
  • kjs/internal.cpp: ditto
  • kjs/interpreter.cpp: ditto
  • kjs/lookup.h: ditto
  • kjs/nodes.cpp: ditto

WebCore:

Reviewed by Oliver.

  • bindings/objc/WebScriptObject.mm:
  • bridge/mac/WebCoreScriptDebugger.mm:
File size: 2.0 KB
Line 
1// -*- mode: c++; c-basic-offset: 4 -*-
2/*
3 * Copyright (C) 1999-2001 Harri Porten ([email protected])
4 * Copyright (C) 2001 Peter Kelly ([email protected])
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
16 *
17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA.
21 *
22 */
23
24#ifndef KJS_LABEL_STACK_H
25#define KJS_LABEL_STACK_H
26
27#include "identifier.h"
28#include <wtf/Noncopyable.h>
29
30namespace KJS {
31 /**
32 * @short The "label set" in Ecma-262 spec
33 */
34 class LabelStack : Noncopyable {
35 public:
36 LabelStack()
37 : tos(0)
38 {
39 }
40 ~LabelStack();
41
42 /**
43 * If id is not empty and is not in the stack already, puts it on top of
44 * the stack and returns true, otherwise returns false
45 */
46 bool push(const Identifier &id);
47 /**
48 * Is the id in the stack?
49 */
50 bool contains(const Identifier &id) const;
51 /**
52 * Removes from the stack the last pushed id (what else?)
53 */
54 void pop();
55
56 private:
57 struct StackElem {
58 Identifier id;
59 StackElem *prev;
60 };
61
62 StackElem *tos;
63 };
64
65inline LabelStack::~LabelStack()
66{
67 StackElem *prev;
68 for (StackElem *e = tos; e; e = prev) {
69 prev = e->prev;
70 delete e;
71 }
72}
73
74inline void LabelStack::pop()
75{
76 if (StackElem *e = tos) {
77 tos = e->prev;
78 delete e;
79 }
80}
81
82}
83
84#endif // KJS_LABEL_STACK_H
Note: See TracBrowser for help on using the repository browser.