Dumping some WIP stuff.
This commit is contained in:
parent
983942712a
commit
ebe583f22d
|
@ -0,0 +1,18 @@
|
||||||
|
# build a CPack driven installer package
|
||||||
|
include(InstallRequiredSystemLibraries)
|
||||||
|
set(CPACK_RESOURCE_FILE_LICENSE
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
|
||||||
|
set(CPACK_PACKAGE_VERSION_MAJOR "${${PROJECT_NAME}_VERSION_MAJOR}")
|
||||||
|
set(CPACK_PACKAGE_VERSION_MINOR "${${PROJECT_NAME}_VERSION_MINOR}")
|
||||||
|
|
||||||
|
# Debian settings
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "K. Isom")
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "library of data structures")
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc++1 (>= 3.7.0-1)")
|
||||||
|
# set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_SECTION devel)
|
||||||
|
|
||||||
|
# actually do the thing
|
||||||
|
set(CPACK_GENERATOR DEB)
|
||||||
|
include (CPack)
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Set up tests.
|
||||||
|
enable_testing()
|
||||||
|
|
||||||
|
# sctest tests
|
||||||
|
add_executable(simple_suite_example test/test/simple_suite_example.cpp)
|
||||||
|
target_link_libraries(simple_suite_example ${PROJECT_NAME}-static)
|
||||||
|
add_test(SimpleSuite_example, simple_suite_example)
|
||||||
|
|
||||||
|
# math tests
|
||||||
|
add_executable(geom2d_test test/math/geom2d_test.cpp)
|
||||||
|
target_link_libraries(geom2d_test ${PROJECT_NAME}-static)
|
||||||
|
add_test(geom2d_test geom2d_test)
|
|
@ -0,0 +1,20 @@
|
||||||
|
#ifndef __ODS_LIST__
|
||||||
|
#define __ODS_LIST__
|
||||||
|
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
|
||||||
|
// Lists are sequences of values.
|
||||||
|
template <typename T>
|
||||||
|
class List {
|
||||||
|
public:
|
||||||
|
virtual std::size_t size(void);
|
||||||
|
virtual T get(std::size_t);
|
||||||
|
virtual T set(std::size_t, T);
|
||||||
|
virtual void add(std:size_t, T);
|
||||||
|
virtual T remove(std::size_t);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,16 @@
|
||||||
|
#ifndef __ODS_QUEUE__
|
||||||
|
#define __ODS_QUEUE__
|
||||||
|
|
||||||
|
|
||||||
|
// Dequeue represents a collection of elements to which we can add elements
|
||||||
|
// and remove the next element.
|
||||||
|
template<typename T>
|
||||||
|
class Dequeue {
|
||||||
|
public:
|
||||||
|
virtual void add_first(T);
|
||||||
|
virtual void add_last(T);
|
||||||
|
virtual T remove_first(void);
|
||||||
|
virtual T remove_last(void);
|
||||||
|
virtual bool empty(void);
|
||||||
|
};
|
||||||
|
#endif
|
|
@ -20,3 +20,49 @@ Concerns:
|
||||||
* Priority queue: elements are inserted with a priority, and the smallest
|
* Priority queue: elements are inserted with a priority, and the smallest
|
||||||
element is removed. This function is usually called `deleteMin`.
|
element is removed. This function is usually called `deleteMin`.
|
||||||
* LIFO queue: a stack; add and remove are called `push` and `pop`.
|
* LIFO queue: a stack; add and remove are called `push` and `pop`.
|
||||||
|
* Deque: generalisation of these
|
||||||
|
* `addFirst(x)`
|
||||||
|
* `removeFirst(x)`
|
||||||
|
* `addLast(x)`
|
||||||
|
* `removeLast(x)`
|
||||||
|
* Stack: addFirst, removeFirst
|
||||||
|
* Queue: addLast, removeFirst
|
||||||
|
|
||||||
|
### List interface
|
||||||
|
|
||||||
|
The List interface subsumes the Queue interface. A list is just a sequence of
|
||||||
|
values, and a Queue becomes a special case of it.
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
|
||||||
|
* size()
|
||||||
|
* get(i): get i'th element
|
||||||
|
* set(i, x): set the i'th element to x
|
||||||
|
* add(i, x): insert x at position i
|
||||||
|
* remove(i): remove the i'th element
|
||||||
|
|
||||||
|
### USet (unordered sets)
|
||||||
|
|
||||||
|
USets are a collection of unique items in no particular order; this mimics a
|
||||||
|
mathematical set.
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
|
||||||
|
* `size()`: returns the number of elements in the set
|
||||||
|
* `add(x)`: add x to the set if it doesn't already exist
|
||||||
|
* `remove(x)`: remove x from the set if it doesn't already exist
|
||||||
|
* `find(y)`: membership test
|
||||||
|
|
||||||
|
Note that y and x may be distinct objects, and only need to satisfy an
|
||||||
|
equality test. For example, a dictionary or hashmap is created using a tuple
|
||||||
|
`(key, value)`; `find` compares on `key` and two objects are considered equal
|
||||||
|
if their keys match.
|
||||||
|
|
||||||
|
### SSet (sorted set)
|
||||||
|
|
||||||
|
A USet where order matters. Its interface only changes in the `find` function:
|
||||||
|
|
||||||
|
* `find(x)`: find the smallest y s.t. y >= x. thereby returning a useful value
|
||||||
|
even if x isn't in the set. AKA successor search.
|
||||||
|
|
||||||
|
Difference between USet and SSet
|
Loading…
Reference in New Issue