28 if ( *j ==
'/' ) *j =
'_';
38 t = (TTree*)
c->file()->Get(
_treeName(cnt).c_str());
41 TBranch* b1 = t->GetBranch(
"Links");
42 TBranch* b2 = t->GetBranch(
"Refs");
47 b1->SetAutoDelete(kFALSE);
48 b2->SetAutoDelete(kFALSE);
50 b2->SetAddress(&pmgr);
51 int nb1 = b1->GetEvent(entry);
52 int nb2 = b2->GetEvent(entry);
53 if ( nb1>1 && nb2>1 ) {
57 for(
size_t j = 0; j < ref_size; ++j) {
58 const pair<int, int>& oid = mgr.
references()[j]->m_oid;
59 string loc = mgr.
links()[j].substr(1);
64 r.
link =
c->makeLink(loc);
65 msg <<
"Add leaf:" << oid.first <<
"->" << loc <<
" from " <<
c->getDb(r.
dbase)
67 <<
" Link:" <<
c->getLink(r.
link)
75 int link_id =
c->makeLink(lnk->
path());
76 msg <<
"Add Link:" << lnk->
path() <<
endl;
82 msg <<
MSG::ERROR <<
"Failed to access POOL Ref/Link branches:" << cnt
93 return (TBranch*)t->GetListOfBranches()->At(0);
96 t = (TTree*)
c->file()->Get(tname.
c_str());
98 TBranch* b = (TBranch*)t->GetListOfBranches()->At(0);
104 << branch_name <<
" [" << tname <<
"]" <<
endmsg;
120 TTree* t = (TTree*)
c->file()->Get(
"##Params");
124 TBranch* b = t->GetBranch(
"db_string");
128 for(i=0,b->SetAddress(text); i < b->GetEntries(); ++
i) {
130 char* id1 =
strstr(text,
"[NAME=");
131 char* id2 =
strstr(text,
"[VALUE=");
135 char* id11 =
strstr(id1,
"]");
136 char* id22 =
strstr(id2,
"]");
137 if ( id11 && id22 ) {
141 msgSvc() <<
"Param:" << id1 <<
"=" << id2 <<
"." <<
endmsg;
147 t = (TTree*)
c->file()->Get(
"##Links");
151 b = t->GetBranch(
"db_string");
156 for(i=0,b->SetAddress(text); i < b->GetEntries(); ++
i) {
159 int clid = 1, technology = 0, ipar[2] = {-1,-1};
160 for(
char* p1 = (
char*)text; p1; p1 = ::strchr(++p1,
'[')) {
161 char* p2 = ::strchr(p1,
'=');
162 char* p3 = ::strchr(p1,
']');
164 if ( ::strncmp(
"[DB=", p1, 4) == 0 ) {
168 else if ( ::strncmp(
"[CNT=", p1, 5) == 0 ) {
172 else if ( ::strncmp(
"[OID=", p1, 5) == 0 ) {
174 ::sscanf(p1+5,
"%08X,%08X",(
unsigned int*)&ipar[0],(
unsigned int*)&ipar[1]);
176 else if ( ::strncmp(
"[CLID=", p1, 6) == 0 ) {
178 ::sscanf(p1+6,
"%08X",(
unsigned int*)&clid);
180 else if ( ::strncmp(
"[TECH=", p1, 6) == 0 ) {
182 ::sscanf(p1+6,
"%08X",(
unsigned int*)&technology);
191 c->makeRef(
"",clid,technology,db,container,-1,
m_poolLinks[i+2]);
193 msgSvc() <<
"Add link[" << i <<
"]:" << db << container <<
" [" << r.
dbase <<
"," << r.
container <<
"] "