ROOT logo
// $Id: AList.cxx 2731 2012-04-17 17:01:39Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

//__________________________________________________________________________
// AList
//
//

#include "AList.h"
#include "AList.c7"
#include "ZQueen.h"
#include "Eye/Ray.h"

ClassImp(AList);

/**************************************************************************/

void AList::_init()
{
  mSize = 0;
  mLid  = 0; mCid  = 0;
}

/**************************************************************************/
// ZGlass reference management, extensions for lists, protected part.
/**************************************************************************/

void AList::reference_all()
{
  reference_links();
  reference_list_elms();
}

void AList::unreference_all()
{
  unreference_links();
  unreference_list_elms();
}

void AList::reference_list_elms()
{
  GMutexHolder lck(mListMutex);
  Stepper<> s(this);
  while(s.step())
    s->IncRefCount(this);
}

void AList::unreference_list_elms()
{
  GMutexHolder lck(mListMutex);
  Stepper<> s(this);
  while(s.step())
    s->DecRefCount(this);
}

/**************************************************************************/
// AList methods, protected part.
/**************************************************************************/

void AList::new_element_check(ZGlass* lens)
{
  static const Exc_t _eh("AList::new_element_check ");

  if(lens == 0 && elrep_can_hold_zero() == false) {
    throw(_eh + "called with null ZGlass*.");
  }
  if(mLid && mCid && lens != 0) {
    if(!GledNS::IsA(lens, FID_t(mLid, mCid))) {
      throw(_eh + "list=" + Identify() + "lens=" + lens->Identify() + " has wrong FID_t.");
    }
  }
}

/**************************************************************************/
// ZGlass reference management, extensions for lists, public part.
/**************************************************************************/

Int_t AList::RebuildAllRefs(An_ID_Demangler* idd)
{
  return RebuildLinkRefs(idd) + RebuildListRefs(idd);
}

/**************************************************************************/

void AList::ClearAllReferences()
{
  PARENT_GLASS::ClearAllReferences();
  ClearList();
}

/**************************************************************************/

void AList::RemoveLensesViaQueen(Bool_t recurse)
{
  // Sends MIR to queen and waits for result.
  // This should be called from a detached thread.

  if(IsEmpty()) return;

  auto_ptr<ZMIR>    mir( mQueen->S_RemoveLenses(this, recurse) );
  auto_ptr<ZMIR_RR> res( mSaturn->ShootMIRWaitResult(mir) );
  if(res->HasException())
    throw(Exc_t(res->fException.Data()));
}

/**************************************************************************/
// AList methods, public part.
/**************************************************************************/

void AList::SetElementFID(FID_t fid)
{
  mLid = fid.fLid; mCid = fid.fCid;
  Stamp(FID());
}

/**************************************************************************/

Bool_t AList::Has(ZGlass* g)
{
  GMutexHolder lck(mListMutex);
  Stepper<> s(this);
  while(s.step())
    if(*s == g) return true;
  return false;
}

//==============================================================================

TimeStamp_t AList::CopyListElReps(lElRep_t& dest, bool copy_zeros)
{
  // This should really be called under read-lock.

  GMutexHolder lck(mListMutex);
  Stepper<> s(this, copy_zeros);
  while(s.step())
    dest.push_back(s.get_elrep());
  return mListTimeStamp;
}

TimeStamp_t AList::CopyList(lpZGlass_t& dest, bool copy_zeros, bool do_eyerefs)
{
  GMutexHolder lck(mListMutex);
  Stepper<> s(this, copy_zeros);
  while(s.step())
  {
    if (do_eyerefs && *s) s->IncEyeRefCount();
    dest.push_back(*s);
  }
  return mListTimeStamp;
}

void AList::ReleaseListCopyEyeRefs(lpZGlass_t& dest)
{
  for (lpZGlass_i i = dest.begin(); i != dest.end(); ++i)
  {
    if (*i) (*i)->DecEyeRefCount();
  }
}

//==============================================================================

