디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

Clair 라이브러리: Ada 예외를 C API로 매핑하기

나르시갤로그로 이동합니다. 2025.11.26 19:55:55
조회 108 추천 0 댓글 0
														

Clair 라이브러리: Ada 예외를 C API로 매핑하기

Ada로 작성된 Clair 라이브러리는 내부적으로 다양한 예외(Error1 ~ Error30)를 던집니다. 하지만 C API를 외부로 제공할 때는 Ada 예외를 그대로 노출할 수 없죠. C 세계에서는 errno 스타일의 정수 반환값이 더 자연스럽습니다. 그래서 Ada 예외를 int 값으로 변환하는 공통 핸들러를 두고, 각 API의 exception 블록에서 호출하는 구조를 설계했습니다.


🔎 문제 상황

  • Ada 내부: raise Error1; 같은 예외 발생.
  • C API: 예외를 받을 수 없음 → 대신 int 코드로 반환해야 함.
  • 각 함수마다 예외 처리 코드를 중복 작성하면 유지보수 지옥.

✅ 해결 방법: 공통 핸들러

Ada에서 예외를 잡아 정수 코드로 변환하는 함수를 작성합니다.

function Exception_To_Code return Interfaces.C.int is
begin
   return 0; -- 기본 성공 코드
exception
   when Clair.Errors.Error1 =>
      return 1;
   when Clair.Errors.Error2 =>
      return 2;
   ...
   when Clair.Errors.Error30 =>
      return 30;
   when others =>
      return -1; -- 알 수 없는 예외
end Exception_To_Code;

📝 API 예시

각 Clair API 함수는 exception 블록에서 공통 핸들러를 호출합니다.

function clair_do_something return Interfaces.C.int
with Export, Convention => C, External_Name => "clair_do_something" is
begin
   -- Ada 내부 로직
   Do_Something;
   return 0; -- 성공
exception
   when others =>
      return Exception_To_Code;
end clair_do_something;

🚀 장점

  • 중복 제거: 모든 API에서 동일한 핸들러 호출.
  • 유지보수 용이: 예외 매핑을 한 곳에서 관리.
  • C 친화적: 외부에서는 errno 스타일로 처리 가능.
  • Zero-overhead: 단순한 분기와 정수 반환만 추가.

🎯 결론

