1 /**
2  * @cond doxygenLibsbmlInternal
3  *
4  * @file    UniqueComponentIds.h
5  * @brief   Ensures the appropriate ids within a Model are unique
6  * @author  Sarah Keating
7  *
8  * <!--------------------------------------------------------------------------
9  * This file is part of libSBML.  Please visit http://sbml.org for more
10  * information about SBML, and the latest version of libSBML.
11  *
12  * Copyright (C) 2020 jointly by the following organizations:
13  *     1. California Institute of Technology, Pasadena, CA, USA
14  *     2. University of Heidelberg, Heidelberg, Germany
15  *     3. University College London, London, UK
16  *
17  * Copyright (C) 2019 jointly by the following organizations:
18  *     1. California Institute of Technology, Pasadena, CA, USA
19  *     2. University of Heidelberg, Heidelberg, Germany
20  *
21  * Copyright (C) 2013-2018 jointly by the following organizations:
22  *     1. California Institute of Technology, Pasadena, CA, USA
23  *     2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
24  *     3. University of Heidelberg, Heidelberg, Germany
25  *
26  * Copyright 2011-2012 jointly by the following organizations:
27  *     1. California Institute of Technology, Pasadena, CA, USA
28  *     2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
29  *
30  * This library is free software; you can redistribute it and/or modify it
31  * under the terms of the GNU Lesser General Public License as published by
32  * the Free Software Foundation.  A copy of the license agreement is provided
33  * in the file named "LICENSE.txt" included with this software distribution
34  * and also available online as http://sbml.org/software/libsbml/license.html
35  * ---------------------------------------------------------------------- -->*/
36 
37 #ifndef UniqueComponentIds_h
38 #define UniqueComponentIds_h
39 
40 
41 #ifdef __cplusplus
42 
43 #include <string>
44 
45 #include "UniqueCompIdBase.h"
46 
47 LIBSBML_CPP_NAMESPACE_BEGIN
48 
49 class UniqueComponentIds: public UniqueCompIdBase
50 {
51 public:
52 
53   /**
54    * Creates a new Constraint with the given constraint id.
55    */
56   UniqueComponentIds (unsigned int id, CompValidator& v);
57 
58   /**
59    * Destroys this Constraint.
60    */
61   virtual ~UniqueComponentIds ();
62 
63 
64 protected:
65 
66   /**
67    * Checks that all ids on the following Model objects are unique:
68    * FunctionDefinitions, Species, Compartments, global Parameters,
69    * Reactions, and Events.
70    */
71   virtual void doCheck (const Model& m);
72 };
73 
74 LIBSBML_CPP_NAMESPACE_END
75 
76 #endif  /* __cplusplus */
77 #endif  /* UniqueComponentIds_h */
78 /** @endcond */
79