本文整理汇总了C++中StructPtr::dataMembers方法的典型用法代码示例。如果您正苦于以下问题:C++ StructPtr::dataMembers方法的具体用法?C++ StructPtr::dataMembers怎么用?C++ StructPtr::dataMembers使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StructPtr
的用法示例。
在下文中一共展示了StructPtr::dataMembers方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: typeChange
bool
FreezeScript::AnalyzeTransformVisitor::visitStructStart(const StructPtr& v)
{
if(v->isLocal())
{
return false;
}
string scoped = v->scoped();
if(ignoreType(scoped))
{
return false;
}
TypeList l = _newUnit->lookupTypeNoBuiltin(scoped, false);
if(l.empty())
{
_missingTypes.push_back(scoped);
return false;
}
StructPtr newStruct = StructPtr::dynamicCast(l.front());
if(!newStruct)
{
if(!_ignoreTypeChanges)
{
typeChange(scoped, v, l.front());
}
return false;
}
_out.newline();
_out.newline();
_out << "<!-- struct " << scoped << " -->";
_out << se("transform") << attr("type", scoped);
DataMemberList oldMembers = v->dataMembers();
DataMemberList newMembers = newStruct->dataMembers();
compareMembers(oldMembers, newMembers);
_out << ee;
return false;
}
示例2: typeToString
bool Slice::ChecksumVisitor::visitStructStart(const StructPtr& p)
{
if (p->isLocal()) {
return false;
}
ostringstream ostr;
ostr << "struct " << p->name() << endl;
DataMemberList members = p->dataMembers();
for (DataMemberList::iterator q = members.begin(); q != members.end(); ++q) {
ostr << typeToString((*q)->type()) << ' ' << (*q)->name() << endl;
}
updateMap(p->scoped(), ostr.str());
return false;
}
示例3: __construct
bool
CodeVisitor::visitStructStart(const StructPtr& p)
{
string scoped = p->scoped();
string name = getName(p);
string type = getTypeVar(p);
string abs = getAbsolute(p, _ns);
MemberInfoList memberList;
MemberInfoList::iterator r;
{
DataMemberList members = p->dataMembers();
for(DataMemberList::iterator q = members.begin(); q != members.end(); ++q)
{
memberList.push_back(MemberInfo());
memberList.back().fixedName = fixIdent((*q)->name());
memberList.back().inherited = false;
memberList.back().dataMember = *q;
}
}
startNamespace(p);
_out << sp << nl << "if(!class_exists('" << escapeName(abs) << "'))";
_out << sb;
_out << nl << "class " << name;
_out << sb;
_out << nl << "public function __construct(";
writeConstructorParams(memberList);
_out << ")";
_out << sb;
for(r = memberList.begin(); r != memberList.end(); ++r)
{
writeAssign(*r);
}
_out << eb;
//
// __toString
//
_out << sp << nl << "public function __toString()";
_out << sb;
_out << nl << "global " << type << ';';
_out << nl << "return IcePHP_stringify($this, " << type << ");";
_out << eb;
if(!memberList.empty())
{
_out << sp;
for(r = memberList.begin(); r != memberList.end(); ++r)
{
_out << nl << "public $" << r->fixedName << ';';
}
}
_out << eb;
//
// Emit the type information.
//
_out << sp << nl << type << " = IcePHP_defineStruct('" << scoped << "', '" << escapeName(abs) << "', array(";
//
// Data members are represented as an array:
//
// ('MemberName', MemberType)
//
// where MemberType is either a primitive type constant (T_INT, etc.) or the id of a constructed type.
//
for(r = memberList.begin(); r != memberList.end(); ++r)
{
if(r != memberList.begin())
{
_out << ", ";
}
_out.inc();
_out << nl << "array('" << r->fixedName << "', ";
writeType(r->dataMember->type());
_out << ')';
_out.dec();
}
_out << "));";
_out << eb;
endNamespace();
return false;
}
示例4: fixIdent
bool
Slice::Ruby::CodeVisitor::visitStructStart(const StructPtr& p)
{
string scoped = p->scoped();
string name = fixIdent(p->name(), IdentToUpper);
MemberInfoList memberList;
MemberInfoList::iterator r;
{
DataMemberList members = p->dataMembers();
for(DataMemberList::iterator q = members.begin(); q != members.end(); ++q)
{
memberList.push_back(MemberInfo());
memberList.back().lowerName = fixIdent((*q)->name(), IdentToLower);
memberList.back().fixedName = fixIdent((*q)->name(), IdentNormal);
memberList.back().inherited = false;
memberList.back().dataMember = *q;
}
}
_out << sp << nl << "if not defined?(" << getAbsolute(p, IdentToUpper) << ')';
_out.inc();
_out << nl << "class " << name;
_out.inc();
if(!memberList.empty())
{
_out << nl << "def initialize(";
writeConstructorParams(memberList);
_out << ")";
_out.inc();
for(r = memberList.begin(); r != memberList.end(); ++r)
{
_out << nl << '@' << r->fixedName << " = " << r->lowerName;
}
_out.dec();
_out << nl << "end";
}
//
// hash
//
_out << sp << nl << "def hash";
_out.inc();
_out << nl << "_h = 0";
int iter = 0;
for(r = memberList.begin(); r != memberList.end(); ++r)
{
writeHash("@" + r->fixedName, r->dataMember->type(), iter);
}
_out << nl << "_h % 0x7fffffff";
_out.dec();
_out << nl << "end";
//
// ==
//
_out << sp << nl << "def ==(other)";
_out.inc();
_out << nl << "return false if";
_out.inc();
for(r = memberList.begin(); r != memberList.end(); ++r)
{
if(r != memberList.begin())
{
_out << " or";
}
_out << nl << "@" << r->fixedName << " != other." << r->fixedName;
}
_out.dec();
_out << nl << "true";
_out.dec();
_out << nl << "end";
//
// eql?
//
// This method is used to determine the equality of keys in a Hash object.
//
_out << sp << nl << "def eql?(other)";
_out.inc();
_out << nl << "return other.class == self.class && other == self";
_out.dec();
_out << nl << "end";
//
// inspect
//
_out << sp << nl << "def inspect";
_out.inc();
_out << nl << "::Ice::__stringify(self, T_" << name << ")";
_out.dec();
_out << nl << "end";
//
// read/write accessors for data members.
//
if(!memberList.empty())
{
_out << sp << nl << "attr_accessor ";
for(r = memberList.begin(); r != memberList.end(); ++r)
//.........这里部分代码省略.........
示例5: if
bool
FreezeScript::AnalyzeTransformVisitor::visitStructStart(const StructPtr& v)
{
if(v->isLocal())
{
return false;
}
string scoped = v->scoped();
if(ignoreType(scoped))
{
return false;
}
TypeList l = _newUnit->lookupTypeNoBuiltin(scoped, false);
if(l.empty())
{
_missingTypes.push_back(scoped);
return false;
}
//
// Allow transforming from struct to class.
//
StructPtr newStruct = StructPtr::dynamicCast(l.front());
ClassDeclPtr decl = ClassDeclPtr::dynamicCast(l.front());
ClassDefPtr newClass;
if(decl)
{
newClass = decl->definition();
if(!newClass)
{
_missingTypes.push_back(scoped);
return false;
}
}
else if(!newStruct)
{
if(!_ignoreTypeChanges)
{
typeChange(scoped, v, l.front());
}
return false;
}
_out.newline();
_out.newline();
if(newClass)
{
_out << "<!-- class " << scoped << " -->";
}
else
{
_out << "<!-- struct " << scoped << " -->";
}
_out << se("transform") << attr("type", scoped);
DataMemberList oldMembers, newMembers;
if(newClass)
{
oldMembers = v->dataMembers();
newMembers = newClass->allDataMembers();
}
else
{
oldMembers = v->dataMembers();
newMembers = newStruct->dataMembers();
}
compareMembers(oldMembers, newMembers);
_out << ee;
return false;
}