ZGlass* AList::GetElementByName(const TString& name)
{
  GMutexHolder lck(mListMutex);
  Stepper<> s(this);
  while(s.step()) {
    if(name == s->RefName()) return *s;
  }
  return 0;
}

Int_t AList::GetElementsByName(const TString& name, lpZGlass_t& dest)
{
  Int_t n = 0;
  GMutexHolder lck(mListMutex);
  Stepper<> s(this);
  while(s.step()) {
    if(name == s->RefName()) {
      dest.push_back(*s);
      ++n;
    }
  }
  return n;
}

/**************************************************************************/

void AList::DumpElements(Bool_t dump_zeros)
{
  static const Exc_t _eh("AList::DumpElements ");

  GMutexHolder lck(mListMutex);
  printf("%s %s, mSize=%d\n", _eh.Data(), Identify().Data(), mSize);
  Stepper<> s(this, dump_zeros);
  while(s.step()) {
    ElRep elr = s.get_elrep();
    printf("%4d %10p <%s> %s\n", elr.fId, elr.fLens, elr.fLabel.Data(),
	   elr.fLens ? elr.fLens->Identify().Data() : "<none>");
  }
}


/**************************************************************************/
// Make MIR functions.
/**************************************************************************/

ZMIR* AList::MkMir_Add(ZGlass* lens)
{
  return S_Add(lens);
}

ZMIR* AList::MkMir_RemoveAll(ZGlass* lens)
{
  return S_RemoveAll(lens);
}

/**************************************************************************/

ZMIR* AList::MkMir_PushBack(ZGlass* lens)
{
  TString mname;
  if(list_deque_ops())
    mname = "PushBack";
  else
    mname = "Add";
  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  return mi->MakeMir(this, lens);
}

ZMIR* AList::MkMir_PopBack()
{
  static const Exc_t _eh("AList::MkMir_PopBack ");
  static const TString mname = "PopBack";

  if(!list_deque_ops())
    throw(_eh + mname + " not supported.");
  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  return mi->MakeMir(this);
}

ZMIR* AList::MkMir_PushFront(ZGlass* lens)
{
  TString mname;
  if(list_deque_ops())
    mname = "PushFront";
  else
    mname = "Add";
  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  return mi->MakeMir(this, lens);
}

ZMIR* AList::MkMir_PopFront()
{
  static const Exc_t _eh("AList::MkMir_PopFront ");
  static const TString mname = "PopFront";

  if(!list_deque_ops())
    throw(_eh + mname + " not supported.");

  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  return mi->MakeMir(this);
}

/**************************************************************************/

ZMIR* AList::MkMir_Insert(ZGlass* lens, ElRep& elrep)
{
  static const Exc_t _eh("AList::MkMir_Insert ");

  TString mname("Insert");
  ElType_e et = el_type();
  switch(et) {
  case ET_Lens:
    if(!list_insert_lens_ops())
      throw(_eh + mname + " 'by-lens' not supported.");
    break;
  case ET_Id:
    if(!list_insert_id_ops())
      throw(_eh + mname + " 'by-id' not supported.");
    mname += "ById";
    break;
  default:
    throw(_eh + mname + " not available for this container type.");
  }

  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  ZMIR* mir =  mi->MakeMir(this, lens, et == ET_Lens ? elrep.get_lens() : 0);
  if(et == ET_Id)
    *mir << elrep.get_id();
  return mir;
}

ZMIR* AList::MkMir_Remove(ElRep& elrep)
{
  static const Exc_t _eh("AList::MkMir_Remove ");

  TString mname("Remove");
  ElType_e et = el_type();
  switch(et) {
  case ET_Lens:
    if(!list_insert_lens_ops())
      throw(_eh + mname + "'by-lens' not supported.");
    break;
  case ET_Id:
    if(!list_insert_id_ops())
      throw(_eh + mname + " 'by-id' not supported.");
    mname += "ById";
    break;
  case ET_Label:
    if(!list_set_label_ops())
      throw(_eh + mname + " 'by-label' not supported.");
    mname += "Label";
    break;
  default:
    throw(_eh + mname + " not available for this container type.");
  }

  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  ZMIR* mir =  mi->MakeMir(this, et == ET_Lens ? elrep.get_lens() : 0);
  if(et == ET_Id)
    *mir << elrep.get_id();
  else if(et == ET_Label)
    *mir << elrep.ref_label();
  return mir;
}

