KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > jemacs > buffer > Mode


1 package gnu.jemacs.buffer;
2 import gnu.mapping.*;
3 import gnu.expr.*;
4
5 /** Represents a "mode instance" - a mode active for a specific {@link Buffer}. */
6
7 public class Mode extends ModuleBody
8 {
9   public Buffer buffer;
10   public Mode next;
11
12   public Buffer getBuffer()
13   {
14     return buffer;
15   }
16
17   public Object JavaDoc apply0(ModuleMethod proc)
18   {
19     return applyN(proc, Values.noArgs);
20   }
21
22   public Object JavaDoc apply1(ModuleMethod proc, Object JavaDoc arg1)
23   {
24     Object JavaDoc[] args = new Object JavaDoc[1];
25     args[0] = arg1;
26     return applyN(proc, args);
27   }
28
29   public Object JavaDoc apply2(ModuleMethod proc, Object JavaDoc arg1, Object JavaDoc arg2)
30   {
31     Object JavaDoc[] args = new Object JavaDoc[2];
32     args[0] = arg1;
33     args[1] = arg2;
34     return applyN(proc, args);
35   }
36
37   public Object JavaDoc apply3(ModuleMethod proc,
38                        Object JavaDoc arg1, Object JavaDoc arg2, Object JavaDoc arg3)
39   {
40     Object JavaDoc[] args = new Object JavaDoc[3];
41     args[0] = arg1;
42     args[1] = arg2;
43     args[2] = arg3;
44     return applyN(proc, args);
45   }
46
47   public Object JavaDoc apply4(ModuleMethod proc,
48                        Object JavaDoc arg1, Object JavaDoc arg2, Object JavaDoc arg3, Object JavaDoc arg4)
49   {
50     Object JavaDoc[] args = new Object JavaDoc[4];
51     args[0] = arg1;
52     args[1] = arg2;
53     args[2] = arg3;
54     args[3] = arg4;
55     return applyN(proc, args);
56   }
57
58   public Object JavaDoc applyN(ModuleMethod proc, Object JavaDoc[] args)
59   {
60     int count = args.length;
61     int num = proc.numArgs();
62     if (count >= (num & 0xFFF)
63     && (num < 0 || count <= (num >> 12)))
64       {
65         switch (count)
66           {
67           case 0:
68             return apply0(proc);
69           case 1:
70             return apply1(proc, args[0]);
71           case 2:
72             return apply2(proc, args[0], args[1]);
73           case 3:
74             return apply3(proc, args[0], args[1], args[2]);
75           case 4:
76             return apply4(proc, args[0], args[1], args[2], args[3]);
77           }
78       }
79     throw new WrongArguments(proc, count);
80   }
81 }
82
Popular Tags