Graphisoft®

InputOutputVersion: 1.0

Folder::Enumerate   (4)


폴더 내 엔트리들을 열거합니다.

1. 상수

    virtual GSErrCode  Enumerate (
        EnumCallbackConst ec,
        void*             userData = NULL
    ) const;
2. 비-상수

    virtual GSErrCode  Enumerate (
        EnumCallback ec,
        void*        userData = NULL
    );

파라미터

ec
폴더 내 각 엔트리에 대하여 호출될 Enumerator 콜백 함수입니다. 선언은 다음과 같습니다:
1. 상수

    typedef bool  (CCALL *EnumCallbackConst) (const Folder& parent, const Name& entryName, bool isFolder, void* userData);
2. 비-상수

    typedef bool  (CCALL *EnumCallback) (Folder& parent, const Name& entryName, bool isFolder, void* userData);
  • parent는 열거 중인 폴더입니다.
  • entryName은 특정 엔트리의 이름입니다.
  • isFolder는 특정 엔트리가 폴더인지 여부를 결정합니다.
  • userData는 이 (Enumerate) 메소드를 통해 사용자가 전달한 임의의 값입니다.

만약 콜백 함수로부터 리턴 값이 true이면, 열거는 계속될 것입니다. 그 외에는 중지될 것입니다. (이 경우 이 메소드로부터 리턴 값은 NoError입니다)

userData
사용자를 위해 콜백 함수에게 전달될 임의의 값입니다.

리턴 값

의미
NoError* OK
AccessDenied* 이 동작을 이 폴더에서 허용하지 않습니다.
Error* 불특정 오류입니다.

* Folder class 범위에서 선언함
* GS 네임스페이스에서 선언했지만, 글로벌 범위에서 접근 가능함

설명

이 메소드는 폴더 내 각 엔트리에 대하여 호출되는 콜백 함수를 통해 폴더 내 파일 시스템 엔트리(파일, 폴더, 링크)들을 열거합니다. 임의의 사용자 값을 콜백 함수에게 전달할 수 있습니다. 열거가 끝날 때까지, 혹은 사용자가 중지할 때까지 콜백 함수의 각 호출은 폴더 내 엔트리의 이름을 제공합니다.
심지어 현재 엔트리가 제거되어도 열거는 제대로 작동합니다. 그러나 다른 엔트리들을 제거하고 폴더의 내용을 변경하는 다른 동작들에 대해서는 사실이 아닙니다.

폴더는 이 메소드를 통해 열거할 수 있는 다이렉트 내용(자손)을 담당합니다. 그러나 때때로 전체 폴더 트리의 재귀적인 열거가 필요합니다. 이 작업은 class TreeEnumerator에서 지원합니다.


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




1. 상수

    virtual GSErrCode  Enumerate (
        EnumCallbackConst ec,
        LinkProcessing    lp,
        unsigned long     typeFilter,
        void*             userData = NULL
    ) const;
2. 비-상수

    virtual GSErrCode  Enumerate (
        EnumCallback   ec,
        LinkProcessing lp,
        unsigned long  typeFilter,
        void*          userData = NULL
    );

파라미터

ec
폴더 내 각 적절한 엔트리에 대하여 호출될 Enumerator 콜백 함수입니다. 선언은 다음과 같습니다:
1. 상수

    typedef bool  (CCALL *EnumCallbackConst) (const Folder& parent, const Name& entryName, bool isFolder, void* userData);
2. 비-상수

    typedef bool  (CCALL *EnumCallback) (Folder& parent, const Name& entryName, bool isFolder, void* userData);
  • parent는 열거 중인 폴더입니다.
  • entryName은 특정 엔트리의 이름입니다.
  • isFolder는 특정 엔트리가 폴더인지 여부를 결정합니다.
  • userData는 이 (Enumerate) 메소드를 통해 사용자가 전달한 임의의 값입니다.

만약 콜백 함수로부터 리턴 값이 true이면, 열거는 계속될 것입니다. 그 외에는 중지될 것입니다. (이 경우 이 메소드로부터 리턴 값은 NoError입니다)

lp
열거를 하는 동안 조우하는 링크들의 처리를 결정합니다. 가능한 값들은 다음과 같습니다:
의미
ResolveLinks 링크들은 해결(resolved)됩니다. 최종 대상의 타입을 타입 필터링에 사용합니다.
PreserveLinks 링크들은 해결되지 않습니다. 링크 타입을 타입 필터링에 사용합니다.
typeFilter
열거 도중 사용자에게 제공해야 하는 엔트리들의 타입을 결정합니다. 다음 값들 중 임의 '또는' 조합이 될 수 있습니다:
의미
FilterFiles 파일들을 제공함
FilterFolders 폴더들을 제공함
FilterLinks 링크들을 제공함
FilterUnknownTypes 해결(resolve)해야 하는 (접근할 수 없는 항목 및 데드 링크와 같은) 알 수 없는 타입들을 제공함

몇 가지 공통 조합들이 미리 정의되어 있습니다:

의미
FilterFinalTypes FilterFiles | FilterFolders
FilterNormalTypes FilterFiles | FilterFolders | FilterLinks
FilterAllTypes FilterFiles | FilterFolders | FilterLinks | FilterUnknownTypes
userData
사용자를 위해 콜백 함수에게 전달될 임의의 값입니다.

리턴 값

의미
NoError* OK
AccessDenied* 이 동작을 이 폴더에서 허용하지 않습니다.
Error* 불특정 오류입니다.

* Folder class 범위에서 선언함
* GS 네임스페이스에서 선언했지만, 글로벌 범위에서 접근 가능함

설명

이 메소드는 콜백 함수를 통해 폴더 내 선택한 타입들의 파일 시스템 엔트리(파일, 폴더, 링크)들을 열거합니다. 콜백 함수는 해당 타입을 가진 폴더 내 각 엔트리에 대해 호출됩니다: 파일, 폴더, 링크, 알 수 없는 타입, 또는 이 타입들의 조합. 링크들의 타입 필터링 처리 역시 제어할 수 있습니다. 링크 엔트리의 자동 링크 resolvation이 없는 것은 링크입니다. 링크 엔트리의 자동 링크 resolvation 타입을 사용하는 것은 최종 대상의 타입입니다. (파일 또는 폴더가 될 수 있음) 결과로 나오는 타입을 타입 필터링에 사용할 수 있습니다. 예를 들어, 파일 타입의 엔트리들만 열거하고 싶으면 자동 링크 resolvation 없이 실제 실제 파일인 엔트리들의 이름들을 얻습니다. 반면 자동 링크 resolvation을 사용하면 파일들을 참조하는 링크들의 이름들도 얻게 됩니다.
임의의 사용자 값을 콜백 함수에게 전달할 수 있습니다. 열거가 끝날 때까지, 혹은 사용자가 중지할 때까지 콜백 함수의 각 호출은 폴더 내 적절한 엔트리의 이름을 제공합니다.

심지어 현재 엔트리가 제거되어도 열거는 제대로 작동합니다. 그러나 다른 엔트리들을 제거하고 폴더의 내용을 변경하는 다른 동작들에 대해서는 사실이 아닙니다.

폴더는 이 메소드를 통해 열거할 수 있는 다이렉트 내용(자손)을 담당합니다. 그러나 때때로 전체 폴더 트리의 재귀적인 열거가 필요합니다. 이 작업은 class TreeEnumerator에서 지원합니다.


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