1. hash
HashMap
KeyArg
MappedArg
HashArg
KeyTraitsArg (KeyTraits)
MappedTraitsArg (MappedTraits)
函数有值参数,模块有类型参数,也可以有值参数。
Traits:
1.基类
GenericHashTraitsBase
定义如下:
template<bool isInteger, typename T> struct GenericHashTraitsBase;
没有任何成员和函数。
2.继承它的基础类型
2.1
template<typename T> struct GenericHashTraitsBase<false, T>
另外一个模板,将上面的值参数给实例化了。
里面有三个成员变量
static const bool emptyValueIsZero = false;
static const bool needsDestruction = true;
static const int minimumTableSize = 64;
2.2
template<typename T> struct GenericHashTraitsBase<true, T> : GenericHashTraitsBase<false, T>
同2.1,只是值参数被赋为false,对于false,2个变量的值也改变如下:
static const bool emptyValueIsZero = true;
static const bool needsDestruction = false;
由于支持了null,需要添加2个函数来对其进行支持
2.3
template<typename T> struct GenericHashTraits : GenericHashTraitsBase<IsInteger<T>::value, T>
值参数ture或者false是由另外一个函数模板返回。(函数模板,跟进不同的类型,实行不同的操作。在此就是上面成员变量的值不同)
里面主要定义了3个函数
static void store(const T& value, T& storage) { storage = value; }
static PassOutType passOut(const T& value) { return value; }
static PeekType peek(const T& value) { return value; }
2.4
template<typename T> struct HashTraits : GenericHashTraits<T> { };
3.其他类型
3.1
template<typename T> struct FloatHashTraits : GenericHashTraits<T>
static const bool needsDestruction = false;
static T emptyValue() { return std::numeric_limits<T>::infinity(); }
static void constructDeletedValue(T& slot) { slot = -std::numeric_limits<T>::infinity(); }
static bool isDeletedValue(T value) { return value == -std::numeric_limits<T>::infinity(); }
2.frame
Page(PageClient):
Chrome Settings BackForwardController Frame PluginData RenderTheme EditorClient
DragCaretController DragController FocusController ContextMenuController
InspectorController GeolocationController DeviceMotionController DeviceOrientationController
Frame(Page):
Page FrameTree FrameLoader DOMWindow FrameView Document ScriptController
Editor FrameSelection EventHandler
FrameLoader(Frame,FrameLoaderClient)
Frame FrameLoaderClient
PolicyChecker HistoryController ResourceLoadNotifier SubframeLoader IconController
DocumentLoader(m_documentLoader/m_provisionalDocumentLoader/m_policyDocumentLoader)
FrameNetworkingContext
to be continued.