// @(#)root/meta:$Id$
// Author: Fons Rademakers   01/03/96

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TInterpreter                                                         //
//                                                                      //
// This class defines an abstract interface to a generic command line   //
// interpreter.                                                         //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TInterpreter.h"

#include "TROOT.h"
#include "TError.h"

TInterpreter*   (*gPtr2Interpreter)() = 0; // returns pointer to global object
TInterpreter*   gCling = 0; // returns pointer to global TCling object
static TInterpreter *gInterpreterLocal = 0; // The real holder of the pointer.

ClassImp(TInterpreter)

//______________________________________________________________________________
TInterpreter::TInterpreter(const char *name, const char *title)
    : TNamed(name, title)
{
   // TInterpreter ctor only called by derived classes.

   gInterpreterLocal = this;
   gCling            = this;
}

//______________________________________________________________________________
TInterpreter *TInterpreter::Instance()
{
   // returns gInterpreter global

   if (gInterpreterLocal == 0) {
      static TROOT *getROOT = ROOT::GetROOT(); // Make sure gInterpreterLocal is set
      if (!getROOT) {
         ::Fatal("TInterpreter::Instance","TROOT object is required before accessing a TInterpreter");
      }
   }
   if (gPtr2Interpreter) return gPtr2Interpreter();
   return gInterpreterLocal;
}
 TInterpreter.cxx:1
 TInterpreter.cxx:2
 TInterpreter.cxx:3
 TInterpreter.cxx:4
 TInterpreter.cxx:5
 TInterpreter.cxx:6
 TInterpreter.cxx:7
 TInterpreter.cxx:8
 TInterpreter.cxx:9
 TInterpreter.cxx:10
 TInterpreter.cxx:11
 TInterpreter.cxx:12
 TInterpreter.cxx:13
 TInterpreter.cxx:14
 TInterpreter.cxx:15
 TInterpreter.cxx:16
 TInterpreter.cxx:17
 TInterpreter.cxx:18
 TInterpreter.cxx:19
 TInterpreter.cxx:20
 TInterpreter.cxx:21
 TInterpreter.cxx:22
 TInterpreter.cxx:23
 TInterpreter.cxx:24
 TInterpreter.cxx:25
 TInterpreter.cxx:26
 TInterpreter.cxx:27
 TInterpreter.cxx:28
 TInterpreter.cxx:29
 TInterpreter.cxx:30
 TInterpreter.cxx:31
 TInterpreter.cxx:32
 TInterpreter.cxx:33
 TInterpreter.cxx:34
 TInterpreter.cxx:35
 TInterpreter.cxx:36
 TInterpreter.cxx:37
 TInterpreter.cxx:38
 TInterpreter.cxx:39
 TInterpreter.cxx:40
 TInterpreter.cxx:41
 TInterpreter.cxx:42
 TInterpreter.cxx:43
 TInterpreter.cxx:44
 TInterpreter.cxx:45
 TInterpreter.cxx:46
 TInterpreter.cxx:47
 TInterpreter.cxx:48
 TInterpreter.cxx:49
 TInterpreter.cxx:50
 TInterpreter.cxx:51
 TInterpreter.cxx:52
 TInterpreter.cxx:53
 TInterpreter.cxx:54
 TInterpreter.cxx:55