00001 /*****************************************************************************/ 00002 /*! 00003 * \file notifylist.h 00004 * 00005 * Author: Clark Barrett 00006 * 00007 * Created: Mon Jan 20 13:52:19 2003 00008 * 00009 * <hr> 00010 * Copyright (C) 2003 by the Board of Trustees of Leland Stanford 00011 * Junior University and by New York University. 00012 * 00013 * License to use, copy, modify, sell and/or distribute this software 00014 * and its documentation for any purpose is hereby granted without 00015 * royalty, subject to the terms and conditions defined in the \ref 00016 * LICENSE file provided with this distribution. In particular: 00017 * 00018 * - The above copyright notice and this permission notice must appear 00019 * in all copies of the software and related documentation. 00020 * 00021 * - THE SOFTWARE IS PROVIDED "AS-IS", WITHOUT ANY WARRANTIES, 00022 * EXPRESSED OR IMPLIED. USE IT AT YOUR OWN RISK. 00023 * 00024 * <hr> 00025 * 00026 */ 00027 /*****************************************************************************/ 00028 00029 #ifndef _cvcl__include__notifylist_h_ 00030 #define _cvcl__include__notifylist_h_ 00031 00032 #include "expr.h" 00033 #include "cdlist.h" 00034 00035 namespace CVCL { 00036 00037 class Theory; 00038 00039 class NotifyList { 00040 CDList<Theory*> d_tlist; 00041 CDList<Expr> d_elist; 00042 00043 public: 00044 NotifyList(Context* c) : d_tlist(c), d_elist(c) { 00045 IF_DEBUG(d_elist.setName("CDList[NotifyList]")); 00046 } 00047 unsigned size() const { return d_tlist.size(); } 00048 void add(Theory* t, const Expr& e) { d_tlist.push_back(t); d_elist.push_back(e); } 00049 Theory* getTheory(int i) const { return d_tlist[i]; } 00050 Expr getExpr(int i) const { return d_elist[i]; } 00051 }; 00052 00053 } 00054 00055 #endif