redirectCallBack - handle output redirection in OpenMaple
|
Calling Sequence
|
|
redirectCallBack(data, name, mode)
|
|
Parameters
|
|
data
|
-
|
user_data pointer passed to StartMaple (Long)
|
name
|
-
|
name of the file stream to redirect to (byte array pointer)
|
mode
|
-
|
file mode to distinguish between writing and appending (byte array pointer)
|
|
|
|
|
Description
|
|
•
|
The redirectCallBack function is called when the kernel executes the Maple writeto or appendto function. The intent is to redirect subsequent output.
|
•
|
The prototype for the function that you can assign to the entry in the MapleCallBack must look like the following.
|
Function RedirectCallBack(ByVal data As Long,
|
ByVal name as Long,
|
ByVal mode As Long) as Long
|
|
|
•
|
The name parameter specifies the name of the file to which output is appended. The mode parameter specifies the file access mode to use. The mode is "wt" for write or "at" for append. The name and mode parameters are compatible with the C library function fopen.
|
•
|
If the name parameter is 0, Maple is signaling that redirection is terminated. Subsequent output is sent, for example, to the main output stream.
|
•
|
If no redirectCallBack function is provided, any attempt to execute the Maple writeto function or appendto function produces an error (reported using the errorCallBack function or textCallBack function).
|
•
|
The data parameter contains the same data as passed to StartMaple in the user_data parameter.
|
|
|
Examples
|
|
dim useredirct as boolean
|
Function RedirectCallBack(ByVal data As Long, ByVal name As Long, _
|
ByVal mode As Long) As Long
|
Dim iomode As String
|
If name = 0 Then
|
Close #2
|
useredirect = False
|
Else
|
iomode = MaplePointerToString(mode)
|
If iomode = "wt" Then
|
Open MaplePointerToString(name) For Output As #2
|
useredirect = True
|
End If
|
End If
|
RedirectCallBack = True
|
End Function
|
Sub TextCallBack(ByVal data As Long, ByVal tag As Integer, _
|
ByVal Output As Long)
|
Dim OutputString As String
|
OutputString = MaplePointerToString(Output)
|
If useredirect Then
|
Write #2, "BEGIN TextCallBack", tag
|
Write #2, OutputString
|
Write #2, "END TextCallBack"
|
End If
|
End Sub
|
' assignment to MapleCallback entry
|
cb.lpRedirectCallBack = GetProc(AddressOf RedirectCallBack)
|
' test statement that will invoke the CallBackCallBack
|
EvalMapleStatement kv, "writeto(""somefile"");"
|
EvalMapleStatement kv, "x+y;"
|
EvalMapleStatement kv, "writeto(terminal);"
|
|
|
|
|
See Also
|
|
callBackCallBack, errorCallBack, OpenMaple, OpenMaple/VB/API, OpenMaple/VB/Examples, queryInterrupt, readLineCallBack, StartMaple, statusCallBack, streamCallBack, textCallBack
|
|
Download Help Document
Was this information helpful?