converting cint macros to c++

From: Hans Wenzel (wenzel@fnal.gov)
Date: Thu May 14 1998 - 18:48:52 MEST


dear rooters

I am trying  to convert the hclient.C and hserv.C examples into stand
alone
c++ programs. unfortunately i get the following compiler message
(linux or sgi both using gcc)

b0rv04:~/bin/root/mystuff > make hclient
        g++ -fsigned-char -fPIC -I/usr/people/wenzel/bin/root/include -c
hclient.cxx
hclient.cxx: In function `int main()':
hclient.cxx:70: `hpx' undeclared (first use this function)
hclient.cxx:70: (Each undeclared identifier is reported only once
hclient.cxx:70: for each function it appears in.)
*** Error code 1 (bu21)

any help is appriciated


thanks Hans



   // Client program which creates and fills a histogram. Every 1000 fills
   // the histogram is send to the server which displays the histogram.
   //
   // To run this demo do the following:
   //   - Open three windows
   //   - Start ROOT in all three windows
   //   - Execute in the first window: .x hserv.C
   //   - Execute in the second and third windows: .x hclient.C
   // If you want to run the hserv.C on a different host, just change
   // "localhost" in the TSocket ctor below to the desried hostname.



#include "TROOT.h"
#include "TApplication.h"
#include "TCanvas.h"
#include "TLine.h"
#include "TPaveLabel.h"
#include "TFile.h"
#include "TH1.h"
#include "TH2.h"
#include "TProfile.h"
#include "TNtuple.h"
#include "TRandom.h"
#include "TSocket.h"
#include "TServerSocket.h"
#include "TInetAddress.h"
#include "TPad.h"
#include "TMessage.h"
#include "TMonitor.h"
#include "TBenchmark.h"

int main()
{ 
  TROOT hclient("hclient","Test of simple histogram client");

   gROOT->Reset();

   gBenchmark->Start("hclient");

   // Open connection to server
   TSocket *sock = new TSocket("localhost", 9090);

   // Wait till we get the start message
   char str[32];
   sock->Recv(str, 32);

   // server tells us who we are
   int idx = !strcmp(str, "go 0") ? 0 : 1;

   if (idx == 0) {
      // Create the histogram
      TH1F *hpx = new TH1F("hpx","This is the px distribution",100,-4,4);
      //      hpx->SetFillColor(48);  // set nice fillcolor
   } else {
      TH2F *hpx = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4);
   }

   TMessage mess(kMESS_OBJECT);
   //TMessage mess(kMESS_OBJECT | kMESS_ACK);

   // Fill histogram randomly
   gRandom->SetSeed();
   Float_t px, py;
   const int kUPDATE = 1000;
   for (int i = 0; i < 25000; i++) {
      gRandom->Rannor(px,py);
      if (idx == 0)
         hpx->Fill(px);
      else
         hpx->Fill(px,py);
      if (i && (i%kUPDATE) == 0) {
         mess.Reset();              // re-use TMessage object
         mess.WriteObject(hpx);     // write object in message buffer
         sock->Send(mess);          // send message
      }
   }
   sock->Send("Finished");          // tell server we are finished

   gBenchmark->Show("hclient");

   // Close the socket
   sock->Close();



   return 0;
}


ObjSuf        = o
SrcSuf        = cxx
ExeSuf        =
DllSuf        = so
EVENTLIB      = $(EVENTO)
OutPutOpt     = -o

ROOTLIBS      = -L$(ROOTSYS)/lib -lNew -lBase -lCint -lClib -lCont -lFunc \
                -lGraf -lGraf3d -lHist -lHtml -lMatrix -lMeta -lMinuit -lNet \
                -lPostscript -lProof -lTree -lUnix -lZip
ROOTGLIBS     = -lGpad -lGui -lGX11 -lX3d

# SGI with GCC
CXX           = g++
CXXFLAGS      = -fsigned-char -fPIC -I$(ROOTSYS)/include
LD            = g++
LDFLAGS       = -g -Wl,-u,__builtin_new -Wl,-u,__builtin_delete -Wl,-u,__nw__FUiPv
SOFLAGS       = -Wl,-soname,libEvent.so -shared
LIBS          = $(ROOTLIBS) -lg++ -lm -ldl
GLIBS         = $(ROOTLIBS) $(ROOTGLIBS) -lXpm -lX11 -lg++ -lm -lPW -ldl


#------------------------------------------------------------------------------

EVENTO        = Event.$(ObjSuf) \
                EventCint.$(ObjSuf)

EVENTS        = Event.$(SrcSuf) \
                EventCint.$(SrcSuf)

MAINEVENTS    = MainEvent.$(SrcSuf)

MAINEVENTO    = MainEvent.$(ObjSuf)

EVENT         = Event$(ExeSuf)
EVENTSO       = libEvent.$(DllSuf)

HWORLDO       = hworld.$(ObjSuf)
HWORLDS       = hworld.$(SrcSuf)
HWORLD        = hworld$(ExeSuf)

HSERVO       = hserv.$(ObjSuf)
HSERVS       = hserv.$(SrcSuf)
HSERV        = hserv$(ExeSuf)

HCLIENTO       = hclient.$(ObjSuf)
HCLIENTS       = hclient.$(SrcSuf)
HCLIENT        = hclient$(ExeSuf)

