디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.26 19:55:55
조회 55 추천 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/11/24 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
2905374 핵반응로 논쟁은 금방 끝나고 자전거 창고 논쟁은 길다는 역설 발명도둑잡기(118.216) 11.29 26 0
2905371 나도 맨날 대표랑 싸웠지 [2] 프갤러(110.8) 11.29 84 0
2905367 세계최초 탄력적 가상 아레나 아키텍처 설계 완료함. 나르시갤로그로 이동합니다. 11.29 40 0
2905365 리액트 배울때 헛짓거리한거 기억나네 ㅇㅇ(113.59) 11.29 53 0
2905364 리액트 배우기 귀찮아서 웹프로젝트 할땐 바이브코딩한다 프갤러(118.235) 11.29 47 0
2905363 국장이랑 미장 할 때 기분 차이 [4] chironpractor갤로그로 이동합니다. 11.29 81 1
2905362 우리 회사 대리세끼 대표랑 맨날 싸움 [10] ㅇㅇ(221.168) 11.28 83 0
2905360 DB에서 count(*) 얘는 자원 많이 쓰는 작업임? [4] 프갤러(58.29) 11.28 80 0
2905359 남지현, '은애하는 도적님아'로 이어갈 사극 불패 신화 발명도둑잡기(118.216) 11.28 57 0
2905356 입시 면접 FM 합격 솔루션(필승 전략 해법)!U 프갤러(121.142) 11.28 65 2
2905353 조갑제도 “국힘은 이적단체”…여당은 ‘내란 가짜뉴스’ 대응 중 발명도둑잡기(118.216) 11.28 31 0
2905352 해외 투자 증세에 관해 [3] 발명도둑잡기(118.216) 11.28 105 0
2905351 나님 달러 미국주식 풀매수중 ㅇㅅㅇ [5] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 76 0
2905350 미국주식갤에서 친미매국노들 욕하다가 차단당함 [3] 손발이시립디다갤로그로 이동합니다. 11.28 55 0
2905349 이태원 발언으로 모욕죄 벌금 100만원 싸게쳤다 vs 과하다 [5] ㅇㅇ(39.7) 11.28 84 0
2905348 영어를 못해서 구글을 못가네 [1] ㅇㅇ갤로그로 이동합니다. 11.28 55 0
2905345 원티드 자격요건은 거기 직원들도 다 못할거 같은데 ㅇㅇ(182.228) 11.28 38 0
2905344 이태원 모욕죄로 100만원 벌금받았는데 걍 목매달고 죽을까 [2] ㅇㅇ(39.7) 11.28 70 0
2905343 오픈소스에서는 취약점을 감시하는 사람이 더 많다 발명도둑잡기(118.216) 11.28 42 0
2905342 사타구니 털 제모하면 이상한 사람인가요? [5] 넥도리아(220.74) 11.28 61 0
2905341 노말틱도 말해주잖아 오픈소스의 취약점 [1] ㅇㅇ(114.30) 11.28 60 0
2905340 <복면가왕> 관련 생각나는 예전 글 발명도둑잡기(118.216) 11.28 53 0
2905339 정치가 어쨌든 나라가 어쨌든 국가가 어쨌든 삶이 어쨌든 [8] 넥도리아(220.74) 11.28 75 0
2905338 이태원 모욕죄로 구약식 벌금100만원 = 재산잃고 전과남고 인생조진거지? [11] ㅇㅇ(39.7) 11.28 73 0
2905337 저좀 어떻게 성공시켜 주실 분 없나요? [2] 넥도리아(220.74) 11.28 57 0
2905335 사실 제가 틀딱이 아니라 귀여운 여자임을 인증합니다 [6] 헬마스터갤로그로 이동합니다. 11.28 86 0
2905332 페이커닮은 개발자 찾습니다 프갤러(106.101) 11.28 41 0
2905331 진짜 크게 벌리는 건 아니고… 그냥 생활비용 차트부자(1.233) 11.28 36 0
2905325 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 61 0
2905324 프로그래머, 내가 하다 하다 3D 공부한다. [3] 프갤러(59.16) 11.28 83 1
2905319 출퇴근길에 소소하게 짭짤하네요 존버장군(1.233) 11.28 58 0
2905316 나 좀 찾지 말아달라고 했음 ㅇㅇ(211.234) 11.28 50 0
2905313 나 아까 실수했네 발명도둑잡기(118.216) 11.28 44 0
2905299 서울 유명 스웨디시 후기 모음집 ㅇㅇ(118.235) 11.28 60 0
2905298 어제부터 저녁에 배가 안 고픔;; [6] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 82 0
2905297 클래스 101 결제해본 사람있나 ㅇㅇ(140.248) 11.28 54 0
2905296 국비 말고 혼자 자격증 따서 취직하는것도 가능함? [1] ㅇㅇ갤로그로 이동합니다. 11.28 69 0
2905294 후 시발 이런건 15분만에 최라락 써서 뚝딱 해야하는건데 프갤러(14.52) 11.28 52 0
2905293 회원가입 겨우 완성했다. 프갤러(14.52) 11.28 53 0
2905292 <서울 자가에 대기업 다니는 김부장 이야기>관련 생각나는 글 발명도둑잡기(118.216) 11.28 95 0
2905291 맨땅에 헤딩하기에는 c가 가장 적절한듯 ㅇㅇ(118.235) 11.28 43 0
2905289 AI 로 뚝딱해서 돈 벌었다는 사람 통장 까봐. [1] 프갤러(59.16) 11.28 53 2
2905288 미디어에서 AI 로 1 분만에 뚝딱 개발했다니까 정말 그런줄 알아. 프갤러(59.16) 11.28 51 1
2905287 프로그래머가 되려면 꿈과 희망을 버려라. [3] 프갤러(59.16) 11.28 79 0
2905284 “시간이 돈을 버는 구조 만들기: 매달 ‘짭짤한 복리’ 얻는 방식” 88아재 (119.15) 11.28 37 0
2905283 <우주메리미>가 인기래서 생각나는 예전 글 발명도둑잡기(118.216) 11.28 36 0
2905282 면접문제를 만들어봤다. 프갤러(49.165) 11.28 57 0
2905281 "찬송가 부르고 주식 사"‥ 이불말이는 주가 올리는 '제물' 발명도둑잡기(118.216) 11.28 32 0
2905280 시대의 어르신들이 하나 둘 돌아가시는게 참 먹먹하구낭.. [3] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 56 0
2905279 바지가 내려가 넥도리아(223.38) 11.28 53 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2