本文整理汇总了C++中DictionaryPtr::keyType方法的典型用法代码示例。如果您正苦于以下问题:C++ DictionaryPtr::keyType方法的具体用法?C++ DictionaryPtr::keyType怎么用?C++ DictionaryPtr::keyType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DictionaryPtr
的用法示例。
在下文中一共展示了DictionaryPtr::keyType方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void
CodeVisitor::visitDictionary(const DictionaryPtr& p)
{
TypePtr keyType = p->keyType();
BuiltinPtr b = BuiltinPtr::dynamicCast(keyType);
if(b)
{
switch(b->kind())
{
case Slice::Builtin::KindBool:
case Slice::Builtin::KindByte:
case Slice::Builtin::KindShort:
case Slice::Builtin::KindInt:
case Slice::Builtin::KindLong:
case Slice::Builtin::KindString:
//
// These types are acceptable as dictionary keys.
//
break;
case Slice::Builtin::KindFloat:
case Slice::Builtin::KindDouble:
emitWarning(p->file(), p->line(), "dictionary key type not supported in PHP");
break;
case Slice::Builtin::KindObject:
case Slice::Builtin::KindObjectProxy:
case Slice::Builtin::KindLocalObject:
assert(false);
}
}
else if(!EnumPtr::dynamicCast(keyType))
{
emitWarning(p->file(), p->line(), "dictionary key type not supported in PHP");
}
string type = getTypeVar(p);
startNamespace(p);
//
// Emit the type information.
//
string scoped = p->scoped();
_out << sp << nl << "if(!isset(" << type << "))";
_out << sb;
_out << nl << type << " = IcePHP_defineDictionary('" << scoped << "', ";
writeType(p->keyType());
_out << ", ";
writeType(p->valueType());
_out << ");";
_out << eb;
endNamespace();
}
示例2: fixId
string
Slice::JsGenerator::typeToString(const TypePtr& type)
{
if(!type)
{
return "void";
}
static const char* builtinTable[] =
{
"Number", // byte
"Boolean", // bool
"Number", // short
"Number", // int
"Number", // long
"Number", // float
"Number", // double
"String",
"Ice.Value",
"Ice.ObjectPrx",
"Object",
"Ice.Value"
};
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
if(builtin)
{
return builtinTable[builtin->kind()];
}
ProxyPtr proxy = ProxyPtr::dynamicCast(type);
if(proxy)
{
return fixId(proxy->_class()->scoped() + "Prx");
}
SequencePtr seq = SequencePtr::dynamicCast(type);
if(seq)
{
return typeToString(seq->type()) + "[]";
}
DictionaryPtr d = DictionaryPtr::dynamicCast(type);
if(d)
{
const TypePtr keyType = d->keyType();
BuiltinPtr b = BuiltinPtr::dynamicCast(keyType);
return ((b && b->kind() == Builtin::KindLong) || StructPtr::dynamicCast(keyType)) ? "Ice.HashMap" : "Map";
}
ContainedPtr contained = ContainedPtr::dynamicCast(type);
if(contained)
{
return fixId(contained->scoped());
}
return "???";
}
示例3: typeToString
void Slice::ChecksumVisitor::visitDictionary(const DictionaryPtr& p)
{
if (p->isLocal()) {
return;
}
ostringstream ostr;
ostr << "dictionary<" << typeToString(p->keyType()) << ", " << typeToString(p->valueType())
<< "> " << p->name() << endl;
updateMap(p->scoped(), ostr.str());
}
示例4: typeChange
void
FreezeScript::AnalyzeTransformVisitor::visitDictionary(const DictionaryPtr& v)
{
if(v->isLocal())
{
return;
}
string scoped = v->scoped();
if(ignoreType(scoped))
{
return;
}
TypeList l = _newUnit->lookupTypeNoBuiltin(scoped, false);
if(l.empty())
{
_missingTypes.push_back(scoped);
return;
}
DictionaryPtr newDict = DictionaryPtr::dynamicCast(l.front());
if(!newDict)
{
if(!_ignoreTypeChanges)
{
typeChange(scoped, v, l.front());
}
return;
}
_out.newline();
_out.newline();
_out << "<!-- dictionary " << scoped << " -->";
_out << se("transform") << attr("type", scoped);
compareTypes(scoped + " key type", v->keyType(), newDict->keyType());
compareTypes(scoped + " value type", v->valueType(), newDict->valueType());
_out << ee;
}
示例5: fixIdent
void
Slice::Ruby::CodeVisitor::visitDictionary(const DictionaryPtr& p)
{
//
// Emit the type information.
//
string name = fixIdent(p->name(), IdentToUpper);
string scoped = p->scoped();
_out << sp << nl << "if not defined?(" << getAbsolute(p, IdentToUpper, "T_") << ')';
_out.inc();
_out << nl << "T_" << name << " = ::Ice::__defineDictionary('" << scoped << "', ";
writeType(p->keyType());
_out << ", ";
writeType(p->valueType());
_out << ")";
_out.dec();
_out << nl << "end"; // if not defined?()
}
示例6: if
void
Slice::ObjCGenerator::writeOptMemberMarshalUnmarshalCode(Output &out, const TypePtr& type, const string& param,
bool marshal) const
{
string stream = marshal ? "os_" : "is_";
string optionalHelper;
string helper;
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
if(builtin)
{
if(builtin->kind() == Builtin::KindObjectProxy)
{
optionalHelper = "ICEVarLengthOptionalHelper";
helper = "[ICEProxyHelper class]";
}
else
{
writeMarshalUnmarshalCode(out, type, param, marshal, false);
return;
}
}
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
if(cl)
{
writeMarshalUnmarshalCode(out, type, param, marshal, false);
return;
}
EnumPtr en = EnumPtr::dynamicCast(type);
if(en)
{
writeMarshalUnmarshalCode(out, type, param, marshal, false);
return;
}
ProxyPtr prx = ProxyPtr::dynamicCast(type);
if(prx)
{
optionalHelper = "ICEVarLengthOptionalHelper";
helper = "objc_getClass(\"" + moduleName(findModule(prx->_class())) + prx->_class()->name() + "PrxHelper\")";
}
StructPtr st = StructPtr::dynamicCast(type);
if(st)
{
if(st->isVariableLength())
{
optionalHelper = "ICEVarLengthOptionalHelper";
}
else
{
optionalHelper = "ICEFixedLengthOptionalHelper";
}
helper = "[" + typeToString(st) + "Helper class]";
}
SequencePtr seq = SequencePtr::dynamicCast(type);
if(seq)
{
TypePtr element = seq->type();
if(element->isVariableLength())
{
optionalHelper = "ICEVarLengthOptionalHelper";
}
else if(element->minWireSize() == 1)
{
writeMarshalUnmarshalCode(out, type, param, marshal, false);
return;
}
else
{
optionalHelper = "ICEFixedSequenceOptionalHelper";
}
helper = "[" + moduleName(findModule(seq)) + seq->name() + "Helper class]";
}
DictionaryPtr d = DictionaryPtr::dynamicCast(type);
if(d)
{
if(d->keyType()->isVariableLength() || d->valueType()->isVariableLength())
{
optionalHelper = "ICEVarLengthOptionalHelper";
}
else
{
optionalHelper = "ICEFixedDictionaryOptionalHelper";
}
helper = "[" + moduleName(findModule(d)) + d->name() + "Helper class]";
}
out << nl;
if(marshal)
{
out << "[" << optionalHelper << " write:" << param << " stream:" << stream << " helper:" << helper << "];";
}
else
{
out << param << " = [" << optionalHelper << " readRetained:" << stream << " helper:" << helper << "];";
//.........这里部分代码省略.........
示例7: switch
string
Slice::ObjCGenerator::getOptionalFormat(const TypePtr& type)
{
BuiltinPtr bp = BuiltinPtr::dynamicCast(type);
if(bp)
{
switch(bp->kind())
{
case Builtin::KindByte:
case Builtin::KindBool:
{
return "ICEOptionalFormatF1";
}
case Builtin::KindShort:
{
return "ICEOptionalFormatF2";
}
case Builtin::KindInt:
case Builtin::KindFloat:
{
return "ICEOptionalFormatF4";
}
case Builtin::KindLong:
case Builtin::KindDouble:
{
return "ICEOptionalFormatF8";
}
case Builtin::KindString:
{
return "ICEOptionalFormatVSize";
}
case Builtin::KindObject:
case Builtin::KindValue:
{
return "ICEOptionalFormatClass";
}
case Builtin::KindObjectProxy:
{
return "ICEOptionalFormatFSize";
}
case Builtin::KindLocalObject:
{
assert(false);
break;
}
}
}
if(EnumPtr::dynamicCast(type))
{
return "ICEOptionalFormatSize";
}
SequencePtr seq = SequencePtr::dynamicCast(type);
if(seq)
{
return seq->type()->isVariableLength() ? "ICEOptionalFormatFSize" : "ICEOptionalFormatVSize";
}
DictionaryPtr d = DictionaryPtr::dynamicCast(type);
if(d)
{
return (d->keyType()->isVariableLength() || d->valueType()->isVariableLength()) ?
"ICEOptionalFormatFSize" : "ICEOptionalFormatVSize";
}
StructPtr st = StructPtr::dynamicCast(type);
if(st)
{
return st->isVariableLength() ? "ICEOptionalFormatFSize" : "ICEOptionalFormatVSize";
}
if(ProxyPtr::dynamicCast(type))
{
return "ICEOptionalFormatFSize";
}
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
assert(cl);
return "ICEOptionalFormatClass";
}
示例8: if
//.........这里部分代码省略.........
{
ostringstream os;
ClassDefPtr def = proxy->_class()->definition();
if(!def->isInterface() && def->allOperations().empty())
{
if(getModuleMetadata(toplevel) != "ice")
{
os << "iceNS0.";
}
os << getUnqualified(typeScriptBuiltinTable[Builtin::KindObjectProxy],
toplevel->scope(),
getModuleMetadata(toplevel));
}
else
{
string prefix;
if(typescript)
{
prefix = importPrefix(ContainedPtr::dynamicCast(def), toplevel, imports);
os << prefix;
}
if(prefix.empty() && typescript)
{
os << getUnqualified(fixId(proxy->_class()->scoped() + "Prx"), toplevel->scope(), prefix);
}
else
{
os << fixId(proxy->_class()->scoped() + "Prx");
}
}
return os.str();
}
if(!typescript || definition)
{
SequencePtr seq = SequencePtr::dynamicCast(type);
if (seq)
{
BuiltinPtr b = BuiltinPtr::dynamicCast(seq->type());
if (b && b->kind() == Builtin::KindByte)
{
return "Uint8Array";
}
else
{
return typeToString(seq->type(), toplevel, imports, typescript) + "[]";
}
}
DictionaryPtr d = DictionaryPtr::dynamicCast(type);
if(d)
{
const TypePtr keyType = d->keyType();
BuiltinPtr builtin = BuiltinPtr::dynamicCast(keyType);
ostringstream os;
if ((builtin && builtin->kind() == Builtin::KindLong) || StructPtr::dynamicCast(keyType))
{
const string prefix = importPrefix("Ice.HashMap", toplevel);
os << prefix << getUnqualified("Ice.HashMap", toplevel->scope(), prefix);
}
else
{
os << "Map";
}
if (typescript)
{
os << "<"
<< typeToString(keyType, toplevel, imports, true) << ", "
<< typeToString(d->valueType(), toplevel, imports, true) << ">";
}
return os.str();
}
}
ContainedPtr contained = ContainedPtr::dynamicCast(type);
if(contained)
{
ostringstream os;
string prefix;
if(typescript)
{
prefix = importPrefix(contained, toplevel, imports);
os << prefix;
}
if(prefix.empty() && typescript)
{
os << getUnqualified(fixId(contained->scoped()), toplevel->scope(), prefix);
}
else
{
os << fixId(contained->scoped());
}
return os.str();
}
return "???";
}