HSIMPLEO      = hsimple.$(ObjSuf)
HSIMPLES      = hsimple.$(SrcSuf)
HSIMPLE       = hsimple$(ExeSuf)

MINEXAMO      = minexam.$(ObjSuf)
MINEXAMS      = minexam.$(SrcSuf)
MINEXAM       = minexam$(ExeSuf)

TSTRINGO      = tstring.$(ObjSuf)
TSTRINGS      = tstring.$(SrcSuf)
TSTRING       = tstring$(ExeSuf)

TCOLLEXO      = tcollex.$(ObjSuf)
TCOLLEXS      = tcollex.$(SrcSuf)
TCOLLEX       = tcollex$(ExeSuf)

VVECTORO      = vvector.$(ObjSuf)
VVECTORS      = vvector.$(SrcSuf)
VVECTOR       = vvector$(ExeSuf)

VMATRIXO      = vmatrix.$(ObjSuf)
VMATRIXS      = vmatrix.$(SrcSuf)
VMATRIX       = vmatrix$(ExeSuf)

VLAZYO        = vlazy.$(ObjSuf)
VLAZYS        = vlazy.$(SrcSuf)
VLAZY         = vlazy$(ExeSuf)

GUITESTO      = guitest.$(ObjSuf)
GUITESTS      = guitest.$(SrcSuf)
GUITEST       = guitest$(ExeSuf)

OBJS          = $(EVENTO) $(HSERVO) $(HCLIENTO) $(HWORLDO) $(HSIMPLEO) $(MINEXAMO) $(TSTRINGO) \
                $(TCOLLEXO) $(VVECTORO) $(VMATRIXO) $(VLAZYO) $(GUITEST)

PROGRAMS      = $(EVENT)  $(HSERV) $(HCLIENT) $(HWORLD) $(HSIMPLE) $(MINEXAM) $(TSTRING) \
                $(TCOLLEX) $(VVECTOR) $(VMATRIX) $(VLAZY) $(GUITEST)

all:            $(PROGRAMS)

$(EVENT):       $(EVENTO) $(MAINEVENTO)
		$(LD) $(SOFLAGS) $(LDFLAGS) $(EVENTO) $(OutPutOpt) $(EVENTSO)
		$(LD) $(LDFLAGS) $(MAINEVENTO) $(EVENTLIB) $(LIBS) $(OutPutOpt) $(EVENT)
		@echo "$(EVENT) done"

$(HSERV):      $(HSERVO)
	       $(LD) $(LDFLAGS) $(HSERVO) $(GLIBS) $(OutPutOpt) $(HSERV)
	       @echo "$(HSERV) done"

$(HCLIENT):    $(HCLIENTO)
	       $(LD) $(LDFLAGS) $(HCLIENTO) $(GLIBS) $(OutPutOpt) $(HCLIENT)
	       @echo "$(HCLIENT) done"

$(HWORLD):      $(HWORLDO)
		$(LD) $(LDFLAGS) $(HWORLDO) $(GLIBS) $(OutPutOpt) $(HWORLD)
		@echo "$(HWORLD) done"

$(HSIMPLE):     $(HSIMPLEO)
		$(LD) $(LDFLAGS) $(HSIMPLEO) $(LIBS) $(OutPutOpt) $(HSIMPLE)
		@echo "$(HSIMPLE) done"

$(MINEXAM):     $(MINEXAMO)
		$(LD) $(LDFLAGS) $(MINEXAMO) $(LIBS) $(OutPutOpt) $(MINEXAM)
		@echo "$(MINEXAM) done"

$(TSTRING):     $(TSTRINGO)
		$(LD) $(LDFLAGS) $(TSTRINGO) $(LIBS) $(OutPutOpt) $(TSTRING)
		@echo "$(TSTRING) done"

$(TCOLLEX):     $(TCOLLEXO)
		$(LD) $(LDFLAGS) $(TCOLLEXO) $(LIBS) $(OutPutOpt) $(TCOLLEX)
		@echo "$(TCOLLEX) done"

$(VVECTOR):     $(VVECTORO)
		$(LD) $(LDFLAGS) $(VVECTORO) $(LIBS) $(OutPutOpt) $(VVECTOR)
		@echo "$(VVECTOR) done"

$(VMATRIX):     $(VMATRIXO)
		$(LD) $(LDFLAGS) $(VMATRIXO) $(LIBS) $(OutPutOpt) $(VMATRIX)
		@echo "$(VMATRIX) done"

$(VLAZY):       $(VLAZYO)
		$(LD) $(LDFLAGS) $(VLAZYO) $(LIBS) $(OutPutOpt) $(VLAZY)
		@echo "$(VLAZY) done"

$(GUITEST):     $(GUITESTO)
		$(LD) $(LDFLAGS) $(GUITESTO) $(GLIBS) $(OutPutOpt) $(GUITEST)
		@echo "$(GUITEST) done"

clean:
		@rm -f $(OBJS) EventCint.$(SrcSuf) EventCint.h core

.SUFFIXES: .$(SrcSuf)

###

Event.o: Event.h
MainEvent.o: Event.h

EventCint.$(SrcSuf): Event.h LinkDef.h
	@echo "Generating dictionary ..."
	@$(ROOTSYS)/bin/rootcint -f EventCint.$(SrcSuf) -c Event.h LinkDef.h

.$(SrcSuf).$(ObjSuf):
	$(CXX) $(CXXFLAGS) -c $<



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:32 MET