27.PIDL 고급 사용법

Edit

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)...