/*
 * Copyright 2010 Jacek Caban for CodeWeavers
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#define IHOST_NAME_DISPID              DISPID_VALUE
#define IHOST_APPLICATION_DISPID       100
#define IHOST_FULLNAME_DISPID          101
#define IHOST_PATH_DISPID              102
#define IHOST_INTERACTIVE_DISPID       103
#define IHOST_QUIT_DISPID              200
#define IHOST_SCRIPTNAME_DISPID        1000
#define IHOST_SCRIPTFULLNAME_DISPID    1001
#define IHOST_ARGUMENTS_DISPID         1002
#define IHOST_VERSION_DISPID           1003
#define IHOST_BUILDVERSION_DISPID      1004
#define IHOST_TIMEOUT_DISPID           1005
#define IHOST_STDIN_DISPID             1006
#define IHOST_STDOUT_DISPID            1007
#define IHOST_STDERR_DISPID            1008
#define IHOST_CREATEOBJECT_DISPID      2000
#define IHOST_ECHO_DISPID              2001
#define IHOST_GETOBJECT_DISPID         2002
#define IHOST_DISCONNECTOBJECT_DISPID  2003
#define IHOST_SLEEP_DISPID             2004
#define IHOST_CONNECTOBJECT_DISPID     2005

#define IARGUMENTS2_COUNT_DISPID   1
#define IARGUMENTS2_LENGTH_DISPID  2

#define ITEXTSTREAM_LINE_DISPID             10000
#define ITEXTSTREAM_COLUMN_DISPID           -529
#define ITEXTSTREAM_ATENDOFSTREAM_DISPID    10002
#define ITEXTSTREAM_ATENDOFLINE_DISPID      10003
#define ITEXTSTREAM_READ_DISPID             10004
#define ITEXTSTREAM_READLINE_DISPID         10005
#define ITEXTSTREAM_READALL_DISPID          10006
#define ITEXTSTREAM_WRITE_DISPID            10007
#define ITEXTSTREAM_WRITELINE_DISPID        10008
#define ITEXTSTREAM_WRITEBLANKLINES_DISPID  10009
#define ITEXTSTREAM_SKIP_DISPID             10010
#define ITEXTSTREAM_SKIPLINE_DISPID         10011
#define ITEXTSTREAM_CLOSE_DISPID            10012
