! DSTEXT.f90

! This module contains the COM interfaces of the objects defined in 
! D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\devedit.pkg
! Generated by the Fortran Module Wizard on xx/xx/xx

	MODULE DS_TEXT
		USE DFWINTY
		USE DFCOM
		IMPLICIT NONE
	

		! IIDs		
		TYPE (GUID), PARAMETER :: IID_ITextSelection = &
			GUID(#05092F20, #833F, #11CF, &
			  CHAR('AB'X)//CHAR('59'X)//CHAR('00'X)//CHAR('AA'X)// &
			  CHAR('00'X)//CHAR('C0'X)//CHAR('91'X)//CHAR('A1'X))
		TYPE (GUID), PARAMETER :: IID_ITextWindow = &
			GUID(#08541520, #83D3, #11CF, &
			  CHAR('AB'X)//CHAR('59'X)//CHAR('00'X)//CHAR('AA'X)// &
			  CHAR('00'X)//CHAR('C0'X)//CHAR('91'X)//CHAR('A1'X))
		TYPE (GUID), PARAMETER :: IID_ITextEditor = &
			GUID(#0DE5B3A0, #A420, #11CF, &
			  CHAR('AB'X)//CHAR('59'X)//CHAR('00'X)//CHAR('AA'X)// &
			  CHAR('00'X)//CHAR('C0'X)//CHAR('91'X)//CHAR('A1'X))
		TYPE (GUID), PARAMETER :: IID_ITextDocument = &
			GUID(#2A6DF201, #8240, #11CF, &
			  CHAR('AB'X)//CHAR('59'X)//CHAR('00'X)//CHAR('AA'X)// &
			  CHAR('00'X)//CHAR('C0'X)//CHAR('91'X)//CHAR('A1'X))
		TYPE (GUID), PARAMETER :: IID_IGenericProject = &
			GUID(#8CA5A960, #FC7D, #11CF, &
			  CHAR('92'X)//CHAR('7D'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('13'X)//CHAR('8C'X)//CHAR('45'X))
		TYPE (GUID), PARAMETER :: IID_IGenericDocument = &
			GUID(#FB7FDAE1, #89B8, #11CF, &
			  CHAR('9B'X)//CHAR('E8'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('0A'X)//CHAR('63'X)//CHAR('2C'X))
		TYPE (GUID), PARAMETER :: IID_IGenericWindow = &
			GUID(#FD20FC80, #A9D2, #11CF, &
			  CHAR('9C'X)//CHAR('13'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('0A'X)//CHAR('63'X)//CHAR('2C'X))

		! Enums		
		! DsArrangeStyle (Passed to Windows.Arrange to arrange the windows.)
			INTEGER, PARAMETER ::	dsMinimize = 1	! Minimized windows.
			INTEGER, PARAMETER ::	dsTileHorizontal = 2	! Tiles the windows horizontally.
			INTEGER, PARAMETER ::	dsTileVertical = 3	! Tiles the windows vertically.
			INTEGER, PARAMETER ::	dsCascade = 4	! Cascades the windows.
		! DsButtonType (Represents the button type.)
			INTEGER, PARAMETER ::	dsGlyph = 1	! Button only has an image.
			INTEGER, PARAMETER ::	dsText = 2	! Buton only has text.
		! DsCaseOptions (Options for the ChangeCase method.)
			INTEGER, PARAMETER ::	dsLowercase = 1	! Sets all text to lowercase.
			INTEGER, PARAMETER ::	dsUppercase = 2	! Sets all text to uppercase.
			INTEGER, PARAMETER ::	dsCapitalize = 3	! Capitalizes the first letter of each word.
		! DsEmulation (Options for the Emulation property.)
			INTEGER, PARAMETER ::	dsDevStudio = 0	! Emulates Developer Studio.
			INTEGER, PARAMETER ::	dsVC2 = 1	! Emulates Visual C++ 2.0.
			INTEGER, PARAMETER ::	dsBrief = 2	! Emulates BRIEF (TM).
			INTEGER, PARAMETER ::	dsEpsilon = 3	! Emulates Epsilon (TM).
			INTEGER, PARAMETER ::	dsCustom = 4	! Provides custom emulation behavior.
		! DsGoToLineOptions (Options for the GoToLine method.)
			INTEGER, PARAMETER ::	dsLastLine = -1	! Puts the insertion point at the last line of the document.
		! DsMovementOptions (Movement options for several TextSelection navigation methods.)
			INTEGER, PARAMETER ::	dsMove = 0	! Cancel selection and move insertion point.
			INTEGER, PARAMETER ::	dsExtend = 1	! Extend selection to new destination.
		! DsSaveChanges (Indicates what to do with changes when closing a file.)
			INTEGER, PARAMETER ::	dsSaveChangesYes = 1	! Save changes before closing.
			INTEGER, PARAMETER ::	dsSaveChangesNo = 2	! Discard changes before closing.
			INTEGER, PARAMETER ::	dsSaveChangesPrompt = 3	! Ask user if they want to save changes.
		! DsSaveStatus (Represents the result of a save operation.)
			INTEGER, PARAMETER ::	dsSaveSucceeded = 1	! The save operation succeeded.
			INTEGER, PARAMETER ::	dsSaveCanceled = 2	! The save operation was canceled by the user.
		! DsStartOfLineOptions (Options for the StartOfLine method.)
			INTEGER, PARAMETER ::	dsFirstColumn = 0	! Moves to the first column of a line.
			INTEGER, PARAMETER ::	dsFirstText = 1	! Moves to the first non-whitespace character of a line.
		! DsTextSearchOptions (Options for several text search methods.)
			INTEGER, PARAMETER ::	dsMatchWord = 2	! Matches whole words only.
			INTEGER, PARAMETER ::	dsMatchCase = 4	! Performs a case-sensitive search.
			INTEGER, PARAMETER ::	dsMatchNoRegExp = 0	! Performs a search without using regular expressions.
			INTEGER, PARAMETER ::	dsMatchRegExp = 8	! Performs a search using Developer Studio regular expressions.
			INTEGER, PARAMETER ::	dsMatchRegExpB = 16	! Performs a search using BRIEF (TM) regular expressions.
			INTEGER, PARAMETER ::	dsMatchRegExpE = 32	! Performs a search using Epsilon (TM) regular expressions.
			INTEGER, PARAMETER ::	dsMatchRegExpCur = 64	! Performs a search using the current regular expression settings.
			INTEGER, PARAMETER ::	dsMatchForward = 0	! Causes a forwards search from the beginning of the document.
			INTEGER, PARAMETER ::	dsMatchBackward = 128	! Causes a backwards search from the beginning of the document.
			INTEGER, PARAMETER ::	dsMatchFromStart = 256	
		! DsWhitespaceOptions (Options for the DeleteWhitespace method.)
			INTEGER, PARAMETER ::	dsHorizontal = 0	! Deletes adjacent whitespace on a line.
			INTEGER, PARAMETER ::	dsVertical = 1	! Deletes adjacent blank lines.
		! DsWindowState (Represents the possible states of a window.)
			INTEGER, PARAMETER ::	dsWindowStateMaximized = 1	! Window is mazimized.
			INTEGER, PARAMETER ::	dsWindowStateMinimized = 2	! Window is minimized.
			INTEGER, PARAMETER ::	dsWindowStateNormal = 3	! Window is neither mazimized or minimized.

		! Interfaces
		INTERFACE
			!Closes the document.
  			INTEGER*4 FUNCTION IGenericDocument_Close($OBJECT, vSaveChanges, pSaved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vSaveChanges	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Close
			END FUNCTION IGenericDocument_Close
		END INTERFACE
		POINTER(IGenericDocument_Close_PTR, IGenericDocument_Close)	! routine pointer
		INTERFACE
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION IGenericDocument_GetActive($OBJECT, pbActive)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetActive
			END FUNCTION IGenericDocument_GetActive
		END INTERFACE
		POINTER(IGenericDocument_GetActive_PTR, IGenericDocument_GetActive)	! routine pointer
		INTERFACE
			!Returns the active window for this document.
  			INTEGER*4 FUNCTION IGenericDocument_GetActiveWindow($OBJECT, ppWindow)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindow	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindow
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetActiveWindow
			END FUNCTION IGenericDocument_GetActiveWindow
		END INTERFACE
		POINTER(IGenericDocument_GetActiveWindow_PTR, IGenericDocument_GetActiveWindow)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IGenericDocument_GetApplication($OBJECT, ppApplication)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppApplication	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppApplication
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetApplication
			END FUNCTION IGenericDocument_GetApplication
		END INTERFACE
		POINTER(IGenericDocument_GetApplication_PTR, IGenericDocument_GetApplication)	! routine pointer
		INTERFACE
			!Returns the name of the document including the path.
  			INTEGER*4 FUNCTION IGenericDocument_GetFullName($OBJECT, pName)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pName
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetFullName
			END FUNCTION IGenericDocument_GetFullName
		END INTERFACE
		POINTER(IGenericDocument_GetFullName_PTR, IGenericDocument_GetFullName)	! routine pointer
		INTERFACE
			!Returns the name of the document.
  			INTEGER*4 FUNCTION IGenericDocument_GetName($OBJECT, pName)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pName
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetName
			END FUNCTION IGenericDocument_GetName
		END INTERFACE
		POINTER(IGenericDocument_GetName_PTR, IGenericDocument_GetName)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IGenericDocument_GetParent($OBJECT, ppParent)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppParent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppParent
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetParent
			END FUNCTION IGenericDocument_GetParent
		END INTERFACE
		POINTER(IGenericDocument_GetParent_PTR, IGenericDocument_GetParent)	! routine pointer
		INTERFACE
			!Returns the pathname of the document. Never has a trailing backslash.
  			INTEGER*4 FUNCTION IGenericDocument_GetPath($OBJECT, pPath)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pPath	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pPath
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetPath
			END FUNCTION IGenericDocument_GetPath
		END INTERFACE
		POINTER(IGenericDocument_GetPath_PTR, IGenericDocument_GetPath)	! routine pointer
		INTERFACE
			!Returns/sets whether a document can be changed inside Developer Studio.
  			INTEGER*4 FUNCTION IGenericDocument_GetReadOnly($OBJECT, pReadOnly)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pReadOnly	
				!DEC$ ATTRIBUTES REFERENCE	:: pReadOnly
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetReadOnly
			END FUNCTION IGenericDocument_GetReadOnly
		END INTERFACE
		POINTER(IGenericDocument_GetReadOnly_PTR, IGenericDocument_GetReadOnly)	! routine pointer
		INTERFACE
			!Returns False if document has changed since it was last saved.
  			INTEGER*4 FUNCTION IGenericDocument_GetSaved($OBJECT, pSaved)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSaved	
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetSaved
			END FUNCTION IGenericDocument_GetSaved
		END INTERFACE
		POINTER(IGenericDocument_GetSaved_PTR, IGenericDocument_GetSaved)	! routine pointer
		INTERFACE
			!Returns a string describing the type of the document. Most documents return 'Generic'.
  			INTEGER*4 FUNCTION IGenericDocument_GetType($OBJECT, pType)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pType	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pType
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetType
			END FUNCTION IGenericDocument_GetType
		END INTERFACE
		POINTER(IGenericDocument_GetType_PTR, IGenericDocument_GetType)	! routine pointer
		INTERFACE
			!Returns a Windows collection containing the windows associated with this document.
  			INTEGER*4 FUNCTION IGenericDocument_GetWindows($OBJECT, ppWindows)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindows	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindows
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetWindows
			END FUNCTION IGenericDocument_GetWindows
		END INTERFACE
		POINTER(IGenericDocument_GetWindows_PTR, IGenericDocument_GetWindows)	! routine pointer
		INTERFACE
			!Creates a new window for this document.
  			INTEGER*4 FUNCTION IGenericDocument_NewWindow($OBJECT, ppWindow)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindow	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindow
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_NewWindow
			END FUNCTION IGenericDocument_NewWindow
		END INTERFACE
		POINTER(IGenericDocument_NewWindow_PTR, IGenericDocument_NewWindow)	! routine pointer
		INTERFACE
			!Sends the document to the current printer. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION IGenericDocument_PrintOut($OBJECT, pSuccess)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_PrintOut
			END FUNCTION IGenericDocument_PrintOut
		END INTERFACE
		POINTER(IGenericDocument_PrintOut_PTR, IGenericDocument_PrintOut)	! routine pointer
		INTERFACE
			!Reapplies previous editing actions. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION IGenericDocument_Redo($OBJECT, pSuccess)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Redo
			END FUNCTION IGenericDocument_Redo
		END INTERFACE
		POINTER(IGenericDocument_Redo_PTR, IGenericDocument_Redo)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved1($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved1
			END FUNCTION IGenericDocument_Reserved1
		END INTERFACE
		POINTER(IGenericDocument_Reserved1_PTR, IGenericDocument_Reserved1)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved10($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved10
			END FUNCTION IGenericDocument_Reserved10
		END INTERFACE
		POINTER(IGenericDocument_Reserved10_PTR, IGenericDocument_Reserved10)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved2($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved2
			END FUNCTION IGenericDocument_Reserved2
		END INTERFACE
		POINTER(IGenericDocument_Reserved2_PTR, IGenericDocument_Reserved2)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved3($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved3
			END FUNCTION IGenericDocument_Reserved3
		END INTERFACE
		POINTER(IGenericDocument_Reserved3_PTR, IGenericDocument_Reserved3)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved4($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved4
			END FUNCTION IGenericDocument_Reserved4
		END INTERFACE
		POINTER(IGenericDocument_Reserved4_PTR, IGenericDocument_Reserved4)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved5($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved5
			END FUNCTION IGenericDocument_Reserved5
		END INTERFACE
		POINTER(IGenericDocument_Reserved5_PTR, IGenericDocument_Reserved5)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved6($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved6
			END FUNCTION IGenericDocument_Reserved6
		END INTERFACE
		POINTER(IGenericDocument_Reserved6_PTR, IGenericDocument_Reserved6)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved7($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved7
			END FUNCTION IGenericDocument_Reserved7
		END INTERFACE
		POINTER(IGenericDocument_Reserved7_PTR, IGenericDocument_Reserved7)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved8($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved8
			END FUNCTION IGenericDocument_Reserved8
		END INTERFACE
		POINTER(IGenericDocument_Reserved8_PTR, IGenericDocument_Reserved8)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved9($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved9
			END FUNCTION IGenericDocument_Reserved9
		END INTERFACE
		POINTER(IGenericDocument_Reserved9_PTR, IGenericDocument_Reserved9)	! routine pointer
		INTERFACE
			!Saves the document to disk.
  			INTEGER*4 FUNCTION IGenericDocument_Save($OBJECT, vFilename, vBoolPrompt, pSaved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vFilename	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vFilename
				TYPE (VARIANT), INTENT(IN)	:: vBoolPrompt	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vBoolPrompt
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Save
			END FUNCTION IGenericDocument_Save
		END INTERFACE
		POINTER(IGenericDocument_Save_PTR, IGenericDocument_Save)	! routine pointer
		INTERFACE
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION IGenericDocument_SetActive($OBJECT, pbActive)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbActive	
				!DEC$ ATTRIBUTES VALUE	:: pbActive
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_SetActive
			END FUNCTION IGenericDocument_SetActive
		END INTERFACE
		POINTER(IGenericDocument_SetActive_PTR, IGenericDocument_SetActive)	! routine pointer
		INTERFACE
			!Returns/sets whether a document can be changed inside Developer Studio.
  			INTEGER*4 FUNCTION IGenericDocument_SetReadOnly($OBJECT, pReadOnly)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pReadOnly	
				!DEC$ ATTRIBUTES VALUE	:: pReadOnly
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_SetReadOnly
			END FUNCTION IGenericDocument_SetReadOnly
		END INTERFACE
		POINTER(IGenericDocument_SetReadOnly_PTR, IGenericDocument_SetReadOnly)	! routine pointer
		INTERFACE
			!Reverses previous editing actions. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION IGenericDocument_Undo($OBJECT, pSuccess)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Undo
			END FUNCTION IGenericDocument_Undo
		END INTERFACE
		POINTER(IGenericDocument_Undo_PTR, IGenericDocument_Undo)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IGenericProject_GetApplication($OBJECT, Application)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Application	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Application
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_GetApplication
			END FUNCTION IGenericProject_GetApplication
		END INTERFACE
		POINTER(IGenericProject_GetApplication_PTR, IGenericProject_GetApplication)	! routine pointer
		INTERFACE
			!Returns the name of the project including its path.
  			INTEGER*4 FUNCTION IGenericProject_GetFullName($OBJECT, Name)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_GetFullName
			END FUNCTION IGenericProject_GetFullName
		END INTERFACE
		POINTER(IGenericProject_GetFullName_PTR, IGenericProject_GetFullName)	! routine pointer
		INTERFACE
			!Returns the name of the project.
  			INTEGER*4 FUNCTION IGenericProject_GetName($OBJECT, Name)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_GetName
			END FUNCTION IGenericProject_GetName
		END INTERFACE
		POINTER(IGenericProject_GetName_PTR, IGenericProject_GetName)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IGenericProject_GetParent($OBJECT, Parent)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Parent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Parent
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_GetParent
			END FUNCTION IGenericProject_GetParent
		END INTERFACE
		POINTER(IGenericProject_GetParent_PTR, IGenericProject_GetParent)	! routine pointer
		INTERFACE
			!Returns a string representing the type of the project.
  			INTEGER*4 FUNCTION IGenericProject_GetType($OBJECT, pType)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pType	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pType
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_GetType
			END FUNCTION IGenericProject_GetType
		END INTERFACE
		POINTER(IGenericProject_GetType_PTR, IGenericProject_GetType)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved1($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved1
			END FUNCTION IGenericProject_Reserved1
		END INTERFACE
		POINTER(IGenericProject_Reserved1_PTR, IGenericProject_Reserved1)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved10($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved10
			END FUNCTION IGenericProject_Reserved10
		END INTERFACE
		POINTER(IGenericProject_Reserved10_PTR, IGenericProject_Reserved10)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved2($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved2
			END FUNCTION IGenericProject_Reserved2
		END INTERFACE
		POINTER(IGenericProject_Reserved2_PTR, IGenericProject_Reserved2)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved3($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved3
			END FUNCTION IGenericProject_Reserved3
		END INTERFACE
		POINTER(IGenericProject_Reserved3_PTR, IGenericProject_Reserved3)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved4($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved4
			END FUNCTION IGenericProject_Reserved4
		END INTERFACE
		POINTER(IGenericProject_Reserved4_PTR, IGenericProject_Reserved4)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved5($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved5
			END FUNCTION IGenericProject_Reserved5
		END INTERFACE
		POINTER(IGenericProject_Reserved5_PTR, IGenericProject_Reserved5)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved6($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved6
			END FUNCTION IGenericProject_Reserved6
		END INTERFACE
		POINTER(IGenericProject_Reserved6_PTR, IGenericProject_Reserved6)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved7($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved7
			END FUNCTION IGenericProject_Reserved7
		END INTERFACE
		POINTER(IGenericProject_Reserved7_PTR, IGenericProject_Reserved7)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved8($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved8
			END FUNCTION IGenericProject_Reserved8
		END INTERFACE
		POINTER(IGenericProject_Reserved8_PTR, IGenericProject_Reserved8)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved9($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved9
			END FUNCTION IGenericProject_Reserved9
		END INTERFACE
		POINTER(IGenericProject_Reserved9_PTR, IGenericProject_Reserved9)	! routine pointer
		INTERFACE
			!Close the window.
  			INTEGER*4 FUNCTION IGenericWindow_Close($OBJECT, boolSaveChanges, pSaved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: boolSaveChanges	
				!DEC$ ATTRIBUTES VALUE	:: boolSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Close
			END FUNCTION IGenericWindow_Close
		END INTERFACE
		POINTER(IGenericWindow_Close_PTR, IGenericWindow_Close)	! routine pointer
		INTERFACE
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetActive($OBJECT, pbActive)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetActive
			END FUNCTION IGenericWindow_GetActive
		END INTERFACE
		POINTER(IGenericWindow_GetActive_PTR, IGenericWindow_GetActive)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IGenericWindow_GetApplication($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetApplication
			END FUNCTION IGenericWindow_GetApplication
		END INTERFACE
		POINTER(IGenericWindow_GetApplication_PTR, IGenericWindow_GetApplication)	! routine pointer
		INTERFACE
			!Returns the caption of a window.
  			INTEGER*4 FUNCTION IGenericWindow_GetCaption($OBJECT, pbstrCaption)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pbstrCaption	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbstrCaption
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetCaption
			END FUNCTION IGenericWindow_GetCaption
		END INTERFACE
		POINTER(IGenericWindow_GetCaption_PTR, IGenericWindow_GetCaption)	! routine pointer
		INTERFACE
			!Returns/sets the height of the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetHeight($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetHeight
			END FUNCTION IGenericWindow_GetHeight
		END INTERFACE
		POINTER(IGenericWindow_GetHeight_PTR, IGenericWindow_GetHeight)	! routine pointer
		INTERFACE
			!Returns the one-based ordinal of a window in the Windows collection.
  			INTEGER*4 FUNCTION IGenericWindow_GetIndex($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetIndex
			END FUNCTION IGenericWindow_GetIndex
		END INTERFACE
		POINTER(IGenericWindow_GetIndex_PTR, IGenericWindow_GetIndex)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate for the left edge of the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetLeft($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetLeft
			END FUNCTION IGenericWindow_GetLeft
		END INTERFACE
		POINTER(IGenericWindow_GetLeft_PTR, IGenericWindow_GetLeft)	! routine pointer
		INTERFACE
			!Returns the next window in the tab sequence.
  			INTEGER*4 FUNCTION IGenericWindow_GetNext($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetNext
			END FUNCTION IGenericWindow_GetNext
		END INTERFACE
		POINTER(IGenericWindow_GetNext_PTR, IGenericWindow_GetNext)	! routine pointer
		INTERFACE
			!Returns the document associated with this window.
  			INTEGER*4 FUNCTION IGenericWindow_GetParent($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetParent
			END FUNCTION IGenericWindow_GetParent
		END INTERFACE
		POINTER(IGenericWindow_GetParent_PTR, IGenericWindow_GetParent)	! routine pointer
		INTERFACE
			!Returns the previous window in the shift-tab sequence.
  			INTEGER*4 FUNCTION IGenericWindow_GetPrevious($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetPrevious
			END FUNCTION IGenericWindow_GetPrevious
		END INTERFACE
		POINTER(IGenericWindow_GetPrevious_PTR, IGenericWindow_GetPrevious)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate for the top of the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetTop($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetTop
			END FUNCTION IGenericWindow_GetTop
		END INTERFACE
		POINTER(IGenericWindow_GetTop_PTR, IGenericWindow_GetTop)	! routine pointer
		INTERFACE
			!Returns a string describing the type of the window. Most windows return 'Generic'.
  			INTEGER*4 FUNCTION IGenericWindow_GetType($OBJECT, pbstrCaption)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pbstrCaption	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbstrCaption
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetType
			END FUNCTION IGenericWindow_GetType
		END INTERFACE
		POINTER(IGenericWindow_GetType_PTR, IGenericWindow_GetType)	! routine pointer
		INTERFACE
			!Returns/sets the width of the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetWidth($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetWidth
			END FUNCTION IGenericWindow_GetWidth
		END INTERFACE
		POINTER(IGenericWindow_GetWidth_PTR, IGenericWindow_GetWidth)	! routine pointer
		INTERFACE
			!Returns the state of the window or maximize, minimize, or restore the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetWindowState($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: plVal	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetWindowState
			END FUNCTION IGenericWindow_GetWindowState
		END INTERFACE
		POINTER(IGenericWindow_GetWindowState_PTR, IGenericWindow_GetWindowState)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved1($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved1
			END FUNCTION IGenericWindow_Reserved1
		END INTERFACE
		POINTER(IGenericWindow_Reserved1_PTR, IGenericWindow_Reserved1)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved10($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved10
			END FUNCTION IGenericWindow_Reserved10
		END INTERFACE
		POINTER(IGenericWindow_Reserved10_PTR, IGenericWindow_Reserved10)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved2($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved2
			END FUNCTION IGenericWindow_Reserved2
		END INTERFACE
		POINTER(IGenericWindow_Reserved2_PTR, IGenericWindow_Reserved2)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved3($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved3
			END FUNCTION IGenericWindow_Reserved3
		END INTERFACE
		POINTER(IGenericWindow_Reserved3_PTR, IGenericWindow_Reserved3)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved4($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved4
			END FUNCTION IGenericWindow_Reserved4
		END INTERFACE
		POINTER(IGenericWindow_Reserved4_PTR, IGenericWindow_Reserved4)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved5($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved5
			END FUNCTION IGenericWindow_Reserved5
		END INTERFACE
		POINTER(IGenericWindow_Reserved5_PTR, IGenericWindow_Reserved5)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved6($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved6
			END FUNCTION IGenericWindow_Reserved6
		END INTERFACE
		POINTER(IGenericWindow_Reserved6_PTR, IGenericWindow_Reserved6)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved7($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved7
			END FUNCTION IGenericWindow_Reserved7
		END INTERFACE
		POINTER(IGenericWindow_Reserved7_PTR, IGenericWindow_Reserved7)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved8($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved8
			END FUNCTION IGenericWindow_Reserved8
		END INTERFACE
		POINTER(IGenericWindow_Reserved8_PTR, IGenericWindow_Reserved8)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved9($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved9
			END FUNCTION IGenericWindow_Reserved9
		END INTERFACE
		POINTER(IGenericWindow_Reserved9_PTR, IGenericWindow_Reserved9)	! routine pointer
		INTERFACE
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetActive($OBJECT, pbActive)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbActive	
				!DEC$ ATTRIBUTES VALUE	:: pbActive
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetActive
			END FUNCTION IGenericWindow_SetActive
		END INTERFACE
		POINTER(IGenericWindow_SetActive_PTR, IGenericWindow_SetActive)	! routine pointer
		INTERFACE
			!Returns/sets the height of the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetHeight($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES VALUE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetHeight
			END FUNCTION IGenericWindow_SetHeight
		END INTERFACE
		POINTER(IGenericWindow_SetHeight_PTR, IGenericWindow_SetHeight)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate for the left edge of the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetLeft($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES VALUE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetLeft
			END FUNCTION IGenericWindow_SetLeft
		END INTERFACE
		POINTER(IGenericWindow_SetLeft_PTR, IGenericWindow_SetLeft)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate for the top of the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetTop($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES VALUE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetTop
			END FUNCTION IGenericWindow_SetTop
		END INTERFACE
		POINTER(IGenericWindow_SetTop_PTR, IGenericWindow_SetTop)	! routine pointer
		INTERFACE
			!Returns/sets the width of the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetWidth($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES VALUE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetWidth
			END FUNCTION IGenericWindow_SetWidth
		END INTERFACE
		POINTER(IGenericWindow_SetWidth_PTR, IGenericWindow_SetWidth)	! routine pointer
		INTERFACE
			!Returns the state of the window or maximize, minimize, or restore the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetWindowState($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: plVal	! Void
				!DEC$ ATTRIBUTES VALUE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetWindowState
			END FUNCTION IGenericWindow_SetWindowState
		END INTERFACE
		POINTER(IGenericWindow_SetWindowState_PTR, IGenericWindow_SetWindowState)	! routine pointer
		INTERFACE
			!Removes all unnamed bookmarks in a document.
  			INTEGER*4 FUNCTION ITextDocument_ClearBookmarks($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextDocument_ClearBookmarks
			END FUNCTION ITextDocument_ClearBookmarks
		END INTERFACE
		POINTER(ITextDocument_ClearBookmarks_PTR, ITextDocument_ClearBookmarks)	! routine pointer
		INTERFACE
			!Gets or sets the number of columns in one indent.
  			INTEGER*4 FUNCTION ITextDocument_GetIndentSize($OBJECT, pSize)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pSize	
				!DEC$ ATTRIBUTES REFERENCE	:: pSize
			!DEC$ ATTRIBUTES STDCALL :: ITextDocument_GetIndentSize
			END FUNCTION ITextDocument_GetIndentSize
		END INTERFACE
		POINTER(ITextDocument_GetIndentSize_PTR, ITextDocument_GetIndentSize)	! routine pointer
		INTERFACE
			!Gets or sets the programming language assumed for a document.
  			INTEGER*4 FUNCTION ITextDocument_GetLanguage($OBJECT, pLanguage)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pLanguage	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pLanguage
			!DEC$ ATTRIBUTES STDCALL :: ITextDocument_GetLanguage
			END FUNCTION ITextDocument_GetLanguage
		END INTERFACE
		POINTER(ITextDocument_GetLanguage_PTR, ITextDocument_GetLanguage)	! routine pointer
		INTERFACE
			!Gets the TextSelection object for the active view.
  			INTEGER*4 FUNCTION ITextDocument_GetSelection($OBJECT, ppSelection)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppSelection	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppSelection
			!DEC$ ATTRIBUTES STDCALL :: ITextDocument_GetSelection
			END FUNCTION ITextDocument_GetSelection
		END INTERFACE
		POINTER(ITextDocument_GetSelection_PTR, ITextDocument_GetSelection)	! routine pointer
		INTERFACE
			!Gets or sets the number of columns in a tab character.
  			INTEGER*4 FUNCTION ITextDocument_GetTabSize($OBJECT, pSize)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pSize	
				!DEC$ ATTRIBUTES REFERENCE	:: pSize
			!DEC$ ATTRIBUTES STDCALL :: ITextDocument_GetTabSize
			END FUNCTION ITextDocument_GetTabSize
		END INTERFACE
		POINTER(ITextDocument_GetTabSize_PTR, ITextDocument_GetTabSize)	! routine pointer
		INTERFACE
			!Marks lines containing the specified text.
  			INTEGER*4 FUNCTION ITextDocument_MarkText($OBJECT, FindText, Flags, pbRetVal)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: FindText	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: FindText
				TYPE (VARIANT), INTENT(IN)	:: Flags	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Flags
				LOGICAL*2, INTENT(OUT)	:: pbRetVal	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRetVal
			!DEC$ ATTRIBUTES STDCALL :: ITextDocument_MarkText
			END FUNCTION ITextDocument_MarkText
		END INTERFACE
		POINTER(ITextDocument_MarkText_PTR, ITextDocument_MarkText)	! routine pointer
		INTERFACE
			!Replaces all instances of one string or regular expression with another.
  			INTEGER*4 FUNCTION ITextDocument_ReplaceText($OBJECT, FindText, ReplaceText, Flags, pbRetVal)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: FindText	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: FindText
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: ReplaceText	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: ReplaceText
				TYPE (VARIANT), INTENT(IN)	:: Flags	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Flags
				LOGICAL*2, INTENT(OUT)	:: pbRetVal	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRetVal
			!DEC$ ATTRIBUTES STDCALL :: ITextDocument_ReplaceText
			END FUNCTION ITextDocument_ReplaceText
		END INTERFACE
		POINTER(ITextDocument_ReplaceText_PTR, ITextDocument_ReplaceText)	! routine pointer
		INTERFACE
			!Gets or sets the number of columns in one indent.
  			INTEGER*4 FUNCTION ITextDocument_SetIndentSize($OBJECT, pSize)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pSize	
				!DEC$ ATTRIBUTES VALUE	:: pSize
			!DEC$ ATTRIBUTES STDCALL :: ITextDocument_SetIndentSize
			END FUNCTION ITextDocument_SetIndentSize
		END INTERFACE
		POINTER(ITextDocument_SetIndentSize_PTR, ITextDocument_SetIndentSize)	! routine pointer
		INTERFACE
			!Gets or sets the programming language assumed for a document.
  			INTEGER*4 FUNCTION ITextDocument_SetLanguage($OBJECT, pLanguage)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: pLanguage	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: pLanguage
			!DEC$ ATTRIBUTES STDCALL :: ITextDocument_SetLanguage
			END FUNCTION ITextDocument_SetLanguage
		END INTERFACE
		POINTER(ITextDocument_SetLanguage_PTR, ITextDocument_SetLanguage)	! routine pointer
		INTERFACE
			!Gets or sets the number of columns in a tab character.
  			INTEGER*4 FUNCTION ITextDocument_SetTabSize($OBJECT, pSize)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pSize	
				!DEC$ ATTRIBUTES VALUE	:: pSize
			!DEC$ ATTRIBUTES STDCALL :: ITextDocument_SetTabSize
			END FUNCTION ITextDocument_SetTabSize
		END INTERFACE
		POINTER(ITextDocument_SetTabSize_PTR, ITextDocument_SetTabSize)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION ITextEditor_GetApplication($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: ITextEditor_GetApplication
			END FUNCTION ITextEditor_GetApplication
		END INTERFACE
		POINTER(ITextEditor_GetApplication_PTR, ITextEditor_GetApplication)	! routine pointer
		INTERFACE
			!Gets or sets the emulation mode of the Developer Studio text editor.
  			INTEGER*4 FUNCTION ITextEditor_GetEmulation($OBJECT, plEmulation)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plEmulation	
				!DEC$ ATTRIBUTES REFERENCE	:: plEmulation
			!DEC$ ATTRIBUTES STDCALL :: ITextEditor_GetEmulation
			END FUNCTION ITextEditor_GetEmulation
		END INTERFACE
		POINTER(ITextEditor_GetEmulation_PTR, ITextEditor_GetEmulation)	! routine pointer
		INTERFACE
			!Gets or sets whether the editor is in overtype mode.
  			INTEGER*4 FUNCTION ITextEditor_GetOvertype($OBJECT, pbOvertype)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbOvertype	
				!DEC$ ATTRIBUTES REFERENCE	:: pbOvertype
			!DEC$ ATTRIBUTES STDCALL :: ITextEditor_GetOvertype
			END FUNCTION ITextEditor_GetOvertype
		END INTERFACE
		POINTER(ITextEditor_GetOvertype_PTR, ITextEditor_GetOvertype)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION ITextEditor_GetParent($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: ITextEditor_GetParent
			END FUNCTION ITextEditor_GetParent
		END INTERFACE
		POINTER(ITextEditor_GetParent_PTR, ITextEditor_GetParent)	! routine pointer
		INTERFACE
			!Gets or sets the visibility of tabs and spaces in all open text documents.
  			INTEGER*4 FUNCTION ITextEditor_GetVisibleWhitespace($OBJECT, pbVisible)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbVisible	
				!DEC$ ATTRIBUTES REFERENCE	:: pbVisible
			!DEC$ ATTRIBUTES STDCALL :: ITextEditor_GetVisibleWhitespace
			END FUNCTION ITextEditor_GetVisibleWhitespace
		END INTERFACE
		POINTER(ITextEditor_GetVisibleWhitespace_PTR, ITextEditor_GetVisibleWhitespace)	! routine pointer
		INTERFACE
			!Gets or sets the emulation mode of the Developer Studio text editor.
  			INTEGER*4 FUNCTION ITextEditor_SetEmulation($OBJECT, plEmulation)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plEmulation	
				!DEC$ ATTRIBUTES VALUE	:: plEmulation
			!DEC$ ATTRIBUTES STDCALL :: ITextEditor_SetEmulation
			END FUNCTION ITextEditor_SetEmulation
		END INTERFACE
		POINTER(ITextEditor_SetEmulation_PTR, ITextEditor_SetEmulation)	! routine pointer
		INTERFACE
			!Gets or sets whether the editor is in overtype mode.
  			INTEGER*4 FUNCTION ITextEditor_SetOvertype($OBJECT, pbOvertype)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbOvertype	
				!DEC$ ATTRIBUTES VALUE	:: pbOvertype
			!DEC$ ATTRIBUTES STDCALL :: ITextEditor_SetOvertype
			END FUNCTION ITextEditor_SetOvertype
		END INTERFACE
		POINTER(ITextEditor_SetOvertype_PTR, ITextEditor_SetOvertype)	! routine pointer
		INTERFACE
			!Gets or sets the visibility of tabs and spaces in all open text documents.
  			INTEGER*4 FUNCTION ITextEditor_SetVisibleWhitespace($OBJECT, pbVisible)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbVisible	
				!DEC$ ATTRIBUTES VALUE	:: pbVisible
			!DEC$ ATTRIBUTES STDCALL :: ITextEditor_SetVisibleWhitespace
			END FUNCTION ITextEditor_SetVisibleWhitespace
		END INTERFACE
		POINTER(ITextEditor_SetVisibleWhitespace_PTR, ITextEditor_SetVisibleWhitespace)	! routine pointer
		INTERFACE
			!Performs the function of the Backspace key.
  			INTEGER*4 FUNCTION ITextSelection_Backspace($OBJECT, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_Backspace
			END FUNCTION ITextSelection_Backspace
		END INTERFACE
		POINTER(ITextSelection_Backspace_PTR, ITextSelection_Backspace)	! routine pointer
		INTERFACE
			!Cancels a selection.
  			INTEGER*4 FUNCTION ITextSelection_Cancel($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_Cancel
			END FUNCTION ITextSelection_Cancel
		END INTERFACE
		POINTER(ITextSelection_Cancel_PTR, ITextSelection_Cancel)	! routine pointer
		INTERFACE
			!Changes the case of a text selection.
  			INTEGER*4 FUNCTION ITextSelection_ChangeCase($OBJECT, Type)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: Type	! Void
				!DEC$ ATTRIBUTES VALUE	:: Type
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_ChangeCase
			END FUNCTION ITextSelection_ChangeCase
		END INTERFACE
		POINTER(ITextSelection_ChangeCase_PTR, ITextSelection_ChangeCase)	! routine pointer
		INTERFACE
			!Moves the insertion point one character to the left.
  			INTEGER*4 FUNCTION ITextSelection_CharLeft($OBJECT, Extend, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_CharLeft
			END FUNCTION ITextSelection_CharLeft
		END INTERFACE
		POINTER(ITextSelection_CharLeft_PTR, ITextSelection_CharLeft)	! routine pointer
		INTERFACE
			!Moves the insertion point one character to the right.
  			INTEGER*4 FUNCTION ITextSelection_CharRight($OBJECT, Extend, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_CharRight
			END FUNCTION ITextSelection_CharRight
		END INTERFACE
		POINTER(ITextSelection_CharRight_PTR, ITextSelection_CharRight)	! routine pointer
		INTERFACE
			!Removes all unnamed bookmarks in a document.
  			INTEGER*4 FUNCTION ITextSelection_ClearBookmark($OBJECT, pbRet)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRet	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRet
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_ClearBookmark
			END FUNCTION ITextSelection_ClearBookmark
		END INTERFACE
		POINTER(ITextSelection_ClearBookmark_PTR, ITextSelection_ClearBookmark)	! routine pointer
		INTERFACE
			!Copies the selected text to the Clipboard.
  			INTEGER*4 FUNCTION ITextSelection_Copy($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_Copy
			END FUNCTION ITextSelection_Copy
		END INTERFACE
		POINTER(ITextSelection_Copy_PTR, ITextSelection_Copy)	! routine pointer
		INTERFACE
			!Removes the selected text and adds it to the Clipboard.
  			INTEGER*4 FUNCTION ITextSelection_Cut($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_Cut
			END FUNCTION ITextSelection_Cut
		END INTERFACE
		POINTER(ITextSelection_Cut_PTR, ITextSelection_Cut)	! routine pointer
		INTERFACE
			!Performs the function of the Delete key.
  			INTEGER*4 FUNCTION ITextSelection_Delete($OBJECT, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_Delete
			END FUNCTION ITextSelection_Delete
		END INTERFACE
		POINTER(ITextSelection_Delete_PTR, ITextSelection_Delete)	! routine pointer
		INTERFACE
			!Deletes white space adjacent to the insertion point.
  			INTEGER*4 FUNCTION ITextSelection_DeleteWhitespace($OBJECT, Direction)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Direction	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Direction
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_DeleteWhitespace
			END FUNCTION ITextSelection_DeleteWhitespace
		END INTERFACE
		POINTER(ITextSelection_DeleteWhitespace_PTR, ITextSelection_DeleteWhitespace)	! routine pointer
		INTERFACE
			!Replaces all instances of one string with another.
  			INTEGER*4 FUNCTION ITextSelection_DestructiveInsert($OBJECT, szText)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szText	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szText
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_DestructiveInsert
			END FUNCTION ITextSelection_DestructiveInsert
		END INTERFACE
		POINTER(ITextSelection_DestructiveInsert_PTR, ITextSelection_DestructiveInsert)	! routine pointer
		INTERFACE
			!Moves the insertion point to the end of the document.
  			INTEGER*4 FUNCTION ITextSelection_EndOfDocument($OBJECT, Extend)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_EndOfDocument
			END FUNCTION ITextSelection_EndOfDocument
		END INTERFACE
		POINTER(ITextSelection_EndOfDocument_PTR, ITextSelection_EndOfDocument)	! routine pointer
		INTERFACE
			!Moves the insertion point to the end of a line.
  			INTEGER*4 FUNCTION ITextSelection_EndOfLine($OBJECT, Extend)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_EndOfLine
			END FUNCTION ITextSelection_EndOfLine
		END INTERFACE
		POINTER(ITextSelection_EndOfLine_PTR, ITextSelection_EndOfLine)	! routine pointer
		INTERFACE
			!Finds the next occurrence of the provided text.
  			INTEGER*4 FUNCTION ITextSelection_FindText($OBJECT, FindString, Flags, pbRet)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: FindString	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: FindString
				TYPE (VARIANT), INTENT(IN)	:: Flags	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Flags
				LOGICAL*2, INTENT(OUT)	:: pbRet	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRet
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_FindText
			END FUNCTION ITextSelection_FindText
		END INTERFACE
		POINTER(ITextSelection_FindText_PTR, ITextSelection_FindText)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION ITextSelection_GetApplication($OBJECT, ppApp)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppApp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppApp
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_GetApplication
			END FUNCTION ITextSelection_GetApplication
		END INTERFACE
		POINTER(ITextSelection_GetApplication_PTR, ITextSelection_GetApplication)	! routine pointer
		INTERFACE
			!Gets the line number of the bottom of the selection.
  			INTEGER*4 FUNCTION ITextSelection_GetBottomLine($OBJECT, plLine)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plLine	
				!DEC$ ATTRIBUTES REFERENCE	:: plLine
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_GetBottomLine
			END FUNCTION ITextSelection_GetBottomLine
		END INTERFACE
		POINTER(ITextSelection_GetBottomLine_PTR, ITextSelection_GetBottomLine)	! routine pointer
		INTERFACE
			!Gets the column where the insertion point is located.
  			INTEGER*4 FUNCTION ITextSelection_GetCurrentColumn($OBJECT, plCol)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plCol	
				!DEC$ ATTRIBUTES REFERENCE	:: plCol
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_GetCurrentColumn
			END FUNCTION ITextSelection_GetCurrentColumn
		END INTERFACE
		POINTER(ITextSelection_GetCurrentColumn_PTR, ITextSelection_GetCurrentColumn)	! routine pointer
		INTERFACE
			!Gets the line where the insertion point is located.
  			INTEGER*4 FUNCTION ITextSelection_GetCurrentLine($OBJECT, plLine)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plLine	
				!DEC$ ATTRIBUTES REFERENCE	:: plLine
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_GetCurrentLine
			END FUNCTION ITextSelection_GetCurrentLine
		END INTERFACE
		POINTER(ITextSelection_GetCurrentLine_PTR, ITextSelection_GetCurrentLine)	! routine pointer
		INTERFACE
			!Gets the document object for this selection.
  			INTEGER*4 FUNCTION ITextSelection_GetParent($OBJECT, ppParent)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppParent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppParent
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_GetParent
			END FUNCTION ITextSelection_GetParent
		END INTERFACE
		POINTER(ITextSelection_GetParent_PTR, ITextSelection_GetParent)	! routine pointer
		INTERFACE
			!Represents the currently selected text.
  			INTEGER*4 FUNCTION ITextSelection_GetText($OBJECT, pText)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pText	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pText
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_GetText
			END FUNCTION ITextSelection_GetText
		END INTERFACE
		POINTER(ITextSelection_GetText_PTR, ITextSelection_GetText)	! routine pointer
		INTERFACE
			!Gets the line number of the top of the selection.
  			INTEGER*4 FUNCTION ITextSelection_GetTopLine($OBJECT, plLine)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plLine	
				!DEC$ ATTRIBUTES REFERENCE	:: plLine
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_GetTopLine
			END FUNCTION ITextSelection_GetTopLine
		END INTERFACE
		POINTER(ITextSelection_GetTopLine_PTR, ITextSelection_GetTopLine)	! routine pointer
		INTERFACE
			!Moves the selection to a specified line in a document.
  			INTEGER*4 FUNCTION ITextSelection_GoToLine($OBJECT, Line, Select)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Line	
				!DEC$ ATTRIBUTES VALUE	:: Line
				TYPE (VARIANT), INTENT(IN)	:: Select	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Select
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_GoToLine
			END FUNCTION ITextSelection_GoToLine
		END INTERFACE
		POINTER(ITextSelection_GoToLine_PTR, ITextSelection_GoToLine)	! routine pointer
		INTERFACE
			!Indents the selected text.
  			INTEGER*4 FUNCTION ITextSelection_Indent($OBJECT, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_Indent
			END FUNCTION ITextSelection_Indent
		END INTERFACE
		POINTER(ITextSelection_Indent_PTR, ITextSelection_Indent)	! routine pointer
		INTERFACE
			!Moves the insertion point down one line.
  			INTEGER*4 FUNCTION ITextSelection_LineDown($OBJECT, Extend, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_LineDown
			END FUNCTION ITextSelection_LineDown
		END INTERFACE
		POINTER(ITextSelection_LineDown_PTR, ITextSelection_LineDown)	! routine pointer
		INTERFACE
			!Moves the insertion point up one line.
  			INTEGER*4 FUNCTION ITextSelection_LineUp($OBJECT, Extend, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_LineUp
			END FUNCTION ITextSelection_LineUp
		END INTERFACE
		POINTER(ITextSelection_LineUp_PTR, ITextSelection_LineUp)	! routine pointer
		INTERFACE
			!Moves the insertion point to a specified line and column.
  			INTEGER*4 FUNCTION ITextSelection_MoveTo($OBJECT, Line, Column, Extend)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Line	
				!DEC$ ATTRIBUTES VALUE	:: Line
				INTEGER*4, INTENT(IN)	:: Column	
				!DEC$ ATTRIBUTES VALUE	:: Column
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_MoveTo
			END FUNCTION ITextSelection_MoveTo
		END INTERFACE
		POINTER(ITextSelection_MoveTo_PTR, ITextSelection_MoveTo)	! routine pointer
		INTERFACE
			!Creates a new line in a selection.
  			INTEGER*4 FUNCTION ITextSelection_NewLine($OBJECT, Reserved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Reserved	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Reserved
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_NewLine
			END FUNCTION ITextSelection_NewLine
		END INTERFACE
		POINTER(ITextSelection_NewLine_PTR, ITextSelection_NewLine)	! routine pointer
		INTERFACE
			!Moves the selection to the next unnamed bookmark in a document.
  			INTEGER*4 FUNCTION ITextSelection_NextBookmark($OBJECT, pbRet)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRet	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRet
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_NextBookmark
			END FUNCTION ITextSelection_NextBookmark
		END INTERFACE
		POINTER(ITextSelection_NextBookmark_PTR, ITextSelection_NextBookmark)	! routine pointer
		INTERFACE
			!Moves the insertion point down one page.
  			INTEGER*4 FUNCTION ITextSelection_PageDown($OBJECT, Extend, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_PageDown
			END FUNCTION ITextSelection_PageDown
		END INTERFACE
		POINTER(ITextSelection_PageDown_PTR, ITextSelection_PageDown)	! routine pointer
		INTERFACE
			!Moves the insertion point up one page.
  			INTEGER*4 FUNCTION ITextSelection_PageUp($OBJECT, Extend, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_PageUp
			END FUNCTION ITextSelection_PageUp
		END INTERFACE
		POINTER(ITextSelection_PageUp_PTR, ITextSelection_PageUp)	! routine pointer
		INTERFACE
			!Replaces a selection with the contents of the Clipboard.
  			INTEGER*4 FUNCTION ITextSelection_Paste($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_Paste
			END FUNCTION ITextSelection_Paste
		END INTERFACE
		POINTER(ITextSelection_Paste_PTR, ITextSelection_Paste)	! routine pointer
		INTERFACE
			!Moves the selection to the previous unnamed bookmark in a document.
  			INTEGER*4 FUNCTION ITextSelection_PreviousBookmark($OBJECT, pbRet)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRet	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRet
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_PreviousBookmark
			END FUNCTION ITextSelection_PreviousBookmark
		END INTERFACE
		POINTER(ITextSelection_PreviousBookmark_PTR, ITextSelection_PreviousBookmark)	! routine pointer
		INTERFACE
			!Replaces all instances of one string with another.
  			INTEGER*4 FUNCTION ITextSelection_ReplaceText($OBJECT, szFind, szReplace, Flags, pbRet)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szFind	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szFind
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szReplace	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szReplace
				TYPE (VARIANT), INTENT(IN)	:: Flags	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Flags
				LOGICAL*2, INTENT(OUT)	:: pbRet	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRet
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_ReplaceText
			END FUNCTION ITextSelection_ReplaceText
		END INTERFACE
		POINTER(ITextSelection_ReplaceText_PTR, ITextSelection_ReplaceText)	! routine pointer
		INTERFACE
			!Extends a selection to include the entire document.
  			INTEGER*4 FUNCTION ITextSelection_SelectAll($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_SelectAll
			END FUNCTION ITextSelection_SelectAll
		END INTERFACE
		POINTER(ITextSelection_SelectAll_PTR, ITextSelection_SelectAll)	! routine pointer
		INTERFACE
			!Selects the current line.
  			INTEGER*4 FUNCTION ITextSelection_SelectLine($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_SelectLine
			END FUNCTION ITextSelection_SelectLine
		END INTERFACE
		POINTER(ITextSelection_SelectLine_PTR, ITextSelection_SelectLine)	! routine pointer
		INTERFACE
			!Sets an unnamed bookmark at the active end of a selection.
  			INTEGER*4 FUNCTION ITextSelection_SetBookmark($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_SetBookmark
			END FUNCTION ITextSelection_SetBookmark
		END INTERFACE
		POINTER(ITextSelection_SetBookmark_PTR, ITextSelection_SetBookmark)	! routine pointer
		INTERFACE
			!Represents the currently selected text.
  			INTEGER*4 FUNCTION ITextSelection_SetText($OBJECT, pText)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: pText	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: pText
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_SetText
			END FUNCTION ITextSelection_SetText
		END INTERFACE
		POINTER(ITextSelection_SetText_PTR, ITextSelection_SetText)	! routine pointer
		INTERFACE
			!Formats text in a selection according to the current smart formatting settings.
  			INTEGER*4 FUNCTION ITextSelection_SmartFormat($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_SmartFormat
			END FUNCTION ITextSelection_SmartFormat
		END INTERFACE
		POINTER(ITextSelection_SmartFormat_PTR, ITextSelection_SmartFormat)	! routine pointer
		INTERFACE
			!Moves the insertion point to the beginning of the document.
  			INTEGER*4 FUNCTION ITextSelection_StartOfDocument($OBJECT, Extend)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_StartOfDocument
			END FUNCTION ITextSelection_StartOfDocument
		END INTERFACE
		POINTER(ITextSelection_StartOfDocument_PTR, ITextSelection_StartOfDocument)	! routine pointer
		INTERFACE
			!Moves the insertion point to the first character or first column of a line.
  			INTEGER*4 FUNCTION ITextSelection_StartOfLine($OBJECT, MoveTo, Extend)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: MoveTo	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: MoveTo
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_StartOfLine
			END FUNCTION ITextSelection_StartOfLine
		END INTERFACE
		POINTER(ITextSelection_StartOfLine_PTR, ITextSelection_StartOfLine)	! routine pointer
		INTERFACE
			!Converts spaces to tabs in a selection.
  			INTEGER*4 FUNCTION ITextSelection_Tabify($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_Tabify
			END FUNCTION ITextSelection_Tabify
		END INTERFACE
		POINTER(ITextSelection_Tabify_PTR, ITextSelection_Tabify)	! routine pointer
		INTERFACE
			!Removes one indentation from all lines in a selection.
  			INTEGER*4 FUNCTION ITextSelection_Unindent($OBJECT, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_Unindent
			END FUNCTION ITextSelection_Unindent
		END INTERFACE
		POINTER(ITextSelection_Unindent_PTR, ITextSelection_Unindent)	! routine pointer
		INTERFACE
			!Converts tabs to spaces in a selection.
  			INTEGER*4 FUNCTION ITextSelection_Untabify($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_Untabify
			END FUNCTION ITextSelection_Untabify
		END INTERFACE
		POINTER(ITextSelection_Untabify_PTR, ITextSelection_Untabify)	! routine pointer
		INTERFACE
			!Moves the insertion point one word to the left.
  			INTEGER*4 FUNCTION ITextSelection_WordLeft($OBJECT, Extend, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_WordLeft
			END FUNCTION ITextSelection_WordLeft
		END INTERFACE
		POINTER(ITextSelection_WordLeft_PTR, ITextSelection_WordLeft)	! routine pointer
		INTERFACE
			!Moves the insertion point one word to the right.
  			INTEGER*4 FUNCTION ITextSelection_WordRight($OBJECT, Extend, Count)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Extend	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Extend
				TYPE (VARIANT), INTENT(IN)	:: Count	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: ITextSelection_WordRight
			END FUNCTION ITextSelection_WordRight
		END INTERFACE
		POINTER(ITextSelection_WordRight_PTR, ITextSelection_WordRight)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION ITextWindow_GetSelection($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: ITextWindow_GetSelection
			END FUNCTION ITextWindow_GetSelection
		END INTERFACE
		POINTER(ITextWindow_GetSelection_PTR, ITextWindow_GetSelection)	! routine pointer


		! Module Procedures
		CONTAINS
			!Closes the document.
  			INTEGER*4 FUNCTION $IGenericDocument_Close($OBJECT, vSaveChanges, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Close
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vSaveChanges	
				!DEC$ ATTRIBUTES REFERENCE	:: vSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vSaveChanges
				IF (PRESENT(vSaveChanges)) THEN 
					$VAR_vSaveChanges = vSaveChanges
				ELSE
					$VAR_vSaveChanges = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 100	! Add routine table offset
				IGenericDocument_Close_PTR = $VTBL
				$RETURN = IGenericDocument_Close($OBJECT, $VAR_vSaveChanges, pSaved)
				$IGenericDocument_Close = $RETURN
			END FUNCTION $IGenericDocument_Close
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION $IGenericDocument_GetActive($OBJECT, pbActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetActive
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				IGenericDocument_GetActive_PTR = $VTBL
				$RETURN = IGenericDocument_GetActive($OBJECT, pbActive)
				$IGenericDocument_GetActive = $RETURN
			END FUNCTION $IGenericDocument_GetActive
			!Returns the active window for this document.
  			INTEGER*4 FUNCTION $IGenericDocument_GetActiveWindow($OBJECT, ppWindow)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetActiveWindow
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindow	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindow
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IGenericDocument_GetActiveWindow_PTR = $VTBL
				$RETURN = IGenericDocument_GetActiveWindow($OBJECT, ppWindow)
				$IGenericDocument_GetActiveWindow = $RETURN
			END FUNCTION $IGenericDocument_GetActiveWindow
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IGenericDocument_GetApplication($OBJECT, ppApplication)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppApplication	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppApplication
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IGenericDocument_GetApplication_PTR = $VTBL
				$RETURN = IGenericDocument_GetApplication($OBJECT, ppApplication)
				$IGenericDocument_GetApplication = $RETURN
			END FUNCTION $IGenericDocument_GetApplication
			!Returns the name of the document including the path.
  			INTEGER*4 FUNCTION $IGenericDocument_GetFullName($OBJECT, pName)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetFullName
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pName
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pName    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IGenericDocument_GetFullName_PTR = $VTBL
				$RETURN = IGenericDocument_GetFullName($OBJECT, $BSTR_pName)
				$STATUS = ConvertBSTRToString($BSTR_pName, pName)
				CALL SysFreeString($BSTR_pName)
				$IGenericDocument_GetFullName = $RETURN
			END FUNCTION $IGenericDocument_GetFullName
			!Returns the name of the document.
  			INTEGER*4 FUNCTION $IGenericDocument_GetName($OBJECT, pName)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetName
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pName
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pName    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IGenericDocument_GetName_PTR = $VTBL
				$RETURN = IGenericDocument_GetName($OBJECT, $BSTR_pName)
				$STATUS = ConvertBSTRToString($BSTR_pName, pName)
				CALL SysFreeString($BSTR_pName)
				$IGenericDocument_GetName = $RETURN
			END FUNCTION $IGenericDocument_GetName
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IGenericDocument_GetParent($OBJECT, ppParent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppParent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppParent
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IGenericDocument_GetParent_PTR = $VTBL
				$RETURN = IGenericDocument_GetParent($OBJECT, ppParent)
				$IGenericDocument_GetParent = $RETURN
			END FUNCTION $IGenericDocument_GetParent
			!Returns the pathname of the document. Never has a trailing backslash.
  			INTEGER*4 FUNCTION $IGenericDocument_GetPath($OBJECT, pPath)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetPath
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pPath	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pPath
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pPath    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IGenericDocument_GetPath_PTR = $VTBL
				$RETURN = IGenericDocument_GetPath($OBJECT, $BSTR_pPath)
				$STATUS = ConvertBSTRToString($BSTR_pPath, pPath)
				CALL SysFreeString($BSTR_pPath)
				$IGenericDocument_GetPath = $RETURN
			END FUNCTION $IGenericDocument_GetPath
			!Returns/sets whether a document can be changed inside Developer Studio.
  			INTEGER*4 FUNCTION $IGenericDocument_GetReadOnly($OBJECT, pReadOnly)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetReadOnly
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pReadOnly	
				!DEC$ ATTRIBUTES REFERENCE	:: pReadOnly
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IGenericDocument_GetReadOnly_PTR = $VTBL
				$RETURN = IGenericDocument_GetReadOnly($OBJECT, pReadOnly)
				$IGenericDocument_GetReadOnly = $RETURN
			END FUNCTION $IGenericDocument_GetReadOnly
			!Returns False if document has changed since it was last saved.
  			INTEGER*4 FUNCTION $IGenericDocument_GetSaved($OBJECT, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetSaved
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSaved	
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IGenericDocument_GetSaved_PTR = $VTBL
				$RETURN = IGenericDocument_GetSaved($OBJECT, pSaved)
				$IGenericDocument_GetSaved = $RETURN
			END FUNCTION $IGenericDocument_GetSaved
			!Returns a string describing the type of the document. Most documents return 'Generic'.
  			INTEGER*4 FUNCTION $IGenericDocument_GetType($OBJECT, pType)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetType
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pType	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pType
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pType    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IGenericDocument_GetType_PTR = $VTBL
				$RETURN = IGenericDocument_GetType($OBJECT, $BSTR_pType)
				$STATUS = ConvertBSTRToString($BSTR_pType, pType)
				CALL SysFreeString($BSTR_pType)
				$IGenericDocument_GetType = $RETURN
			END FUNCTION $IGenericDocument_GetType
			!Returns a Windows collection containing the windows associated with this document.
  			INTEGER*4 FUNCTION $IGenericDocument_GetWindows($OBJECT, ppWindows)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetWindows
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindows	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindows
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IGenericDocument_GetWindows_PTR = $VTBL
				$RETURN = IGenericDocument_GetWindows($OBJECT, ppWindows)
				$IGenericDocument_GetWindows = $RETURN
			END FUNCTION $IGenericDocument_GetWindows
			!Creates a new window for this document.
  			INTEGER*4 FUNCTION $IGenericDocument_NewWindow($OBJECT, ppWindow)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_NewWindow
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindow	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindow
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				IGenericDocument_NewWindow_PTR = $VTBL
				$RETURN = IGenericDocument_NewWindow($OBJECT, ppWindow)
				$IGenericDocument_NewWindow = $RETURN
			END FUNCTION $IGenericDocument_NewWindow
			!Sends the document to the current printer. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION $IGenericDocument_PrintOut($OBJECT, pSuccess)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_PrintOut
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 96	! Add routine table offset
				IGenericDocument_PrintOut_PTR = $VTBL
				$RETURN = IGenericDocument_PrintOut($OBJECT, pSuccess)
				$IGenericDocument_PrintOut = $RETURN
			END FUNCTION $IGenericDocument_PrintOut
			!Reapplies previous editing actions. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION $IGenericDocument_Redo($OBJECT, pSuccess)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Redo
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 92	! Add routine table offset
				IGenericDocument_Redo_PTR = $VTBL
				$RETURN = IGenericDocument_Redo($OBJECT, pSuccess)
				$IGenericDocument_Redo = $RETURN
			END FUNCTION $IGenericDocument_Redo
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved1($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved1
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 104	! Add routine table offset
				IGenericDocument_Reserved1_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved1($OBJECT)
				$IGenericDocument_Reserved1 = $RETURN
			END FUNCTION $IGenericDocument_Reserved1
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved10($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved10
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 140	! Add routine table offset
				IGenericDocument_Reserved10_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved10($OBJECT)
				$IGenericDocument_Reserved10 = $RETURN
			END FUNCTION $IGenericDocument_Reserved10
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved2($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved2
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 108	! Add routine table offset
				IGenericDocument_Reserved2_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved2($OBJECT)
				$IGenericDocument_Reserved2 = $RETURN
			END FUNCTION $IGenericDocument_Reserved2
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved3($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved3
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 112	! Add routine table offset
				IGenericDocument_Reserved3_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved3($OBJECT)
				$IGenericDocument_Reserved3 = $RETURN
			END FUNCTION $IGenericDocument_Reserved3
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved4($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved4
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 116	! Add routine table offset
				IGenericDocument_Reserved4_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved4($OBJECT)
				$IGenericDocument_Reserved4 = $RETURN
			END FUNCTION $IGenericDocument_Reserved4
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved5($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved5
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 120	! Add routine table offset
				IGenericDocument_Reserved5_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved5($OBJECT)
				$IGenericDocument_Reserved5 = $RETURN
			END FUNCTION $IGenericDocument_Reserved5
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved6($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved6
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 124	! Add routine table offset
				IGenericDocument_Reserved6_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved6($OBJECT)
				$IGenericDocument_Reserved6 = $RETURN
			END FUNCTION $IGenericDocument_Reserved6
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved7($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved7
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 128	! Add routine table offset
				IGenericDocument_Reserved7_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved7($OBJECT)
				$IGenericDocument_Reserved7 = $RETURN
			END FUNCTION $IGenericDocument_Reserved7
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved8($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved8
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 132	! Add routine table offset
				IGenericDocument_Reserved8_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved8($OBJECT)
				$IGenericDocument_Reserved8 = $RETURN
			END FUNCTION $IGenericDocument_Reserved8
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved9($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved9
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 136	! Add routine table offset
				IGenericDocument_Reserved9_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved9($OBJECT)
				$IGenericDocument_Reserved9 = $RETURN
			END FUNCTION $IGenericDocument_Reserved9
			!Saves the document to disk.
  			INTEGER*4 FUNCTION $IGenericDocument_Save($OBJECT, vFilename, vBoolPrompt, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Save
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vFilename	
				!DEC$ ATTRIBUTES REFERENCE	:: vFilename
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vBoolPrompt	
				!DEC$ ATTRIBUTES REFERENCE	:: vBoolPrompt
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vFilename
				TYPE (VARIANT) :: $VAR_vBoolPrompt
				IF (PRESENT(vFilename)) THEN 
					$VAR_vFilename = vFilename
				ELSE
					$VAR_vFilename = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(vBoolPrompt)) THEN 
					$VAR_vBoolPrompt = vBoolPrompt
				ELSE
					$VAR_vBoolPrompt = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				IGenericDocument_Save_PTR = $VTBL
				$RETURN = IGenericDocument_Save($OBJECT, $VAR_vFilename, $VAR_vBoolPrompt, pSaved)
				$IGenericDocument_Save = $RETURN
			END FUNCTION $IGenericDocument_Save
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION $IGenericDocument_SetActive($OBJECT, pbActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_SetActive
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				IGenericDocument_SetActive_PTR = $VTBL
				$RETURN = IGenericDocument_SetActive($OBJECT, pbActive)
				$IGenericDocument_SetActive = $RETURN
			END FUNCTION $IGenericDocument_SetActive
			!Returns/sets whether a document can be changed inside Developer Studio.
  			INTEGER*4 FUNCTION $IGenericDocument_SetReadOnly($OBJECT, pReadOnly)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_SetReadOnly
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pReadOnly	
				!DEC$ ATTRIBUTES REFERENCE	:: pReadOnly
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IGenericDocument_SetReadOnly_PTR = $VTBL
				$RETURN = IGenericDocument_SetReadOnly($OBJECT, pReadOnly)
				$IGenericDocument_SetReadOnly = $RETURN
			END FUNCTION $IGenericDocument_SetReadOnly
			!Reverses previous editing actions. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION $IGenericDocument_Undo($OBJECT, pSuccess)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Undo
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 88	! Add routine table offset
				IGenericDocument_Undo_PTR = $VTBL
				$RETURN = IGenericDocument_Undo($OBJECT, pSuccess)
				$IGenericDocument_Undo = $RETURN
			END FUNCTION $IGenericDocument_Undo
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IGenericProject_GetApplication($OBJECT, Application)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Application	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Application
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IGenericProject_GetApplication_PTR = $VTBL
				$RETURN = IGenericProject_GetApplication($OBJECT, Application)
				$IGenericProject_GetApplication = $RETURN
			END FUNCTION $IGenericProject_GetApplication
			!Returns the name of the project including its path.
  			INTEGER*4 FUNCTION $IGenericProject_GetFullName($OBJECT, Name)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_GetFullName
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_Name    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IGenericProject_GetFullName_PTR = $VTBL
				$RETURN = IGenericProject_GetFullName($OBJECT, $BSTR_Name)
				$STATUS = ConvertBSTRToString($BSTR_Name, Name)
				CALL SysFreeString($BSTR_Name)
				$IGenericProject_GetFullName = $RETURN
			END FUNCTION $IGenericProject_GetFullName
			!Returns the name of the project.
  			INTEGER*4 FUNCTION $IGenericProject_GetName($OBJECT, Name)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_GetName
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_Name    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IGenericProject_GetName_PTR = $VTBL
				$RETURN = IGenericProject_GetName($OBJECT, $BSTR_Name)
				$STATUS = ConvertBSTRToString($BSTR_Name, Name)
				CALL SysFreeString($BSTR_Name)
				$IGenericProject_GetName = $RETURN
			END FUNCTION $IGenericProject_GetName
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IGenericProject_GetParent($OBJECT, Parent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Parent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Parent
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IGenericProject_GetParent_PTR = $VTBL
				$RETURN = IGenericProject_GetParent($OBJECT, Parent)
				$IGenericProject_GetParent = $RETURN
			END FUNCTION $IGenericProject_GetParent
			!Returns a string representing the type of the project.
  			INTEGER*4 FUNCTION $IGenericProject_GetType($OBJECT, pType)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_GetType
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pType	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pType
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pType    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IGenericProject_GetType_PTR = $VTBL
				$RETURN = IGenericProject_GetType($OBJECT, $BSTR_pType)
				$STATUS = ConvertBSTRToString($BSTR_pType, pType)
				CALL SysFreeString($BSTR_pType)
				$IGenericProject_GetType = $RETURN
			END FUNCTION $IGenericProject_GetType
  			INTEGER*4 FUNCTION $IGenericProject_Reserved1($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved1
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IGenericProject_Reserved1_PTR = $VTBL
				$RETURN = IGenericProject_Reserved1($OBJECT)
				$IGenericProject_Reserved1 = $RETURN
			END FUNCTION $IGenericProject_Reserved1
  			INTEGER*4 FUNCTION $IGenericProject_Reserved10($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved10
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				IGenericProject_Reserved10_PTR = $VTBL
				$RETURN = IGenericProject_Reserved10($OBJECT)
				$IGenericProject_Reserved10 = $RETURN
			END FUNCTION $IGenericProject_Reserved10
  			INTEGER*4 FUNCTION $IGenericProject_Reserved2($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved2
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IGenericProject_Reserved2_PTR = $VTBL
				$RETURN = IGenericProject_Reserved2($OBJECT)
				$IGenericProject_Reserved2 = $RETURN
			END FUNCTION $IGenericProject_Reserved2
  			INTEGER*4 FUNCTION $IGenericProject_Reserved3($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved3
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IGenericProject_Reserved3_PTR = $VTBL
				$RETURN = IGenericProject_Reserved3($OBJECT)
				$IGenericProject_Reserved3 = $RETURN
			END FUNCTION $IGenericProject_Reserved3
  			INTEGER*4 FUNCTION $IGenericProject_Reserved4($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved4
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IGenericProject_Reserved4_PTR = $VTBL
				$RETURN = IGenericProject_Reserved4($OBJECT)
				$IGenericProject_Reserved4 = $RETURN
			END FUNCTION $IGenericProject_Reserved4
  			INTEGER*4 FUNCTION $IGenericProject_Reserved5($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved5
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IGenericProject_Reserved5_PTR = $VTBL
				$RETURN = IGenericProject_Reserved5($OBJECT)
				$IGenericProject_Reserved5 = $RETURN
			END FUNCTION $IGenericProject_Reserved5
  			INTEGER*4 FUNCTION $IGenericProject_Reserved6($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved6
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IGenericProject_Reserved6_PTR = $VTBL
				$RETURN = IGenericProject_Reserved6($OBJECT)
				$IGenericProject_Reserved6 = $RETURN
			END FUNCTION $IGenericProject_Reserved6
  			INTEGER*4 FUNCTION $IGenericProject_Reserved7($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved7
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				IGenericProject_Reserved7_PTR = $VTBL
				$RETURN = IGenericProject_Reserved7($OBJECT)
				$IGenericProject_Reserved7 = $RETURN
			END FUNCTION $IGenericProject_Reserved7
  			INTEGER*4 FUNCTION $IGenericProject_Reserved8($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved8
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				IGenericProject_Reserved8_PTR = $VTBL
				$RETURN = IGenericProject_Reserved8($OBJECT)
				$IGenericProject_Reserved8 = $RETURN
			END FUNCTION $IGenericProject_Reserved8
  			INTEGER*4 FUNCTION $IGenericProject_Reserved9($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved9
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				IGenericProject_Reserved9_PTR = $VTBL
				$RETURN = IGenericProject_Reserved9($OBJECT)
				$IGenericProject_Reserved9 = $RETURN
			END FUNCTION $IGenericProject_Reserved9
			!Close the window.
  			INTEGER*4 FUNCTION $IGenericWindow_Close($OBJECT, boolSaveChanges, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Close
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: boolSaveChanges	
				!DEC$ ATTRIBUTES REFERENCE	:: boolSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 104	! Add routine table offset
				IGenericWindow_Close_PTR = $VTBL
				$RETURN = IGenericWindow_Close($OBJECT, boolSaveChanges, pSaved)
				$IGenericWindow_Close = $RETURN
			END FUNCTION $IGenericWindow_Close
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetActive($OBJECT, pbActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetActive
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IGenericWindow_GetActive_PTR = $VTBL
				$RETURN = IGenericWindow_GetActive($OBJECT, pbActive)
				$IGenericWindow_GetActive = $RETURN
			END FUNCTION $IGenericWindow_GetActive
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IGenericWindow_GetApplication($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 96	! Add routine table offset
				IGenericWindow_GetApplication_PTR = $VTBL
				$RETURN = IGenericWindow_GetApplication($OBJECT, ppDispatch)
				$IGenericWindow_GetApplication = $RETURN
			END FUNCTION $IGenericWindow_GetApplication
			!Returns the caption of a window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetCaption($OBJECT, pbstrCaption)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetCaption
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbstrCaption	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbstrCaption
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pbstrCaption    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IGenericWindow_GetCaption_PTR = $VTBL
				$RETURN = IGenericWindow_GetCaption($OBJECT, $BSTR_pbstrCaption)
				$STATUS = ConvertBSTRToString($BSTR_pbstrCaption, pbstrCaption)
				CALL SysFreeString($BSTR_pbstrCaption)
				$IGenericWindow_GetCaption = $RETURN
			END FUNCTION $IGenericWindow_GetCaption
			!Returns/sets the height of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetHeight($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetHeight
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IGenericWindow_GetHeight_PTR = $VTBL
				$RETURN = IGenericWindow_GetHeight($OBJECT, plVal)
				$IGenericWindow_GetHeight = $RETURN
			END FUNCTION $IGenericWindow_GetHeight
			!Returns the one-based ordinal of a window in the Windows collection.
  			INTEGER*4 FUNCTION $IGenericWindow_GetIndex($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetIndex
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				IGenericWindow_GetIndex_PTR = $VTBL
				$RETURN = IGenericWindow_GetIndex($OBJECT, plVal)
				$IGenericWindow_GetIndex = $RETURN
			END FUNCTION $IGenericWindow_GetIndex
			!Returns/sets the coordinate for the left edge of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetLeft($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetLeft
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IGenericWindow_GetLeft_PTR = $VTBL
				$RETURN = IGenericWindow_GetLeft($OBJECT, plVal)
				$IGenericWindow_GetLeft = $RETURN
			END FUNCTION $IGenericWindow_GetLeft
			!Returns the next window in the tab sequence.
  			INTEGER*4 FUNCTION $IGenericWindow_GetNext($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetNext
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				IGenericWindow_GetNext_PTR = $VTBL
				$RETURN = IGenericWindow_GetNext($OBJECT, ppDispatch)
				$IGenericWindow_GetNext = $RETURN
			END FUNCTION $IGenericWindow_GetNext
			!Returns the document associated with this window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetParent($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 100	! Add routine table offset
				IGenericWindow_GetParent_PTR = $VTBL
				$RETURN = IGenericWindow_GetParent($OBJECT, ppDispatch)
				$IGenericWindow_GetParent = $RETURN
			END FUNCTION $IGenericWindow_GetParent
			!Returns the previous window in the shift-tab sequence.
  			INTEGER*4 FUNCTION $IGenericWindow_GetPrevious($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetPrevious
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				IGenericWindow_GetPrevious_PTR = $VTBL
				$RETURN = IGenericWindow_GetPrevious($OBJECT, ppDispatch)
				$IGenericWindow_GetPrevious = $RETURN
			END FUNCTION $IGenericWindow_GetPrevious
			!Returns/sets the coordinate for the top of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetTop($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetTop
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IGenericWindow_GetTop_PTR = $VTBL
				$RETURN = IGenericWindow_GetTop($OBJECT, plVal)
				$IGenericWindow_GetTop = $RETURN
			END FUNCTION $IGenericWindow_GetTop
			!Returns a string describing the type of the window. Most windows return 'Generic'.
  			INTEGER*4 FUNCTION $IGenericWindow_GetType($OBJECT, pbstrCaption)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetType
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbstrCaption	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbstrCaption
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pbstrCaption    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IGenericWindow_GetType_PTR = $VTBL
				$RETURN = IGenericWindow_GetType($OBJECT, $BSTR_pbstrCaption)
				$STATUS = ConvertBSTRToString($BSTR_pbstrCaption, pbstrCaption)
				CALL SysFreeString($BSTR_pbstrCaption)
				$IGenericWindow_GetType = $RETURN
			END FUNCTION $IGenericWindow_GetType
			!Returns/sets the width of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetWidth($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetWidth
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				IGenericWindow_GetWidth_PTR = $VTBL
				$RETURN = IGenericWindow_GetWidth($OBJECT, plVal)
				$IGenericWindow_GetWidth = $RETURN
			END FUNCTION $IGenericWindow_GetWidth
			!Returns the state of the window or maximize, minimize, or restore the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetWindowState($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetWindowState
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: plVal	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 92	! Add routine table offset
				IGenericWindow_GetWindowState_PTR = $VTBL
				$RETURN = IGenericWindow_GetWindowState($OBJECT, plVal)
				$IGenericWindow_GetWindowState = $RETURN
			END FUNCTION $IGenericWindow_GetWindowState
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved1($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved1
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 108	! Add routine table offset
				IGenericWindow_Reserved1_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved1($OBJECT)
				$IGenericWindow_Reserved1 = $RETURN
			END FUNCTION $IGenericWindow_Reserved1
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved10($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved10
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 144	! Add routine table offset
				IGenericWindow_Reserved10_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved10($OBJECT)
				$IGenericWindow_Reserved10 = $RETURN
			END FUNCTION $IGenericWindow_Reserved10
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved2($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved2
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 112	! Add routine table offset
				IGenericWindow_Reserved2_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved2($OBJECT)
				$IGenericWindow_Reserved2 = $RETURN
			END FUNCTION $IGenericWindow_Reserved2
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved3($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved3
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 116	! Add routine table offset
				IGenericWindow_Reserved3_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved3($OBJECT)
				$IGenericWindow_Reserved3 = $RETURN
			END FUNCTION $IGenericWindow_Reserved3
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved4($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved4
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 120	! Add routine table offset
				IGenericWindow_Reserved4_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved4($OBJECT)
				$IGenericWindow_Reserved4 = $RETURN
			END FUNCTION $IGenericWindow_Reserved4
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved5($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved5
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 124	! Add routine table offset
				IGenericWindow_Reserved5_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved5($OBJECT)
				$IGenericWindow_Reserved5 = $RETURN
			END FUNCTION $IGenericWindow_Reserved5
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved6($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved6
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 128	! Add routine table offset
				IGenericWindow_Reserved6_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved6($OBJECT)
				$IGenericWindow_Reserved6 = $RETURN
			END FUNCTION $IGenericWindow_Reserved6
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved7($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved7
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 132	! Add routine table offset
				IGenericWindow_Reserved7_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved7($OBJECT)
				$IGenericWindow_Reserved7 = $RETURN
			END FUNCTION $IGenericWindow_Reserved7
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved8($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved8
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 136	! Add routine table offset
				IGenericWindow_Reserved8_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved8($OBJECT)
				$IGenericWindow_Reserved8 = $RETURN
			END FUNCTION $IGenericWindow_Reserved8
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved9($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved9
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 140	! Add routine table offset
				IGenericWindow_Reserved9_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved9($OBJECT)
				$IGenericWindow_Reserved9 = $RETURN
			END FUNCTION $IGenericWindow_Reserved9
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetActive($OBJECT, pbActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetActive
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IGenericWindow_SetActive_PTR = $VTBL
				$RETURN = IGenericWindow_SetActive($OBJECT, pbActive)
				$IGenericWindow_SetActive = $RETURN
			END FUNCTION $IGenericWindow_SetActive
			!Returns/sets the height of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetHeight($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetHeight
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IGenericWindow_SetHeight_PTR = $VTBL
				$RETURN = IGenericWindow_SetHeight($OBJECT, plVal)
				$IGenericWindow_SetHeight = $RETURN
			END FUNCTION $IGenericWindow_SetHeight
			!Returns/sets the coordinate for the left edge of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetLeft($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetLeft
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IGenericWindow_SetLeft_PTR = $VTBL
				$RETURN = IGenericWindow_SetLeft($OBJECT, plVal)
				$IGenericWindow_SetLeft = $RETURN
			END FUNCTION $IGenericWindow_SetLeft
			!Returns/sets the coordinate for the top of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetTop($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetTop
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IGenericWindow_SetTop_PTR = $VTBL
				$RETURN = IGenericWindow_SetTop($OBJECT, plVal)
				$IGenericWindow_SetTop = $RETURN
			END FUNCTION $IGenericWindow_SetTop
			!Returns/sets the width of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetWidth($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetWidth
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IGenericWindow_SetWidth_PTR = $VTBL
				$RETURN = IGenericWindow_SetWidth($OBJECT, plVal)
				$IGenericWindow_SetWidth = $RETURN
			END FUNCTION $IGenericWindow_SetWidth
			!Returns the state of the window or maximize, minimize, or restore the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetWindowState($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetWindowState
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: plVal	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 88	! Add routine table offset
				IGenericWindow_SetWindowState_PTR = $VTBL
				$RETURN = IGenericWindow_SetWindowState($OBJECT, plVal)
				$IGenericWindow_SetWindowState = $RETURN
			END FUNCTION $IGenericWindow_SetWindowState
			!Removes all unnamed bookmarks in a document.
  			INTEGER*4 FUNCTION $ITextDocument_ClearBookmarks($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextDocument_ClearBookmarks
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 176	! Add routine table offset
				ITextDocument_ClearBookmarks_PTR = $VTBL
				$RETURN = ITextDocument_ClearBookmarks($OBJECT)
				$ITextDocument_ClearBookmarks = $RETURN
			END FUNCTION $ITextDocument_ClearBookmarks
			!Gets or sets the number of columns in one indent.
  			INTEGER*4 FUNCTION $ITextDocument_GetIndentSize($OBJECT, pSize)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextDocument_GetIndentSize
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pSize	
				!DEC$ ATTRIBUTES REFERENCE	:: pSize
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 152	! Add routine table offset
				ITextDocument_GetIndentSize_PTR = $VTBL
				$RETURN = ITextDocument_GetIndentSize($OBJECT, pSize)
				$ITextDocument_GetIndentSize = $RETURN
			END FUNCTION $ITextDocument_GetIndentSize
			!Gets or sets the programming language assumed for a document.
  			INTEGER*4 FUNCTION $ITextDocument_GetLanguage($OBJECT, pLanguage)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextDocument_GetLanguage
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pLanguage	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pLanguage
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pLanguage    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 168	! Add routine table offset
				ITextDocument_GetLanguage_PTR = $VTBL
				$RETURN = ITextDocument_GetLanguage($OBJECT, $BSTR_pLanguage)
				$STATUS = ConvertBSTRToString($BSTR_pLanguage, pLanguage)
				CALL SysFreeString($BSTR_pLanguage)
				$ITextDocument_GetLanguage = $RETURN
			END FUNCTION $ITextDocument_GetLanguage
			!Gets the TextSelection object for the active view.
  			INTEGER*4 FUNCTION $ITextDocument_GetSelection($OBJECT, ppSelection)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextDocument_GetSelection
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppSelection	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppSelection
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 144	! Add routine table offset
				ITextDocument_GetSelection_PTR = $VTBL
				$RETURN = ITextDocument_GetSelection($OBJECT, ppSelection)
				$ITextDocument_GetSelection = $RETURN
			END FUNCTION $ITextDocument_GetSelection
			!Gets or sets the number of columns in a tab character.
  			INTEGER*4 FUNCTION $ITextDocument_GetTabSize($OBJECT, pSize)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextDocument_GetTabSize
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: pSize	
				!DEC$ ATTRIBUTES REFERENCE	:: pSize
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 160	! Add routine table offset
				ITextDocument_GetTabSize_PTR = $VTBL
				$RETURN = ITextDocument_GetTabSize($OBJECT, pSize)
				$ITextDocument_GetTabSize = $RETURN
			END FUNCTION $ITextDocument_GetTabSize
			!Marks lines containing the specified text.
  			INTEGER*4 FUNCTION $ITextDocument_MarkText($OBJECT, FindText, Flags, pbRetVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextDocument_MarkText
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: FindText	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: FindText
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Flags	
				!DEC$ ATTRIBUTES REFERENCE	:: Flags
				LOGICAL*2, INTENT(OUT)	:: pbRetVal	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRetVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_FindText    ! BSTR
				TYPE (VARIANT) :: $VAR_Flags
				$BSTR_FindText = ConvertStringToBSTR(FindText)
				IF (PRESENT(Flags)) THEN 
					$VAR_Flags = Flags
				ELSE
					$VAR_Flags = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 180	! Add routine table offset
				ITextDocument_MarkText_PTR = $VTBL
				$RETURN = ITextDocument_MarkText($OBJECT, $BSTR_FindText, $VAR_Flags, pbRetVal)
				CALL SysFreeString($BSTR_FindText)
				$ITextDocument_MarkText = $RETURN
			END FUNCTION $ITextDocument_MarkText
			!Replaces all instances of one string or regular expression with another.
  			INTEGER*4 FUNCTION $ITextDocument_ReplaceText($OBJECT, FindText, ReplaceText, Flags, pbRetVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextDocument_ReplaceText
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: FindText	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: FindText
				CHARACTER*(*), INTENT(IN)	:: ReplaceText	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: ReplaceText
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Flags	
				!DEC$ ATTRIBUTES REFERENCE	:: Flags
				LOGICAL*2, INTENT(OUT)	:: pbRetVal	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRetVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_FindText    ! BSTR
				INTEGER(INT_PTR_KIND()) $BSTR_ReplaceText    ! BSTR
				TYPE (VARIANT) :: $VAR_Flags
				$BSTR_FindText = ConvertStringToBSTR(FindText)
				$BSTR_ReplaceText = ConvertStringToBSTR(ReplaceText)
				IF (PRESENT(Flags)) THEN 
					$VAR_Flags = Flags
				ELSE
					$VAR_Flags = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 172	! Add routine table offset
				ITextDocument_ReplaceText_PTR = $VTBL
				$RETURN = ITextDocument_ReplaceText($OBJECT, $BSTR_FindText, $BSTR_ReplaceText, $VAR_Flags, pbRetVal)
				CALL SysFreeString($BSTR_FindText)
				CALL SysFreeString($BSTR_ReplaceText)
				$ITextDocument_ReplaceText = $RETURN
			END FUNCTION $ITextDocument_ReplaceText
			!Gets or sets the number of columns in one indent.
  			INTEGER*4 FUNCTION $ITextDocument_SetIndentSize($OBJECT, pSize)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextDocument_SetIndentSize
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pSize	
				!DEC$ ATTRIBUTES REFERENCE	:: pSize
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 148	! Add routine table offset
				ITextDocument_SetIndentSize_PTR = $VTBL
				$RETURN = ITextDocument_SetIndentSize($OBJECT, pSize)
				$ITextDocument_SetIndentSize = $RETURN
			END FUNCTION $ITextDocument_SetIndentSize
			!Gets or sets the programming language assumed for a document.
  			INTEGER*4 FUNCTION $ITextDocument_SetLanguage($OBJECT, pLanguage)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextDocument_SetLanguage
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: pLanguage	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pLanguage
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pLanguage    ! BSTR
				$BSTR_pLanguage = ConvertStringToBSTR(pLanguage)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 164	! Add routine table offset
				ITextDocument_SetLanguage_PTR = $VTBL
				$RETURN = ITextDocument_SetLanguage($OBJECT, $BSTR_pLanguage)
				CALL SysFreeString($BSTR_pLanguage)
				$ITextDocument_SetLanguage = $RETURN
			END FUNCTION $ITextDocument_SetLanguage
			!Gets or sets the number of columns in a tab character.
  			INTEGER*4 FUNCTION $ITextDocument_SetTabSize($OBJECT, pSize)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextDocument_SetTabSize
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: pSize	
				!DEC$ ATTRIBUTES REFERENCE	:: pSize
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 156	! Add routine table offset
				ITextDocument_SetTabSize_PTR = $VTBL
				$RETURN = ITextDocument_SetTabSize($OBJECT, pSize)
				$ITextDocument_SetTabSize = $RETURN
			END FUNCTION $ITextDocument_SetTabSize
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $ITextEditor_GetApplication($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextEditor_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				ITextEditor_GetApplication_PTR = $VTBL
				$RETURN = ITextEditor_GetApplication($OBJECT, ppDispatch)
				$ITextEditor_GetApplication = $RETURN
			END FUNCTION $ITextEditor_GetApplication
			!Gets or sets the emulation mode of the Developer Studio text editor.
  			INTEGER*4 FUNCTION $ITextEditor_GetEmulation($OBJECT, plEmulation)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextEditor_GetEmulation
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plEmulation	
				!DEC$ ATTRIBUTES REFERENCE	:: plEmulation
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				ITextEditor_GetEmulation_PTR = $VTBL
				$RETURN = ITextEditor_GetEmulation($OBJECT, plEmulation)
				$ITextEditor_GetEmulation = $RETURN
			END FUNCTION $ITextEditor_GetEmulation
			!Gets or sets whether the editor is in overtype mode.
  			INTEGER*4 FUNCTION $ITextEditor_GetOvertype($OBJECT, pbOvertype)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextEditor_GetOvertype
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbOvertype	
				!DEC$ ATTRIBUTES REFERENCE	:: pbOvertype
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				ITextEditor_GetOvertype_PTR = $VTBL
				$RETURN = ITextEditor_GetOvertype($OBJECT, pbOvertype)
				$ITextEditor_GetOvertype = $RETURN
			END FUNCTION $ITextEditor_GetOvertype
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $ITextEditor_GetParent($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextEditor_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				ITextEditor_GetParent_PTR = $VTBL
				$RETURN = ITextEditor_GetParent($OBJECT, ppDispatch)
				$ITextEditor_GetParent = $RETURN
			END FUNCTION $ITextEditor_GetParent
			!Gets or sets the visibility of tabs and spaces in all open text documents.
  			INTEGER*4 FUNCTION $ITextEditor_GetVisibleWhitespace($OBJECT, pbVisible)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextEditor_GetVisibleWhitespace
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbVisible	
				!DEC$ ATTRIBUTES REFERENCE	:: pbVisible
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				ITextEditor_GetVisibleWhitespace_PTR = $VTBL
				$RETURN = ITextEditor_GetVisibleWhitespace($OBJECT, pbVisible)
				$ITextEditor_GetVisibleWhitespace = $RETURN
			END FUNCTION $ITextEditor_GetVisibleWhitespace
			!Gets or sets the emulation mode of the Developer Studio text editor.
  			INTEGER*4 FUNCTION $ITextEditor_SetEmulation($OBJECT, plEmulation)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextEditor_SetEmulation
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plEmulation	
				!DEC$ ATTRIBUTES REFERENCE	:: plEmulation
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				ITextEditor_SetEmulation_PTR = $VTBL
				$RETURN = ITextEditor_SetEmulation($OBJECT, plEmulation)
				$ITextEditor_SetEmulation = $RETURN
			END FUNCTION $ITextEditor_SetEmulation
			!Gets or sets whether the editor is in overtype mode.
  			INTEGER*4 FUNCTION $ITextEditor_SetOvertype($OBJECT, pbOvertype)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextEditor_SetOvertype
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbOvertype	
				!DEC$ ATTRIBUTES REFERENCE	:: pbOvertype
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				ITextEditor_SetOvertype_PTR = $VTBL
				$RETURN = ITextEditor_SetOvertype($OBJECT, pbOvertype)
				$ITextEditor_SetOvertype = $RETURN
			END FUNCTION $ITextEditor_SetOvertype
			!Gets or sets the visibility of tabs and spaces in all open text documents.
  			INTEGER*4 FUNCTION $ITextEditor_SetVisibleWhitespace($OBJECT, pbVisible)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextEditor_SetVisibleWhitespace
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbVisible	
				!DEC$ ATTRIBUTES REFERENCE	:: pbVisible
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				ITextEditor_SetVisibleWhitespace_PTR = $VTBL
				$RETURN = ITextEditor_SetVisibleWhitespace($OBJECT, pbVisible)
				$ITextEditor_SetVisibleWhitespace = $RETURN
			END FUNCTION $ITextEditor_SetVisibleWhitespace
			!Performs the function of the Backspace key.
  			INTEGER*4 FUNCTION $ITextSelection_Backspace($OBJECT, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_Backspace
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				ITextSelection_Backspace_PTR = $VTBL
				$RETURN = ITextSelection_Backspace($OBJECT, $VAR_Count)
				$ITextSelection_Backspace = $RETURN
			END FUNCTION $ITextSelection_Backspace
			!Cancels a selection.
  			INTEGER*4 FUNCTION $ITextSelection_Cancel($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_Cancel
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 164	! Add routine table offset
				ITextSelection_Cancel_PTR = $VTBL
				$RETURN = ITextSelection_Cancel($OBJECT)
				$ITextSelection_Cancel = $RETURN
			END FUNCTION $ITextSelection_Cancel
			!Changes the case of a text selection.
  			INTEGER*4 FUNCTION $ITextSelection_ChangeCase($OBJECT, Type)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_ChangeCase
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: Type	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: Type
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 156	! Add routine table offset
				ITextSelection_ChangeCase_PTR = $VTBL
				$RETURN = ITextSelection_ChangeCase($OBJECT, Type)
				$ITextSelection_ChangeCase = $RETURN
			END FUNCTION $ITextSelection_ChangeCase
			!Moves the insertion point one character to the left.
  			INTEGER*4 FUNCTION $ITextSelection_CharLeft($OBJECT, Extend, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_CharLeft
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 112	! Add routine table offset
				ITextSelection_CharLeft_PTR = $VTBL
				$RETURN = ITextSelection_CharLeft($OBJECT, $VAR_Extend, $VAR_Count)
				$ITextSelection_CharLeft = $RETURN
			END FUNCTION $ITextSelection_CharLeft
			!Moves the insertion point one character to the right.
  			INTEGER*4 FUNCTION $ITextSelection_CharRight($OBJECT, Extend, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_CharRight
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 116	! Add routine table offset
				ITextSelection_CharRight_PTR = $VTBL
				$RETURN = ITextSelection_CharRight($OBJECT, $VAR_Extend, $VAR_Count)
				$ITextSelection_CharRight = $RETURN
			END FUNCTION $ITextSelection_CharRight
			!Removes all unnamed bookmarks in a document.
  			INTEGER*4 FUNCTION $ITextSelection_ClearBookmark($OBJECT, pbRet)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_ClearBookmark
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRet	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRet
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 192	! Add routine table offset
				ITextSelection_ClearBookmark_PTR = $VTBL
				$RETURN = ITextSelection_ClearBookmark($OBJECT, pbRet)
				$ITextSelection_ClearBookmark = $RETURN
			END FUNCTION $ITextSelection_ClearBookmark
			!Copies the selected text to the Clipboard.
  			INTEGER*4 FUNCTION $ITextSelection_Copy($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_Copy
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				ITextSelection_Copy_PTR = $VTBL
				$RETURN = ITextSelection_Copy($OBJECT)
				$ITextSelection_Copy = $RETURN
			END FUNCTION $ITextSelection_Copy
			!Removes the selected text and adds it to the Clipboard.
  			INTEGER*4 FUNCTION $ITextSelection_Cut($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_Cut
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				ITextSelection_Cut_PTR = $VTBL
				$RETURN = ITextSelection_Cut($OBJECT)
				$ITextSelection_Cut = $RETURN
			END FUNCTION $ITextSelection_Cut
			!Performs the function of the Delete key.
  			INTEGER*4 FUNCTION $ITextSelection_Delete($OBJECT, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_Delete
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				ITextSelection_Delete_PTR = $VTBL
				$RETURN = ITextSelection_Delete($OBJECT, $VAR_Count)
				$ITextSelection_Delete = $RETURN
			END FUNCTION $ITextSelection_Delete
			!Deletes white space adjacent to the insertion point.
  			INTEGER*4 FUNCTION $ITextSelection_DeleteWhitespace($OBJECT, Direction)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_DeleteWhitespace
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Direction	
				!DEC$ ATTRIBUTES REFERENCE	:: Direction
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Direction
				IF (PRESENT(Direction)) THEN 
					$VAR_Direction = Direction
				ELSE
					$VAR_Direction = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 160	! Add routine table offset
				ITextSelection_DeleteWhitespace_PTR = $VTBL
				$RETURN = ITextSelection_DeleteWhitespace($OBJECT, $VAR_Direction)
				$ITextSelection_DeleteWhitespace = $RETURN
			END FUNCTION $ITextSelection_DeleteWhitespace
			!Replaces all instances of one string with another.
  			INTEGER*4 FUNCTION $ITextSelection_DestructiveInsert($OBJECT, szText)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_DestructiveInsert
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: szText	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szText
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_szText    ! BSTR
				$BSTR_szText = ConvertStringToBSTR(szText)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 204	! Add routine table offset
				ITextSelection_DestructiveInsert_PTR = $VTBL
				$RETURN = ITextSelection_DestructiveInsert($OBJECT, $BSTR_szText)
				CALL SysFreeString($BSTR_szText)
				$ITextSelection_DestructiveInsert = $RETURN
			END FUNCTION $ITextSelection_DestructiveInsert
			!Moves the insertion point to the end of the document.
  			INTEGER*4 FUNCTION $ITextSelection_EndOfDocument($OBJECT, Extend)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_EndOfDocument
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 88	! Add routine table offset
				ITextSelection_EndOfDocument_PTR = $VTBL
				$RETURN = ITextSelection_EndOfDocument($OBJECT, $VAR_Extend)
				$ITextSelection_EndOfDocument = $RETURN
			END FUNCTION $ITextSelection_EndOfDocument
			!Moves the insertion point to the end of a line.
  			INTEGER*4 FUNCTION $ITextSelection_EndOfLine($OBJECT, Extend)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_EndOfLine
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 144	! Add routine table offset
				ITextSelection_EndOfLine_PTR = $VTBL
				$RETURN = ITextSelection_EndOfLine($OBJECT, $VAR_Extend)
				$ITextSelection_EndOfLine = $RETURN
			END FUNCTION $ITextSelection_EndOfLine
			!Finds the next occurrence of the provided text.
  			INTEGER*4 FUNCTION $ITextSelection_FindText($OBJECT, FindString, Flags, pbRet)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_FindText
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: FindString	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: FindString
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Flags	
				!DEC$ ATTRIBUTES REFERENCE	:: Flags
				LOGICAL*2, INTENT(OUT)	:: pbRet	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRet
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_FindString    ! BSTR
				TYPE (VARIANT) :: $VAR_Flags
				$BSTR_FindString = ConvertStringToBSTR(FindString)
				IF (PRESENT(Flags)) THEN 
					$VAR_Flags = Flags
				ELSE
					$VAR_Flags = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 176	! Add routine table offset
				ITextSelection_FindText_PTR = $VTBL
				$RETURN = ITextSelection_FindText($OBJECT, $BSTR_FindString, $VAR_Flags, pbRet)
				CALL SysFreeString($BSTR_FindString)
				$ITextSelection_FindText = $RETURN
			END FUNCTION $ITextSelection_FindText
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $ITextSelection_GetApplication($OBJECT, ppApp)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppApp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppApp
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				ITextSelection_GetApplication_PTR = $VTBL
				$RETURN = ITextSelection_GetApplication($OBJECT, ppApp)
				$ITextSelection_GetApplication = $RETURN
			END FUNCTION $ITextSelection_GetApplication
			!Gets the line number of the bottom of the selection.
  			INTEGER*4 FUNCTION $ITextSelection_GetBottomLine($OBJECT, plLine)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_GetBottomLine
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plLine	
				!DEC$ ATTRIBUTES REFERENCE	:: plLine
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				ITextSelection_GetBottomLine_PTR = $VTBL
				$RETURN = ITextSelection_GetBottomLine($OBJECT, plLine)
				$ITextSelection_GetBottomLine = $RETURN
			END FUNCTION $ITextSelection_GetBottomLine
			!Gets the column where the insertion point is located.
  			INTEGER*4 FUNCTION $ITextSelection_GetCurrentColumn($OBJECT, plCol)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_GetCurrentColumn
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plCol	
				!DEC$ ATTRIBUTES REFERENCE	:: plCol
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				ITextSelection_GetCurrentColumn_PTR = $VTBL
				$RETURN = ITextSelection_GetCurrentColumn($OBJECT, plCol)
				$ITextSelection_GetCurrentColumn = $RETURN
			END FUNCTION $ITextSelection_GetCurrentColumn
			!Gets the line where the insertion point is located.
  			INTEGER*4 FUNCTION $ITextSelection_GetCurrentLine($OBJECT, plLine)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_GetCurrentLine
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plLine	
				!DEC$ ATTRIBUTES REFERENCE	:: plLine
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				ITextSelection_GetCurrentLine_PTR = $VTBL
				$RETURN = ITextSelection_GetCurrentLine($OBJECT, plLine)
				$ITextSelection_GetCurrentLine = $RETURN
			END FUNCTION $ITextSelection_GetCurrentLine
			!Gets the document object for this selection.
  			INTEGER*4 FUNCTION $ITextSelection_GetParent($OBJECT, ppParent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppParent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppParent
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				ITextSelection_GetParent_PTR = $VTBL
				$RETURN = ITextSelection_GetParent($OBJECT, ppParent)
				$ITextSelection_GetParent = $RETURN
			END FUNCTION $ITextSelection_GetParent
			!Represents the currently selected text.
  			INTEGER*4 FUNCTION $ITextSelection_GetText($OBJECT, pText)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_GetText
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pText	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pText
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pText    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				ITextSelection_GetText_PTR = $VTBL
				$RETURN = ITextSelection_GetText($OBJECT, $BSTR_pText)
				$STATUS = ConvertBSTRToString($BSTR_pText, pText)
				CALL SysFreeString($BSTR_pText)
				$ITextSelection_GetText = $RETURN
			END FUNCTION $ITextSelection_GetText
			!Gets the line number of the top of the selection.
  			INTEGER*4 FUNCTION $ITextSelection_GetTopLine($OBJECT, plLine)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_GetTopLine
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plLine	
				!DEC$ ATTRIBUTES REFERENCE	:: plLine
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				ITextSelection_GetTopLine_PTR = $VTBL
				$RETURN = ITextSelection_GetTopLine($OBJECT, plLine)
				$ITextSelection_GetTopLine = $RETURN
			END FUNCTION $ITextSelection_GetTopLine
			!Moves the selection to a specified line in a document.
  			INTEGER*4 FUNCTION $ITextSelection_GoToLine($OBJECT, Line, Select)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_GoToLine
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Line	
				!DEC$ ATTRIBUTES REFERENCE	:: Line
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Select	
				!DEC$ ATTRIBUTES REFERENCE	:: Select
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Select
				IF (PRESENT(Select)) THEN 
					$VAR_Select = Select
				ELSE
					$VAR_Select = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 168	! Add routine table offset
				ITextSelection_GoToLine_PTR = $VTBL
				$RETURN = ITextSelection_GoToLine($OBJECT, Line, $VAR_Select)
				$ITextSelection_GoToLine = $RETURN
			END FUNCTION $ITextSelection_GoToLine
			!Indents the selected text.
  			INTEGER*4 FUNCTION $ITextSelection_Indent($OBJECT, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_Indent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 104	! Add routine table offset
				ITextSelection_Indent_PTR = $VTBL
				$RETURN = ITextSelection_Indent($OBJECT, $VAR_Count)
				$ITextSelection_Indent = $RETURN
			END FUNCTION $ITextSelection_Indent
			!Moves the insertion point down one line.
  			INTEGER*4 FUNCTION $ITextSelection_LineDown($OBJECT, Extend, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_LineDown
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 124	! Add routine table offset
				ITextSelection_LineDown_PTR = $VTBL
				$RETURN = ITextSelection_LineDown($OBJECT, $VAR_Extend, $VAR_Count)
				$ITextSelection_LineDown = $RETURN
			END FUNCTION $ITextSelection_LineDown
			!Moves the insertion point up one line.
  			INTEGER*4 FUNCTION $ITextSelection_LineUp($OBJECT, Extend, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_LineUp
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 120	! Add routine table offset
				ITextSelection_LineUp_PTR = $VTBL
				$RETURN = ITextSelection_LineUp($OBJECT, $VAR_Extend, $VAR_Count)
				$ITextSelection_LineUp = $RETURN
			END FUNCTION $ITextSelection_LineUp
			!Moves the insertion point to a specified line and column.
  			INTEGER*4 FUNCTION $ITextSelection_MoveTo($OBJECT, Line, Column, Extend)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_MoveTo
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Line	
				!DEC$ ATTRIBUTES REFERENCE	:: Line
				INTEGER*4, INTENT(IN)	:: Column	
				!DEC$ ATTRIBUTES REFERENCE	:: Column
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 172	! Add routine table offset
				ITextSelection_MoveTo_PTR = $VTBL
				$RETURN = ITextSelection_MoveTo($OBJECT, Line, Column, $VAR_Extend)
				$ITextSelection_MoveTo = $RETURN
			END FUNCTION $ITextSelection_MoveTo
			!Creates a new line in a selection.
  			INTEGER*4 FUNCTION $ITextSelection_NewLine($OBJECT, Reserved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_NewLine
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Reserved	
				!DEC$ ATTRIBUTES REFERENCE	:: Reserved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Reserved
				IF (PRESENT(Reserved)) THEN 
					$VAR_Reserved = Reserved
				ELSE
					$VAR_Reserved = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 196	! Add routine table offset
				ITextSelection_NewLine_PTR = $VTBL
				$RETURN = ITextSelection_NewLine($OBJECT, $VAR_Reserved)
				$ITextSelection_NewLine = $RETURN
			END FUNCTION $ITextSelection_NewLine
			!Moves the selection to the next unnamed bookmark in a document.
  			INTEGER*4 FUNCTION $ITextSelection_NextBookmark($OBJECT, pbRet)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_NextBookmark
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRet	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRet
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 184	! Add routine table offset
				ITextSelection_NextBookmark_PTR = $VTBL
				$RETURN = ITextSelection_NextBookmark($OBJECT, pbRet)
				$ITextSelection_NextBookmark = $RETURN
			END FUNCTION $ITextSelection_NextBookmark
			!Moves the insertion point down one page.
  			INTEGER*4 FUNCTION $ITextSelection_PageDown($OBJECT, Extend, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_PageDown
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 132	! Add routine table offset
				ITextSelection_PageDown_PTR = $VTBL
				$RETURN = ITextSelection_PageDown($OBJECT, $VAR_Extend, $VAR_Count)
				$ITextSelection_PageDown = $RETURN
			END FUNCTION $ITextSelection_PageDown
			!Moves the insertion point up one page.
  			INTEGER*4 FUNCTION $ITextSelection_PageUp($OBJECT, Extend, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_PageUp
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 128	! Add routine table offset
				ITextSelection_PageUp_PTR = $VTBL
				$RETURN = ITextSelection_PageUp($OBJECT, $VAR_Extend, $VAR_Count)
				$ITextSelection_PageUp = $RETURN
			END FUNCTION $ITextSelection_PageUp
			!Replaces a selection with the contents of the Clipboard.
  			INTEGER*4 FUNCTION $ITextSelection_Paste($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_Paste
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				ITextSelection_Paste_PTR = $VTBL
				$RETURN = ITextSelection_Paste($OBJECT)
				$ITextSelection_Paste = $RETURN
			END FUNCTION $ITextSelection_Paste
			!Moves the selection to the previous unnamed bookmark in a document.
  			INTEGER*4 FUNCTION $ITextSelection_PreviousBookmark($OBJECT, pbRet)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_PreviousBookmark
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbRet	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRet
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 180	! Add routine table offset
				ITextSelection_PreviousBookmark_PTR = $VTBL
				$RETURN = ITextSelection_PreviousBookmark($OBJECT, pbRet)
				$ITextSelection_PreviousBookmark = $RETURN
			END FUNCTION $ITextSelection_PreviousBookmark
			!Replaces all instances of one string with another.
  			INTEGER*4 FUNCTION $ITextSelection_ReplaceText($OBJECT, szFind, szReplace, Flags, pbRet)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_ReplaceText
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: szFind	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szFind
				CHARACTER*(*), INTENT(IN)	:: szReplace	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szReplace
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Flags	
				!DEC$ ATTRIBUTES REFERENCE	:: Flags
				LOGICAL*2, INTENT(OUT)	:: pbRet	
				!DEC$ ATTRIBUTES REFERENCE	:: pbRet
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_szFind    ! BSTR
				INTEGER(INT_PTR_KIND()) $BSTR_szReplace    ! BSTR
				TYPE (VARIANT) :: $VAR_Flags
				$BSTR_szFind = ConvertStringToBSTR(szFind)
				$BSTR_szReplace = ConvertStringToBSTR(szReplace)
				IF (PRESENT(Flags)) THEN 
					$VAR_Flags = Flags
				ELSE
					$VAR_Flags = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 200	! Add routine table offset
				ITextSelection_ReplaceText_PTR = $VTBL
				$RETURN = ITextSelection_ReplaceText($OBJECT, $BSTR_szFind, $BSTR_szReplace, $VAR_Flags, pbRet)
				CALL SysFreeString($BSTR_szFind)
				CALL SysFreeString($BSTR_szReplace)
				$ITextSelection_ReplaceText = $RETURN
			END FUNCTION $ITextSelection_ReplaceText
			!Extends a selection to include the entire document.
  			INTEGER*4 FUNCTION $ITextSelection_SelectAll($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_SelectAll
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 92	! Add routine table offset
				ITextSelection_SelectAll_PTR = $VTBL
				$RETURN = ITextSelection_SelectAll($OBJECT)
				$ITextSelection_SelectAll = $RETURN
			END FUNCTION $ITextSelection_SelectAll
			!Selects the current line.
  			INTEGER*4 FUNCTION $ITextSelection_SelectLine($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_SelectLine
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				ITextSelection_SelectLine_PTR = $VTBL
				$RETURN = ITextSelection_SelectLine($OBJECT)
				$ITextSelection_SelectLine = $RETURN
			END FUNCTION $ITextSelection_SelectLine
			!Sets an unnamed bookmark at the active end of a selection.
  			INTEGER*4 FUNCTION $ITextSelection_SetBookmark($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_SetBookmark
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 188	! Add routine table offset
				ITextSelection_SetBookmark_PTR = $VTBL
				$RETURN = ITextSelection_SetBookmark($OBJECT)
				$ITextSelection_SetBookmark = $RETURN
			END FUNCTION $ITextSelection_SetBookmark
			!Represents the currently selected text.
  			INTEGER*4 FUNCTION $ITextSelection_SetText($OBJECT, pText)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_SetText
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: pText	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pText
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pText    ! BSTR
				$BSTR_pText = ConvertStringToBSTR(pText)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				ITextSelection_SetText_PTR = $VTBL
				$RETURN = ITextSelection_SetText($OBJECT, $BSTR_pText)
				CALL SysFreeString($BSTR_pText)
				$ITextSelection_SetText = $RETURN
			END FUNCTION $ITextSelection_SetText
			!Formats text in a selection according to the current smart formatting settings.
  			INTEGER*4 FUNCTION $ITextSelection_SmartFormat($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_SmartFormat
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 152	! Add routine table offset
				ITextSelection_SmartFormat_PTR = $VTBL
				$RETURN = ITextSelection_SmartFormat($OBJECT)
				$ITextSelection_SmartFormat = $RETURN
			END FUNCTION $ITextSelection_SmartFormat
			!Moves the insertion point to the beginning of the document.
  			INTEGER*4 FUNCTION $ITextSelection_StartOfDocument($OBJECT, Extend)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_StartOfDocument
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				ITextSelection_StartOfDocument_PTR = $VTBL
				$RETURN = ITextSelection_StartOfDocument($OBJECT, $VAR_Extend)
				$ITextSelection_StartOfDocument = $RETURN
			END FUNCTION $ITextSelection_StartOfDocument
			!Moves the insertion point to the first character or first column of a line.
  			INTEGER*4 FUNCTION $ITextSelection_StartOfLine($OBJECT, MoveTo, Extend)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_StartOfLine
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: MoveTo	
				!DEC$ ATTRIBUTES REFERENCE	:: MoveTo
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_MoveTo
				TYPE (VARIANT) :: $VAR_Extend
				IF (PRESENT(MoveTo)) THEN 
					$VAR_MoveTo = MoveTo
				ELSE
					$VAR_MoveTo = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 148	! Add routine table offset
				ITextSelection_StartOfLine_PTR = $VTBL
				$RETURN = ITextSelection_StartOfLine($OBJECT, $VAR_MoveTo, $VAR_Extend)
				$ITextSelection_StartOfLine = $RETURN
			END FUNCTION $ITextSelection_StartOfLine
			!Converts spaces to tabs in a selection.
  			INTEGER*4 FUNCTION $ITextSelection_Tabify($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_Tabify
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 96	! Add routine table offset
				ITextSelection_Tabify_PTR = $VTBL
				$RETURN = ITextSelection_Tabify($OBJECT)
				$ITextSelection_Tabify = $RETURN
			END FUNCTION $ITextSelection_Tabify
			!Removes one indentation from all lines in a selection.
  			INTEGER*4 FUNCTION $ITextSelection_Unindent($OBJECT, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_Unindent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 108	! Add routine table offset
				ITextSelection_Unindent_PTR = $VTBL
				$RETURN = ITextSelection_Unindent($OBJECT, $VAR_Count)
				$ITextSelection_Unindent = $RETURN
			END FUNCTION $ITextSelection_Unindent
			!Converts tabs to spaces in a selection.
  			INTEGER*4 FUNCTION $ITextSelection_Untabify($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_Untabify
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 100	! Add routine table offset
				ITextSelection_Untabify_PTR = $VTBL
				$RETURN = ITextSelection_Untabify($OBJECT)
				$ITextSelection_Untabify = $RETURN
			END FUNCTION $ITextSelection_Untabify
			!Moves the insertion point one word to the left.
  			INTEGER*4 FUNCTION $ITextSelection_WordLeft($OBJECT, Extend, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_WordLeft
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 136	! Add routine table offset
				ITextSelection_WordLeft_PTR = $VTBL
				$RETURN = ITextSelection_WordLeft($OBJECT, $VAR_Extend, $VAR_Count)
				$ITextSelection_WordLeft = $RETURN
			END FUNCTION $ITextSelection_WordLeft
			!Moves the insertion point one word to the right.
  			INTEGER*4 FUNCTION $ITextSelection_WordRight($OBJECT, Extend, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextSelection_WordRight
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Extend	
				!DEC$ ATTRIBUTES REFERENCE	:: Extend
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Extend
				TYPE (VARIANT) :: $VAR_Count
				IF (PRESENT(Extend)) THEN 
					$VAR_Extend = Extend
				ELSE
					$VAR_Extend = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(Count)) THEN 
					$VAR_Count = Count
				ELSE
					$VAR_Count = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 140	! Add routine table offset
				ITextSelection_WordRight_PTR = $VTBL
				$RETURN = ITextSelection_WordRight($OBJECT, $VAR_Extend, $VAR_Count)
				$ITextSelection_WordRight = $RETURN
			END FUNCTION $ITextSelection_WordRight
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $ITextWindow_GetSelection($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $ITextWindow_GetSelection
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 148	! Add routine table offset
				ITextWindow_GetSelection_PTR = $VTBL
				$RETURN = ITextWindow_GetSelection($OBJECT, ppDispatch)
				$ITextWindow_GetSelection = $RETURN
			END FUNCTION $ITextWindow_GetSelection
	END MODULE
