In previous attempt small test worked but was not able to work with
protocol buffer source code.
I tried one more thing as
#if deinfed (MISSING_HASH_MAP) && defined (__xlC__)
#define hash_map std::tr1::unordered_map

google/protobuf/unittest.proto:85:37: Expected ";".
google/protobuf/unittest.proto:117:37: Expected ";".
google/protobuf/unittest.proto:133:55: Expected identifier.
google/protobuf/unittest.proto:134:55: Expected identifier.
google/protobuf/unittest.proto:135:55: Expected identifier.
google/protobuf/unittest.proto:136:55: Expected identifier.
google/protobuf/unittest.proto:137:54: Expected identifier.
google/protobuf/unittest.proto:138:55: Expected identifier.
google/protobuf/unittest.proto:139:55: Expected identifier.
google/protobuf/unittest.proto:140:55: Expected identifier.
google/protobuf/unittest.proto:141:55: Expected identifier.
google/protobuf/unittest.proto:142:54: Expected identifier.
google/protobuf/unittest.proto:143:55: Expected identifier.
google/protobuf/unittest.proto:144:55: Expected identifier.
google/protobuf/unittest.proto:146:54: Expected identifier.
google/protobuf/unittest.proto:147:54: Expected identifier.
google/protobuf/unittest.proto:154:73: Expected identifier.
google/protobuf/unittest.proto:155:57: Expected identifier.
google/protobuf/unittest.proto:192:47: Expected ";".
google/protobuf/unittest.proto:226:47: Expected ";".
google/protobuf/unittest.proto:244:65: Expected identifier.
google/protobuf/unittest.proto:245:65: Expected identifier.
google/protobuf/unittest.proto:246:65: Expected identifier.
google/protobuf/unittest.proto:247:65: Expected identifier.
google/protobuf/unittest.proto:248:64: Expected identifier.
google/protobuf/unittest.proto:249:65: Expected identifier.
google/protobuf/unittest.proto:250:65: Expected identifier.
google/protobuf/unittest.proto:251:65: Expected identifier.
google/protobuf/unittest.proto:252:65: Expected identifier.
google/protobuf/unittest.proto:253:64: Expected identifier.
google/protobuf/unittest.proto:254:65: Expected identifier.
google/protobuf/unittest.proto:255:65: Expected identifier.
google/protobuf/unittest.proto:257:64: Expected identifier.
google/protobuf/unittest.proto:258:64: Expected identifier.
google/protobuf/unittest.proto:268:64: Expected identifier.
google/protobuf/unittest.proto:269:68: Expected identifier.
google/protobuf/unittest.proto:276:42: Expected identifier.
google/protobuf/unittest.proto:379:26: Expected ";".
google/protobuf/unittest.proto:380:26: Expected ";".
google/protobuf/unittest.proto:451:47: Expected identifier.
google/protobuf/unittest.proto:452:47: Expected identifier.
google/protobuf/unittest.proto:453:47: Expected identifier.
google/protobuf/unittest.proto:454:47: Expected identifier.
google/protobuf/unittest.proto:455:47: Expected identifier.
google/protobuf/unittest.proto:460:46: Expected identifier.
gmake: *** [unittest_proto_middleman] Error 1

So I guess it wont even compile with unordered_map provided on Linux .
Please provide some inputs on this one.

Thanks & Regards,
Vikram

