일부 C 구조체에 대해 하스켈 FFI 바인딩을 작성하려고합니다. 예는 다음과 같습니다 :C 재귀 구조체 및 공용 구조체에 대한 하스켈 FFI
typedef struct s0{int a;
union{unsigned char b;
struct s0*c;
struct{unsigned char d[1];
}; };}*S;
내 질문 또는 HSC (에 대한 hsc2hs) 형식 (c2hs에 대한) CHS에서 그것을 위해 바인딩을 작성하는 방법입니까? 나는 c2hs에 대한 자습서를 들었으나 충분한 정보를 얻지 못했거나 그런 식으로 이해하지 못했다. 위의 정의를 위해 chs 파일을 작성하는 데 도움이되었을 것이다.
내가 HSFFIG 도구를 사용하여 하스켈 바인딩을 생성 할 수 있지만 바인딩을 정의하는 사용자 정의 액세스 방법 HSFFIG.FieldAccess.FieldAccess을 사용합니다. 써드 파티 라이브러리가 아닌 코어 haskell FFI 라이브러리를 사용하는 바인딩을 작성하는 것을 선호합니다.
따라서, HSC 형식으로 위의 재귀 구조체에 대한 바인딩을 작성하거나 단지 핵심 FFI 라이브러리를 사용 CHS 포맷하는 방법에 대한이 질문에.
실제 정의는 더 복잡하다,하지만 난 c2hs 또는 hsc2hs 도구 구조체 정의 위에 작성하는 방법을 파악하면, 나는 거기에서 갈 수 있습니다. 저장 가능한 인스턴스는 내부 공용체와 구조체에 대해 정의해야하지만 위와 같은 재귀 적 정의를위한 래퍼를 작성하는 방법을 알지 못합니다. 특히 struct 내부에서 struct/union 내부에 어떻게 접근합니까? HSFFIG 정의를 살펴 보았지만, 액세스 메소드는 HSFFIG 정의 된 액세스 메소드입니다. 그래서 핵심 FFI 라이브러리 만 사용하는 chs 정의로 변환하는 방법을 알아낼 수 없었습니다.
I에 유래에서 본 질문은 간단 정의에 대한 것으로 보인다. 다른 곳에서 비슷한 대답이 있다면, 나는 포인터를 고맙게 생각합니다.
실제로 데이터를 가지고 무엇인가를해야합니까? void 데이터 형식을 사용할 수 있습니다. – alternative
예, 데이터를 처리해야합니다. 위의 구조체에 대한 포인터는 인수 중 하나 인 다른 FFI C 함수에 전달되고 해당 함수는 구조체 값을 반환합니다. – Sal
은 데이터에 신경 쓰지 않는 것처럼 들립니다. – alternative