Found a side effect of SWIG's "compactdefaultargs". It highlighted an
error we had in creating the data_record group in our ball sim. We did
not release the memory from python and it was causing a double free
at exit.
refs #176
Saved the timestamps on the default gettimeofday clock as close to
the beginning of the simulation, after initialization is finished and
at the end of shutdown. Printed out the elapsed time as well as
the number of overruns counted by RealtimeSync.
refs #183
Taking in the latest er7_utils directory and adding it into Trick in the
same location it was as an external repository. Made one change to
the files_to_ICG.hh file in the repository to remove the CheckpointHelper
header files. Those go in the Trick files_to_ICG.hh file.
refs #180
Found that the list of swig files we should expect from external libraries
was incorrectly cleared before it was being used. This still allows the
sim to compile, but no information about the models in the library are
available in the input file.
refs #179
When I split the comment remover into 2 regular expressions I reversed
the order removing C style comments before c++. This caused this error
where a /* in a C++ comment made Trick look for the end of the C style
comment and it may never find the end.
refs #178
Setting the frame log size only resized the time line graph, not the normal
frame log groups. Added code to change the size of the normal frame log
groups in addition to the time line.
refs #177
After digging around the SWIG issues database I found a feature
compactdefaultargs that creates a call to functions with default
arguments like it did before. The important part is that the
code runs.
refs #176
We pull file names out of the clang infrastructure to match where
classes are defined. We use the file name to pull comments and find
and process Trick header comments. Up to now clang gave us the realpath
of files and when we looked up comments we already had the realpath and
everything worked. In clang 3.6 in some places we are not getting the
realpath anymore which confuses ICG. Added code to get the realpath of
any file name we use throughout the code.
refs #167
Added a 3 wheeled car example from the ODE demos. I collapsed all of the separate classes
handling the world, objects, and drawings into a single class. Each world is different
and just including that with the objects for these simple examples is easier. Same goes
for the drawing.
refs #172
Changed the regular expressions that removes comments in convert_swig to
try and handle C style comments found in multiline #define statements.
Also added a TRICK_ICG_NOCOMMENT line to SIM_ode to stop ICG from
trying to process non-Trick comments in the ODE directory.
refs #172
I want Trick to parse and understand ODE header files. The ODE header files
include some typedef constructs ICG was skipping. Added code to handle the
typedefs we did not handle before. Also made a small change the way
TRICK_ICG_EXCLDUE and TRICK_EXCLUDE are used so that they support excluding
individual files as well as directories.
Took the ODE bouncing ball tutorial sim and interfaced it within Trick. Created classes to handle
interfacing with ODE and the DrawStuff graphics that comes with ODE. Created classes
to contain the ball and the drawstuff graphics for the ball.
refs #172
Duplicating change from 15.1.1.
If a variable resolves to a class/structure type the variable server tries to free the
attributes associated with that variable name. But the attributes usually point to
a fixed place in memory that is not allocated. I removed the free statement. I don't
believe this will lead to a memory leak.
refs #165
When I merged the sections of code that look for library dependencies I left out
the section that searches for dependencies that have a full path. I added
that back in.
refs #170
I kind of took the easy way out on this one, I remove any
structure definitions that matches the pattern
typedef const struct A {...} constA ; out of out of
convert_swig before they get to SWIG.
refs #169
Found that the stripchart calls itself when reading variables
from an input file. The command to call itself was using the old
executable name trick_stripchart instead of the new trick-stripchart.
refs #166
Added a time variable that is in seconds. A created a special case
for var_add if you add "time" then this variable will be added to
the list of variables returned.
trick.var_add("time")
refs #151
Added a loop to set each 1024th byte in the recording array to 1 once the
memory has been allocated. Need to test if this is good enough to get Linux
to allocate the memory.
Added a current recording buffer pointer to use instead of using array offsets.
This should be more cpu cache efficient.
Changed the memcpy calls to direct casted integer assignments based on the size of the
parameter. If the parameter is not size 1,2,4,or 8 we fall back to a memcpy.
refs #155
Updated the directory names in the doxygen files to match the new directory locations
of our source code files. The documentation builds now. But we still need to
remove the duplicate documentation that is now in the wiki, because the wiki is
more up to date.
refs #158
The makefile rule javadoc was misnamed docs in trick_source/java/makefile. I fixed hundreds
of warnings and errors that were present when creating the java docs.
refs #159
We were using "llvm-config --bindir" to set the path for clang. But
on some systems clang is not in that directory. Changed the configure
script to search for clang in the bindir first, if not found, search
the normal locations.
refs #130
Changed the commands to force the copy files in the the SIM directory
from "cp" to "cp -f". Added a rule in Makefile.sim to properly
call the configuration processor if the build directory is missing.
Also added a loop to filter the files found to be in an external
library. Those files need to be tested to see if they include ICG: (No)
refs #156
When allocating a new event, if the same name is used, no allocation is
created and NULL is returned. We start trying to use the returned value
which seg-faulted. I added a check to only continue if the returned value
from the allocation is not NULL.
refs #149
Created a thread trigger container class to hold all of the various thread triggering
mechanisms. I wanted to avoid allocating/freeing trigger mechanisms. I added
an eventfd and futex trigger types. Updated SIM_threads_simple test sim to use
show how to set the thread trigger type.
refs #148
Added a configure check for clang and llvm-config. If llvm-config exists
then we check for the libraries in the libdir returned by llvm-config.
All of these must be present for configure to pass.
refs #130
If a directory has more than one language the rule to create the object
directory is written twice. Added a check to see if we've written
the rule for each object code directory, if we have already written
the rule then don't write it again.
refs #127
Fixed the problem where library dependencies for header and source files are
saved to the same file and half are lost. Did this by not removing the
suffix when creating the library dependency file name.
refs #128
When a template is in a namespace the type that is marked for the node containing
the full definition of the type is elaborated. We need to go into
the elaborated name and get the underlying type. Added code to do this
and tests to see if the type we are checking is itself a template or the
elaborated type is a template. Sorry, this probably only makes sense to me.
refs #124