Added std::array as an STL type Trick recognizes. We can now create io code
that can save and restore std::arrays like std::vectors and other similar
types. Like other STL types, an std::array cannot be logged or viewed in
trick-tv.
Check the return value of CXXRecordVisitor::TraverseCXXRecordDecl and
don't add information from excluded parents.
Add a parameter to PrintAttributes::isHeaderExcluded to toggle exlusion
of TRICK_EXT_LIB_DIRS paths. When traversing a CXX record, we don't
actually want to skip these paths since their io code should exist in
the Trickified library.
Fix memory leak.
Refs #435
Renamed determinePrintAttr to isPrintable.
Different callers need to filter on different IO specs, so I added an
ioMask parameter.
Additional refactoring.
Refs #427
When I added the "tee" commands to split off command outputs to
a file and the screen, I forgot that the exit status of the make commands
takes the exit status of "tee" which does not ususally have an error and
masks any error in the actual compilation. I added an exit ${PIPESTATUS[0]}
which returns the exit status of the compilation.
Added echos to all compile commands to append to MAKE_out. tee'd
the output of the compile command so that it will go to both the MAKE_out
file and the screen.
Like gcc, swig supports all those -M options. Use them to automatically
manage *_py.cpp dependencies.
Add dependency generation to trickify.mk as well.
A different approach. Instead of trying to limit the number of times
S_overrides.mk is included, combine the makefiles so only one
call to make is made.
Created a hook for the clang preprocessor. The hook does 2 things. It
keeps track to which header files we have entered and exited. Second it
searches for the use of TRICK_ICG. If we find an instance of TRICK_ICG we
mark all of the included files from this point up the chain as requiring
compensation. To compensate for using TRICK_ICG we write out the older
offset statements to get the location of variables in classes/structures.
When saving the list of namespaces and classes a particular type is contained in
we have to save the class name and any template args it includes separately. This
allows us to mangle the names easier. And we now search for type names to see
if they follow this pattern template_name<template_args>::embedded_class. If
we are using a template embedded class we need to create attributes for the embedded class.
Calling getTemplateArgs() every iteration is wasteful. This should
be done once outside of the loop. Even better, use a foreach loop and
get rid of the index varible!
Hey buddy. I wanted to tell you this before you heard it from someone
else...
I refactored ICG.
Now, it's gonna look a little scary at first. But I promise you'll like
it when you get used to it. It'll be fine. You can trust me. #341
The call getRBraceLoc to find the ending source location of things is gone. Replaced
it with getting the source range and get the end of that range. Also the way to
get clang/llvm 3.9 to process c++11 code required some reordering of calls in main as
well as adding some more features to be turned on.
This changes back the default behavior to not use offsetof in io_src code.
Added a flag to ICG, -c or --compat15, to globally generate offsetof statements.
Added an ENV variable that can be used to generate offsetof statements by file or directory.
Added in a warning if classes parsed at ICG time are different in size than at runtime.
Added a check that was in 15 that tested the platform we are running on. If we
are on an mac, we want to skip fully qualifying variable names because it creates
code that doesn't compile under clang.