source: trunk/source/global/management/include/G4FastVector.hh @ 1315

Last change on this file since 1315 was 1228, checked in by garnier, 14 years ago

update geant4.9.3 tag

File size: 3.1 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26//
27// $Id: G4FastVector.hh,v 1.5 2006/06/29 19:01:48 gunter Exp $
28// GEANT4 tag $Name: geant4-09-03 $
29//
30//
31// ------------------------------------------------------------
32//      GEANT 4 class header file
33//
34//      History: first implementation, based on object model of
35//      2nd December 1995, G.Cosmo
36// ------------------------------------------------------------
37
38#ifndef G4FastVector_h
39#define G4FastVector_h 1
40
41#include "globals.hh"
42
43template <class Type, G4int N>
44class G4FastVector 
45{
46  //  Template class defining a vector of pointers,
47  //  not performing boundary checking.
48
49  public:
50
51      G4FastVector() { ptr = &theArray[0]; }
52
53      ~G4FastVector()
54      {
55        if (ptr != &theArray[0]) delete [] ptr;
56      }
57
58      inline Type* operator[](G4int anIndex) const
59      //  Access operator to the array.
60      {
61        return ptr[anIndex];
62      }
63
64      void Initialize(G4int items)
65      //  Normally the pointer ptr points to the stack-array
66      //  theArray; only when the number of items is greater
67      //  than N, memory is allocated dynamically.
68      {
69        if (ptr != &theArray[0])
70           delete [] ptr;
71        if (items > N)
72           ptr = new Type*[items];
73        else
74           ptr = &theArray[0];
75      } 
76
77      inline void SetElement(G4int anIndex, Type *anElement)
78      //  To insert an element at the given position inside
79      //  the vector.
80      {
81        ptr[anIndex] = anElement;
82      }
83
84  private:
85
86      Type *theArray[N];
87      Type **ptr;
88};
89
90#endif
91
Note: See TracBrowser for help on using the repository browser.