请问以下的语法是c++的么?在什么书中可以查到?
xxxl 2012-12-21 09:03:50 请各位大大帮忙看看以下代码的语法,
replacements,tagsInUse,……,occupancies这些对象怎么这样子初始化啊,请问这样的方式是c++的语法么?
在哪本书上看到过么?
小弟不才,望各位大大多多指教!!!
================================================
//base.cc
void
BaseTags::regStats(const string &name)
{
using namespace Stats;
replacements
.init(maxThreadsPerCPU)
.name(name + ".replacements")
.desc("number of replacements")
.flags(total)
;
tagsInUse
.name(name + ".tagsinuse")
.desc("Cycle average of tags in use")
;
totalRefs
.name(name + ".total_refs")
.desc("Total number of references to valid blocks.")
;
sampledRefs
.name(name + ".sampled_refs")
.desc("Sample count of references to valid blocks.")
;
avgRefs
.name(name + ".avg_refs")
.desc("Average number of references to valid blocks.")
;
avgRefs = totalRefs/sampledRefs;
warmupCycle
.name(name + ".warmup_cycle")
.desc("Cycle when the warmup percentage was hit.")
;
occupancies
.init(cache->system->maxMasters())
.name(name + ".occ_blocks")
.desc("Average occupied blocks per requestor")
.flags(nozero | nonan)
;
for (int i = 0; i < cache->system->maxMasters(); i++) {
occupancies.subname(i, cache->system->getMasterName(i));
}
avgOccs
.name(name + ".occ_percent")
.desc("Average percentage of cache occupancy")
.flags(nozero | total)
;
for (int i = 0; i < cache->system->maxMasters(); i++) {
avgOccs.subname(i, cache->system->getMasterName(i));
}
avgOccs = occupancies / Stats::constant(numBlocks);
registerExitCallback(new BaseTagsCallback(this));
}
====================================================================
/*replacements,tagsInUse,……,occupancies这些对象定义在
base.hh 中
*/
Stats::Vector replacements;
====================================================================
//在"namespace Stats"中有以下定义
class Vector : public VectorBase<Vector, StatStor>
{
};
class VectorBase : public DataWrapVec<Derived, VectorInfoProxy>
{
……
};
class DataWrapVec : public DataWrap<Derived, InfoProxyType>
{
……
};
template <class Derived, template <class> class InfoProxyType>
class DataWrap : public InfoAccess
{
……
public:
Derived &
name(const std::string &name)
{
Info *info = this->info();
info->setName(name);
info->flags.set(display);
return this->self();
}
const std::string &name() const { return this->info()->name; }
Derived &
desc(const std::string &_desc)
{
this->info()->desc = _desc;
return this->self();
}
};
====================================================================
这些代码使用python和c++写的,通过swig集成在一起的,以上部分我没见到python的部分,
1、请问像
tagsInUse
.name(name + ".tagsinuse")
.desc("Cycle average of tags in use")
;
这样子是纯c++的代码初始化的方式么?
2、如果是的,我怎么在c++语法书上没有看到过,请问你在何处见到过?
万分感谢