ROOT logo
// $Id: EyeInfoVector.h 2553 2011-10-14 03:37:16Z 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/.

#ifndef GledCore_EyeInfoVector_H
#define GledCore_EyeInfoVector_H

#include <Gled/GledTypes.h>
// #include <Gled/GSpinLock.h>
#include <Gled/GMutex.h>

class EyeInfo;

#include <vector>

class EyeInfoVector : public vector<EyeInfo*>
{
protected:
  GMutex     mLock;
  Int_t      mRefCnt;

public:
  EyeInfoVector(Int_t s=0) : vector<EyeInfo*>(s), mRefCnt(0) {}
  ~EyeInfoVector() {}

  void IncRefCnt() { ++mRefCnt; }
  void DecRefCnt() { mLock.Lock(); if (--mRefCnt == 0) delete this; else mLock.Unlock(); }

  static EyeInfoVector* CloneAndAdd(EyeInfoVector* eiv, EyeInfo* ei);
  static EyeInfoVector* CloneAndRemove(EyeInfoVector* eiv, EyeInfo* ei);

#include "EyeInfoVector.h7"
  ClassDefNV(EyeInfoVector, 0);
}; // endclass EyeInfoVector

#endif
 EyeInfoVector.h:1
 EyeInfoVector.h:2
 EyeInfoVector.h:3
 EyeInfoVector.h:4
 EyeInfoVector.h:5
 EyeInfoVector.h:6
 EyeInfoVector.h:7
 EyeInfoVector.h:8
 EyeInfoVector.h:9
 EyeInfoVector.h:10
 EyeInfoVector.h:11
 EyeInfoVector.h:12
 EyeInfoVector.h:13
 EyeInfoVector.h:14
 EyeInfoVector.h:15
 EyeInfoVector.h:16
 EyeInfoVector.h:17
 EyeInfoVector.h:18
 EyeInfoVector.h:19
 EyeInfoVector.h:20
 EyeInfoVector.h:21
 EyeInfoVector.h:22
 EyeInfoVector.h:23
 EyeInfoVector.h:24
 EyeInfoVector.h:25
 EyeInfoVector.h:26
 EyeInfoVector.h:27
 EyeInfoVector.h:28
 EyeInfoVector.h:29
 EyeInfoVector.h:30
 EyeInfoVector.h:31
 EyeInfoVector.h:32
 EyeInfoVector.h:33
 EyeInfoVector.h:34
 EyeInfoVector.h:35
 EyeInfoVector.h:36
 EyeInfoVector.h:37
 EyeInfoVector.h:38