File: GDK.pmod

package info (click to toggle)
pike7 7.0.361-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 14,876 kB
  • ctags: 12,334
  • sloc: ansic: 142,667; makefile: 1,526; sh: 1,035; lisp: 290; sed: 34; perl: 3
file content (46 lines) | stat: -rw-r--r-- 897 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#define INDEX(x) GTK[x]

object Atom = class
{
  mapping atoms = ([]);

  class fake_atom
  {
    object ra;
    string n;
    object get_atom()
    {
      if(ra) return ra;
      return ra = GTK->Gdk_Atom( n, 0 );
    }
    string get_name()
    {
      return get_atom()->get_name();
    }
    void create(string q)
    {
      n = q;
    }
  }

  object `[](string what)
  {
    if(atoms[what])
      return atoms[what];
    return atoms[what] = fake_atom( what );
  }
}();

mixed `[](string what)
{
  if(what == "_module_value") return ([])[0];
  if(what == "Atom") return Atom;
  if(!zero_type(INDEX("Gdk"+what)))
    return INDEX("Gdk"+what);
  if(!zero_type(INDEX("GDK_"+what)))
    return INDEX("GDK_"+what);
  if(!zero_type(INDEX("GDK_"+upper_case(GTK->unsillycaps(what)))))
    return INDEX("GDK_"+upper_case(GTK->unsillycaps(what)));
  return ([])[0];
//   return  GDKSupport[what];
}