SlideShare a Scribd company logo
Ring Documentation, Release 1.5.2
see ptrcmp(fp,fp2) + nl
see ptrcmp(fp,fp3) + nl
fclose(fp)
fclose(fp3)
Output:
1
0
65.8 ringvm_cfunctionslist() function
The Function return a list of functions written in C.
Syntax:
RingVM_CFunctionsList() ---> List
Example:
See RingVM_CFunctionsList()
65.9 ringvm_functionslist() function
The Function return a list of functions written in Ring.
Each List Member is a list contains the next items
• Function Name
• Program Counter (PC) - Function Position in Byte Code.
• Source Code File Name
• Private Flag (For Private Methods in Classes)
Syntax:
RingVM_FunctionsList() ---> List
Example:
test()
func test
see ringvm_functionslist()
Output:
test
8
B:/ring/tests/scripts/functionslist.ring
0
65.8. ringvm_cfunctionslist() function 715
Ring Documentation, Release 1.5.2
65.10 ringvm_classeslist() function
The Function return a list of Classes.
Each List Member is a list contains the next items
• Class Name
• Program Counter (PC) - Class Position in Byte Code.
• Parent Class Name
• Methods List
• Flag (Is parent class information collected)
• Pointer to the package (or NULL if no package is used)
Syntax:
RingVM_ClassesList() ---> List
Example:
see ringvm_classeslist()
class class1
func f1
class class2 from class1
class class3 from class1
Output:
class1
9
f1
13
B:/ring/tests/scripts/classeslist.ring
0
0
00000000
class2
16
class1
0
00000000
class3
20
class1
0
00000000
65.11 ringvm_packageslist() function
The Function return a list of Packages.
Each List Member is a list contains the next items
• Package Name
65.10. ringvm_classeslist() function 716
Ring Documentation, Release 1.5.2
• Classes List
Syntax:
RingVM_PackagesList() ---> List
Example:
see ringvm_packageslist()
package package1
class class1
package package2
class class1
package package3
class class1
Output:
package1
class1
11
0
00FEF838
package2
class1
17
0
00FEF978
package3
class1
23
0
00FEFF68
65.12 ringvm_memorylist() function
The Function return a list of Memory Scopes and Variables.
Each List Member is a list contains variables in a different scope.
Each Item in the scope list is a list contains the next items
• Variable Name
• Variable Type
• Variable Value
• Pointer Type (List/Item) if the value is a list
• Private Flag (if the variable is an attribute in a Class)
Syntax:
65.12. ringvm_memorylist() function 717
Ring Documentation, Release 1.5.2
RingVM_MemoryList() ---> List
Example:
x = 10
test()
func test
y = 20
see ringvm_memorylist()
Output:
true
2
1
0
0
false
2
0
0
0
nl
1
0
0
null
1
0
0
ring_gettemp_var
4
00000000
0
0
ccatcherror
1
NULL
0
0
ring_settemp_var
4
00000000
0
0
ring_tempflag_var
2
0
0
0
stdin
3
50512DB8
file
0
0
65.12. ringvm_memorylist() function 718
Ring Documentation, Release 1.5.2
0
stdout
3
50512DD8
file
0
0
0
stderr
3
50512DF8
file
0
0
0
this
4
00000000
0
0
sysargv
3
B:ringbin/ring
B:/ring/tests/scripts/memorylist.ring
0
0
x
2
10
0
0
y
2
20
0
0
65.13 ringvm_calllist() function
The Function return a list of the functions call list.
Each List Member is a list contains the next items
• Function Type
• Function Name
• Program Counter (PC)
• Stack Pointer (SP)
• Temp. Memory List
• Method or Function Flag
• Caller PC
• FuncExec Flag
• ListStart Flag
65.13. ringvm_calllist() function 719
Ring Documentation, Release 1.5.2
• Nested Lists Pointer
• State List
Syntax:
RingVM_CallList() ---> List
Example:
hello()
func hello
test()
func test
mylist = ringvm_calllist()
for t in mylist see t[2] + nl next
Output:
function hello() in file B:/ring/tests/scripts/calllist.ring
called from line 1
function test() in file B:/ring/tests/scripts/calllist.ring
called from line 3
ringvm_calllist
65.14 ringvm_fileslist() function
Function return a list of the Ring Files.
Syntax:
RingVM_FilesList() ---> List
Example:
load "stdlib.ring"
see ringvm_fileslist()
Output:
B:/ring/tests/scripts/fileslist.ring
B:ringbinstdlib.ring
eval
stdlib.ring
stdlib.rh
stdclasses.ring
stdfunctions.ring
stdbase.ring
stdstring.ring
stdlist.ring
stdstack.ring
stdqueue.ring
stdmath.ring
stddatetime.ring
stdfile.ring
stdsystem.ring
stddebug.ring
stddatatype.ring
65.14. ringvm_fileslist() function 720
Ring Documentation, Release 1.5.2
stdconversion.ring
stdodbc.ring
stdmysql.ring
stdsecurity.ring
stdinternet.ring
stdhashtable.ring
stdtree.ring
65.15 ringvm_settrace()
The function ringvm_settrace() determine the Trace function name
The trace function is a Ring function that will be called for each event
Syntax:
RingVM_SetTrace(cCode)
65.16 ringvm_tracedata()
Inside the function that we will use for tracing events
We can use the ringvm_tracedata() function to get the event data.
The event data is a list contains the next items
• The Source Code Line Number
• The Source File Name
• The Function/Method Name
• Method or Function (Bool : True=Method, False=Function/File)
Syntax:
RingVM_TraceData() ---> aDataList
65.17 ringvm_traceevent()
Inside the function that we will use for tracing events
We can use ringvm_traceevent() to know the event type
• New Line
• Before Function
• After Function
• Runtime Error
• Before C Function
• After C Function
Syntax:
65.15. ringvm_settrace() 721
Ring Documentation, Release 1.5.2
RingVM_TraceEvent() ---> nTraceEvent
65.18 ringvm_tracefunc()
The function return the name of the function that we are using for tracing events.
Syntax:
RingVM_TraceEvent() ---> cCode
65.19 ringvm_scopescount()
We can use the RingVM_ScopesCount() function to know the number of scopes used in the application.
In the start of the program, We have the (global scope only)
When we call a function, A new scope is created.
When the function execution is done, the function scope is deleted.
Syntax:
RingVM_ScopesCount() ---> nScopes
65.20 ringvm_evalinscope()
The function ringvm_evalinscope() is similar to the eval() function
Unlike eval() which execute the code in the current scope
Using RingVM_EvalInScope() we can execute the scope in a specific scope.
Syntax:
RingVM_EvalInScope(nScope,cCode)
65.21 ringvm_passerror()
When we have runtime error, After printing the Error message, Ring will end the execution of the program.
Using ringvm_passerror() we can avoid that, and continue the execution of our program.
Syntax:
RingVM_PassError()
65.22 ringvm_hideerrormsg()
We can disable/enable displaying the runtime error messages using the RingVM_HideErrorMsg() function.
Syntax:
65.18. ringvm_tracefunc() 722
Ring Documentation, Release 1.5.2
RingVM_HideErrorMsg(lStatus)
65.23 ringvm_callfunc()
We can call a function from a string without using eval() using the ringvm_callfunc()
Syntax:
RingVM_CallFunc(cFuncName)
65.24 Example - Using the Trace Functions
The next example use the Trace Functions to trace the program Events!
In practical, We will use the Trace Library instead of these low level functions!
load "tracelib.ring"
ringvm_settrace("mytrace()")
see "Hello, world!" + nl
see "Welcome" + nl
see "How are you?" +nl
mytest()
new myclass { mymethod() }
func mytest
see "Message from mytest" + nl
func mytrace
see "====== The Trace function is Active ======" + nl +
"Trace Function Name : " + ringvm_TraceFunc() + nl +
"Trace Event : "
switch ringvm_TraceEvent()
on TRACEEVENT_NEWLINE see "New Line"
on TRACEEVENT_NEWFUNC see "New Function"
on TRACEEVENT_RETURN see "Return"
on TRACEEVENT_ERROR see "Error"
on TRACEEVENT_BEFORECFUNC see "Before C Function"
on TRACEEVENT_AFTERCFUNC see "After C Function"
off
see nl +
"Line Number : " + ringvm_tracedata()[TRACEDATA_LINENUMBER] + nl +
"File Name : " + ringvm_tracedata()[TRACEDATA_FILENAME] + nl +
"Function Name : " + ringvm_tracedata()[TRACEDATA_FUNCNAME] + nl +
"Method or Function : "
if ringvm_tracedata()[TRACEDATA_METHODORFUNC] =
TRACEDATA_METHODORFUNC_METHOD
see "Method"
else
if ringvm_tracedata()[TRACEDATA_FUNCNAME] = NULL
see "Command"
else
see "Function"
65.23. ringvm_callfunc() 723
Ring Documentation, Release 1.5.2
ok
ok
see nl + Copy("=",42) + nl
class myclass
func mymethod
see "Message from mymethod" + nl
Output:
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : After C Function
Line Number : 3
File Name : test1.ring
Function Name : ringvm_settrace
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 5
File Name : test1.ring
Function Name :
Method or Function : Command
==========================================
Hello, world!
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 6
File Name : test1.ring
Function Name :
Method or Function : Command
==========================================
Welcome
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 7
File Name : test1.ring
Function Name :
Method or Function : Command
==========================================
How are you?
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 8
File Name : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Function
Line Number : 8
File Name : test1.ring
65.24. Example - Using the Trace Functions 724

