converting cint macros to c++

Hans Wenzel (wenzel@fnal.gov)
Thu, 14 May 1998 11:48:52 -0500


This is a multi-part message in MIME format.
--------------5DA19D08C2735EB34911E307
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

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

--------------5DA19D08C2735EB34911E307
Content-Type: text/plain; charset=us-ascii; name="hclient.cxx"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="hclient.cxx"

// 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;
}

--------------5DA19D08C2735EB34911E307
Content-Type: text/plain; charset=us-ascii; name="Makefile"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="Makefile"

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 $<

--------------5DA19D08C2735EB34911E307--