青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評(píng)論-2670  文章-0  trackbacks-0
    實(shí)習(xí)的時(shí)候,自己的時(shí)間明顯沒(méi)有在學(xué)校的時(shí)候多啊。這次Kernel FP拖了很久,一個(gè)多月都還沒(méi)寫(xiě)完。幸好語(yǔ)法分析器用了之前開(kāi)發(fā)的Syngram,要不得多花一個(gè)月。Kernel FP的類型推導(dǎo)的代碼實(shí)在是很難看,趁著又發(fā)現(xiàn)了一個(gè)Bug,重構(gòu)一下。

    類型推導(dǎo)的時(shí)候需要頻繁地修改符號(hào)的類型。譬如說(shuō)現(xiàn)在有符號(hào)Type1 A和Type2 B。突然發(fā)現(xiàn)函數(shù)的分支里面,一條返回A,一條返回B,立刻就斷定Type1與Type2相等了。現(xiàn)在事情就來(lái)了,需要將所有類型里面的Type1通通換成Type2。以前的做法是在推導(dǎo)之前將類型入棧,推導(dǎo)之后出棧,每次替換棧內(nèi)的類型。這種做法導(dǎo)致了代碼寫(xiě)起來(lái)非常難受而且很容易出錯(cuò)。因此今天針對(duì)這個(gè)問(wèn)題,重寫(xiě)了這個(gè)用來(lái)實(shí)現(xiàn)類型推導(dǎo)的類。

    現(xiàn)在需求如下。主類叫TypeSolver。TypeSolver::SolverAndReplace(OldType , NewType)的時(shí)候需要更新所有相關(guān)的類型。現(xiàn)在怎么辦呢?我提供了一個(gè)TypeWrapper用來(lái)裝Type的智能指針,實(shí)現(xiàn)operator->。使用TypeSolver創(chuàng)建Wrapper的時(shí)候,將Wrapper和類型記錄在Solver里面。多個(gè)Wrapper可能共享一個(gè)Type,這個(gè)時(shí)候Solver中還維護(hù)了一個(gè)引用計(jì)數(shù)。

    于是,我在Wrapper用其他Wrapper構(gòu)造,或使用Wrapper或Type賦值,或者析構(gòu)的時(shí)候都通知Solver。Solver析構(gòu)的時(shí)候通知所有Wrapper。代碼如下:

    h文件:
 1 class VL_KfpIdTypeWrapper : public VL_Base
 2 {
 3     friend class VL_KfpIdTypeSolver;
 4 protected:
 5     VL_KfpIdTypeSolver*                        FSolver;
 6     VL_KfpIdType::Ptr                        FType;
 7 
 8     VL_KfpIdTypeWrapper(VL_KfpIdTypeSolver* Solver);
 9 
10     void                                    Inc();
11     void                                    Dec();
12 public:
13     VL_KfpIdTypeWrapper();
14     VL_KfpIdTypeWrapper(const VL_KfpIdTypeWrapper& Wrapper);
15     ~VL_KfpIdTypeWrapper();
16 
17     VL_KfpIdTypeWrapper&                    operator=(const VL_KfpIdTypeWrapper& Wrapper);
18     VL_KfpIdTypeWrapper&                    operator=(VL_KfpIdType::Ptr Type);
19     VL_KfpIdType*                            operator->();
20 };

    cpp文件:
 1 void VL_KfpIdTypeWrapper::Inc()
 2 {
 3     if(FSolver)
 4     {
 5         if(FType)
 6         {
 7             VInt Index=FSolver->FAssociatedTypeCounter.IndexOfKey(FType.Object());
 8             if(Index==-1)
 9             {
10                 FSolver->FAssociatedTypeCounter.Add(FType,1,FType.Object());
11             }
12             else
13             {
14                 FSolver->FAssociatedTypeCounter.ValueOfIndex(Index)++;
15             }
16         }
17     }
18 }
19 
20 void VL_KfpIdTypeWrapper::Dec()
21 {
22     if(FSolver)
23     {
24         if(FType)
25         {
26             VInt Index=FSolver->FAssociatedTypeCounter.IndexOfKey(FType.Object());
27             if(--FSolver->FAssociatedTypeCounter.ValueOfIndex(Index)==0)
28             {
29                 FSolver->FAssociatedTypeCounter.DeleteByIndex(Index);
30             }
31         }
32     }
33 }
34 
35 VL_KfpIdTypeWrapper::VL_KfpIdTypeWrapper(VL_KfpIdTypeSolver* Solver)
36 {
37     FSolver=Solver;
38     FSolver->FAssociatedWrappers.Add(this);
39 }
40 
41 VL_KfpIdTypeWrapper::VL_KfpIdTypeWrapper()
42 {
43     FSolver=0;
44 }
45 
46 VL_KfpIdTypeWrapper::~VL_KfpIdTypeWrapper()
47 {
48     Dec();
49 }
50 
51 VL_KfpIdTypeWrapper::VL_KfpIdTypeWrapper(const VL_KfpIdTypeWrapper& Wrapper)
52 {
53     FSolver=Wrapper.FSolver;
54     FType=Wrapper.FType;
55     Inc();
56 }
57 
58 VL_KfpIdTypeWrapper& VL_KfpIdTypeWrapper::operator=(const VL_KfpIdTypeWrapper& Wrapper)
59 {
60     Dec();
61     FSolver=Wrapper.FSolver;
62     FType=Wrapper.FType;
63     Inc();
64     return *this;
65 }
66 
67 VL_KfpIdTypeWrapper& VL_KfpIdTypeWrapper::operator=(VL_KfpIdType::Ptr Type)
68 {
69     Dec();
70     FType=Type;
71     Inc();
72     return *this;
73 }
74 
75 VL_KfpIdType* VL_KfpIdTypeWrapper::operator->()
76 {
77     return FType.Object();
78 }
posted on 2008-10-27 05:23 陳梓瀚(vczh) 閱讀(2019) 評(píng)論(6)  編輯 收藏 引用 所屬分類: 腳本技術(shù)

