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
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
Wrote a python routine called get_value_by_ref_name that takes
a variable name string as an argument. The string is passed to
ref_attributes to find the address and returns a REF2 structure. The REF2
structure is passed to ref_to_value and the type and value of the variable
is returned in a structure. We call vval_<type> to extract the raw value
from the structure and return that to python space.
Made a couple of other bug fixes in the FieldVisior and cpp input file
example found while investigating this issue.
refs #123
So I found that I didn't write many of the autoconf rules correctly including
the one searching for motif. I also messed up the checks for bison, flex, and
perl. I added new rules to search for Xwindows headers and libraries. The
motif rule is only executed if we find fermi-ware where it is used.
refs #119
Removed all motif dependencies. I removed the motif based table renderer that
is duplicated here in gxplot. The same table renderer is in fxplot with one
main difference, the one in fxplot actually renders tables, this one was not
working. Also removed an error message dialog box that depended on
motif, replacing them with std::cerr calls. Removed -lXm when linking gxplot
refs #121
Added a case statement for the bad ref type to the binary data handler. We handle a bad
ref as an integer, because that is what the sim sends us. This fixes MTV.
refs #117
Did two things to stop the crash. 1. When following an address path if we hit a NULL
address, stop processing and return the NULL. 2. When trying to resolve addresses in
copy_sim_data, if a NULL address is returned then reset the reference to unresolved and
return a dummy value.
Need to fix MTV to handle dummy value returns.
refs #117
Changed parenthesis to curly brace... er I mean curly bracket. Well too late, in
the code I called it curly brace. It's these "{}". Oh well. Also found that the
dependency_only headers were not actually reading the dependencies. Added the list
of dependency only files to the list of files to get dependencies from.
refs #114
Added new doxygen style tags for truning on/off Trick attributes processing,
comment processing, and library dependencies. Here are the tags we recognize
(@|\)trick_parse(everything|attributes|dependencies_only)
(@|\)trick_exclude_typename(class_name)
(@|\)trick_link_dependency(link_name)
refs #114
Took the code that we had that generated the list of header files we need to
process from an older version of make_swig_makefile.pm and put the code back
in make_makefile_swig. What's old is new again and it works.
refs #113