[Vala] Oddity when using generics with boxed values



For a project I'm working on, I'm trying to maintain a cache of X atoms.
(The x11 bindings define atoms as [SimpleType] [IntegerType].) The
rather simple code I've got looks like this:

class AtomManager : GLib.Object
{
        private unowned X.Display? _display;
        private Gee.HashMap<string, X.Atom?> _atoms;

        public AtomManager(ref X.Display? display)
        {
                _atoms = new Gee.HashMap<string, X.Atom?>();
                _display = display;
        }

        public X.Atom find(string name)
        {
                X.Atom? atom = _atoms[name];
                if (atom == null)
                {
                        atom = display.intern_atom(name, false);
                        _atoms[name] = atom;
                }
                return atom;
        }
}

Vala's completely happy with this, but when I try to compile it I get
the C error:

  error: ‘TYPE_ATOM’ undeclared (first use in this function)

The bit of C that's generating the error occurs when the _atoms object
is being constructed:

  _tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup,
g_free, TYPE_ATOM, (GBoxedCopyFunc) _atom_dup, g_free, NULL, NULL, NULL);
  _g_object_unref0 (self->priv->_atoms);
  self->priv->_atoms = _tmp0_;

I don't know glib from my elbow, but this looks slightly as if Gee
generics can only handle GType-registered types. Is this the case?
What's the most idiomatic way of solving this kind of problem in Vala?

-- 
┌─── dg@cowlark.com ───── http://www.cowlark.com ─────
│
│ "I have a mind like a steel trap. It's rusty and full of dead mice."
│ --- Anonymous, on rasfc



Attachment: signature.asc
Description: OpenPGP digital signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]