Added a clock reference that to the FrameLog class that defaults
to the GetTimeOfDay clock. This clock has fast access and is
non intrusive to real-time operations using a different clock.
Added a function to set the clock to something else if desired.
Started the active event allocation at 100 events. If more are needed, we
add 100 allocations each time. The array is never reduced in size if
events are deleted, events are moved to the front of the array and the
remaining elements are set to NULL.
Created a new message class that will copy incoming messages to a
buffer area. The buffer area is pre allocated during simulation
initialization. On a separate thread the buffer area is written
to std::cout.
Added a new environment variable TRICK_ICG_IGNORE_TYPES. Class/struct/enum
types found in this semicolon delimited list will not have attributes written
out.
* Added tests for MonteCarlo varfile eof line problem
* Remove redundant variables in MonteCarlo varfile test
* Fixed MonteCarlo varfile eof line problem. #459
Found more places where symbolic links cause havoc. Also added back a #define
that was removed in parameter_types.h and added back the messaging routines to
the list swig processes.
* Removed purple warnings from unit test compilation.
* "Fixed const corectness bug. Added more warning fixes."
* Fixed warning issue.
* Removed null checking and (char*) casting.
* Changed sizeof parameter to variable from data structure.
Added a stub exec_get_rt_nap function in the test directory that
always returns false. That is the cleanest way to satisfy the
call for the unit tests.
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.
Some classes were still calling socket_init which had been removed. Replaced those calls with tc_init.
Make compiled and make test successfully ran all tests. Jenkins should be happy now.
Some classes were still calling socket_init which had been removed. Replaced those calls with tc_init.
Make compiled and make test successfully ran all tests. Jenkins should be happy now.
Restore previous size of Variable Tree and Search Panel when visibility
is restored.
Save/restore visibility across sessions.
Add mnemonics and tooltips to menu items.
Ensure the Variable Tree is visible as part of the "Expand Parent in
Tree" actions.
Remove calls to setOneTouchExpandable.
Refs #415
This currently doesn't work 100% properly. It will toggle fine, but when showing the panels it starts them collapsed. Resizing the pane causes them to appear for some reason.
* Values that return "-nan" will now properly show <NaN> in the Trick View variable table.
* +-NaN and +-Infinity are now correctly represented in Trick View.
This solution now handles +- infinity and +-nan instead of just -nan.
* Lifted fix logic into a protected function in the super class.
Removed author/date information.
Put duplicate code from VSFLoat and VSDouble into VSValue.
Added support for -NaN.
* Capped the maximum throttle value to 1000.
Entering extremely large values into the maximum value field of the throttle GUI caused the GUI to freeze. Imposing a cap of 1000 to the maximum value prevents the GUI from freezing.
* Updated brace style from Allman to K&R.
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.
Namespace packages are a mechanism for splitting a single Python
package across multiple directories on disk. With the addition of
$(TRICK_HOME)/pymods/trick, there now exists a package named 'trick' at
$(TRICK_HOME)/pymods and in each SIM_* directory. This change allows sims
to import modules from both locations.
Refs #365
The input file that is created while running monte carlo runs is done
in 3 different places. There was no easy way to collect all of those
lines in one place, so I duplicated the lines in the dryrun function.
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.
Like other TRICK_SYSTEM variables, users should not modify this.
This renders TRICK_LDFLAGS and TRICK_USER_LINK_LIBS redundant. While we
would like to eventually remove TRICK_USER_LINK_LIBS, it's not likely to
ever actually happen.
Refs #369
For the record, I'd like to point out that many of the DataRecordGroup
functions shouldn't be called after init, but we don't prevent anyone
from doing so. Bad Trick!
Refs #350
One of the constructor parameters enables automatic creation of
SI-prefixed versions of the root unit, which obviates the need to
create them individually.
Refs #345
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.
The use of True/False prevents the plotting of booleans, as those values
cannot be parsed as doubles. While it's conceptually more pleasing to
use the actual Python keywords for booleans, numbers will work just as
well and allow plotting. #337
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.
Added set_unit mechanism to MonteVar baseclass. Added MonteVar's derived
classes setters where appropriate to facilitate changing inputs after
the instance of MonteVar has already been constructed. Fleshed out
MonteVarFile destructor to remove memory leaks.
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.
We were ignoring classes completely if it was found in to be in an external library
directory. We need to partially process it so it is included in the ICG generated
class_map file which registers attributes of classes and eventually works it's way
to populating the S_sie file.
Once we determine the type of a variable we should stop processing the
AST tree at that point. We do this for record types but not for the
built in types. Changed the return value of the process builtin
function to false so we stop processing.
2 problems found. Syncing scheduled threads was not happening at all because the job
was not being rescheduled. Did not want to deal with changing job call times so I
called the new scheuduled_thread_sync routine from advance_sim_time. That's where
it started, it'll be fine.
Also found that I was resetting job complete flags too aggressively. The check to
test if the thread is ready to run was missing. Added that check back in.
So using consts as arguments to STLs causes errors in our io code and SWIG.
Added a check for const template arguments and going to ignore them for
both ICG and what we input to SWIG.
Created a new executive job that waits for threads to finish and readies them
for their next frame of execution. Created a new job class system_thread_sync
after the top of frame jobs and before the input processor is run to sync the
threads. Along the way cleaned up instrumentation jobs on the threads to fix#290.
When reading a data stream to plot the end of stream flag is being set
as the last point is read. This was causing several layers of calls
not to save the last point. I went ahead and saved the result of the
get_next_point calls whether the end of stream flag is set or not and now
we don't lose the last point.
The character string used in the frame log needs to be stored as
a character string. We were using a sprintf with a fixed size buffer.
The easiest change was to use asprintf which allocates a character
string big enough to hold the contents of the print. We need to
save this char string as a char string so it works out.
Verified all documentation deleted with this issue resides on
our wiki. Nothing is lost. Modified the doxygen makefile and
main page to point to the wiki where the user's guide used to be.
TODO: Need to move the requirements and design doxygen files.
Created man pages for each executable we have in bin. Updated the
couple of man pages we did have in there. Modified trick-CP
to accept arguments. Updated the version number reported by ICG
as well.
The return code from parsing the monte carlo input was always set to zero and not checked.
Retured the return code from parsing the input. Added an exit if the input was not parsed
correctly.
Modified the makefile to define LIBCLANG_MAJOR, LIBCLANG_MINOR, and
LIBCLANG_PATCHLEVEL based on the llvm-config executable in the llvm
directory pointed to by the configuration. These new variable names
are independent of the __clang_major__, etc. variables we were defining
only in Linux. Using these names, we can reduce the clang version
checks to a single consistent set of version numbers. We don't have
to deal with the different version numbers assigned by Apple.
Removed the redefinition. Included climits and changed HOST_NAME_MAX to _POSIX_HOST_NAME_MAX
which should be defined on the systems we support.
refs #265
The "->" string interferes with some code in quick plot trying to split array ranges into
individual variables. The old code only tested for the '-' character. Changed these
checks to regular expressions that only match '-' if it is not followed by '>'. Also
converted tabs to spaces throughout the file, hence the big diff.
refs #51
Side effect of GSL included by default is that the monte carlo
test code needs to know that. The test code did not include the HAVE_GSL
flag correctly, causing the tests to fail. Fixed it.
refs #260
Removed the lines that set the compiler to clang++, defaulting
it to g++. Added lines in the makefile to set __clang_major__,
__clang_minor__, and __clang_patchlevel__. These are required
to compile several of the files in the ICG directory.
refs #259
Fixed the configure script to allow the user to specify using a python3
interpreter. Had to change the the way to load the swig generated python modules.
Also had to change code dealing with python strings, oct, long, and
boolean operations.
refs #258
Set LD in our makefiles to the ld executable found by configure.
Changed the final sim link to use TRICK_CPPC as the link command since
it was using the compiler anyways. Changed the places where we use "ld" to
use LD.
refs #131
Unit tests failed sometimes. Found that an attributes structure for time
in the data recording class was unintialized. This led to the mods
field to have random data, and sometimes triggering sys.exec.out.time
to be assigned no units. Fixed it by zeroing out the structure.
refs #254
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 Trick::Executive::get_current_version to return a const reference
to the string that holds the version. This avoids a copy of the string object
and avoids that object going out of scope. As a string, the debug_command
had the same problem so I fixed that one as well.
refs #252
Added a makefile install rule to copy the header files out of
er7_utils to the install directory. Adjusted ICG to ignore
Trick header files if they are installed.
refs #246
Copied the units_conv.c from 15 that includes the new units to master.
Swept through the code removing includes to Unit.hh and UCF.h where they
are no longer needed. Remade makefile dependencies.
refs #231