[aspectc-user] Not a member of error when weaving.

Guilherme . guibufolo at gmail.com
Mon Jun 27 18:03:41 CEST 2011


Hi!

The ac++ is reporting following error:

include//click/bighashmap_arena.hh:71: error: `unuse' is not a member of
`HashMap_Arena'

But as one can clearly see from the header file it is:

 1 // -*- c-basic-offset: 4; related-file-name:
"../../lib/bighashmap_arena.cc" -*-
  2 #ifndef CLICK_BIGHASHMAP_ARENA_HH
  3 #define CLICK_BIGHASHMAP_ARENA_HH
  4 CLICK_DECLS
  5
  6 class HashMap_Arena { public:
  7
  8     HashMap_Arena(uint32_t element_size);
  9
 10     void use()      { _refcount++; }
 11     void unuse();
 12
 13     bool detached() const { return _detached; }
 14     void detach()   { _detached = true; }
 15
 16     void *alloc();
 17     void free(void *);
 18
 19   private:
 20
 21     struct Link {
 22   Link *next;
 23     };
 24     Link *_free;
 25
 26     enum { NELEMENTS = 127 }; // not a power of 2 so we don't fall into
a
 27         // too-large bucket
 28     char *_cur_buffer;
 29     int _buffer_pos;
 30
 31     uint32_t _element_size;
 32
 33     char **_buffers;
 34     int _nbuffers;
 35     int _buffers_cap;
 36
 37     uint32_t _refcount;
 38     bool _detached;
 39
 40     HashMap_Arena(const HashMap_Arena &);
 41     ~HashMap_Arena();
 42     HashMap_Arena &operator=(const HashMap_Arena &);
 43
 44     void *hard_alloc();
 45
 46     friend class Link;    // shut up, compiler
 47
 48 };
 49
 50 class HashMap_ArenaFactory { public:
 51
 52     HashMap_ArenaFactory();
 53     virtual ~HashMap_ArenaFactory();
 54
 55     static void static_initialize();
 56     static void static_cleanup();
 57
 58     static HashMap_Arena *get_arena(uint32_t, HashMap_ArenaFactory *
=0);
 57
 58     static HashMap_Arena *get_arena(uint32_t, HashMap_ArenaFactory *
=0);
 59     virtual HashMap_Arena *get_arena_func(uint32_t);
 60
 61   private:
 62
 63     HashMap_Arena **_arenas[2];
 64     int _narenas[2];
 65
 66     static HashMap_ArenaFactory *the_factory;
 67
 68 };
 69
 70   /*inline*/ void
 71 HashMap_Arena::unuse()
 72 {
 73   _refcount--;
 74   if (_refcount <= 0)
 75     delete this;
 76 }
 77
 78   inline void *
 79 HashMap_Arena::alloc()
 80 {
 81   if (_free) {
 82     void *ret = _free;
 83     _free = _free->next;
 84     return ret;
 85   } else if (_buffer_pos > 0) {
 86     _buffer_pos -= _element_size;
 87     return _cur_buffer + _buffer_pos;
 88   } else
 89     return hard_alloc();
 90 }
 91
 92   inline void
 93 HashMap_Arena::free(void *v)
 94 {
 95   Link *link = reinterpret_cast<Link *>(v);
 96   link->next = _free;
 97   _free = link;
 98 }
 99
100 CLICK_ENDDECLS
101 #endif

The 'inline' keyword was uncommented by me just to make sure that wasn't the
breaking point.

Anyone got any ideas why this might be breaking?

Thank you,
Guilherme
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.aspectc.org/pipermail/aspectc-user/attachments/20110627/1f0d03d4/attachment.html>


More information about the aspectc-user mailing list