#ifndef ERROR_CODES_H
#define ERROR_CODES_H 
// $Id: errcodes.h,v 4.0 2002/10/31 15:28:10 geh Exp $
/*============================================================================

   Name     : errcodes.h

   System   : FME Developer Kit

   Language : C++

   Purpose  : Definition of COM error codes.

   Author               Date            Changes made
   ------------------   ------------    -------------------------------
   Don Murray           Apr 22, 1999    Original Implementation
   Hieu Nguyen          Feb 06, 2002    PR 1062 - Added some new error codes
                                        for featurevector and rectanglevector
   Hieu Nguyen          Feb 19, 2002    PR 1115 - Added ERROR_OBJECT_NULL
   Hieu Nguyen          Mar 04, 2002    PR 1256 - Added ERROR_EXCEPTION_UNHANDLED
   Hieu Nguyen          Mar 08, 2002    PR 1058 - Added ERROR_FEATURE_PROCESS_FEATURES
   Hieu Nguyen          Mar 25, 2002    Removed semi-colons from the error code definitions
   Hieu Nguyen          Mar 26, 2002    PR 1338 - Added some error codes for vector safety
   Hieu Nguyen          May 07, 2002    PR 1344 - Added kFME_ErrorSessionUninitialized and
                                        ERROR_SESSION_UNINITIALIZED
   Hieu Nguyen          May 23, 2002    PR 1582 - Added ERROR_SPATIAL_INDEX_BOUNDINGBOX
   Hieu Nguyen          May 27, 2002    PR 1047 - Added error codes for FeatureVectorOnDisk
   Hieu Nguyen          Oct 10, 2002    PR 1810 - Added ERROR_SESSION_GETSCHEMAFEATURES
  
                  Copyright (c) 1995 - 1999, Safe Software Inc.
                              All Rights Reserved          
 
    This software may not be copied or reproduced, in all or in part, 
    without the prior written consent of Safe Software Inc.

    The entire risk as to the results and performance of the software,
    supporting text and other information contained in this file
    (collectively called the "Software") is with the user.  
    In no event will Safe Software Incorporated be liable for damages,
    including loss of profits or consequential damages, arising out of
    the use of the Software.

Overview
========
   This file defines the COM compliant error codes.

===========================================================================*/
#include <winerror.h>

// All error codes for FME Objects are defined here.

// First the Session Codes 1 - 99
#define ERROR_SESSION_CREATE           MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 1)
#define ERROR_SESSION_INIT             MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 2)
#define ERROR_SESSION_CREATE_READER    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 3)
#define ERROR_SESSION_CREATE_FEATURE   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 4)
#define ERROR_SESSION_CREATE_WRITER    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 5)
#define ERROR_SESSION_CREATE_PIPELINE  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 6)
#define ERROR_SESSION_CREATE_STR_ARRAY MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 7)
#define ERROR_SESSION_CREATE_UPDATE_CONFIG MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 8)
#define ERROR_SESSION_CREATE_FEATUREVECTOR MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 9)
#define ERROR_SESSION_CREATE_DIALOG    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 10)
#define ERROR_SESSION_CONFIGURE        MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 11)
#define ERROR_SESSION_CREATE_SPATIAL_INDEX MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 12)
#define ERROR_SESSION_CREATE_RECTANGLE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 13)
#define ERROR_SESSION_CREATE_RECTANGLE_VECTOR MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 14)
#define ERROR_SESSION_GETSETTINGS      MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 15)
#define ERROR_SESSION_UNINITIALIZED    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 16)
#define ERROR_SESSION_CREATE_FEATUREVECTORONDISK   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 17)
#define ERROR_SESSION_GETSCHEMAFEATURES   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 18)

// Now the Writer codes. 100 - 199
#define ERROR_WRITER_ADDSCHEMA         MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 100)
#define ERROR_WRITER_OPEN              MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 101)
#define ERROR_WRITER_ABORT             MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 102)
#define ERROR_WRITER_CLOSE             MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 103)
#define ERROR_WRITER_WRITE             MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 104)
#define ERROR_WRITER_ADDSCHEMA_FEATURE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 105)
#define ERROR_WRITER_START_TRANS       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 106)
#define ERROR_WRITER_COMMIT            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 107)
#define ERROR_WRITER_ROLLBACK          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 108)

// Now the Reader codes. 200 - 299
#define ERROR_READER_CONSTRAINTS       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 200)
#define ERROR_READER_OPEN              MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 201)
#define ERROR_READER_ABORT             MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 202)
#define ERROR_READER_CLOSE             MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 203)
#define ERROR_READER_READ              MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 204)
#define ERROR_READER_SCHEMA            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 205)

// Now the Pipeline codes 300 - 399
#define ERROR_PIPELINE_ADD_FACTORY     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 300)
#define ERROR_PIPELINE_PROCESS_FEATURE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 301)
#define ERROR_PIPELINE_ALL_DONE        MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 302)
#define ERROR_PIPELINE_OUTPUT          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 303)
#define ERROR_PIPELINE_CONFIG_FUNC     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 304)

