27.1기본 사용법
PIDL이란?을 참조해 주십시오.
27.2키워드 목록
키워드명 | 설명 | 사용예 |
---|---|---|
access | namespace 안의 proxy, stub 클래스 접근 권한 설정(C#용) | [access=권한이름] |
byval | 패러미터를 value로 전달 | P2PChat([in] Proud::String a, [in, byval] int b); |
global | 네임스페이스 접근 권한(현재 global만 지원) | global Simple 2000 { ... } |
in | 패러미터 입력 | Chat([in] string txt); |
include | 결과물에 include 삽입(c++용) | #include "a/b/c.cpp" |
marshaler | 사용자 정의 타입에 대해 마샬러 생성(C#용) | [marshaler(cs) = SimpleCSharp.CMyMarshaler] |
mutable | 패러미터를 변경가능(:=reference)로 전달 | Chat([in, mutable] string txt); |
private | namespace 안의 proxy, stub 클래스 접근 권한 설정(C#용) | [access=private] |
protected | namespace 안의 proxy, stub 클래스 접근 권한 설정(C#용) | [access=protected] |
public | namespace 안의 proxy, stub 클래스 접근 권한 설정(C#용) | [access=public] |
rename | 특정 환경에서 치환하여 컴파일 | rename cs(Proud::String, System.String); |
using | 결과물에 using 키워드 삽입(c#용) | using(cs) System.XXX; |
27.3예제
c#과 C++에서 각각 써야할 패러미터가 다를 때
PIDL을 C++기준으로 작성하신 후, 네임스페이스 위에 아래와 같은 코드를 추가해 주십시오.
rename cs(PIDL에 작성된 타입명, 변환할 타입명);
PIDL에서 커스텀 타입을 사용하고 싶을 때
C++의 경우 2.5 콜렉션(배열 등)을 마샬링하기, C#의 경우 C# 언어에서 사용자 정의 타입을 마샬링하기
를 참조해 주십시오.
다양하게 패러미터를 전달하고 싶을 때(C++전용)
global 네임스페이스명 2000 { 함수명([in] int 변수명); }
위와 같이 PIDL을 작성했을 시, PIDL 컴파일러는 기본 타입에 대하여 아래와 같이 컴파일합니다.
namespace 네임스페이스명 { class Proxy : public ::Proud::IRmiProxy { public: virtual bool 함수명( ::Proud::HostID remote, ::Proud::RmiContext& rmiContext , const int& 변수명) PN_SEALED; ... } }
전달 방식을 변경하고 싶으실 땐 아래와 같은 키워드를 사용해 주십시오.
키워드명 | 예제(PIDL) | 예제(출력결과) |
---|---|---|
(없음) | Chat([in] int val); | ...Chat(..., const int& val)... |
byval | Chat([in, byval] int val); | ...Chat(..., const int val)... |
mutable | Chat([in, mutable] int val); | ...Chat(..., int& val)... |