評(píng)論:
# re: 是時(shí)候重構(gòu)了! 2008-10-27 05:26 | 陳梓瀚(vczh)
好像有點(diǎn)小bug,不過(guò)算了,不在這里更新代碼。  回復(fù)  更多評(píng)論
  
# re: 是時(shí)候重構(gòu)了! 2008-10-27 06:59 | 沈臻豪(foxtail)
做事要嚴(yán)謹(jǐn) 最好更新一下  回復(fù)  更多評(píng)論
  
# re: 是時(shí)候重構(gòu)了! 2008-10-27 07:38 | 陳梓瀚(vczh)
我更新了我硬盤(pán)里面的代碼,而且也在這里說(shuō)了,非常嚴(yán)謹(jǐn)。  回復(fù)  更多評(píng)論
  
# re: 是時(shí)候重構(gòu)了! 2008-10-27 08:19 | 空明流轉(zhuǎn)
我的編譯器也到了要考慮虛擬機(jī)的時(shí)候了。  回復(fù)  更多評(píng)論
  
# re: 是時(shí)候重構(gòu)了![未登錄](méi) 2008-10-29 06:43 | hh
大哥,你念研不。  回復(fù)  更多評(píng)論
  
# re: 是時(shí)候重構(gòu)了! 2008-10-31 19:06 | 金山詞霸2008
現(xiàn)在實(shí)習(xí)的都不念研了,除非保送。  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线视频免费观看| 久久久99免费视频| 亚洲国产一二三| 久久久久久亚洲综合影院红桃| 亚洲人成艺术| 亚洲一级黄色| 欧美在线免费看| 老司机午夜精品视频在线观看| 麻豆乱码国产一区二区三区| 免费亚洲电影在线| 亚洲免费观看高清完整版在线观看| 一本久久综合| 欧美一区午夜视频在线观看| 美脚丝袜一区二区三区在线观看| 欧美激情一区二区三级高清视频| 国产精品欧美日韩久久| 在线播放视频一区| 一本一本久久| 久久久久一区二区三区| 亚洲精品极品| 亚洲欧美视频在线观看视频| 麻豆精品传媒视频| 国产精品另类一区| 亚洲东热激情| 午夜久久久久| 亚洲黄色有码视频| 午夜精品久久久久| 欧美精品一区三区| 一区二区三区在线视频观看 | 国产人成一区二区三区影院| 久久国产精品色婷婷| 国产欧美日韩视频一区二区三区 | 久久电影一区| 欧美福利网址| 亚洲一区二区三区三| 老司机免费视频一区二区| 欧美性猛交xxxx免费看久久久| 国语自产精品视频在线看一大j8 | 欧美图区在线视频| 亚洲国产精品久久久久秋霞不卡| 亚洲欧美电影院| 欧美国产日韩一区二区在线观看 | 99国产欧美久久久精品| 久久久久久久综合日本| 99精品国产在热久久| 久久久久久亚洲精品杨幂换脸| 国产精品www色诱视频| 亚洲麻豆视频| 亚洲第一在线| 久久免费偷拍视频| 韩日精品在线| 欧美在线亚洲一区| 国产日韩一区二区三区在线| 久久男女视频| 一区二区三区产品免费精品久久75 | 免费精品视频| 久久精品一区二区三区中文字幕| 国产精品一区二区久久久| 夜夜精品视频一区二区| 最新日韩在线| 欧美人与禽性xxxxx杂性| 亚洲国产欧洲综合997久久| 久久久久久久一区| 久久精品亚洲一区二区| 国产主播一区二区三区| 99精品欧美一区二区蜜桃免费| 亚洲精品小视频| 欧美精品在线一区二区| 日韩午夜av| 亚洲特级毛片| 国产精品久久夜| 久久综合色综合88| 亚洲夜晚福利在线观看| 亚洲精品资源美女情侣酒店| 欧美精品三区| 久久人人97超碰人人澡爱香蕉| 另类图片国产| 亚洲一区二区精品在线观看| 亚洲永久字幕| 亚洲黄色av| 久久国产精品99精品国产| 欧美婷婷六月丁香综合色| 在线国产精品播放| 久久亚洲一区二区| 亚洲女人av| 欧美激情片在线观看| 久久福利毛片| 久久久久久久性| 亚洲狼人综合| 亚洲一本视频| 亚洲东热激情| 中国日韩欧美久久久久久久久| 国产精品永久免费观看| 免费观看日韩| 欧美丝袜一区二区| 麻豆精品网站| 欧美日韩一二三区| 老色鬼精品视频在线观看播放| 欧美大片在线观看一区| 亚洲欧美资源在线| 老司机精品视频网站| 亚洲一区二区黄色| 理论片一区二区在线| 一区二区三区四区国产| 久久精品国产第一区二区三区最新章节 | 久久成人在线| 欧美伦理a级免费电影| 久久精品一本| 欧美日韩一区二区三区在线 | 久久av二区| 中文一区二区| 免费在线成人av| 久久激五月天综合精品| 欧美午夜久久| 国产一区二区三区在线观看免费| 一本色道久久88精品综合| 国产亚洲精品bv在线观看| 亚洲精品一区二区网址| 亚洲国产成人在线| 欧美一区二区国产| 亚洲欧美综合v| 欧美日韩一区二区三区在线| 欧美黄色aaaa| 亚洲二区视频在线| 国产精品video| 亚洲欧美视频在线| 久久综合色天天久久综合图片| 亚洲国产欧美另类丝袜| 亚洲四色影视在线观看| 亚洲国产精品电影在线观看| 欧美国产精品专区| 亚洲天堂免费在线观看视频| 亚洲电影在线| 欧美夫妇交换俱乐部在线观看| 欧美在线免费视频| 亚洲激情视频在线播放| 久久久久久久999| 欧美一区二视频| 国产农村妇女毛片精品久久莱园子| 日韩视频一区二区在线观看| 日韩一级成人av| 欧美国产日本在线| 91久久综合| 中文日韩在线视频| 国产精品久久久久77777| 亚洲欧洲精品一区| 欧美一区二区三区免费视| 久久精品亚洲国产奇米99| 欧美视频日韩视频| 亚洲自啪免费| 美女露胸一区二区三区| 亚洲激情社区| 欧美日韩在线一区二区三区| 亚洲激情视频网| 久久综合久久综合九色| 欧美国产日韩xxxxx| 亚洲精选一区二区| 欧美日韩系列| 先锋影音久久久| 欧美电影在线观看| 中文精品视频| 国产精品一区二区三区四区五区| 欧美中文字幕在线| 欧美激情精品久久久久久久变态| 99国产一区| 国产午夜精品全部视频播放| 欧美77777| 亚洲一区二区日本| 美日韩精品免费观看视频| 中文欧美日韩| 原创国产精品91| 国产精品va在线| 老色批av在线精品| 亚洲一区二区三区777| 欧美国产三区| 久久精品国产99国产精品| 国产精品一区视频网站| 一区二区三区在线高清| 在线中文字幕不卡| 久久久久成人精品| 在线观看日韩av| 欧美伊人久久久久久午夜久久久久| 亚洲精品中文字幕女同| 欧美乱在线观看| 久久99在线观看| 久久精品视频网| 亚洲福利在线看| 亚洲电影免费在线观看| 男女精品视频| 久久亚洲私人国产精品va| 亚洲一区二区三区四区在线观看| 国产精品影视天天线| 欧美日韩国产片| 久久字幕精品一区| 午夜精品久久久久久久99黑人| 亚洲欧美激情精品一区二区| 国产精品扒开腿爽爽爽视频| 午夜精品久久久久| 久久免费黄色| 亚洲一二三区精品|