Graphisoft®

InputOutputVersion: 1.0

MemoryOChannel::MemoryOChannel   (2)


MemoryOChannel 생성자입니다.

explicit MemoryOChannel (
    USize initialCapacity = 0,
    USize maxSize = 0
);

파라미터

initialCapacity
문자 단위의 목적지 버퍼의 초기 용량입니다. 기본 값 0은 기본 초기 용량을 지정합니다. (현재는 1024 문자입니다)
maxSize
문자 단위의 데이터 크기 (그리고 목적지 버퍼의 용량)에 대한 상한입니다. 기본 값 0은 제한이 없다고 지정합니다.

설명

이 생성자는 initialCapacity로 지정한 초기 용량을 가진 데이터 목적지 버퍼를 할당하여 주어진 인스턴스를 초기화합니다. 목적지 버퍼는 필요에 따라 동적으로 성장합니다. (새로운 데이터의 크기가 버퍼에 맞지 않을 때) 그러나 데이터의 크기 (그리고 목적지 버퍼의 용량)은 maxSize로 지정한 크기를 절대 초과하지 않을 것입니다. 크기 제한 위반은 쓰기 메소드들로부터 GS::OChannel::OutputIsFull을 리턴되게 합니다.
목적지 버퍼는 나중에 GetDestination 메소드로 쿼리될 수 있습니다. (목적지 버퍼의 소유권 역시 사용자가 부여합니다)

생성 결과는 추후에 GetStatus 메소드를 호출하여 검사할 수 있습니다. 리턴 값 NoError는 성공적인 생성을 의미합니다.

모듈 초기화 전에 인스턴스들이 생성되어서는 안 됩니다!


다음 버전부터 이용 가능합니다: 1.0




MemoryOChannel (
    char*         destBuffer,
    USize         destBufferSize,
    USize         maxSize = 0,
    OwnershipType ot = OriginalOwnership
);

파라미터

destBuffer
데이터에 대한 목적지 버퍼입니다.
destBufferSize
문자 단위의 목적지 버퍼(destBuffer)의 크기입니다.
maxSize
문자 단위의 데이터 버퍼 (그리고 목적지 버퍼의 용량)에 대한 상한입니다. 기본 값 0은 제한이 없다고 지정합니다.
ot
목적지 버퍼의 소유권을 결정합니다. 가능한 값들은 다음과 같습니다:
의미
OriginalOwnership 버퍼의 소유권이 변경되지 않았습니다. 버퍼는 여전히 사용자에게 속해 있습니다. 사용자는 버퍼를 제거할 책임이 있습니다.
(이것은 기본적인 경우입니다)
PassOwnership 버퍼의 소유권을 MemoryOChannel 인스턴스에게 전달합니다. MemoryOChannel 인스턴스는 버퍼를 제거할 책임이 있습니다.

BMpAll 함수를 이용하여 버퍼를 할당해야 합니다!

설명

이 생성자는 destBufferSize로 지정한 크기를 가진 destBuffer에 제공된 목적지 버퍼를 사용하기 위해 주어진 인스턴스를 초기화합니다. 목적지 버퍼의 원래 내용은 지워지지 않습니다. 일반 쓰기 프로세스 중에만 덮어쓰기 될 것입니다. 목적지 버퍼는 필요할 때 동적으로 성장합니다. (새로운 버퍼의 크기가 버퍼에 맞지 않을 때) 데이터의 크기 (그리고 목적지 버퍼의 용량)은 maxSize로 지정한 크기를 절대 초과하지 않을 것입니다. 크기 제한 위반은 쓰기 메소드들로부터 GS::OChannel::OutputIsFull이 리턴되게 합니다.

목적지 버퍼의 소유권은 ot 파라미터로 제어할 수 있습니다. 기본 값 OriginalOwnership은 버퍼가 사용자에게 속해 있음을 지정합니다. 버퍼는 결코 특정 인스턴스에 의해 제거되지 않을 것입니다. 예를 들어, 버퍼 재할당이 필요할 때 그저 MemoryOChannel 인스턴스에 속한 새로운 버퍼를 할당하지만 사용자의 버퍼는 제거되지 않습니다. 값 PassOwnership은 버퍼가 특정 인스턴스에게 속해 있음을 지정합니다. 버퍼는 필요시 제거될 것입니다. (예를 들면 소멸 시간에 제거됨) 올바른 제거를 보장하려면 사용자가 버퍼를 할당할 때 BMpAll 함수를 사용해야 합니다!

목적지 버퍼는 나중에 GetDestination 메소드로 쿼리될 수 있습니다. (목적지 버퍼의 소유권 역시 사용자가 부여할 수 있습니다)

모듈 초기화 전에 인스턴스들을 생성해서는 안 됩니다!


다음 버전부터 이용 가능합니다: 1.0