<div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">+/// ManagerRegister - This class records manager creators registered at<br>

+/// runtime. The information is communicated to AnalysisManager through static<br>
+/// members. Better design is expected.<br>
+<br>
+class ManagerRegister {<br>
+public:<br>
+  typedef ConstraintManager* (*ConstraintManagerCreator)(GRStateManager&);<br>
+  typedef StoreManager* (*StoreManagerCreator)(GRStateManager&);<br>
<br>
Aren't these typedefs the same as in the ones in GRStateManager?  Maybe we should just move those typedefs into the clang namespace and have them used by both GRStateManager and ManagerRegister (if not, let's just keep the ones in GRStateManager).  It seems silly to have the same typedefs defined twice, which can lead to weird warnings if we don't keep them in sync.</blockquote>
<div><br>Done. But this introduced two #includes, commented in code. And I noticed there are other #includes only for including typedefs, for example LiveSymbolsTy/DeadSymbolsTy.<br><br>I named the class ManagerRegistry instead of ManagerRegistrar.<br>
<br>Other comments were adopted. Thanks.<br><br>New patch attached.<br></div></div>