#  Copyright (c) 1997-2010
#  Ewgenij Gawrilow, Michael Joswig (Technische Universitaet Darmstadt, Germany)
#  http://www.polymake.de
#
#  This program is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by the
#  Free Software Foundation; either version 2, or (at your option) any
#  later version: http://www.gnu.org/licenses/gpl.txt.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#-------------------------------------------------------------------------------
#  $Project: polymake $$Id: Polymake.pm 9831 2010-10-30 18:47:05Z gawrilow $

use strict;
use Config;
use Cwd;
use File::Path;
use IO::Handle;

use Polymake::Namespaces;

package Polymake::RefHash;
use Polymake::Ext;

package Polymake;
use Polymake::Ext;

declare $Version="2.9.9";
declare $VersionNumber=eval "v$Version";	# for string comparisons with vM.N literals

declare ($Scope,		# Scope object for the current cycle
	 $Custom,               # Customize object marshalling customize.pl
	 $Prefs,		# Preference object marshalling prefer.pl
	 $DebugLevel,		# enables the debugging output and various internal checks
	);

declare $Shell=new NoShell;     # alternatively: Shell object listening to the console or some pipe

*UNIVERSAL::can=\&Polymake::can;

require 'Polymake/utils.pl';
require 'Polymake/regex.pl';
require Polymake::Scope;
require Polymake::Pipe;
require Polymake::Tempfile;
require Polymake::Overload;
require Polymake::Core::Customize;
require Polymake::Core::Preference;
require Polymake::User;
require Polymake::Core::PropertyType;
require Polymake::Core::Property;
require Polymake::Core::Rule;
require Polymake::Core::PropertyValue;
require Polymake::Core::ObjectType;
require Polymake::Core::Scheduler;
require Polymake::Core::XMLfile;
require Polymake::Core::Object;
require Polymake::Core::Application;
require Polymake::Core::RuleFilter;
require Polymake::Core::CPlusPlus;

package Polymake::NoShell;
sub new { bless \(my $dummy) }
sub interactive { 0 }

1
