Dispatch table

From Wikipedia, the free encyclopedia
Jump to: navigation, search

In computer science, a dispatch table is a table of pointers to functions or methods. Use of such a table is a common technique when implementing late binding in object-oriented programming.

[edit] Perl implementation

The following shows one way to implement a dispatch table in Perl, using a hash to store references to code (also known as function pointers).

 #define the table using one anonymous code-ref and one named code-ref
 my %dispatch = (
   "-h" => sub {  return "hello\n"; },
   "-g" => \&say_goodbye
 );
 
 sub say_goodbye {
   return "goodbye\n";
 }
 
 #fetch the code ref from the table, and invoke it
 my $sub = $dispatch{$ARGV[0]};
 print $sub ? $sub->() : "unknown argument\n";

Running this Perl program as perl greet -h will produce "hello", and running it as perl greet -g will produce "goodbye".

[edit] Virtual method tables

In object-oriented programming languages that support virtual methods, the compiler will automatically create a dispatch table for each object of a class containing virtual methods. This table is called a virtual method table or vtable, and every call to a virtual method is dispatched through the vtable.

[edit] References

Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export