# $Source: /Users/clajac/cvsroot//Scripting/Scripting/Expose/Function.pm,v $
# $Author: clajac $
# $Date: 2003/07/19 21:02:18 $
# $Revision: 1.5 $

package Scripting::Expose::Function;
use strict;

sub new {
  my ($pkg) = @_;
  $pkg = ref $pkg || $pkg;

  my $self = bless {
		    entries => {},
		   }, $pkg;

  return $self;
}

sub has_function {
  my ($self, $name);

  return exists $self->{entries}->{$name};
}

sub add_function {
  my ($self, $name, $code, $secure) = @_;

  if ($secure eq 'arguments') {
    $code = sub {
      $code->(@_, Scripting::Security->secure);
    };
  }

  $self->{entries}->{$name} = $code;
}

sub functions {
  my $self = shift;
  return %{$self->{entries}};
}

1;