现在的位置: 首页 > 综合 > 正文

hash and frame (draft)

2014年03月28日 ⁄ 综合 ⁄ 共 1992字 ⁄ 字号 评论关闭

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.

抱歉!评论已关闭.