xc
DefaultTag.h
1 // -*-c++-*-
2 //----------------------------------------------------------------------------
3 // XC program; finite element analysis code
4 // for structural analysis and design.
5 //
6 // Copyright (C) Luis C. Pérez Tato
7 //
8 // This program derives from OpenSees <http://opensees.berkeley.edu>
9 // developed by the «Pacific earthquake engineering research center».
10 //
11 // Except for the restrictions that may arise from the copyright
12 // of the original program (see copyright_opensees.txt)
13 // XC is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // This software is distributed in the hope that it will be useful, but
19 // WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU General Public License for more details.
22 //
23 //
24 // You should have received a copy of the GNU General Public License
25 // along with this program.
26 // If not, see <http://www.gnu.org/licenses/>.
27 //----------------------------------------------------------------------------
28 
29 #ifndef DefaultTag_h
30 #define DefaultTag_h
31 
32 
33 namespace XC {
35 //
38  {
39  private:
40  int default_tag; //<! tag for the new entity.
41  public:
42  // constructors
43  inline DefaultTag(int tag= 0)
44  : default_tag(tag) {}
45 
46  inline DefaultTag &operator=(const int &i)
47  {
48  setTag(i);
49  return *this;
50  }
51  inline void setTag(const int &tag)
52  {
53  // Commented out because it gives "false positives" when
54  // restoring databases.
55  // if(tag<default_tag)
56  // std::cerr << "DefaultTag::" << __FUNCTION__
57  // << "; WARNING new tag: " << tag
58  // << " is smaller than the old one: " << default_tag
59  // << " This can led to repeated tags, which is not possible."
60  // << std::endl;
61  default_tag= tag;
62  }
63  inline const int &getTag(void) const
64  { return default_tag; }
65  inline void incTag(void)
66  { default_tag++; }
67  inline int operator++(int)
68  {
69  int retval= default_tag;
70  default_tag++;
71  return retval;
72  }
73  inline int operator++(void)
74  { return ++default_tag; }
75  };
76 
77 
78 } // end of XC namespace
79 
80 #endif
81 
Default tag.
Definition: DefaultTag.h:37
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35