More Related Content

PDF
The Ring programming language version 1.5.3 book - Part 88 of 184
PDF
The Ring programming language version 1.9 book - Part 91 of 210
PDF
The Ring programming language version 1.5.3 book - Part 87 of 184
PDF
The Ring programming language version 1.2 book - Part 57 of 84
PDF
The Ring programming language version 1.4 book - Part 21 of 30
PDF
The Ring programming language version 1.10 book - Part 94 of 212
PDF
The Ring programming language version 1.6 book - Part 81 of 189
PDF
The Ring programming language version 1.5.1 book - Part 74 of 180
The Ring programming language version 1.5.3 book - Part 88 of 184
The Ring programming language version 1.9 book - Part 91 of 210
The Ring programming language version 1.5.3 book - Part 87 of 184
The Ring programming language version 1.2 book - Part 57 of 84
The Ring programming language version 1.4 book - Part 21 of 30
The Ring programming language version 1.10 book - Part 94 of 212
The Ring programming language version 1.6 book - Part 81 of 189
The Ring programming language version 1.5.1 book - Part 74 of 180

What's hot (20)

PDF
Javascript compilation execution
PDF
The Ring programming language version 1.5.2 book - Part 74 of 181
PDF
The Ring programming language version 1.5.4 book - Part 81 of 185
PDF
The Ring programming language version 1.3 book - Part 59 of 88
PDF
The Ring programming language version 1.5.4 book - Part 77 of 185
PDF
The Ring programming language version 1.9 book - Part 90 of 210
PDF
The Ring programming language version 1.8 book - Part 90 of 202
PDF
The Ring programming language version 1.5.2 book - Part 78 of 181
PDF
The Ring programming language version 1.5.2 book - Part 26 of 181
PPS
Ecma script 5
PDF
The Ring programming language version 1.10 book - Part 35 of 212
PDF
2 BytesC++ course_2014_c3_ function basics&parameters and overloading
DOC
Macroprocessor
PPTX
PyconKR 2018 Deep dive into Coroutine
PDF
The Ring programming language version 1.2 book - Part 16 of 84
PDF
The Ring programming language version 1.7 book - Part 30 of 196
DOC
Ds 2 cycle
PDF
The Ring programming language version 1.6 book - Part 15 of 189
PPTX
Operator overloading2
PDF
The Ring programming language version 1.5.3 book - Part 10 of 184
Javascript compilation execution
The Ring programming language version 1.5.2 book - Part 74 of 181
The Ring programming language version 1.5.4 book - Part 81 of 185
The Ring programming language version 1.3 book - Part 59 of 88
The Ring programming language version 1.5.4 book - Part 77 of 185
The Ring programming language version 1.9 book - Part 90 of 210
The Ring programming language version 1.8 book - Part 90 of 202
The Ring programming language version 1.5.2 book - Part 78 of 181
The Ring programming language version 1.5.2 book - Part 26 of 181
Ecma script 5
The Ring programming language version 1.10 book - Part 35 of 212
2 BytesC++ course_2014_c3_ function basics&parameters and overloading
Macroprocessor
PyconKR 2018 Deep dive into Coroutine
The Ring programming language version 1.2 book - Part 16 of 84
The Ring programming language version 1.7 book - Part 30 of 196
Ds 2 cycle
The Ring programming language version 1.6 book - Part 15 of 189
Operator overloading2
The Ring programming language version 1.5.3 book - Part 10 of 184
Ad