// Now the Feature codes 400 - 499
#define SUCCESS_NO_SUCH_ATTRIBUTE      MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 400)
#define ERROR_FEATURE_RESET            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 401)
#define ERROR_FEATURE_GET_ATTRIBUTE    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 402)
#define ERROR_FEATURE_FUNCTION         MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 403)
#define ERROR_FEATURE_STRING_CREATE    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 404)
#define ERROR_FEATURE_INVALID_DIM      MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 405)
#define ERROR_FEATURE_STRING_ARRAY_CREATE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 406)
#define ERROR_FEATURE_GEOM_ERROR       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 407)
#define ERROR_FEATURE_INTERNAL_ERROR   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 408)
#define ERROR_FEATURE_ORIENTATION      MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 409)
#define ERROR_FEATURE_REPROJECT        MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 410)
#define ERROR_FEATURE_BUFFER           MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 411)
#define ERROR_FEATURE_OUTER_SHELL      MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 412)
#define ERROR_FEATURE_EXPORT_OGC       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 413)
#define ERROR_FEATURE_IMPORT_OGC       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 414)
#define ERROR_FEATURE_PROCESS_FEATURES MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 415)

// Now the FeatureVector codes 500 - 599
#define ERROR_FEATUREVECTOR_SYNC       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 500)
#define ERROR_FEATUREVECTOR_APPEND     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 501)
#define ERROR_FEATUREVECTOR_INSERTAT   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 502)
#define ERROR_FEATUREVECTOR_REMOVELAST MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 503)
#define ERROR_FEATUREVECTOR_ELEMENT    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 504)

// Now the FME Dialog codes    600 - 699
#define ERROR_DIALOG_INIT              MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 600)

// Now the CoordSysManager codes   700-799
#define ERROR_COORD_SYS_MANAGER_NO_COORD_SYS        MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 700)
#define ERROR_COORD_SYS_MANAGER_STRING_ARRAY_CREATE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 701)
#define ERROR_COORD_SYS_MANAGER_NO_PARMS            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 702)
#define ERROR_COORD_SYS_MANAGER_INVALID_PARMS       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 703)

// Now the Logfile codes.          800 - 899.
#define ERROR_LOGFILE_INVALID_FILENAME MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 800)

// Now the Spatial Index codes      900 - 999
#define ERROR_SPATIAL_INDEX_OPEN                   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 900)
#define ERROR_SPATIAL_INDEX_STORE                  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 901)
#define ERROR_SPATIAL_INDEX_CLOSE                  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 902)
#define ERROR_SPATIAL_INDEX_FETCH                  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 903)
#define ERROR_SPATIAL_INDEX_QUERY_CLOSEST          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 904)
#define ERROR_SPATIAL_INDEX_QUERY_ENVELOPE         MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 905)
#define ERROR_SPATIAL_INDEX_QUERY_FARTHEST         MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 906)
#define ERROR_SPATIAL_INDEX_QUERY_TOTAL            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 907)
#define ERROR_SPATIAL_INDEX_QUERY_COMMON_VERTEX    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 908)
#define ERROR_SPATIAL_INDEX_QUERY_LINES_CROSS      MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 909)
#define ERROR_SPATIAL_INDEX_QUERY_COMMON_SEGMENT   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 910)
#define ERROR_SPATIAL_INDEX_QUERY_COMMON_VERTEX_OR_SEGMENT  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 911)
#define ERROR_SPATIAL_INDEX_QUERY_AREA_INTERSECT   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 912)
#define ERROR_SPATIAL_INDEX_QUERY_CONTAINED_BY     MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 913)
#define ERROR_SPATIAL_INDEX_QUERY_CONTAINS         MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 914)
#define ERROR_SPATIAL_INDEX_QUERY_IDENTICAL        MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 915)
#define ERROR_SPATIAL_INDEX_QUERY_All              MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 916)
#define ERROR_SPATIAL_INDEX_STORE_USING_INDEX_RECTS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 917)
#define ERROR_SPATIAL_INDEX_BOUNDINGBOX            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 918)

// Now the Rectangle Vector codes   1000 - 1099
#define ERROR_RECTANGLEVECTOR_APPEND               MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 1000)
#define ERROR_RECTANGLEVECTOR_INSERTAT             MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 1001)
#define ERROR_RECTANGLEVECTOR_REMOVELAST           MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 1002)
#define ERROR_RECTANGLEVECTOR_RETRIEVE             MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 1003)

// General codes  1100 - 1199  
#define ERROR_OBJECT_NULL                          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 1100)
#define ERROR_EXCEPTION_UNHANDLED                  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 1101)

// String Array Codes   1200 - 1299
#define ERROR_STRINGARRAY_RETRIEVE                 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 1200)

// Error strings
static const char* kFME_ErrorNullInputObject       = "Object input parameter has not been set.";
static const char* kFME_ErrorSessionUninitialized  = "Session has not been initialized.";

// Now the FeatureVectorOnDisk codes   1300 - 1399
#define ERROR_FEATUREVECTORONDISK_ELEMENT          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 1300)


#endif
