Graphisoft®

API Development KitVersion: 18

APIModulDataMergeHandlerProc

모듈 데이터 병합 동작들을 처리하기 위한 사용자 지원 콜백 프로시저입니다.

    typedef GSErrCode  APIModulDataMergeHandlerProc (
        API_MDSetCmd             mode,
        const GS::UniString&     modulName,
        const API_ModulData*     originalInfo,
        const API_ModulData*     toMergeInfo,
        API_ModulData*           destInfo
    );

 

파라미터

mode
[in] 애드온이 호출되는 동작입니다.
modulName API 13 feature
[in] 모듈 데이터의 식별자 이름입니다. (예전 버전에서 저장된 모듈들의 경우, 이 파라미터는 항상 빈 문자열임)
originalInfo
[in] 병합되어야 할 원래 모듈 데이터입니다.
toMergeInfo
[in] 들어오는 모듈 데이터입니다.
destInfo
[out] 결과로 나오는 모듈 데이터입니다. 당신의 애드온은 병합의 결과를 반드시 여기에 넣어야 합니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.

다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.

 

설명

애드온에 의해 2개의 충돌하는 모듈들이 병합될 필요가 있을 때 이 함수가 호출됩니다. 핸들러 함수 포인터는 ACAPI_Install_ModulDataMergeHandler와 함께 전달되어야 합니다.

API 13 feature  ACAPI_Register_ModulDataHandler를 호출하여 애드온의 이 기능 역시 등록할 필요가 있습니다.

알림 프로세스의 세부사항은 ModulData 관리자 섹션에서 설명합니다.

 

예제

콜백 등록 및 설치하기:

GSErrCode __ACENV_CALL  RegisterInterface (void)
{
    ACAPI_Register_ModulDataHandler ();
    return NoError;
}

GSErrCode __ACENV_CALL  Initialize (void)
{
    GSErrCode err = ACAPI_Install_ModulDataMergeHandler (APIModulDataMergeHandler);
    return err;
}

핸들러 함수의 구현:

GSErrCode __ACENV_CALL  APIModulDataMergeHandler (API_MDSetCmd          mode,
                                                  const GS::UniString&  /*modulName*/,
                                                  const API_ModulData*  originalInfo,
                                                  const API_ModulData*  toMergeInfo,
                                                  API_ModulData*        destInfo)
{
    if (toMergeInfo == NULL || destInfo == NULL)
        return APIERR_BADPARS;

    const API_ModulData* modulDataToKeep = (mode == APIMDSetMerge_TW || originalInfo == NULL) ? toMergeInfo : originalInfo;

    if (modulDataToKeep->dataHdl != NULL) {
        BNZeroMemory (destInfo, sizeof (API_ModulData));
        destInfo->dataVersion = modulDataToKeep->dataVersion;
        destInfo->platformSign = modulDataToKeep->platformSign;
        BMHandleToHandle (modulDataToKeep->dataHdl, &destInfo->dataHdl);
    } else
        return APIERR_BADPARS;

    return NoError;
}

더 많은 힌트들에 대해서는 ModulData 관리자 예제 애드온을 참조하십시오.

 

참고사항

버전: API 4.1 또는 이후
헤더: APIdefs_Callback.h

 

참고사항

API_MDSetCmd
API_ModulData
ACAPI_Install_ModulDataMergeHandler
ACAPI_Register_ModulDataHandler
ModulData 관리자
API 함수