Similar to The Ring programming language version 1.5.2 book - Part 75 of 181 (20)

PDF
The Ring programming language version 1.5.4 book - Part 78 of 185
PDF
The Ring programming language version 1.10 book - Part 93 of 212
PDF
The Ring programming language version 1.3 book - Part 60 of 88
PDF
The Ring programming language version 1.8 book - Part 87 of 202
PDF
The Ring programming language version 1.7 book - Part 83 of 196
PDF
The Ring programming language version 1.7 book - Part 84 of 196
PDF
The Ring programming language version 1.8 book - Part 89 of 202
PDF
The Ring programming language version 1.8 book - Part 86 of 202
PDF
The Ring programming language version 1.5.4 book - Part 80 of 185
PDF
The Ring programming language version 1.5.1 book - Part 75 of 180
PDF
The Ring programming language version 1.7 book - Part 12 of 196
PDF
The Ring programming language version 1.5.3 book - Part 89 of 184
PDF
The Ring programming language version 1.6 book - Part 11 of 189
PDF
The Ring programming language version 1.5.2 book - Part 77 of 181
PDF
The Ring programming language version 1.5.3 book - Part 90 of 184
PDF
The Ring programming language version 1.7 book - Part 86 of 196
PDF
The Ring programming language version 1.9 book - Part 92 of 210
PDF
The Ring programming language version 1.5.1 book - Part 73 of 180
PDF
The Ring programming language version 1.5.2 book - Part 76 of 181
PDF
The Ring programming language version 1.6 book - Part 82 of 189
The Ring programming language version 1.5.4 book - Part 78 of 185
The Ring programming language version 1.10 book - Part 93 of 212
The Ring programming language version 1.3 book - Part 60 of 88
The Ring programming language version 1.8 book - Part 87 of 202
The Ring programming language version 1.7 book - Part 83 of 196
The Ring programming language version 1.7 book - Part 84 of 196
The Ring programming language version 1.8 book - Part 89 of 202
The Ring programming language version 1.8 book - Part 86 of 202
The Ring programming language version 1.5.4 book - Part 80 of 185
The Ring programming language version 1.5.1 book - Part 75 of 180
The Ring programming language version 1.7 book - Part 12 of 196
The Ring programming language version 1.5.3 book - Part 89 of 184
The Ring programming language version 1.6 book - Part 11 of 189
The Ring programming language version 1.5.2 book - Part 77 of 181
The Ring programming language version 1.5.3 book - Part 90 of 184
The Ring programming language version 1.7 book - Part 86 of 196
The Ring programming language version 1.9 book - Part 92 of 210
The Ring programming language version 1.5.1 book - Part 73 of 180
The Ring programming language version 1.5.2 book - Part 76 of 181
The Ring programming language version 1.6 book - Part 82 of 189
Ad

