Loading [MathJax]/jax/output/HTML-CSS/config.js
Logo ROOT   6.18/05
Reference Guide
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
importCode.C File Reference

Detailed Description

View in nbviewer Open in SWAN Example of script showing how to create a ROOT file with subdirectories.

The script scans a given directory tree and recreates the same structure in the ROOT file. All source files of type .h,cxx,c,dat,py are imported as TMacro objects. See also the other tutorial readCode.C

#include "TFile.h"
#include "TSystem.h"
#include "TMacro.h"
void importdir(const char *dirname) {
char *slash = (char*)strrchr(dirname,'/');
char *locdir;
if (slash) locdir = slash+1;
else locdir = (char*)dirname;
printf("processing dir %s\n",dirname);
TDirectory *adir = savdir->mkdir(locdir);
adir->cd();
void *dirp = gSystem->OpenDirectory(dirname);
if (!dirp) return;
char *direntry;
Long_t id, size,flags,modtime;
//loop on all entries of this directory
while ((direntry=(char*)gSystem->GetDirEntry(dirp))) {
TString afile = Form("%s/%s",dirname,direntry);
gSystem->GetPathInfo(afile,&id,&size,&flags,&modtime);
if (direntry[0] == '.') continue; //forget the "." and ".." special cases
if (!strcmp(direntry,"CVS")) continue; //forget some special directories
if (!strcmp(direntry,"htmldoc")) continue;
if (strstr(dirname,"root/include")) continue;
if (strstr(direntry,"G__")) continue;
if (strstr(direntry,".c") ||
strstr(direntry,".h") ||
strstr(direntry,".dat") ||
strstr(direntry,".py") ||
strstr(direntry,".C")) {
TMacro *m = new TMacro(afile);
m->Write(direntry);
delete m;
} else {
if (flags != 3) continue; //must be a directory
//we have found a valid sub-directory. Process it
importdir(afile);
}
}
savdir->cd();
}
void importCode() {
TFile *f = new TFile("code.root","recreate");
TString dir = gROOT->GetTutorialDir();
importdir(gSystem->UnixPathName(dir.Data())); //change the directory as you like
delete f;
}
#define f(i)
Definition: RSha256.hxx:104
long Long_t
Definition: RtypesCore.h:50
#define gDirectory
Definition: TDirectory.h:218
XFontStruct * id
Definition: TGX11.cxx:108
#define gROOT
Definition: TROOT.h:414
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
Definition: TSystem.h:560
Describe directory structure in memory.
Definition: TDirectory.h:34
virtual Bool_t cd(const char *path=0)
Change current directory to "this" directory.
Definition: TDirectory.cxx:497
virtual TDirectory * mkdir(const char *name, const char *title="")
Create a sub-directory "a" or a hierarchy of sub-directories "a/b/c/...".
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition: TFile.h:48
Class supporting a collection of lines with C++ code.
Definition: TMacro.h:31
Basic string class.
Definition: TString.h:131
const char * Data() const
Definition: TString.h:364
virtual void FreeDirectory(void *dirp)
Free a directory.
Definition: TSystem.cxx:852
virtual void * OpenDirectory(const char *name)
Open a directory. Returns 0 if directory does not exist.
Definition: TSystem.cxx:843
int GetPathInfo(const char *path, Long_t *id, Long_t *size, Long_t *flags, Long_t *modtime)
Get info about a file: id, size, flags, modification time.
Definition: TSystem.cxx:1388
virtual const char * GetDirEntry(void *dirp)
Get a directory entry. Returns 0 if no more entries.
Definition: TSystem.cxx:860
virtual const char * UnixPathName(const char *unixpathname)
Convert from a Unix pathname to a local pathname.
Definition: TSystem.cxx:1053
TCanvas * slash()
Definition: slash.C:1
auto * m
Definition: textangle.C:8
Author
Rene Brun

Definition in file importCode.C.