/**************************************************************************/

ZMIR* AList::MkMir_SetElement(ZGlass* lens, ElRep& elrep)
{
  static const Exc_t _eh("AList::MkMir_SetElement ");

  TString mname("SetElement");
  ElType_e et = el_type();
  switch(et) {
  case ET_Id:
    if(!list_set_id_ops())
      throw(_eh + mname + " 'by-id' not supported.");
    mname += "ById";
    break;
  case ET_Label:
    if(!list_set_label_ops())
      throw(_eh + mname + " 'by-label' not supported.");
    mname += "ByLabel";
    break;
  default:
    throw(_eh + mname + " not available for this container type.");
  }

  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  ZMIR* mir =  mi->MakeMir(this, lens);
  if(et == ET_Id)
    *mir << elrep.get_id();
  else if(et == ET_Label)
    *mir << elrep.get_label();
  return mir;
}

/**************************************************************************/

ZMIR* AList::MkMir_AddLabel(const TString& label)
{
  static const Exc_t _eh("AList::MkMir_AddLabel ");
  static const TString mname("AddLabel");

  if(!list_set_label_ops())
    throw(_eh + mname + " not supported.");

  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  ZMIR* mir = mi->MakeMir(this);
  *mir << label;
  return mir;
}

ZMIR* AList::MkMir_RemoveLabel(const TString& label)
{
  static const Exc_t _eh("AList::MkMir_RemoveLabel ");
  static const TString mname("RemoveLabel");

  if(!list_set_label_ops())
    throw(_eh + mname + " not supported.");

  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  ZMIR* mir = mi->MakeMir(this);
  *mir << label;
  return mir;
}

ZMIR* AList::MkMir_ChangeLabel(const TString& label, TString new_label)
{
  static const Exc_t _eh("AList::MkMir_ChangeLabel ");
  static const TString mname("ChangeLabel");

  if(!list_set_label_ops())
    throw(_eh + mname + " not supported.");

  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  ZMIR* mir = mi->MakeMir(this);
  *mir << label << new_label;
  return mir;
}

ZMIR* AList::MkMir_InsertLabel(const TString& label, const TString& before)
{
  static const Exc_t _eh("AList::MkMir_InsertLabel ");
  static const TString mname("InsertLabel");

  if(!list_insert_label_ops())
    throw(_eh + mname + " not supported.");

  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  ZMIR* mir = mi->MakeMir(this);
  *mir << label << before;
  return mir;
}

ZMIR* AList::MkMir_InsertByLabel(ZGlass* lens, const TString& label, const TString& before)
{
  static const Exc_t _eh("AList::MkMir_InsertByLabel ");
  static const TString mname("InsertByLabel");

  if(!list_insert_label_ops())
    throw(_eh + mname + " not supported.");

  GledNS::MethodInfo* mi = VGlassInfo()->FindMethodInfo(mname, true);
  ZMIR* mir = mi->MakeMir(this, lens);
  *mir << label << before;
  return mir;
}


/**************************************************************************/
// Stamping.
/**************************************************************************/

// !! The analogous calls in ZGlass have lid/cid counterparts.
// Didn't need them for lists so far. And don't see why I would.
// Just slightly non-consistent.