On Jul 14, 6:35 pm, Kenton Varda <ken...@google.com> wrote:
> It looks like your implementation of hash_map is not working correctly --
> all lookups are failing.  You might try writing a little test for hash_map
> itself that would be easier to debug.
>
> On Tue, Jul 14, 2009 at 6:27 PM, vikram <patilvik...@gmail.com> wrote:
>
> > Kenton & Monty,
>
> >        I added hack as followes in the hash.h
>
> > // File changed .....
>
> > #if defined(HAVE_HASH_MAP) && defined(HAVE_HASH_SET)
> > #include HASH_MAP_H
> > #include HASH_SET_H
> > #elif  defined (__xlC__)
> > #define MISSING_HASH
> > #include <unordered_map>
> > #include <unordered_set>
> > #else
> > #define MISSING_HASH
> > #include <map>
> > #include <set>
> > #endif
>
> > namespace google {
> > namespace protobuf {
> > #if defined(MISSING_HASH) && defined(__xlC__)
>
> > //@TODO
> > //Inherit hash_map from unordered_map
> > template <typename Key>
> > struct hash : public std::tr1::hash<Key> {
> > };
>
> > template <typename Key>
> > struct hash<const Key*> {
> >  inline size_t operator()(const Key* key) const {
> >    return reinterpret_cast<size_t>(key);
> >  }
> > };
>
> > template <typename Key, typename Data,
> >          typename HashFcn = hash<Key>,
> >          typename EqualKey = std::equal_to<Key> >
> > class hash_map : public std::tr1::unordered_map<Key, Data, HashFcn ,
> > EqualKey> {
>
> > };
>
> > template <typename Key,
> >          typename HashFcn = hash<Key>,
> >          typename EqualKey = std::equal_to<Key> >
> > class hash_set : public std::tr1::unordered_set<
> >    Key, HashFcn, EqualKey> {
> > };
> > #elif defined(MISSING_HASH)
>
> > File continues as it is
>
> > Stack trace
>
> > pthread_kill(??, ??) at 0xd01246b4
> > _p_raise(??) at 0xd0124124
> > raise.raise(??) at 0xd0375b28
> > abort() at 0xd03d3e78
> > google::protobuf::internal::LogMessage::Finish()(this = 0x2ff21e40),
> > line 171 in "common.cc"
> > google::protobuf::internal::LogFinisher::operator=
> > (google::protobuf::internal::LogMessage&)(this = 0x2ff21e38, other = &
> > (...)), line 176 in "common.cc"
> > protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto()(), line
> > 82 in "descriptor.pb.cc"
> > pthread_once(??, ??) at 0xd0115e78
> > common.GoogleOnceInit(pthread_once_t*,void(*)())(0xf04a9d00,
> > 0xf04b15a0), line 114 in "once.h"
> > protobuf_AssignDescriptorsOnce()(), line 408 in "descriptor.pb.cc"
> > google::protobuf::FileOptions::descriptor()(), line 3862 in
> > "descriptor.pb.cc"
> > google::protobuf::FileOptions::GetDescriptor() const(this =
> > 0x2000e248), line 4190 in "descriptor.pb.cc"
> > google::protobuf::compiler::Parser::ParseOptionAssignment
> > (google::protobuf::Message*)(this = 0x2ff223b8, options = 0x2000e248),
> > line 659 in "parser.cc"
> > google::protobuf::compiler::Parser::ParseOption
> > (google::protobuf::Message*)(this = 0x2ff223b8, options = 0x2000e248),
> > line 1081 in "parser.cc"
> > google::protobuf::compiler::Parser::ParseTopLevelStatement
> > (google::protobuf::FileDescriptorProto*)(this = 0x2ff223b8, file =
> > 0x2ff22460), line 375 in "parser.cc"
> > google::protobuf::compiler::Parser::Parse
> > (google::protobuf::io::Tokenizer*,google::protobuf::FileDescriptorProto*)
> > (this = 0x2ff223b8, input = 0x2ff22368, file = 0x2ff22460), line 321
> > in "parser.cc"
> > google::protobuf::compiler::SourceTreeDescriptorDatabase::FindFileByName
> > (const
> > std::basic_string<char,std::char_traits<char>,std::allocator<char>
> > >&,google::protobuf::FileDescriptorProto*)(this = 0x2ff22688, filename
> > = &(...), output = 0x2ff22460), line 145 in "importer.cc"
> > TryFindFileInFallbackDatabase(const
> > std::basic_string<char,std::char_traits<char>,std::allocator<char> >&)
> > const(0x2ff226ac, 0x2000b9d8), line 1230 in "descriptor.cc"
> > NFS write error on host esfs3-lnx.actuate.com: 28.
> > File: userid=1104, groupid=1000
> > FindFileByName(const
> > std::basic_string<char,std::char_traits<char>,std::allocator<char> >&)
> > const(0x2ff226ac, 0x2000b9d8), line 875 in "descriptor.cc"
> > google::protobuf::compiler::Importer::Import(const
> > std::basic_string<char,std::char_traits<char>,std::allocator<char> >&)
> > (this = 0x2ff22688, filename = &(...)), line 194 in "importer.cc"
>
> > Protoc compiler aborted
>
> > ./protoc google/protobuf/unittest.proto google/protobuf/
> > unittest_empty.proto google/protobuf/unittest_import.proto google/
> > protobuf/unittest_mset.proto google/protobuf/
> > unittest_optimize_for.proto google/protobuf/
> > unittest_embed_optimize_for.proto google/protobuf/
> > unittest_custom_options.proto google/protobuf/compiler/cpp/
> > cpp_test_bad_identifiers.proto -I. --cpp_out=.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2215] Invalid proto
> > descriptor for file "google/protobuf/descriptor.proto":
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FileDescriptorSet.file:
> > ".google.protobuf.FileDescriptorProto" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FileDescriptorProto.message_type:
> > ".google.protobuf.DescriptorProto" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FileDescriptorProto.extension:
> > ".google.protobuf.FieldDescriptorProto" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FileDescriptorProto.options:
> > ".google.protobuf.FileOptions" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.DescriptorProto.field:
> > ".google.protobuf.FieldDescriptorProto" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.DescriptorProto.extension:
> > ".google.protobuf.FieldDescriptorProto" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.DescriptorProto.nested_type:
> > ".google.protobuf.DescriptorProto" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.DescriptorProto.enum_type:
> > ".google.protobuf.EnumDescriptorProto" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.DescriptorProto.extension_range:
> > ".google.protobuf.DescriptorProto.ExtensionRange" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.DescriptorProto.options:
> > ".google.protobuf.MessageOptions" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FieldDescriptorProto.label:
> > ".google.protobuf.FieldDescriptorProto.Label" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FieldDescriptorProto.type:
> > ".google.protobuf.FieldDescriptorProto.Type" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FieldDescriptorProto.options:
> > ".google.protobuf.FieldOptions" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.EnumDescriptorProto.value:
> > ".google.protobuf.EnumValueDescriptorProto" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.EnumDescriptorProto.options:
> > ".google.protobuf.EnumOptions" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.EnumValueDescriptorProto.options:
> > ".google.protobuf.EnumValueOptions" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.ServiceDescriptorProto.method:
> > ".google.protobuf.MethodDescriptorProto" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.ServiceDescriptorProto.options:
> > ".google.protobuf.ServiceOptions" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.MethodDescriptorProto.options:
> > ".google.protobuf.MethodOptions" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FileOptions.optimize_for:
> > ".google.protobuf.FileOptions.OptimizeMode" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FileOptions.uninterpreted_option:
> > ".google.protobuf.UninterpretedOption" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.MessageOptions.uninterpreted_option:
> > ".google.protobuf.UninterpretedOption" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FieldOptions.ctype:
> > ".google.protobuf.FieldOptions.CType" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.FieldOptions.uninterpreted_option:
> > ".google.protobuf.UninterpretedOption" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.EnumOptions.uninterpreted_option:
> > ".google.protobuf.UninterpretedOption" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.EnumValueOptions.uninterpreted_option:
> > ".google.protobuf.UninterpretedOption" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.ServiceOptions.uninterpreted_option:
> > ".google.protobuf.UninterpretedOption" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.MethodOptions.uninterpreted_option:
> > ".google.protobuf.UninterpretedOption" is not defined.
> > libprotobuf ERROR google/protobuf/descriptor.cc:2218]
> > google.protobuf.UninterpretedOption.name:
> > ".google.protobuf.UninterpretedOption.NamePart" is not defined.
> > libprotobuf FATAL google/protobuf/descriptor.pb.cc:82] CHECK failed:
> > file != NULL:
> > gmake[2]: *** [unittest_proto_middleman] IOT/Abort trap (core dumped)
>
> > Any suggestions?
>
> > Thanks & Regards,
> > Vikram
>
> > On Jul 13, 5:23 pm, Kenton Varda <ken...@google.com> wrote:
> > > And yes, I'd love a patch.  :)
>
> > > On Mon, Jul 13, 2009 at 5:22 PM, Kenton Varda <ken...@google.com> wrote:
> > > > google/protobuf/stubs/hash.h already contains some hacks for hash_map.
> >  To
> > > > support unordered_map, all we'd have to do is add another hack there
> > which
> > > > defines
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to