chrome ui原始碼剖析 ViewProp

2021-09-06 11:33:36 字數 2468 閱讀 5315

先熟悉set的find原理

這個類改造下,還是非常實用的,可以對於不同的型別做資料儲存

// use of this source code is governed by a bsd-style license that can be

// found in the license file.

#ifndef

ui_base_view_prop_h_

#define

ui_base_view_prop_h_

namespace

ui ;

} // namespace ui

#endif

// ui_base_view_prop_h_

viewprop

::viewprop(gfx::

acceleratedwidget

view

, const char

* key

, void

* data

) viewprop

::~viewprop()

// static

void

* viewprop

::getvalue(gfx::

acceleratedwidget

view

, const char

* key

) // static

const char

* viewprop

::key()

const

test

(viewproptest, basic)

構建乙個viewprop

然後使用viewprop::getvalue靜態方法查詢

viewprop建構函式用

data

::get建立data,查詢的時候還是用data

::get方法,區別在於建構函式時建立,查詢時不會建立

// maints the actual view, key and data.

class

viewprop

::data

: public

base::

refcounted

<

viewprop

::data

>

if (!

create

)

return

; data_set_->insert(new_data.get());

*data

= new_data.get();

} // the data.

void

set_data(

void

* data

)

void

* data()

const

const char

* key()

const

private:

friend class

base::

refcounted

<

data

>;

// used to order the data in the map.

class

datacomparator

};typedef

std::

set<

data

*, datacomparator

>

dataset

; data(gfx::

acceleratedwidget

view

, const char

* key

) : view_(

view

), key_(

key),

data_(

null

) {}

~data()

// the existing set of data is stored here. ~data removes from the set.

static

dataset

* data_set_;

const

gfx::

acceleratedwidget

view_;

const char

* key_;

void

* data_;

disallow_copy_and_assign

(data

);};

// static

viewprop

::data

::dataset

* viewprop

::data

::data_set_ =

null

;

原始碼剖析 Hashtable 原始碼剖析

hashtable同樣是基於雜湊表實現的,同樣每個元素都是key value對,其內部也是通過單鏈表解決衝突問題,容量不足 超過了閾值 時,同樣會自動增長。hashtable也是jdk1.0引入的類,是執行緒安全的,能用於多執行緒環境中。hashtable同樣實現了serializable介面,它支...

python原始碼剖析 Python原始碼剖析

第頁共 頁python 原始碼剖析 物件機制 1.物件 在python 的世界中,一切都是物件,乙個整數是乙個物件,乙個字串也是 乙個物件,更為奇妙的是,型別也是乙個物件,整數型別是乙個物件,字串類 型也是乙個物件。從 年guido 在那個聖誕節揭開 python 世界的大幕開始,一直到現在,pyt...

Erlang hotwheels原始碼剖析

整體構架 janus transport sup 實質為transport,supervisor,client instance supervisor 每個tcp會話建立乙個transport程序來處理對應客戶端的請求。janus topman sup 實質為topman,worker,topic ...