ShadowsocksR-Live / cstl

Licence: other
STL style library with red-black tree implementation in C

Programming Languages

c
50402 projects - #5 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to cstl

Dicomtomesh
A command line tool to transform a DICOM volume into a 3d surface mesh (obj, stl or ply). Several mesh processing routines can be enabled, such as mesh reduction, smoothing or cleaning. Works on Linux, OSX and Windows.
Stars: ✭ 191 (+461.76%)
Mutual labels:  stl
BokkyPooBahsRedBlackTreeLibrary
BokkyPooBah's Red-Black Binary Search Tree Library
Stars: ✭ 117 (+244.12%)
Mutual labels:  red-black-tree
Lock-free-Red-black-tree
Implementation of lock-free red-black tree using CAS
Stars: ✭ 21 (-38.24%)
Mutual labels:  red-black-tree
Competitive Programming Resources
This repository consists of data helpful for ACM ICPC programming contest, in general competitive programming.
Stars: ✭ 199 (+485.29%)
Mutual labels:  stl
Bosl
The Belfry OpenScad Library - A library of tools, shapes, and helpers to make OpenScad easier to use.
Stars: ✭ 237 (+597.06%)
Mutual labels:  stl
xcsg
XML based Constructive Solid Geometry based on carve
Stars: ✭ 24 (-29.41%)
Mutual labels:  stl
Cq Editor
CadQuery GUI editor based on PyQT
Stars: ✭ 183 (+438.24%)
Mutual labels:  stl
BackportCpp
Library of backported modern C++ types to work with C++11
Stars: ✭ 53 (+55.88%)
Mutual labels:  stl
Slic3r
Open Source toolpath generator for 3D printers
Stars: ✭ 2,791 (+8108.82%)
Mutual labels:  stl
HxSTLParser
Basic STL loader for SceneKit
Stars: ✭ 23 (-32.35%)
Mutual labels:  stl
Arduinostl
An STL and iostream implementation based on uClibc++ that supports my CS-11M class.
Stars: ✭ 201 (+491.18%)
Mutual labels:  stl
Sdfx
A simple CAD package using signed distance functions
Stars: ✭ 213 (+526.47%)
Mutual labels:  stl
avl array
High performance templated AVL tree using a fixed size array. Extensive test suite passing.
Stars: ✭ 33 (-2.94%)
Mutual labels:  stl
Mayo
3D CAD viewer and converter based on Qt + OpenCascade
Stars: ✭ 192 (+464.71%)
Mutual labels:  stl
Safe stl
A safe version of STL
Stars: ✭ 17 (-50%)
Mutual labels:  stl
Rapidyaml
Rapid YAML - a library to parse and emit YAML, and do it fast.
Stars: ✭ 183 (+438.24%)
Mutual labels:  stl
vtkplotlib
Wrap up VTK (python 3D graphics library) into an easy to use 3D equivalent of matplotlib
Stars: ✭ 31 (-8.82%)
Mutual labels:  stl
CVIP
C/C++/Golang/Linux...知识整理
Stars: ✭ 62 (+82.35%)
Mutual labels:  stl
dicom2stl
Python script to extract a STL surface from a DICOM image series.
Stars: ✭ 151 (+344.12%)
Mutual labels:  stl
USmallFlat
Ubpa small flat containers based on C++20
Stars: ✭ 20 (-41.18%)
Mutual labels:  stl

CSTL - STL like container support in C language

Dynamic Array

struct cstl_array {
    size_t capacity; /* Number of maximum elements array can hold without reallocation */
    size_t count;  /* Number of current elements in the array */
    struct cstl_object** pElements; /* actual storage area */
    cstl_compare compare_fn; /* Compare function pointer*/
    cstl_destroy destruct_fn; /* Destructor function pointer*/
};

struct cstl_array* cstl_array_new ( size_t init_size, cstl_compare fn_c, cstl_destroy fn_d);
cstl_error cstl_array_push_back ( struct cstl_array* pArray, void* elem, size_t elem_size);
const void * cstl_array_element_at(struct cstl_array* pArray, size_t index);
cstl_error cstl_array_insert_at ( struct cstl_array* pArray, size_t index, void* elem, size_t elem_size);
size_t cstl_array_size( struct cstl_array* pArray);
size_t cstl_array_capacity( struct cstl_array* pArray );
cstl_bool  cstl_array_empty( struct cstl_array* pArray);
cstl_error cstl_array_reserve( struct cstl_array* pArray, size_t pos);
const void * cstl_array_front(struct cstl_array* pArray);
const void * cstl_array_back(struct cstl_array* pArray);
cstl_error cstl_array_remove_from ( struct cstl_array*, size_t pos);
cstl_error cstl_array_delete( struct cstl_array* pArray);