TimeStamp_t AList::StampListPushBack(ZGlass* lens, Int_t id)
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_push_back, stamp,
		Ray::EB_StructuralChange)
  {
    ray->SetBeta(lens); ray->SetBeta(id);
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListPopBack()
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_pop_back, stamp,
		Ray::EB_StructuralChange)
  {
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListPushFront(ZGlass* lens, Int_t id)
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_push_front, stamp,
		Ray::EB_StructuralChange)
  {
    ray->SetBeta(lens); ray->SetBeta(id);
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListPopFront()
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_pop_front, stamp,
		Ray::EB_StructuralChange)
  {
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

/**************************************************************************/

TimeStamp_t AList::StampListInsert(ZGlass* lens, Int_t id, ZGlass* before)
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_insert, stamp,
		Ray::EB_StructuralChange)
  {
    ray->SetBeta(lens); ray->SetBeta(id);
    ray->SetGamma(before);
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListInsert(ZGlass* lens, Int_t id, Int_t before_id)
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_insert, stamp,
		Ray::EB_StructuralChange)
  {
    ray->SetBeta(lens); ray->SetBeta(id);
    ray->SetGamma(before_id);
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListRemove(ZGlass* lens)
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_remove, stamp,
		Ray::EB_StructuralChange)
  {
    ray->SetBeta(lens);
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListRemove(ZGlass* lens, Int_t id)
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_remove, stamp,
		Ray::EB_StructuralChange)
  {
    ray->SetBeta(lens);
    ray->SetBeta(id);
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListElementSet(ZGlass* lens, Int_t id)
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_element_set, stamp,
		Ray::EB_StructuralChange)
  {
    ray->SetBeta(lens);
    ray->SetBeta(id);
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListElementSet(ZGlass* lens, const TString& label)
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_element_set, stamp,
		Ray::EB_StructuralChange)
  {
    ray->SetBeta(lens);
    ray->SetBeta(label);
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListInsertLabel(ZGlass* lens, const TString& label, const TString& before)
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_insert_label, stamp,
		Ray::EB_StructuralChange)
  {
    ray->SetBeta(lens);
    ray->SetBeta(label);
    ray->SetGamma(before);
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListRemoveLabel(ZGlass* lens, const TString& label)
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_remove_label, stamp,
		Ray::EB_StructuralChange)
  {
    ray->SetBeta(lens);
    ray->SetBeta(label);
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

/**************************************************************************/

TimeStamp_t AList::StampListRebuild()
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_rebuild, stamp,
		Ray::EB_StructuralChange)
  {
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

TimeStamp_t AList::StampListClear()
{
  TimeStamp_t stamp = mListTimeStamp = ++mTimeStamp;
  IF_ZGLASS_RAY(this, RayNS::RQN_list_clear, stamp,
		Ray::EB_StructuralChange)
  {
    ZGLASS_SEND_RAY;
  }
  return stamp;
}

/**************************************************************************/
/**************************************************************************/

// Those two in FTW_Branch. Could move them here if needed.
// AList::ElRep AList::BetaElRep(Ray& ray)  {}
// AList::ElRep AList::GammaElRep(Ray& ray) {}

/**************************************************************************/
// ROOT Streamer.
/**************************************************************************/

void AList::Streamer(TBuffer &b)
{
  static const Exc_t _eh("AList::Streamer ");
  UInt_t R__s, R__c;

  if(b.IsReading()) {

    Version_t R__v = b.ReadVersion(&R__s, &R__c); if(R__v) { }
    ZGlass::Streamer(b);
    b >> mLid >> mCid >> mSize;
    ISdebug(D_STREAM, GForm("%sreading %d elements (%d,%d).",
			    _eh.Data(), mSize, mLid, mCid));
   b.CheckByteCount(R__s, R__c, AList::IsA());

  } else {

    R__c = b.WriteVersion(AList::IsA(), kTRUE);
    ZGlass::Streamer(b);
    b << mLid << mCid << mSize;
    ISdebug(D_STREAM, GForm("%swriting %d elements (%d,%d).",
			    _eh.Data(), mSize, mLid, mCid));
    b.SetByteCount(R__c, kTRUE);

  }
}

/**************************************************************************/
 AList.cxx:1
 AList.cxx:2
 AList.cxx:3
 AList.cxx:4
 AList.cxx:5
 AList.cxx:6
 AList.cxx:7
 AList.cxx:8
 AList.cxx:9
 AList.cxx:10
 AList.cxx:11
 AList.cxx:12
 AList.cxx:13
 AList.cxx:14
 AList.cxx:15
 AList.cxx:16
 AList.cxx:17
 AList.cxx:18
 AList.cxx:19
 AList.cxx:20
 AList.cxx:21
 AList.cxx:22
 AList.cxx:23
 AList.cxx:24
 AList.cxx:25
 AList.cxx:26
 AList.cxx:27
 AList.cxx:28
 AList.cxx:29
 AList.cxx:30
 AList.cxx:31
 AList.cxx:32
 AList.cxx:33
 AList.cxx:34
 AList.cxx:35
 AList.cxx:36
 AList.cxx:37
 AList.cxx:38
 AList.cxx:39
 AList.cxx:40
 AList.cxx:41
 AList.cxx:42
 AList.cxx:43
 AList.cxx:44
 AList.cxx:45
 AList.cxx:46
 AList.cxx:47
 AList.cxx:48
 AList.cxx:49
 AList.cxx:50
 AList.cxx:51
 AList.cxx:52
 AList.cxx:53
 AList.cxx:54
 AList.cxx:55
 AList.cxx:56
 AList.cxx:57
 AList.cxx:58
 AList.cxx:59
 AList.cxx:60
 AList.cxx:61
 AList.cxx:62
 AList.cxx:63
 AList.cxx:64
 AList.cxx:65
 AList.cxx:66
 AList.cxx:67
 AList.cxx:68
 AList.cxx:69
 AList.cxx:70
 AList.cxx:71
 AList.cxx:72
 AList.cxx:73
 AList.cxx:74
 AList.cxx:75
 AList.cxx:76
 AList.cxx:77
 AList.cxx:78
 AList.cxx:79
 AList.cxx:80
 AList.cxx:81
 AList.cxx:82
 AList.cxx:83
 AList.cxx:84
 AList.cxx:85
 AList.cxx:86
 AList.cxx:87
 AList.cxx:88
 AList.cxx:89
 AList.cxx:90
 AList.cxx:91
 AList.cxx:92
 AList.cxx:93
 AList.cxx:94
 AList.cxx:95
 AList.cxx:96
 AList.cxx:97
 AList.cxx:98
 AList.cxx:99
 AList.cxx:100
 AList.cxx:101
 AList.cxx:102
 AList.cxx:103
 AList.cxx:104
 AList.cxx:105
 AList.cxx:106
 AList.cxx:107
 AList.cxx:108
 AList.cxx:109
 AList.cxx:110
 AList.cxx:111
 AList.cxx:112
 AList.cxx:113
 AList.cxx:114
 AList.cxx:115
 AList.cxx:116
 AList.cxx:117
 AList.cxx:118
 AList.cxx:119
 AList.cxx:120
 AList.cxx:121
 AList.cxx:122
 AList.cxx:123
 AList.cxx:124
 AList.cxx:125
 AList.cxx:126
 AList.cxx:127
 AList.cxx:128
 AList.cxx:129
 AList.cxx:130
 AList.cxx:131
 AList.cxx:132
 AList.cxx:133
 AList.cxx:134
 AList.cxx:135
 AList.cxx:136
 AList.cxx:137
 AList.cxx:138
 AList.cxx:139
 AList.cxx:140
 AList.cxx:141
 AList.cxx:142
 AList.cxx:143
 AList.cxx:144
 AList.cxx:145
 AList.cxx:146
 AList.cxx:147
 AList.cxx:148
 AList.cxx:149
 AList.cxx:150
 AList.cxx:151
 AList.cxx:152
 AList.cxx:153
 AList.cxx:154
 AList.cxx:155
 AList.cxx:156
 AList.cxx:157
 AList.cxx:158
 AList.cxx:159
 AList.cxx:160
 AList.cxx:161
 AList.cxx:162
 AList.cxx:163
 AList.cxx:164
 AList.cxx:165
 AList.cxx:166
 AList.cxx:167
 AList.cxx:168
 AList.cxx:169
 AList.cxx:170
 AList.cxx:171
 AList.cxx:172
 AList.cxx:173
 AList.cxx:174
 AList.cxx:175
 AList.cxx:176
 AList.cxx:177
 AList.cxx:178
 AList.cxx:179
 AList.cxx:180
 AList.cxx:181
 AList.cxx:182
 AList.cxx:183
 AList.cxx:184
 AList.cxx:185
 AList.cxx:186
 AList.cxx:187
 AList.cxx:188
 AList.cxx:189
 AList.cxx:190
 AList.cxx:191
 AList.cxx:192
 AList.cxx:193
 AList.cxx:194
 AList.cxx:195
 AList.cxx:196
 AList.cxx:197
 AList.cxx:198
 AList.cxx:199
 AList.cxx:200
 AList.cxx:201
 AList.cxx:202
 AList.cxx:203
 AList.cxx:204
 AList.cxx:205
 AList.cxx:206
 AList.cxx:207
 AList.cxx:208
 AList.cxx:209
 AList.cxx:210
 AList.cxx:211
 AList.cxx:212
 AList.cxx:213
 AList.cxx:214
 AList.cxx:215
 AList.cxx:216
 AList.cxx:217
 AList.cxx:218
 AList.cxx:219
 AList.cxx:220
 AList.cxx:221
 AList.cxx:222
 AList.cxx:223
 AList.cxx:224
 AList.cxx:225
 AList.cxx:226
 AList.cxx:227
 AList.cxx:228
 AList.cxx:229
 AList.cxx:230
 AList.cxx:231
 AList.cxx:232
 AList.cxx:233
 AList.cxx:234
 AList.cxx:235
 AList.cxx:236
 AList.cxx:237
 AList.cxx:238
 AList.cxx:239
 AList.cxx:240
 AList.cxx:241
 AList.cxx:242
 AList.cxx:243
 AList.cxx:244
 AList.cxx:245
 AList.cxx:246
 AList.cxx:247
 AList.cxx:248
 AList.cxx:249
 AList.cxx:250
 AList.cxx:251
 AList.cxx:252
 AList.cxx:253
 AList.cxx:254
 AList.cxx:255
 AList.cxx:256
 AList.cxx:257
 AList.cxx:258
 AList.cxx:259
 AList.cxx:260
 AList.cxx:261
 AList.cxx:262
 AList.cxx:263
 AList.cxx:264
 AList.cxx:265
 AList.cxx:266
 AList.cxx:267
 AList.cxx:268
 AList.cxx:269
 AList.cxx:270
 AList.cxx:271
 AList.cxx:272
 AList.cxx:273
 AList.cxx:274
 AList.cxx:275
 AList.cxx:276
 AList.cxx:277
 AList.cxx:278
 AList.cxx:279
 AList.cxx:280
 AList.cxx:281
 AList.cxx:282
 AList.cxx:283
 AList.cxx:284
 AList.cxx:285
 AList.cxx:286
 AList.cxx:287
 AList.cxx:288
 AList.cxx:289
 AList.cxx:290
 AList.cxx:291
 AList.cxx:292
 AList.cxx:293
 AList.cxx:294
 AList.cxx:295
 AList.cxx:296
 AList.cxx:297
 AList.cxx:298
 AList.cxx:299
 AList.cxx:300
 AList.cxx:301
 AList.cxx:302
 AList.cxx:303
 AList.cxx:304
 AList.cxx:305
 AList.cxx:306
 AList.cxx:307
 AList.cxx:308
 AList.cxx:309
 AList.cxx:310
 AList.cxx:311
 AList.cxx:312
 AList.cxx:313
 AList.cxx:314
 AList.cxx:315
 AList.cxx:316
 AList.cxx:317
 AList.cxx:318
 AList.cxx:319
 AList.cxx:320
 AList.cxx:321
 AList.cxx:322
 AList.cxx:323
 AList.cxx:324
 AList.cxx:325
 AList.cxx:326
 AList.cxx:327
 AList.cxx:328
 AList.cxx:329
 AList.cxx:330
 AList.cxx:331
 AList.cxx:332
 AList.cxx:333
 AList.cxx:334
 AList.cxx:335
 AList.cxx:336
 AList.cxx:337
 AList.cxx:338
 AList.cxx:339
 AList.cxx:340
 AList.cxx:341
 AList.cxx:342
 AList.cxx:343
 AList.cxx:344
 AList.cxx:345
 AList.cxx:346
 AList.cxx:347
 AList.cxx:348
 AList.cxx:349
 AList.cxx:350
 AList.cxx:351
 AList.cxx:352
 AList.cxx:353
 AList.cxx:354
 AList.cxx:355
 AList.cxx:356
 AList.cxx:357
 AList.cxx:358
 AList.cxx:359
 AList.cxx:360
 AList.cxx:361
 AList.cxx:362
 AList.cxx:363
 AList.cxx:364
 AList.cxx:365
 AList.cxx:366
 AList.cxx:367
 AList.cxx:368
 AList.cxx:369
 AList.cxx:370
 AList.cxx:371
 AList.cxx:372
 AList.cxx:373
 AList.cxx:374
 AList.cxx:375
 AList.cxx:376
 AList.cxx:377
 AList.cxx:378
 AList.cxx:379
 AList.cxx:380
 AList.cxx:381
 AList.cxx:382
 AList.cxx:383
 AList.cxx:384
 AList.cxx:385
 AList.cxx:386
 AList.cxx:387
 AList.cxx:388
 AList.cxx:389
 AList.cxx:390
 AList.cxx:391
 AList.cxx:392
 AList.cxx:393
 AList.cxx:394
 AList.cxx:395
 AList.cxx:396
 AList.cxx:397
 AList.cxx:398
 AList.cxx:399
 AList.cxx:400
 AList.cxx:401
 AList.cxx:402
 AList.cxx:403
 AList.cxx:404
 AList.cxx:405
 AList.cxx:406
 AList.cxx:407
 AList.cxx:408
 AList.cxx:409
 AList.cxx:410
 AList.cxx:411
 AList.cxx:412
 AList.cxx:413
 AList.cxx:414
 AList.cxx:415
 AList.cxx:416
 AList.cxx:417
 AList.cxx:418
 AList.cxx:419
 AList.cxx:420
 AList.cxx:421
 AList.cxx:422
 AList.cxx:423
 AList.cxx:424
 AList.cxx:425
 AList.cxx:426
 AList.cxx:427
 AList.cxx:428
 AList.cxx:429
 AList.cxx:430
 AList.cxx:431
 AList.cxx:432
 AList.cxx:433
 AList.cxx:434
 AList.cxx:435
 AList.cxx:436
 AList.cxx:437
 AList.cxx:438
 AList.cxx:439
 AList.cxx:440
 AList.cxx:441
 AList.cxx:442
 AList.cxx:443
 AList.cxx:444
 AList.cxx:445
 AList.cxx:446
 AList.cxx:447
 AList.cxx:448
 AList.cxx:449
 AList.cxx:450
 AList.cxx:451
 AList.cxx:452
 AList.cxx:453
 AList.cxx:454
 AList.cxx:455
 AList.cxx:456
 AList.cxx:457
 AList.cxx:458
 AList.cxx:459
 AList.cxx:460
 AList.cxx:461
 AList.cxx:462
 AList.cxx:463
 AList.cxx:464
 AList.cxx:465
 AList.cxx:466
 AList.cxx:467
 AList.cxx:468
 AList.cxx:469
 AList.cxx:470
 AList.cxx:471
 AList.cxx:472
 AList.cxx:473
 AList.cxx:474
 AList.cxx:475
 AList.cxx:476
 AList.cxx:477
 AList.cxx:478
 AList.cxx:479
 AList.cxx:480
 AList.cxx:481
 AList.cxx:482
 AList.cxx:483
 AList.cxx:484
 AList.cxx:485
 AList.cxx:486
 AList.cxx:487
 AList.cxx:488
 AList.cxx:489
 AList.cxx:490
 AList.cxx:491
 AList.cxx:492
 AList.cxx:493
 AList.cxx:494
 AList.cxx:495
 AList.cxx:496
 AList.cxx:497
 AList.cxx:498
 AList.cxx:499
 AList.cxx:500
 AList.cxx:501
 AList.cxx:502
 AList.cxx:503
 AList.cxx:504
 AList.cxx:505
 AList.cxx:506
 AList.cxx:507
 AList.cxx:508
 AList.cxx:509
 AList.cxx:510
 AList.cxx:511
 AList.cxx:512
 AList.cxx:513
 AList.cxx:514
 AList.cxx:515
 AList.cxx:516
 AList.cxx:517
 AList.cxx:518
 AList.cxx:519
 AList.cxx:520
 AList.cxx:521
 AList.cxx:522
 AList.cxx:523
 AList.cxx:524
 AList.cxx:525
 AList.cxx:526
 AList.cxx:527
 AList.cxx:528
 AList.cxx:529
 AList.cxx:530
 AList.cxx:531
 AList.cxx:532
 AList.cxx:533
 AList.cxx:534
 AList.cxx:535
 AList.cxx:536
 AList.cxx:537
 AList.cxx:538
 AList.cxx:539
 AList.cxx:540
 AList.cxx:541
 AList.cxx:542
 AList.cxx:543
 AList.cxx:544
 AList.cxx:545
 AList.cxx:546
 AList.cxx:547
 AList.cxx:548
 AList.cxx:549
 AList.cxx:550
 AList.cxx:551
 AList.cxx:552
 AList.cxx:553
 AList.cxx:554
 AList.cxx:555
 AList.cxx:556
 AList.cxx:557
 AList.cxx:558
 AList.cxx:559
 AList.cxx:560
 AList.cxx:561
 AList.cxx:562
 AList.cxx:563
 AList.cxx:564
 AList.cxx:565
 AList.cxx:566
 AList.cxx:567
 AList.cxx:568
 AList.cxx:569
 AList.cxx:570
 AList.cxx:571
 AList.cxx:572
 AList.cxx:573
 AList.cxx:574
 AList.cxx:575
 AList.cxx:576
 AList.cxx:577
 AList.cxx:578
 AList.cxx:579
 AList.cxx:580
 AList.cxx:581
 AList.cxx:582
 AList.cxx:583
 AList.cxx:584
 AList.cxx:585
 AList.cxx:586
 AList.cxx:587
 AList.cxx:588
 AList.cxx:589
 AList.cxx:590
 AList.cxx:591
 AList.cxx:592
 AList.cxx:593
 AList.cxx:594
 AList.cxx:595
 AList.cxx:596
 AList.cxx:597
 AList.cxx:598
 AList.cxx:599
 AList.cxx:600
 AList.cxx:601
 AList.cxx:602
 AList.cxx:603
 AList.cxx:604
 AList.cxx:605
 AList.cxx:606
 AList.cxx:607
 AList.cxx:608
 AList.cxx:609
 AList.cxx:610
 AList.cxx:611
 AList.cxx:612
 AList.cxx:613
 AList.cxx:614
 AList.cxx:615
 AList.cxx:616
 AList.cxx:617
 AList.cxx:618
 AList.cxx:619
 AList.cxx:620
 AList.cxx:621
 AList.cxx:622
 AList.cxx:623
 AList.cxx:624
 AList.cxx:625
 AList.cxx:626
 AList.cxx:627
 AList.cxx:628
 AList.cxx:629
 AList.cxx:630
 AList.cxx:631
 AList.cxx:632
 AList.cxx:633
 AList.cxx:634
 AList.cxx:635
 AList.cxx:636
 AList.cxx:637
 AList.cxx:638
 AList.cxx:639
 AList.cxx:640
 AList.cxx:641
 AList.cxx:642
 AList.cxx:643
 AList.cxx:644
 AList.cxx:645
 AList.cxx:646
 AList.cxx:647
 AList.cxx:648
 AList.cxx:649
 AList.cxx:650
 AList.cxx:651
 AList.cxx:652
 AList.cxx:653
 AList.cxx:654
 AList.cxx:655
 AList.cxx:656