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
Added back the code that set the offset of variables with the offsetof function. This
code is running by default. Any code that includes #ifndef TRICK_ICG in
classes/structures will want this on.
Added a flag to ICG that allows us to turn off writing of these lines. If the flag
is present, ICG may write out io_src code for private/protected variables that it could
not reach if an offsetof function was required. Code cannot have any #ifndef TRICK_ICG
present in classes/structures for this to work.
Used the mods field in the attributes to indicate of "--" was specified in the header file. We
still save the units as "1" to keep it compatible with udunits. When outputting the variable
in data recording or variable server we check to see if the mods field for "--" is set. We
output "--" if the mods field is set. Also allowed "--" to persist in data products.
refs #254
Changed the include for udunits to #include <udunits2.h> to work
on all platforms. Added the include directory /usr/include/udunits2
for Linux.
refs #231
Initial checkin of using udunits for measurement units conversions. Replaced
our conversion code in ICG and swig code to use udunits.
Also added code to convert unit symbols that we used in Trick that are different
names in udunits.
Added a sim_object that will eventually allow users to specify a custom
set of files to read units information.
refs #231
Changed the storage of offsets from bytes to bits to better handle bitfields.
Added code to track classes that are defined within other classes and are
private/protected. These classes cannot be used in templates because our
io_src code declares variables outside of the class that would try and use
these private/protected variables. When a template is found to use a
private/protected class it is skipped.
refs #218
Removed the requirement of passing flags throughout ICG indicating if we are
in an inherited class or not. Removed the init_attr friends throughout
Trick core headers.
Moved field offset calculations for inherited classes to when the inherited
classes are processed. This removes the need to have to remember if fields
were inherited or not, the offset already reflects the correct offset.
refs #218
Mostly working. This removes the use of offsetof from all I/O code. This was
the only reason we needed friends. In it's place we put the offset value that
clang has calculated for the field. Still need to work on virtually inherited
classes and confirm bitfields.
refs #218
Modified ICG to save the non-canonical name for STLs. This is typically more readable
because it is shorter. Added code to the variable server to filter out requests accessing
STLs, because those accesses will not currently work.
refs #206
Initial checkin of STL checkpointing. This checkin only covers the sequential
STLs, vector, list, deque, set, and multiset. This checkin does include the
changes in Trick header files to include/exclude our STLs properly to make a
restartable checkpoint.
refs #206
I found that in ICG I have access to the canonical type of a variable which
in most cases is the type I should process. Doing this eliminates the
need for some of the code that resolved typedefs because the canonical type
has already done that.
refs #200
Interesting case. I found that we should process the canonical type names where
we were not before. This resolves all typedefs and should be be more
accurate in the future. When we process the canonical type we need to ignore
the processing of the non-canonical type. We set a flag after
the canonical type is processed to ignore any type that is processed after.
refs #198
Changed all header file once include variables to follow the same naming
convention and not start with any underscores. Also deleted old
incorrect copyright notices. Also removed $Id: tags from all files.
Fixes#14. Fixes#22.