diff options
author | Mark Spruiell <mes@zeroc.com> | 2009-08-27 10:18:06 -0700 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2009-08-27 10:18:06 -0700 |
commit | 6e2eae8e4f9babd2881070a7301d85cf430cd970 (patch) | |
tree | 0cf9b8c1854fd62d39fe624954b9372715a69ac7 /cpp/src | |
parent | Update patchs for db 4.7.25 (diff) | |
download | ice-6e2eae8e4f9babd2881070a7301d85cf430cd970.tar.bz2 ice-6e2eae8e4f9babd2881070a7301d85cf430cd970.tar.xz ice-6e2eae8e4f9babd2881070a7301d85cf430cd970.zip |
bug 4230: add support for enumerations as dictionary keys in PHP
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/slice2php/Main.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/cpp/src/slice2php/Main.cpp b/cpp/src/slice2php/Main.cpp index a51a7e17ef6..de7997f0339 100644 --- a/cpp/src/slice2php/Main.cpp +++ b/cpp/src/slice2php/Main.cpp @@ -863,6 +863,39 @@ CodeVisitor::visitSequence(const SequencePtr& p) 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); |