All,<br><br>Since I noticed Doug commit PCH support for NamespaceDecl's the other day (week?), I thought I'd send an update to my last PCH patch. I've been sitting on this work for quite some time while I've been busy with other things.<br>
<br>The attached implements serialization for <br>- namespaces, using directives, namespace aliases, using (and shadow) declarations<br>- classes<br>- methods, constructors, destructors, conversion functions<br>- and linkage specifications<br>
There's some support for serializing friend declarations, but only if it's not a friend type. Fixing that should be relatively easy. There is also some work on serializing templates and dependent types, but it's asserted out for now. I integrated Doug's implementation of VisitNamespaceDecl (I wasn't serializing the AnonymousNamespace) into this patch.<br>
<br>The patch adds a large number of getters and setters to AST declarations since the PCH code has to construct them piecemeal. I've had to expose some new functionality for creating CXXRecord::DefinitionData objects (see createDefinition() and shareDefinition() in the attached patch). I think it's kind of nice. I also renamed one or two existing methods to make them have similar names as other functions--I forget which methods, though. These changes have been propagated to Sema.<br>
<br>I had to add new Create() functions for CXXMethod and its derivations since the normal Create() function asserts when you try to create these objects without names. As per a previous suggestion, these take an "EmptyShell" type, which is added as a public empty class in Decl (should it be private?)<br>
<br>WRT to the PCH reader/writer classes, I added some new functions for reading and writing base class specifiers and nested name specifiers. I also added a ReadSourceLocation and ReadSourceRange methods to the PCHReader to make their reading consistent with other operations (and easier in some cases).<br>
<br>I modified PCH/namespaces test to include some of the other namespace and using decls and linkage specs. There should be a new classes test in the patch with (let's just say... "not exhaustive") tests for serializing classes.<br>
<br>Please let me know if there is anything that I can do to help get this patch applied.<br><br>Andrew Sutton<br><a href="mailto:andrew.n.sutton@gmail.com">andrew.n.sutton@gmail.com</a><br>