KJS

CommonIdentifiers.h
1 /*
2  * Copyright (C) 2003,2007 Apple Computer, Inc
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this library; see the file COPYING.LIB. If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  *
19  */
20 
21 #ifndef KJS_COMMON_IDENTIFIERS_H
22 #define KJS_COMMON_IDENTIFIERS_H
23 
24 #include "identifier.h"
25 #include <wtf/Noncopyable.h>
26 
27 // List of property names, passed to a macro so we can do set them up various
28 // ways without repeating the list.
29 #define KJS_COMMON_IDENTIFIERS_EACH_PROPERTY_NAME(macro) \
30  macro(arguments) \
31  macro(callee) \
32  macro(caller) \
33  macro(constructor) \
34  macro(fromCharCode) \
35  macro(global) \
36  macro(ignoreCase) \
37  macro(index) \
38  macro(input) \
39  macro(lastIndex) \
40  macro(length) \
41  macro(message) \
42  macro(multiline) \
43  macro(name) \
44  macro(prototype) \
45  macro(source) \
46  macro(toExponential) \
47  macro(toFixed) \
48  macro(toLocaleString) \
49  macro(toPrecision) \
50  macro(toString) \
51  macro(valueOf) \
52  macro(toJSON) \
53  macro(configurable) \
54  macro(value) \
55  macro(writable) \
56  macro(enumerable) \
57  macro(get) \
58  macro(set) \
59  macro(toISOString)
60 
61 namespace KJS
62 {
63 
64 class KJS_EXPORT CommonIdentifiers : Noncopyable
65 {
66 
67 private:
68  CommonIdentifiers();
69 
70 public:
71  static CommonIdentifiers *shared();
72 
73  const Identifier nullIdentifier;
74  const Identifier underscoreProto;
75 
76 #define KJS_IDENTIFIER_DECLARE_PROPERTY_NAME_GLOBAL(name) const Identifier name;
77  KJS_COMMON_IDENTIFIERS_EACH_PROPERTY_NAME(KJS_IDENTIFIER_DECLARE_PROPERTY_NAME_GLOBAL)
78 #undef KJS_IDENTIFIER_DECLARE_PROPERTY_NAME_GLOBAL
79 };
80 } // namespace KJS
81 
82 // ### better place in identifier.h. only here because of the shared null
83 namespace WTF
84 {
85 // Provide hashing of Identifiers --- using the rep ptr
86 struct IdentHash {
87  static unsigned hash(const KJS::Identifier &key)
88  {
89  return PtrHash<KJS::UString::Rep *>::hash(key.ustring().rep());
90  }
91  static bool equal(const KJS::Identifier &a, const KJS::Identifier &b)
92  {
93  return a == b;
94  }
95  static const bool safeToCompareToEmptyOrDeleted = false;
96 };
97 
98 template<> struct DefaultHash<KJS::Identifier> {
99  typedef IdentHash Hash;
100 };
101 
102 template<> struct HashTraits<KJS::Identifier> : GenericHashTraits<KJS::Identifier> {
103  static const bool emptyValueIsZero = false;
104  static const bool needsDestruction = true;
105  static void constructDeletedValue(KJS::Identifier *slot)
106  {
107  new(slot) KJS::Identifier();
108  }
109  static bool isDeletedValue(const KJS::Identifier &value)
110  {
111  return value.isNull();
112  }
113 };
114 
115 } // namespace WTF
116 
117 #endif // KJS_COMMON_IDENTIFIERS_H
118 
bool isNull() const
Returns the identfiers state of being unset.
Definition: identifier.h:99
const UString & ustring() const
returns a UString of the identifier
Definition: identifier.h:58
Represents an Identifier for a Javascript object.
Definition: identifier.h:36
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Thu Apr 22 2021 23:00:15 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.