1 /* Authors: Lutong Wang and Bangqi Xu */
2 /*
3  * Copyright (c) 2019, The Regents of the University of California
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are met:
8  *     * Redistributions of source code must retain the above copyright
9  *       notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above copyright
11  *       notice, this list of conditions and the following disclaimer in the
12  *       documentation and/or other materials provided with the distribution.
13  *     * Neither the name of the University nor the
14  *       names of its contributors may be used to endorse or promote products
15  *       derived from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS BE LIABLE FOR ANY DIRECT,
21  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #ifndef _FR_INSTBLOCKAGE_H_
30 #define _FR_INSTBLOCKAGE_H_
31 
32 #include <memory>
33 
34 #include "db/obj/frBlockObject.h"
35 #include "db/obj/frBlockage.h"
36 #include "frBaseTypes.h"
37 
38 namespace fr {
39 class frInst;
40 class frInstBlockage : public frBlockObject
41 {
42  public:
43   // constructors
frInstBlockage(frInst * inst,frBlockage * blockage)44   frInstBlockage(frInst* inst, frBlockage* blockage)
45       : inst_(inst), blockage_(blockage)
46   {
47   }
48   // getters
getInst()49   frInst* getInst() const { return inst_; }
getBlockage()50   frBlockage* getBlockage() const { return blockage_; }
51   // setters
52   // others
typeId()53   frBlockObjectEnum typeId() const override { return frcInstBlockage; }
54 
55  protected:
56   frInst* inst_;
57   frBlockage* blockage_;
58 };
59 }  // namespace fr
60 
61 #endif
62