Skip to content

Commit

Permalink
Merge pull request #6 from wythe/master
Browse files Browse the repository at this point in the history
Added bit_iterator
  • Loading branch information
intrig committed Aug 17, 2016
2 parents 3e2ffc6 + 6ce23ed commit 2e257d6
Show file tree
Hide file tree
Showing 10 changed files with 608 additions and 214 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 2.8)
add_subdirectory(unit)
add_subdirectory(tools)
add_subdirectory(perf)
enable_testing()
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: tags
.PHONY: tags perf

all:
mkdir -p build
Expand All @@ -18,6 +18,10 @@ clean:
test: all
make CTEST_OUTPUT_ON_FAILURE=1 -C build test

perf: test
build/perf/ictperf --ibits
build/perf/ictperf --obits

tags:
mkdir -p o
@echo Making tags...
Expand Down
19 changes: 10 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
# Intrig C++ Tools

**ict** is a small set of openly available reusable components originally developed and used by Intrig for its
next-generation message decoding engine. They are a result of countless hours of programming missteps, restarts, and
refactoring.
next-generation message decoding engine.

The goal of **ict** is to provide useful independent components with a natural, simple interface enabling you to
concentrate on your task at hand, not wrestle with the tools you are using. The only dependency is the standard template
Expand All @@ -14,9 +13,13 @@ released under the permissive MIT license.
Initially, two components are available, with more to come: `ict::bitstring` and `ict::multivector`. Below is a brief
description and links to their respective documentation.

Everything here is a work in progress. Nothing is a complete implementation. There are definitely gaps in the features
provided. We tend to only implement the functionality we need. Hopefully you will find ways to contribute the things
you need also.
Everything here is a work in progress. There are definitely gaps in the features provided. We tend to only implement
the functionality we need. Hopefully you will find ways to contribute the things you need also.

The intended use is for you to add ict as a submodule to your projects include directory. From time to time, you can
then update when new features are added. However, strict backward compatibility is not a priority for ict development
and the release version will indicate if anything has changed.


## ict::bitstring

Expand All @@ -26,19 +29,17 @@ and integers. Corresponding input and output streams for bits are provided with
`ict::obitstream`. This enables you to easily dissect or catenate bitstrings without being concerned with byte
alignment.

**[ict::bitstring reference](docs/bitstring.md)**
**[ict::bitstring tutorial and reference](docs/bitstring.md)**

## ict::multivector

A `multivector` is a generic container that behaves just like a `std::vector` except its iterators also
behave just like `std::vector`. And since `std::vector` is used in the underlying representation, we can make
heirarchies that benefit from both cache friendly locality of reference and C++11 move semantics.

**[ict::multivector reference](docs/multivector.md)**
**[ict::multivector tutorial and reference](docs/multivector.md)**

## Building unit tests

Although using the tools does not require any source files, running the unit tests does. Just type `make` at the top
level to invoke the cmake based build system. And `make test` will run the unit tests.


Loading

0 comments on commit 2e257d6

Please sign in to comment.