struct cstl_iterator* cstl_array_new_iterator(struct cstl_array* pArray);
void cstl_array_delete_iterator ( struct cstl_iterator* pItr);

deque

struct cstl_deque {
    struct cstl_object**pElements;
    size_t capacity;
    size_t head;
    size_t tail;
    size_t count;
    cstl_compare compare_fn;
    cstl_destroy destruct_fn;
};

struct cstl_deque* cstl_deque_new( size_t deq_size , cstl_compare fn_c, cstl_destroy fn_d);
cstl_error     cstl_deque_push_back (struct cstl_deque* pDeq, void* elem, size_t elem_size);
cstl_error     cstl_deque_push_front(struct cstl_deque* pDeq, void* elem,size_t elem_size);

const void * cstl_deque_front(struct cstl_deque* pDeq);
const void * cstl_deque_back(struct cstl_deque* pDeq);
cstl_error     cstl_deque_pop_back  (struct cstl_deque* pDeq);
cstl_error     cstl_deque_pop_front (struct cstl_deque* pDeq);
cstl_bool      cstl_deque_empty     (struct cstl_deque* pDeq);
size_t         cstl_deque_size ( struct cstl_deque* pDeq);
cstl_error     cstl_deque_delete ( struct cstl_deque* pDeq);
const void *   cstl_deque_element_at(struct cstl_deque* pDeq, size_t index);

struct cstl_iterator* cstl_deque_new_iterator(struct cstl_deque* pDeq);
void cstl_deque_delete_iterator ( struct cstl_iterator* pItr);

list

struct cstl_list_node {
    struct cstl_object* elem;
    struct cstl_list_node *next;
};
struct cstl_list {
    struct cstl_list_node* head;
    cstl_destroy destruct_fn;
    cstl_compare compare_key_fn;
    size_t size;
};
struct cstl_list* cstl_list_new(cstl_destroy fn_d, cstl_compare fn_c);
void cstl_list_destroy(struct cstl_list* pList);
void cstl_list_clear(struct cstl_list* pList);
cstl_error     cstl_list_insert   (struct cstl_list* pList, size_t pos, void* elem, size_t elem_size);
cstl_error     cstl_list_push_back(struct cstl_list* pList, void* elem, size_t elem_size);
void           cstl_list_remove   (struct cstl_list* pList, size_t pos);
void cstl_list_for_each(struct cstl_list* pList, void(*fn)(const void *elem, void *p), void *p);
const void *   cstl_list_find(struct cstl_list* pList, void* find_value);


struct cstl_iterator* cstl_list_new_iterator(struct cstl_list* pSlit);
void cstl_list_delete_iterator ( struct cstl_iterator* pItr);

set

struct cstl_set {
    struct cstl_rb* root;
};
struct cstl_set* cstl_set_new( cstl_compare fn_c, cstl_destroy fn_d);
cstl_error   cstl_set_insert ( struct cstl_set* pSet, void* key, size_t key_size);
cstl_bool    cstl_set_exists ( struct cstl_set* pSet, void* key);
cstl_error   cstl_set_remove ( struct cstl_set* pSet, void* key);
const void * cstl_set_find(struct cstl_set* pSet, const void* key);
cstl_error   cstl_set_delete ( struct cstl_set* pSet);

struct cstl_iterator* cstl_set_new_iterator(struct cstl_set* pSet);
void cstl_set_delete_iterator ( struct cstl_iterator* pItr);

map

struct cstl_map {
    struct cstl_rb* root;
};

struct cstl_map* cstl_map_new    ( cstl_compare fn_c_k, cstl_destroy fn_k_d, cstl_destroy fn_v_d);
cstl_error   cstl_map_insert ( struct cstl_map* pMap, const void* key, size_t key_size, const void* value, size_t value_size);
cstl_bool    cstl_map_exists ( struct cstl_map* pMap, const void* key);
cstl_error   cstl_map_remove ( struct cstl_map* pMap, const void* key);
const void * cstl_map_find(struct cstl_map* pMap, const void* key);
cstl_error   cstl_map_delete ( struct cstl_map* pMap);

struct cstl_iterator* cstl_map_new_iterator(struct cstl_map* pMap);
void cstl_map_delete_iterator ( struct cstl_iterator* pItr);

clang-format

find . -regex '.*\.\(c\|h\|cpp\|hpp\|cc\|cxx\)' -exec clang-format -style=file -i {} \;
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].