콘텐츠로 이동
무료 평가 시작

pdcomm::Gem300CapabilityCatalog

클래스

한도와 리비전이 있는 GEM300 기능(capability) 선언 카탈로그입니다.

class Gem300CapabilityCatalog

선언 위치: #include <pdcomm_gem300.hpp>

카탈로그는 이름 있는 각 프로필이 어떤 GEM300 영역(공정 작업, 캐리어, 기판, 제어 작업)을 어떤 상태 레이블로 선언하는지 기록합니다. 선언 모델이며 메시지를 보내지 않습니다.

모든 replace()는 먼저 전체 입력을 검증한 뒤 원자적으로 설치하므로, 실패한 호출은 카탈로그를 바꾸지 않습니다. 일관된 사본을 읽으려면 snapshot()을 사용합니다.

pdcomm::Gem300CapabilityCatalog catalog(pdcomm::gem300CapabilityOptions(
    3, 4, 8, 16, 16, 96));
std::vector<pdcomm::Gem300CapabilityProfile> profiles = {
    {"PRIMARY",
     {{"PJ", pdcomm::Gem300CapabilityAxis::ProcessJob,
       pdcomm::Gem300CapabilityStatus::Experimental},
      {"CARRIER", pdcomm::Gem300CapabilityAxis::Carrier,
       pdcomm::Gem300CapabilityStatus::ModelOnly}}},
};
const auto first = catalog.replace(profiles);  // first.revision == 1, first.changed
auto snapshot = catalog.snapshot();

참고

  • 이동 전용(move-only) RAII 래퍼입니다. 카탈로그에는 내부 잠금이 없으므로 replace()와 clear()는 같은 카탈로그에 대한 다른 모든 호출과 직렬화해야 합니다. info()와 snapshot()은 서로 동시에 실행할 수 있습니다.

멤버

Gem300CapabilityCatalog

생성자

other가 소유한 네이티브 핸들의 소유권을 가져옵니다.

Gem300CapabilityCatalog(Gem300CapabilityCatalog &&other) noexcept

선언 위치: #include <pdcomm_gem300.hpp>

매개변수

이름설명
other원본 래퍼이며 비어 있게 됩니다.

Gem300CapabilityCatalog

생성자

복사할 수 없습니다. 래퍼가 네이티브 핸들을 단독으로 소유합니다.

Gem300CapabilityCatalog(const Gem300CapabilityCatalog &) = delete

선언 위치: #include <pdcomm_gem300.hpp>

Gem300CapabilityCatalog

생성자

주어진 한도로 빈 카탈로그를 만듭니다.

explicit Gem300CapabilityCatalog(const PdcommGem300CapabilityOptions &options)

선언 위치: #include <pdcomm_gem300.hpp>

옵션은 복사됩니다. 새 카탈로그는 리비전이 0이고 프로필이 없습니다.

매개변수

이름설명
optionsgem300CapabilityOptions()로 만든 한도입니다.

참고

  • 예외 pdcomm::Error: struct_size나 version이 잘못되면 PDCOMM_INVALID_ARGUMENT, 한도가 0이거나 max_capabilities_per_profile이 4보다 크면 PDCOMM_LIMIT_EXCEEDED입니다.

clear

메서드

모든 프로필을 제거합니다.

Gem300CapabilityMutation clear()

선언 위치: #include <pdcomm_gem300.hpp>

반환값

새 리비전과 무엇이든 제거되었는지 여부입니다. 빈 카탈로그를 비우면 changed == false를 보고합니다.

참고

  • 예외 pdcomm::Error: 리비전 카운터가 소진되면 PDCOMM_LIMIT_EXCEEDED이며, 그 밖의 네이티브 상태 코드일 수도 있습니다.

info

메서드

현재 리비전과 합계를 반환합니다.

Gem300CapabilityCatalogInfo info() const

선언 위치: #include <pdcomm_gem300.hpp>

반환값

카탈로그 요약입니다.

