GithubHelp home page GithubHelp logo

jharwell / rcsw Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 2.27 MB

Collection of reusable C software.

License: MIT License

Emacs Lisp 0.15% C 71.48% C++ 27.05% CMake 1.30% Shell 0.02%
algorithms data-structures multiprocessing multithreading publisher-subscriber

rcsw's People

Contributors

jharwell avatar

Watchers

 avatar

rcsw's Issues

bugfix/10-remove-compiler-macro-clashes

This did not bite me until now, but of course defining __unused and similar
macros when anything starting with a double underscore is reserved for the
compiler results in a program with undefined behavior. Sigh.

enh/28/add-visibility

explicitly mark which functions should be used outside the library and which shouldn't, and then get the compiler to enforce it

docs/32/ds-common-api

I should define in the rst docs a table that each data structure more or less
follows for its API. E.g., XX_init(), XX_destroy(), etc.

task/36/verify-bare-metal-build

I haven't done this since I left SwRI, so I'm sure it won't work out of the box.
Also would be good to verify build on OSX.

enh/43/uniform-DS-API

Now that the uniform-ish API is documented, the implementation could probably be
made a little more uniform in some small ways (e.g., XX_isfull() is present for
all data structures).

enh/27/ds-use-errno

Right now its usage is very sporadic; need to make consistent and in line with
unix conventions

enh/30/ds-test-improvements

To get better "logical" code coverage and testing of DS features:

  • All relevant flags for each data structure should be tested individually
    (current behavior) as well in all possible permutations (needs to be added)

  • Data structures need to be tested with elements which are 1,2,3,4 bytes; this
    can be done pretty easily with C++ templates, operator==(), etc for simple
    element classes in the tests.

  • For key-based data structures, test with increasing, decreasing, and random
    values, for data/keys for maximum fidelity.

enh/41/pointer-size-sw

For a lot of the modules in rcsw, they take uint8_t* for generic data for
compatibility with SPARC (and maybe other architectures), for maximum
robustness, at the expense of having to cast everywhere. Consider adding an
cmake option+type in types.h to switch between uint8_t* and void* to make this
less painful where it can be.

bugfix/12-unit-tests-fail-to-build

Due to recent changes to beable to build on MSI, isnan() is no longer define
when compiling C .h files with C++ source, due to my removal of my dirty hack

enh/33/ds-oop-api

Basically add function pointers to all DS handles allowing you to do
handle->op(handle) instead of having to call the C api (e.g., da->sort(da)
instead of darray_sort()).

Should be a configuration option, since this API will have a slightly higher
runtime cost in space.

docs/39/flags-and-modules

Need to document for each module (maybe in .h, but probably in .rst) what common
flags/flags in general are accepted, and what they mean/do.

enh/34/better-dbg-framework

Needs to have plug-n-play ability, where you can select from a set of macro
implementation options, or define your own

bugfix/46/fPIC-baremetal

Don't use -fPIC when compiling for baremetal targets: it causes issues with
access global variables in raw .bin images. Sometimes.

enh/29/ds-zalloc-switch

Sometimes you might want application-domain memory to be zeroed by RCSW as if it came from calloc(), and sometimes not, for performance reasons. This should be (a) a cmake configure which sets the default for all data structures, and (b) a flag which can be passed to each individual data structure to override the default behavior if there is a conflict.

feature/45/multi-fifo

A FIFO which can be viewed at multiple granularities.

One consumer could pull things out in 2 byte chunks, another at 6 byte chunks,
etc.

feature/31/more-ds

Some ideas:

  • Skip list
  • Bit set (for bit operations)
  • splay tree
  • trie
  • b-tree
  • quad/oct tree
  • bloom filter
  • multiset, ordered set
  • stack
  • deque
  • priority queue (just rename bin_heap)
  • fibonacci heap
  • segment tree

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.