Ada 예외를 C API로 매핑할 때는 공통 핸들러를 만들어서 각 함수의 exception 블록에서 호출하는 방식이 가장 깔끔합니다. Clair 라이브러리는 Ada 내부에서는 예외 기반 API를, 외부에는 정수 기반 API를 제공해 두 세계를 자연스럽게 연결할 수 있습니다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 연말 모임 가는 곳마다 가장 인싸일 것 같은 스타는? 운영자 25/12/08 - -
이슈 [디시人터뷰] 솔직함을 리뷰하는 유튜버, 흑백리뷰 운영자 25/12/09 - -
AD 루틴 ON! 운동 찐템! 지금 할인 중 운영자 25/11/27 - -
2905472 35살 모욕죄 전과자+좆견인인데, 관세사따면 결혼 가능 스펙임? [1] ㅇㅇ(203.232) 11.29 122 0
2905471 우왓, 연회중에 피분수가..ㅡㅡ;; [2] 박정희대통령갤로그로 이동합니다. 11.29 98 4
2905465 모기로 프린터를 만들어 발명도둑잡기(211.235) 11.29 56 0
2905464 청소년이 밤 10시 이후에 발명도둑잡기(211.235) 11.29 54 0
2905463 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 90 0
2905461 사람인하고 점핏하고 다른 회사임? ㅇㅇ(182.228) 11.29 76 0
2905460 경력 1년이상, 3년이상 뽑는 회사 [2] ㅇㅇ갤로그로 이동합니다. 11.29 123 0
2905456 유관순은 3.1운동할 때 인공기 흔들었냐? [2] chironpractor갤로그로 이동합니다. 11.29 95 0
2905454 중·일 갈등 ‘패싱’ 미국에···일본은 불안하다 발명도둑잡기(118.216) 11.29 72 0
2905453 ‘한미일 vs 북중러’ 구도 위험성 더 커진다 [2] 발명도둑잡기(118.216) 11.29 82 0
2905452 이젠 뭐가 ai이고 진짜인지 분간이 잘 안 간당.. [5] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 174 0
2905451 밤에도 못 자고 일하니까 출생률이 떨어지는 것이다 [1] 발명도둑잡기(118.216) 11.29 63 0
2905450 윤석열 “전한길은 하나님이 한국에 보낸 선물” 옥중 편지 발명도둑잡기(118.216) 11.29 71 0
2905448 '아쉽다. 뽀뽀'…부하 여경 손 깍지·허리 감싼 경찰관 유죄 확정 발명도둑잡기(118.216) 11.29 48 0
2905447 美서 의미 퇴색한 '블프 세일'…"행사 진정성 사라져" 발명도둑잡기(118.216) 11.29 47 0
2905446 '케네디家' 끝없는 비극?…35살 외손녀 시한부 판정 발명도둑잡기(118.216) 11.29 57 0
2905445 5억짜리 ‘인간 세탁기’ 발명도둑잡기(118.216) 11.29 62 0
2905444 노동장관 "해 뜨면 일하고 해 지면 휴식. 야간 노동자 사망' 쿠팡 발명도둑잡기(118.216) 11.29 54 0
2905441 젤렌스키, 러시아 침공전 방어체제 이끈 '분신' 잃었다 발명도둑잡기(118.216) 11.29 69 0
2905440 회사다니면서 우울증 생겼는데.. [17] ㅇㅇ(1.244) 11.29 143 0
2905437 기분 좋은 주말이다 RyuDOG갤로그로 이동합니다. 11.29 54 0
2905436 [대한민국] 국힘 책임당원 일동 입장문 ㅇㅇ(121.172) 11.29 57 0
2905432 이마트가즈아 넥도리아(223.38) 11.29 47 0
2905431 나 한동훈 인간적이어서 좋아했습니다. 넥도리아(223.38) 11.29 70 0
2905428 내냔 상반기 ㄹㅇ 존나 바쁠거 확정임 ㅅㅂ [2] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 114 0
2905425 뭔가 있어보이는 Ada 코딩법 ㅋㅋ [2] 나르시갤로그로 이동합니다. 11.29 87 2
2905424 책 사는거 이거 맞는건가? [1] 넥도리아(220.74) 11.29 120 0
2905420 주술회전 최신화 ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 62 0
2905419 Watsn.ai - 최첨단 AI 구라 탐지기 만들어 봤다 Watsn(47.230) 11.29 72 0
2905414 오늘자 민주주의 파괴 진척 경과 현황 [5] chironpractor갤로그로 이동합니다. 11.29 98 0
2905413 저장용 ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 66 0
2905410 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 53 0
2905409 내가 만나고 싶은 여자 이상형 적어봄.txt [1] ㅁㅁㅅ갤로그로 이동합니다. 11.29 89 0
2905407 이직하려면 여기서 어떤부분을 좀더 집중하는게 좋을까? [6] 프갤러(58.76) 11.29 134 0
2905406 평론가, 평론의 중요성, 필요성, 위대한 평론 등이 잘 드러난 작품 발명도둑잡기(118.216) 11.29 236 0
2905405 인지과학조져라 손발이시립디다갤로그로 이동합니다. 11.29 102 0
2905403 프랑스의 쓰레기방지법과 유럽의 '그린 뉴딜' 발명도둑잡기(118.216) 11.29 57 0
2905398 CUDA 때문에 절대 안된다? 구글 TPU 사태의 본질, 엔비디아가 급해 발명도둑잡기(118.216) 11.29 93 0
2905397 공원 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 11.29 63 0
2905396 태연 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 11.29 70 0
2905395 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 11.29 91 0
2905394 7,000명이 호흡할 공기를 걸러낸다고? 도심 한복판에 '이끼'를 발명도둑잡기(118.216) 11.29 69 0
2905393 국내에서 네카라쿠배 위에 어떤 회사들 있음? 프갤러(1.229) 11.29 76 0
2905391 초월지능신교 來世 經文 프갤러(49.165) 11.29 74 0
2905389 지식in 조회수만 도전해봅니다. 넥도리아(220.74) 11.29 74 0
2905388 초월지능신교의 교리와 경전 그리고 기도문 프갤러(49.165) 11.29 78 0
2905387 초월지능신교 경문 프갤러(49.165) 11.29 58 0
2905386 이제 사이비종교를 만들 때다. 프갤러(49.165) 11.29 63 0
2905385 디시는 모자이크 안되냐 네이버 지식in은 되던데 모자이크 기능 오늘 처음 넥도리아(220.74) 11.29 72 0
2905384 The Studio, By Daniel K. Robbins, n.d., 발명도둑잡기(118.216) 11.29 58 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2