// FindType.h

#pragma once

#using <mscorlib.dll>
#using <Microsoft.VisualBasic.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
#using <System.Web.dll>
#using <System.Web.Services.dll>
#using <System.Xml.dll>

using namespace Microsoft::VisualBasic::CompilerServices;
using namespace System;
using namespace System::Collections;
using namespace System::IO;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Text;

__gc class IndentedWriter;

__gc class FindType
{
private:
    int SHOW_INTERFACES;

private:
    int SHOW_FIELDS;

private:
    int SHOW_PROPERTIES;

private:
    int SHOW_EVENTS;

private:
    int SHOW_METHODS;

private:
    int SHOW_MODULE_INFO;

private:
    IndentedWriter* myVerboseWriter;

private:
    IndentedWriter* myWriter;

private:
    bool exactMatchOnlyField;

private:
    bool recurseTypesField;

private:
    bool matchOnlyNamespaceField;

private:
    bool wideSearchField;

private:
    int showOptions;

private:
    ArrayList* myClassList;

private:
    ArrayList* DirList;

public:
    __property bool get_VerbosePrint();

public:
    __property void set_VerbosePrint(bool Value);

public:
    __property bool get_ExactMatchOnly();

public:
    __property void set_ExactMatchOnly(bool Value);

public:
    __property bool get_RecurseTypes();

public:
    __property void set_RecurseTypes(bool Value);

public:
    __property bool get_MatchOnlyNamespace();

public:
    __property void set_MatchOnlyNamespace(bool Value);

public:
    __property bool get_WideSearch();

public:
    __property void set_WideSearch(bool Value);

public:
    __property bool get_ShowInterfaces();

public:
    __property void set_ShowInterfaces(bool Value);

public:
    __property bool get_ShowMethods();

public:
    __property void set_ShowMethods(bool Value);

public:
    __property bool get_ShowFields();

public:
    __property void set_ShowFields(bool Value);

public:
    __property bool get_ShowProperties();

public:
    __property void set_ShowProperties(bool Value);

public:
    __property bool get_ShowEvents();

public:
    __property void set_ShowEvents(bool Value);

public:
    __property bool get_ShowModuleInfo();

public:
    __property void set_ShowModuleInfo(bool Value);


public:
    FindType();

public:
    void Search();

public:
    void Search(String* theSearchString);

public:
    void Search(String* theSearchString, String* theModule);

public:
    void ShowAll();

public:
    void DirAdd(String* dir);

public:
    void ClassAdd(String* newClass);

private:
    void BuildDLLFileList(String* dirName, ArrayList* list);

private:
    String* GetTypeDescription(Type* aType);

private:
    void DumpType(Type* aType);

private:
    void DumpInterfaces(Type* aType);

private:
    void DumpProperties(Type* aType);

private:
    void DumpEvents(Type* aType);

private:
    void DumpFields(Type* aType);

private:
    void DumpMethods(Type* aType);
};

