/***************************************************************************
 *                          Zanoza Modeler v2.x                            *
 *      This is unpublished propietary source code of Zanoza Software.     *
 *      The copyright notice does not evidence any actual or intended      *
 *                    publication of such source code.                     *
 *                                                                         *
 *                   Copyright (c) 2002 Zanoza Software.                   *
 *                                                                         *
 *                        All rights reserved.                             *
 ***************************************************************************
 *--------------------------------------------------------------------------
 * @author:   Oleg Melashenko
 *--------------------------------------------------------------------------
 * @purpose:
   *--------------------------------------------------------------------------
 * @created: Thursday, January 02, 2003 02:27:51
 */

#if !defined(libtypes_h_included)
#define libtypes_h_included

#include <zmodeler.h>

#include <map>

#define ZM_CLASS_TOOL           0x0001
#define ZM_CLASS_SERVICE        0x0002
#define ZM_CLASS_FILTER         0x0004
#define ZM_CLASS_SHARED         0x0008
#define ZM_CLASS_TEXTURELOADER  0x0010

#define ZM_LIBREQUIRES_INIT     0x0001
#define ZM_LIBREQUIRES_STARTUP  0x0002
#define ZM_LIBREQUIRES_UNLOAD   0x0010

typedef struct tLibClassInfo
{
  tLibClassInfo()
  {
    m_creator = NULL;
    m_dwFlags = 0;
  }
  tLibClassInfo(ZM_CREATOR_FN fn, DWORD flags)
  {
    m_creator = fn;
    m_dwFlags = flags;
  }

  ZM_CREATOR_FN   m_creator;
  DWORD           m_dwFlags;
}tLibClassInfo;

typedef std::map<ZString, tLibClassInfo>  tClassMap;

struct tLibClassNode
{
  ZString         m_strClassName;
  tLibClassInfo   m_info;
};

typedef ZSequence<tLibClassNode>          tClassInfoSeq;

#endif