plugins don't need to inspect more than
field_type, field_size, and no_elements.
In case they do define type=val to prevent
accidental use of uninitialized pointer.
The filter plugins are now in src/std/filters
and their tests in the test subdirectory.
Various portability issues found and fixed:
* Variable declarations after statements in a block
* Code assuming that epicsInt32 = long
* // comments in C files
Removed a number of tests that weren't really tests;
preconditions for future tests that don't actually check
the code being tested should call testAbort() if the
condition fails, which tells the test harness that you
meant to die at that point.
Split up lots of very long source lines.
Probably made a few other changes that I forget about now.
* ...Show functions take an indent argument (number of spaces to print
in front of each line) instead of a char* intro to avoid allocation at each level,
replacing '\t' with 8 spaces in top level code where necessary
* Refactor element_size -> field_size (as used in dbAddr), also in dbChannel
functions
* Fix: wrong macro name in unused part of db_field_log.h
* Add new db_field_log type "probe" for type change detection
* Move linked lists for pre- and post-event-queue chains into dbChannel,
function pointers and arguments into chFilter
* Remove set-type-chain completely
* Simplify register functions in filter and plugin interfaces
* Add functions to run the pre and post chains to dbChannel
* Refactor in db_field_log: field_size -> element_size
* Refactor in dbEvent:
db_post_single_event_first -> db_create_event_log
db_post_single_event_final -> db_queue_event_log (removed from public interface)
* Change tests to compile
* Add field_size to db_field_log
* Add final type, dbr_type, no_elements, and field size to dbChannel
(plus matching access methods)
* Add set-type callback chain to find out final sizes and types
* Add registration calls for pre-event-queue and post-event-queue insertion
* Move evSubscrip from dbEvent.[ch] (private) to dbChannel.h (public).
* Split up db_post_single_event_private into two parts:
..._first creates a new db_field_log chunk and copies from db.
..._final puts a db_field_log into the event queue.
* Add a typedef for the pre-event-queue recursive callbacks.
* Add a register function for the callback (plus void* arg) to filter and
plugin interfaces.
* Add the code that builds up the pre-event-queue callback chain.
* Changes to the test files to compile (no tests added yet).
* Fix missing include in db_field_log.h.
- Made chFilterPlugin public (moved from dbChannel.c to dbChannel.h)
- Made the interface jump table chFilterIf part of the chFilterPlugin
(i.e. once per plugin) instead of chFilter (once per instance)
- Added a pointer from chFilter (instance) to chFilterPlugin (plugin)
- Added a private user pointer in chFilterPlugin
- Changed dbFindFilter() to return a chFilterPlugin* (instead of the jump table)
- Changed dbRegisterFilter() to accept a user private pointer as 3rd arg
* Added dbChannelGet()
* Implement dbChannelGetField() using dbChannelGet()
* Close filters in reverse order of opening
* Messages and comments improved.
* Deleted the chan->magic member and associated checks.
* Moved rset->cvt_dbaddr() call into dbChannelCreate()
* Added many accessor routines
* Renamed dbChannelReport() to dbChannelShow() and added dbChannelFilterShow()
* A filter's parse routines now return a parse_result (enum)
* Return value from test filter parse routines is configurable
* Either call parse_end() or parse_abort(), but never both.