참고

  • 예외 pdcomm::Error: 이동된(moved-from) 카탈로그이면 PDCOMM_INVALID_ARGUMENT입니다.

nativeHandle

메서드

C API를 직접 호출할 때 쓸, 소유 중인 네이티브 핸들을 반환합니다.

PdcommGem300CapabilityCatalog *nativeHandle() noexcept

선언 위치: #include <pdcomm_gem300.hpp>

반환값

핸들입니다. 이동된(moved-from) 카탈로그이면 nullptr입니다. 소유권은 이 래퍼에 남습니다.

nativeHandle

메서드

읽기 전용 C API 호출에 쓸, 소유 중인 네이티브 핸들을 반환합니다.

const PdcommGem300CapabilityCatalog *nativeHandle() const noexcept

선언 위치: #include <pdcomm_gem300.hpp>

반환값

핸들입니다. 이동된(moved-from) 카탈로그이면 nullptr입니다. 소유권은 이 래퍼에 남습니다.

operator=

메서드

현재 핸들을 해제한 뒤 other가 소유한 핸들의 소유권을 가져옵니다.

Gem300CapabilityCatalog &operator=(Gem300CapabilityCatalog &&other) noexcept

선언 위치: #include <pdcomm_gem300.hpp>

매개변수

이름설명
other원본 래퍼이며 비어 있게 됩니다.

반환값

이 래퍼입니다.

operator=

메서드

복사 대입할 수 없습니다. 래퍼가 네이티브 핸들을 단독으로 소유합니다.

Gem300CapabilityCatalog &operator=(const Gem300CapabilityCatalog &) = delete

선언 위치: #include <pdcomm_gem300.hpp>

replace

메서드

카탈로그 전체를 profiles로 교체합니다.

Gem300CapabilityMutation replace(const std::vector<Gem300CapabilityProfile> &profiles)

선언 위치: #include <pdcomm_gem300.hpp>

호출이 반환되기 전에 입력을 검증하고 복사합니다. 입력이 현재 내용과 같으면 아무것도 바뀌지 않고 리비전도 그대로입니다. 빈 vector를 넘기면 카탈로그를 비웁니다. 모든 기능은 정의된 검증 레이블로 저장됩니다.

매개변수

이름설명
profiles순서대로 나열한 프로필입니다. 각 프로필에는 고유한 식별자와, 식별자가 고유하고 축이 서로 다른 기능 1~4개가 있어야 합니다.

반환값

새 리비전과 내용이 바뀌었는지 여부입니다.

참고

  • 예외 pdcomm::Error: 빈 프로필, 비어 있거나 출력할 수 없는 문자가 든 식별자, 중복 식별자, 중복 축이면 PDCOMM_INVALID_ARGUMENT, 카탈로그 한도를 넘거나 리비전 카운터가 소진되면 PDCOMM_LIMIT_EXCEEDED, 메모리가 부족하면 PDCOMM_ALLOCATION_FAILED입니다. 어떤 실패에서도 카탈로그는 바뀌지 않습니다.

snapshot

메서드

현재 내용을 독립된 스냅숏으로 복사합니다.

Gem300CapabilitySnapshot snapshot() const

선언 위치: #include <pdcomm_gem300.hpp>

반환값

이후 카탈로그가 바뀌거나 소멸되어도 유효한 스냅숏입니다.

참고

  • 예외 pdcomm::Error: 메모리가 부족하면 PDCOMM_ALLOCATION_FAILED, 이동된(moved-from) 카탈로그이면 PDCOMM_INVALID_ARGUMENT입니다.

~Gem300CapabilityCatalog

메서드

pdcomm_gem300_capability_catalog_destroy()로 네이티브 핸들을 해제합니다.

~Gem300CapabilityCatalog()

선언 위치: #include <pdcomm_gem300.hpp>

앞서 만든 스냅숏은 계속 유효합니다. 이동된(moved-from) 카탈로그는 아무것도 해제하지 않습니다.