More from Mahmoud Samir Fayed (20)

PDF
The Ring programming language version 1.10 book - Part 212 of 212
PDF
The Ring programming language version 1.10 book - Part 211 of 212
PDF
The Ring programming language version 1.10 book - Part 210 of 212
PDF
The Ring programming language version 1.10 book - Part 208 of 212
PDF
The Ring programming language version 1.10 book - Part 207 of 212
PDF
The Ring programming language version 1.10 book - Part 205 of 212
PDF
The Ring programming language version 1.10 book - Part 206 of 212
PDF
The Ring programming language version 1.10 book - Part 204 of 212
PDF
The Ring programming language version 1.10 book - Part 203 of 212
PDF
The Ring programming language version 1.10 book - Part 202 of 212
PDF
The Ring programming language version 1.10 book - Part 201 of 212
PDF
The Ring programming language version 1.10 book - Part 200 of 212
PDF
The Ring programming language version 1.10 book - Part 199 of 212
PDF
The Ring programming language version 1.10 book - Part 198 of 212
PDF
The Ring programming language version 1.10 book - Part 197 of 212
PDF
The Ring programming language version 1.10 book - Part 196 of 212
PDF
The Ring programming language version 1.10 book - Part 195 of 212
PDF
The Ring programming language version 1.10 book - Part 194 of 212
PDF
The Ring programming language version 1.10 book - Part 193 of 212
PDF
The Ring programming language version 1.10 book - Part 192 of 212
The Ring programming language version 1.10 book - Part 212 of 212
The Ring programming language version 1.10 book - Part 211 of 212
The Ring programming language version 1.10 book - Part 210 of 212
The Ring programming language version 1.10 book - Part 208 of 212
The Ring programming language version 1.10 book - Part 207 of 212
The Ring programming language version 1.10 book - Part 205 of 212
The Ring programming language version 1.10 book - Part 206 of 212
The Ring programming language version 1.10 book - Part 204 of 212
The Ring programming language version 1.10 book - Part 203 of 212
The Ring programming language version 1.10 book - Part 202 of 212
The Ring programming language version 1.10 book - Part 201 of 212
The Ring programming language version 1.10 book - Part 200 of 212
The Ring programming language version 1.10 book - Part 199 of 212
The Ring programming language version 1.10 book - Part 198 of 212
The Ring programming language version 1.10 book - Part 197 of 212
The Ring programming language version 1.10 book - Part 196 of 212
The Ring programming language version 1.10 book - Part 195 of 212
The Ring programming language version 1.10 book - Part 194 of 212
The Ring programming language version 1.10 book - Part 193 of 212
The Ring programming language version 1.10 book - Part 192 of 212

