Gnash
0.8.11dev
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
libcore
abc
Namespace.h
Go to the documentation of this file.
1
//
2
// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012
3
// Free Software Foundation, Inc.
4
//
5
// This program is free software; you can redistribute it and/or modify
6
// it under the terms of the GNU General Public License as published by
7
// the Free Software Foundation; either version 3 of the License, or
8
// (at your option) any later version.
9
//
10
// This program is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
// GNU General Public License for more details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with this program; if not, write to the Free Software
17
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19
#ifndef GNASH_AS_NAMESPACE_H
20
#define GNASH_AS_NAMESPACE_H
21
22
#include "
string_table.h
"
23
#include <map>
24
25
// Forward declarations
26
namespace
gnash {
27
namespace
abc {
28
class
Class;
29
}
30
class
ClassHierarchy;
31
class
string_table;
32
}
33
34
namespace
gnash {
35
namespace
abc {
36
38
//
41
//
45
//
48
class
Namespace
49
{
50
public
:
51
53
Namespace
()
54
:
55
_parent(0),
56
_uri(0),
57
_prefix(0),
58
_scripts(),
59
mRecursePrevent(false),
60
_private(false),
61
_protected(false),
62
_package(false)
63
{}
64
65
void
markReachableResources
()
const
{
/* TODO */
}
66
68
void
setParent
(
Namespace
*
p
) { _parent =
p
; }
69
70
Namespace
*
getParent
() {
return
_parent; }
71
73
void
setURI
(
string_table::key
name
) { _uri =
name
; }
74
76
string_table::key
getURI
()
const
{
return
_uri; }
77
79
string_table::key
getPrefix
()
const
{
return
_prefix; }
80
83
bool
addScript
(
string_table::key
name
,
Class
*
a
)
84
{
85
if
(getScriptInternal(name))
return
false
;
86
_scripts[
static_cast<
std::size_t
>
(
name
)] = a;
87
return
true
;
88
}
89
90
void
stubPrototype
(
ClassHierarchy
& ch,
string_table::key
name
);
91
94
Class
*
getScript
(
string_table::key
name
)
95
{
96
if
(mRecursePrevent)
return
NULL;
97
98
Class
* found = getScriptInternal(name);
99
100
if
(found || !
getParent
())
return
found;
101
102
mRecursePrevent =
true
;
103
found =
getParent
()->
getScript
(name);
104
mRecursePrevent =
false
;
105
return
found;
106
}
107
108
void
dump
(
string_table
& st);
109
110
void
setPrivate
() { _private =
true
; }
111
void
unsetPrivate
() { _private =
false
; }
112
bool
isPrivate
() {
return
_private; }
113
114
void
setProtected
() { _protected =
true
; }
115
void
unsetProtected
() { _protected =
false
; }
116
bool
isProtected
() {
return
_protected; }
117
118
void
setPackage
() { _package =
true
; }
119
void
unsetPackage
() { _package =
false
; }
120
bool
isPackage
() {
return
_package; }
121
122
private
:
123
124
Namespace
* _parent;
125
string_table::key
_uri;
126
string_table::key
_prefix;
127
128
typedef
std::map<string_table::key, Class*> container;
129
container _scripts;
130
mutable
bool
mRecursePrevent;
131
132
bool
_private;
133
bool
_protected;
134
bool
_package;
135
136
Class
* getScriptInternal(
string_table::key
name
)
const
137
{
138
container::const_iterator
i
;
139
140
if
(_scripts.empty())
return
NULL;
141
142
i = _scripts.find(name);
143
144
if
(i == _scripts.end())
return
NULL;
145
return
i->second;
146
}
147
};
148
149
}
// namespace abc
150
}
// namespace gnash
151
152
#endif
Generated on Tue Jan 28 2014 17:18:07 for Gnash by
1.8.4