Skip to content

code1009/cc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cc

  • C 언어로 작성된 범용 경량 컨테이너 라이브러리.
  • C++의 STL의 컨테이너 기능을 소형 MCU에서 사용하기 위해 제작.
  • (미션 크리티컬 시스템 제약 사항을 적용하기 위해) 동적 HEAP 메모리 사용이 없음.

컨테이너

  • 비침입형 컨테이너.
  • 컨테이너 내부 요소 버퍼는 컨테이너 생성 시 제공 해야함.
    • 요소 버퍼의 갯수가 컨테이너의 최대 용량을 결정.
    • 요소 버퍼는 사용자가 준비해야 함.
  • 모든 컨테이너는 요소 포인터만 저장.
  • 요소의 데이터 메모리는 외부에서 할당/해제(메모리 할당/해제는 호출자 책임).
  • 요소의 데이터 메모리는 Simple Segregated Storage 통해 고정 메모리 풀을 이용하여 사용.
  • 라이브러리는 기본적으로 스레드 안전하지 않음.
    • RTOS 사용시 태스크간은 잠금기능을 수행 해야 함.

cc_vector

  • 인덱스 기반의 순차 컨테이너.
  • 요소를 뒤에 추가하거나 임의 위치에 삽입/삭제 가능.
  • 삽입 시 새 요소는 지정한 인덱스에 삽입됨(insert-before semantics).
  • 요소 버퍼: cc_element_t

cc_deque

  • double-ended queue(양방향 큐).
  • 앞/뒤에서의 삽입과 제거 지원.
  • push 계열은 용량 초과 시 false 반환.
  • pop 계열은 비어있으면 NULL 반환.
  • 요소 버퍼: cc_element_t

cc_queue

  • FIFO 큐.
  • 내부적으로 cc_deque를 재사용한 얇은 래퍼.
  • cc_deque의 push_back/pop_front을 이용해 FIFO 동작 제공.
  • 요소 버퍼: cc_element_t

cc_stack

  • LIFO 스택.
  • 내부적으로 cc_deque를 재사용한 얇은 래퍼.
  • cc_deque의 push_back/pop_back을 이용하여 LIFO 동작 제공.
  • 요소 버퍼: cc_element_t

cc_forward_list

  • 단일 연결 리스트(singly-linked list).
  • 내부 노드는 사용자 제공 배열을 통해 Simple Segregated Storage로 풀 관리.
  • 노드 할당/해제는 라이브러리 내부의 고정 용량 메모리 풀에서 수행.
  • 노드 포인터를 이용한 O(1) 삽입/삭제 지원.
  • 요소 버퍼: cc_snode_t

cc_list

  • 이중 연결 리스트(doubly-linked list).
  • 내부 노드는 사용자 제공 배열을 통해 Simple Segregated Storage로 풀 관리.
  • 노드 할당/해제는 라이브러리 내부의 고정 용량 메모리 풀에서 수행.
  • 노드 포인터를 이용한 O(1) 삽입/삭제 지원.
  • 노드 단위 삽입/삭제와 순회 지원.
  • 삽입 시 새 노드는 지정한 노드의 앞에 삽입됨(insert-before semantics).
  • 요소 버퍼: cc_dnode_t

cc_set (정렬된 집합)

  • 요소를 정렬된 순서로 유지하는 컨테이너
  • 이진 탐색 기반 삽입 위치 탐색.
  • 정렬 기준과 동등 비교는 사용자 콜백(cc_less_t, cc_equal_t)으로 제공.
  • 중복 키는 허용되지 않음(추가 시 기존 키가 있으면 실패).
  • 요소 버퍼: cc_element_t

cc_map (정렬된 맵)

  • 키/값 쌍을 정렬된 순서로 유지하는 컨테이너
  • 이진 탐색 기반 삽입 위치 탐색.
  • 정렬 기준과 동등 비교는 사용자 콜백(cc_less_t, cc_equal_t)으로 제공.
  • 중복 키는 허용되지 않음(추가 시 기존 키가 있으면 실패).
  • 요소 버퍼: cc_pair_t

cc_unordered_set (오픈 어드레싱 해시 테이블)

  • 해시 기반 빠른 검색/삽입/삭제를 지원하는 테이블
  • 오픈 어드레싱 선형 프로빙(구현상 기본) 사용.
  • 해시 값 생성기(cc_hash_generate_t)와 동등 비교(cc_equal_t)를 사용자 제공.
  • 테이블 크기(버킷 수)는 생성 시 결정.
  • 중복 키는 허용되지 않음(추가 시 기존 키가 있으면 실패).
  • 빈 항목 / 제거된 항목을 구분하여 삭제 후 검색 연속성 유지.
  • 요소 버퍼: cc_bucket_t

cc_unordered_map (정렬되지 않은 맵, 해시 맵)

  • 키/값 쌍을 저장하는 해시 맵.
  • 오픈 어드레싱 선형 프로빙(구현상 기본) 사용.
  • 해시 값 생성기(cc_hash_generate_t)와 동등 비교(cc_equal_t)를 사용자 제공.
  • 테이블 크기(버킷 수)는 생성 시 결정.
  • 중복 키는 허용되지 않음(추가 시 기존 키가 있으면 실패).
  • 빈 항목 / 제거된 항목을 구분하여 삭제 후 검색 연속성 유지.
  • 요소 버퍼: cc_pair_bucket_t

cc_priority_queue (우선순위 큐)

  • 요소의 우선순위를 기반으로 한 큐.
  • binary heap(min-heap) 자료구조 사용.
  • 정렬 기준 사용자 콜백(cc_less_t)으로 제공.
  • 요소 버퍼: cc_element_t

About

C Container Library for Embedded Systems

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published