Recently uploaded (20)

PPTX
Cloud computing and distributed systems.
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Network Security Unit 5.pdf for BCA BBA.
Cloud computing and distributed systems.
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
cuic standard and advanced reporting.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Digital-Transformation-Roadmap-for-Companies.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Building Integrated photovoltaic BIPV_UPV.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Understanding_Digital_Forensics_Presentation.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
“AI and Expert System Decision Support & Business Intelligence Systems”
MYSQL Presentation for SQL database connectivity
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Network Security Unit 5.pdf for BCA BBA.

The Ring programming language version 1.5.2 book - Part 75 of 181

  • 1. Ring Documentation, Release 1.5.2 see ptrcmp(fp,fp2) + nl see ptrcmp(fp,fp3) + nl fclose(fp) fclose(fp3) Output: 1 0 65.8 ringvm_cfunctionslist() function The Function return a list of functions written in C. Syntax: RingVM_CFunctionsList() ---> List Example: See RingVM_CFunctionsList() 65.9 ringvm_functionslist() function The Function return a list of functions written in Ring. Each List Member is a list contains the next items • Function Name • Program Counter (PC) - Function Position in Byte Code. • Source Code File Name • Private Flag (For Private Methods in Classes) Syntax: RingVM_FunctionsList() ---> List Example: test() func test see ringvm_functionslist() Output: test 8 B:/ring/tests/scripts/functionslist.ring 0 65.8. ringvm_cfunctionslist() function 715
  • 2. Ring Documentation, Release 1.5.2 65.10 ringvm_classeslist() function The Function return a list of Classes. Each List Member is a list contains the next items • Class Name • Program Counter (PC) - Class Position in Byte Code. • Parent Class Name • Methods List • Flag (Is parent class information collected) • Pointer to the package (or NULL if no package is used) Syntax: RingVM_ClassesList() ---> List Example: see ringvm_classeslist() class class1 func f1 class class2 from class1 class class3 from class1 Output: class1 9 f1 13 B:/ring/tests/scripts/classeslist.ring 0 0 00000000 class2 16 class1 0 00000000 class3 20 class1 0 00000000 65.11 ringvm_packageslist() function The Function return a list of Packages. Each List Member is a list contains the next items • Package Name 65.10. ringvm_classeslist() function 716
  • 3. Ring Documentation, Release 1.5.2 • Classes List Syntax: RingVM_PackagesList() ---> List Example: see ringvm_packageslist() package package1 class class1 package package2 class class1 package package3 class class1 Output: package1 class1 11 0 00FEF838 package2 class1 17 0 00FEF978 package3 class1 23 0 00FEFF68 65.12 ringvm_memorylist() function The Function return a list of Memory Scopes and Variables. Each List Member is a list contains variables in a different scope. Each Item in the scope list is a list contains the next items • Variable Name • Variable Type • Variable Value • Pointer Type (List/Item) if the value is a list • Private Flag (if the variable is an attribute in a Class) Syntax: 65.12. ringvm_memorylist() function 717
  • 4. Ring Documentation, Release 1.5.2 RingVM_MemoryList() ---> List Example: x = 10 test() func test y = 20 see ringvm_memorylist() Output: true 2 1 0 0 false 2 0 0 0 nl 1 0 0 null 1 0 0 ring_gettemp_var 4 00000000 0 0 ccatcherror 1 NULL 0 0 ring_settemp_var 4 00000000 0 0 ring_tempflag_var 2 0 0 0 stdin 3 50512DB8 file 0 0 65.12. ringvm_memorylist() function 718
  • 5. Ring Documentation, Release 1.5.2 0 stdout 3 50512DD8 file 0 0 0 stderr 3 50512DF8 file 0 0 0 this 4 00000000 0 0 sysargv 3 B:ringbin/ring B:/ring/tests/scripts/memorylist.ring 0 0 x 2 10 0 0 y 2 20 0 0 65.13 ringvm_calllist() function The Function return a list of the functions call list. Each List Member is a list contains the next items • Function Type • Function Name • Program Counter (PC) • Stack Pointer (SP) • Temp. Memory List • Method or Function Flag • Caller PC • FuncExec Flag • ListStart Flag 65.13. ringvm_calllist() function 719
  • 6. Ring Documentation, Release 1.5.2 • Nested Lists Pointer • State List Syntax: RingVM_CallList() ---> List Example: hello() func hello test() func test mylist = ringvm_calllist() for t in mylist see t[2] + nl next Output: function hello() in file B:/ring/tests/scripts/calllist.ring called from line 1 function test() in file B:/ring/tests/scripts/calllist.ring called from line 3 ringvm_calllist 65.14 ringvm_fileslist() function Function return a list of the Ring Files. Syntax: RingVM_FilesList() ---> List Example: load "stdlib.ring" see ringvm_fileslist() Output: B:/ring/tests/scripts/fileslist.ring B:ringbinstdlib.ring eval stdlib.ring stdlib.rh stdclasses.ring stdfunctions.ring stdbase.ring stdstring.ring stdlist.ring stdstack.ring stdqueue.ring stdmath.ring stddatetime.ring stdfile.ring stdsystem.ring stddebug.ring stddatatype.ring 65.14. ringvm_fileslist() function 720
  • 7. Ring Documentation, Release 1.5.2 stdconversion.ring stdodbc.ring stdmysql.ring stdsecurity.ring stdinternet.ring stdhashtable.ring stdtree.ring 65.15 ringvm_settrace() The function ringvm_settrace() determine the Trace function name The trace function is a Ring function that will be called for each event Syntax: RingVM_SetTrace(cCode) 65.16 ringvm_tracedata() Inside the function that we will use for tracing events We can use the ringvm_tracedata() function to get the event data. The event data is a list contains the next items • The Source Code Line Number • The Source File Name • The Function/Method Name • Method or Function (Bool : True=Method, False=Function/File) Syntax: RingVM_TraceData() ---> aDataList 65.17 ringvm_traceevent() Inside the function that we will use for tracing events We can use ringvm_traceevent() to know the event type • New Line • Before Function • After Function • Runtime Error • Before C Function • After C Function Syntax: 65.15. ringvm_settrace() 721
  • 8. Ring Documentation, Release 1.5.2 RingVM_TraceEvent() ---> nTraceEvent 65.18 ringvm_tracefunc() The function return the name of the function that we are using for tracing events. Syntax: RingVM_TraceEvent() ---> cCode 65.19 ringvm_scopescount() We can use the RingVM_ScopesCount() function to know the number of scopes used in the application. In the start of the program, We have the (global scope only) When we call a function, A new scope is created. When the function execution is done, the function scope is deleted. Syntax: RingVM_ScopesCount() ---> nScopes 65.20 ringvm_evalinscope() The function ringvm_evalinscope() is similar to the eval() function Unlike eval() which execute the code in the current scope Using RingVM_EvalInScope() we can execute the scope in a specific scope. Syntax: RingVM_EvalInScope(nScope,cCode) 65.21 ringvm_passerror() When we have runtime error, After printing the Error message, Ring will end the execution of the program. Using ringvm_passerror() we can avoid that, and continue the execution of our program. Syntax: RingVM_PassError() 65.22 ringvm_hideerrormsg() We can disable/enable displaying the runtime error messages using the RingVM_HideErrorMsg() function. Syntax: 65.18. ringvm_tracefunc() 722
  • 9. Ring Documentation, Release 1.5.2 RingVM_HideErrorMsg(lStatus) 65.23 ringvm_callfunc() We can call a function from a string without using eval() using the ringvm_callfunc() Syntax: RingVM_CallFunc(cFuncName) 65.24 Example - Using the Trace Functions The next example use the Trace Functions to trace the program Events! In practical, We will use the Trace Library instead of these low level functions! load "tracelib.ring" ringvm_settrace("mytrace()") see "Hello, world!" + nl see "Welcome" + nl see "How are you?" +nl mytest() new myclass { mymethod() } func mytest see "Message from mytest" + nl func mytrace see "====== The Trace function is Active ======" + nl + "Trace Function Name : " + ringvm_TraceFunc() + nl + "Trace Event : " switch ringvm_TraceEvent() on TRACEEVENT_NEWLINE see "New Line" on TRACEEVENT_NEWFUNC see "New Function" on TRACEEVENT_RETURN see "Return" on TRACEEVENT_ERROR see "Error" on TRACEEVENT_BEFORECFUNC see "Before C Function" on TRACEEVENT_AFTERCFUNC see "After C Function" off see nl + "Line Number : " + ringvm_tracedata()[TRACEDATA_LINENUMBER] + nl + "File Name : " + ringvm_tracedata()[TRACEDATA_FILENAME] + nl + "Function Name : " + ringvm_tracedata()[TRACEDATA_FUNCNAME] + nl + "Method or Function : " if ringvm_tracedata()[TRACEDATA_METHODORFUNC] = TRACEDATA_METHODORFUNC_METHOD see "Method" else if ringvm_tracedata()[TRACEDATA_FUNCNAME] = NULL see "Command" else see "Function" 65.23. ringvm_callfunc() 723
  • 10. Ring Documentation, Release 1.5.2 ok ok see nl + Copy("=",42) + nl class myclass func mymethod see "Message from mymethod" + nl Output: ====== The Trace function is Active ====== Trace Function Name : mytrace() Trace Event : After C Function Line Number : 3 File Name : test1.ring Function Name : ringvm_settrace Method or Function : Function ========================================== ====== The Trace function is Active ====== Trace Function Name : mytrace() Trace Event : New Line Line Number : 5 File Name : test1.ring Function Name : Method or Function : Command ========================================== Hello, world! ====== The Trace function is Active ====== Trace Function Name : mytrace() Trace Event : New Line Line Number : 6 File Name : test1.ring Function Name : Method or Function : Command ========================================== Welcome ====== The Trace function is Active ====== Trace Function Name : mytrace() Trace Event : New Line Line Number : 7 File Name : test1.ring Function Name : Method or Function : Command ========================================== How are you? ====== The Trace function is Active ====== Trace Function Name : mytrace() Trace Event : New Line Line Number : 8 File Name : test1.ring Function Name : Method or Function : Command ========================================== ====== The Trace function is Active ====== Trace Function Name : mytrace() Trace Event : New Function Line Number : 8 File Name : test1.ring 65.24. Example - Using the Trace Functions 724