2. CHAPTER
EIGHT
RESOURCES
In this section you will find resources about the language
118.1 Ring Language Website
For news about the language check the website
http://ring-lang.net
http://ring-lang.sf.net
118.2 Ring Group
For questions use the Ring Group (English)
https://groups.google.com/forum/#!forum/ring-lang
118.3 Source Code
Ring is Free-Open Source (MIT License)
Source Code : https://github.com/ring-lang/ring
118.4 Arabic Resources
• Arabic Tutorials by Sara Hamdy
URL : https://ringprogramming4arab.wordpress.com/%D8%A7%D9%84%D9%85%D8%AD%D8%AA%D9%88%D9%8A-
2/
• Arabic Tutorials by Ahmed Hassouna (YouTube)
URL : https://www.youtube.com/watch?v=6VIHMyrEilw&list=PLHIfW1KZRIfl6KzfLziFl650MmThnQ0jT
• Arabic Tutorials by Alaa Mohamed (YouTube)
URL : https://www.youtube.com/watch?v=uSv5rJp6snw&list=PLgc0fyJgivssosIJu4kJGk5avIjaMzYHK
• Arabic Tutorials by Mahmoud Fayed (Facebook (Live) + YouTube)
URL : https://github.com/ring-lang/ring/blob/master/developers/Arabic/README.md
2039
3. Ring Documentation, Release 1.10
118.5 Contact the Authors
Ring Team : http://ring-lang.sourceforge.net/team.html
118.5. Contact the Authors 2040
4. INDEX
3D Cube and Texture
Using RingOpenGL and RingAllegro for 3D Graph-
ics, 654
Access List Items by String Index
Lists, 267
Access Objects Using Braces
Object Oriented Programming, 356
Access String Letters
Strings, 271
Accessing the class attributes from braces inside class
methods
Scope Rules, 814
Add Items
Lists, 261
addattribute()
Reflection and Meta-programming, 387
AddDays()
Date and Time, 280
Adding code to the generated code
Code Generator, 930
Adding Hyperlink to QLabel
Desktop and Mobile Development, 711
addmethod()
Reflection and Meta-programming, 387
Analog Clock
Applications developed in little hours, 8
Animate Class
Game Engine for 2D Games, 557
Animate Events
Game Engine for 2D Games, 568
Animation
Game Engine for 2D Games, 562
Animation and Functions
Game Engine for 2D Games, 563
Anonymous and Nested Functions
Functional Programming, 372
Application Class
Web Development (CGI Library), 507
Application Database
Deploying Web Applications in the Cloud, 515
Applications
How to contribute?, 196
Applications developed in little hours
Analog Clock, 8
Calculator Application, 12
FetchStockData Application, 5
Fifteen Puzzle Game 2, 6
Google API Shortener Application, 7
Innovative, 21
Introduction, 1
Practical, 22
Quotes about Ring, 1
Samples in this book, 15
Squares Puzzle Game, 10
TicTacToe Game, 9
Video-Music-Player Application, 11
Werdy Application, 14
Windows StartUp Manager Application, 13
apppath()
Stdlib Functions, 394
Arabic Resources
Resources, 2039
Arithmetic Operations
Performance Tips, 859
Arithmetic Operators
Operators, 227
Ascii()
Data Type, 288
ASCIIList2Str()
Stdlib Functions, 410
Assert()
Eval() and Debugging, 315
Assignment Operators
Operators, 228
attributes()
Reflection and Meta-programming, 384
Better Call Command
What is new in Ring 1.2?, 173
Better Cards Game
What is new in Ring 1.8?, 78
Better Code Generator For Extensions
What is new in Ring 1.8?, 79
Better Code Generator for Extensions
What is new in Ring 1.1?, 183
2041
5. Ring Documentation, Release 1.10
What is new in Ring 1.5?, 124
What is new in Ring 1.9?, 66
Better Documentation
What is new in Ring 1.1?, 183
What is new in Ring 1.7?, 85
Better Documentation Generator for Extensions
What is new in Ring 1.5?, 125
Better Form Designer
What is new in Ring 1.8?, 77
Better Functions
What is new in Ring 1.2?, 170
Better Loop|Exit Command
What is new in Ring 1.3?, 164
Better Memory Management
What is new in Ring 1.9?, 65
Better Natural Language Programming Support
What is new in Ring 1.1?, 175
Better Objects Library
What is new in Ring 1.5?, 111
Better Performance
What is new in Ring 1.8?, 68
Better Quality
What is new in Ring 1.2?, 173
What is new in Ring 1.5?, 133
Better Ring Compiler and VM
What is new in Ring 1.8?, 79
Better Ring For Android
What is new in Ring 1.6?, 90
Better Ring Notepad
What is new in Ring 1.2?, 170
What is new in Ring 1.3?, 160
What is new in Ring 1.5?, 102
What is new in Ring 1.6?, 93
What is new in Ring 1.7?, 84
What is new in Ring 1.9?, 56
Better Ring VM
What is new in Ring 1.7?, 85
Better Ring2EXE
What is new in Ring 1.7?, 85
Better RingQt
What is new in Ring 1.2?, 170
What is new in Ring 1.3?, 156
What is new in Ring 1.4?, 151
What is new in Ring 1.5?, 109
What is new in Ring 1.6?, 95
What is new in Ring 1.7?, 84
What is new in Ring 1.8?, 78
What is new in Ring 1.9?, 62
Better RingREPL
What is new in Ring 1.6?, 96
Better RingVM
What is new in Ring 1.6?, 96
Better RingZip
What is new in Ring 1.7?, 85
Better Scripts for building Ring
What is new in Ring 1.6?, 92
Better StdLib
What is new in Ring 1.3?, 164
What is new in Ring 1.4?, 149
What is new in Ring 1.5?, 105
What is new in Ring 1.6?, 96
What is new in Ring 1.9?, 57
Better Tests
What is new in Ring 1.10?, 49
Better Trace Library
What is new in Ring 1.7?, 83
Better WebLib
What is new in Ring 1.4?, 149
What is new in Ring 1.5?, 106
bignumber
BigNumber Class, 1233
BigNumber Functions, 1232
Examples, 1231
Introduction, 1230
Library Source Code, 1233
Loading the library, 1231
BigNumber Class
bignumber, 1233
BigNumber Functions
bignumber, 1232
BigNumber Library
What is new in Ring 1.9?, 58
binarydigits()
Stdlib Functions, 403
Bitwise Operators
Operators, 228
BraceError() Method
Natural Language Programming, 449
BraceExprEval Method
Natural Language Programming, 448
BraceStart and BraceEnd Methods
Natural Language Programming, 447
Branching
Control Structures, 230
Control Structures - Second Style, 237
Control Structures - Third Style, 240
BreakPoint
The Trace Library and the Interactive Debugger, 907
Building From Source Code
Building using CMake, 194
Building using Fedora Linux, 189
Building using MacOS X, 192
Building using Microsoft Windows, 185
Building using Ubuntu Linux, 187
Introduction, 184
Building Games For Android
Building the project, 604
Index 2042
6. Ring Documentation, Release 1.10
Download Requirements and Update the Android
SDK, 603
Introduction, 602
Project Folder, 603
Building RingQt Applications for Mobile
Comments about developing for Android using
RingQt, 788
Download Requirements, 787
Install Qt for Android, 787
Introduction, 786
The Qt project for your Ring application, 788
Update the Android SDK, 787
Using Ring2EXE, 788
Building standalone console application
Distributing Ring Application using Ring2EXE, 865
Building the Cards Game for Mobile using RingQt
Distributing Ring Application using Ring2EXE, 867
Building the Form Designer for Mobile using RingQt
Distributing Ring Application using Ring2EXE, 869
Building the project
Building Games For Android, 604
Building the Weight History Application for Mobile using
RingQt
Distributing Ring Application using Ring2EXE, 868
Building using CMake
Building From Source Code, 194
Building using Fedora Linux
Building From Source Code, 189
Building using MacOS X
Building From Source Code, 192
Building using Microsoft Windows
Building From Source Code, 185
Building using Ubuntu Linux
Building From Source Code, 187
Calculator Application
Applications developed in little hours, 12
What is new in Ring 1.5?, 101
Call Functions
Functions - First Style, 247
Functions - Second Style, 251
Functions - Third Style, 255
callgc()
Low Level Functions, 884
Calling a function sharing the name with a method in the
current class
Scope Rules for Functions and Methods, 826
Calling Functions and Methods
Performance Tips, 860
Can I connect to dbase/harbour database?
Frequently Asked Questions, 976
Can Ring work on Windows XP?
Frequently Asked Questions, 978
capitalized()
Stdlib Functions, 397
cfunctions()
Reflection and Meta-programming, 377
CGI Support
Command Line Options, 854
Change Focus
Desktop and Mobile Development, 748
Change Language Keywords
Syntax Flexibility, 828
Change Language Operators
Syntax Flexibility, 829
Change the ’=’ operator to ’is’
Natural Language Programming, 445
Change the Ring Keyword ’And’
Natural Language Programming, 443
Change the Ring Operator ’+’
Natural Language Programming, 444
Change: Basic Extensions are separated from RingVM
What is new in Ring 1.4?, 144
changestring()
Stdlib Functions, 406
Char()
Data Type, 288
ChDir() Function
System Functions, 311
Check Character
Data Type, 283
Check Data Type
Data Type, 282
Check Parameters Count
Extension, 916
Check Parameters Type
Extension, 917
Chess Game
What is new in Ring 1.10?, 41
Classes and Objects
Object Oriented Programming, 354
Classes and their Methods to use the default events
Desktop and Mobile Development, 778
classes()
Reflection and Meta-programming, 381
classname()
Reflection and Meta-programming, 383
Clean Natural Code
Natural Language Programming, 450
Clearerr()
Files, 301
Client Example
RingLibuv, 547
Client Example - Using Classes
RingLibuv, 550
clock()
Date and Time, 278
Close Window Event
Index 2043
7. Ring Documentation, Release 1.10
RingLibSDL, 541
ClosPerSecond()
Date and Time, 278
Code Generator
Adding code to the generated code, 930
Comments in configuration file, 932
Configuration file, 928
Configuration file for the Allegro library, 933
Configuration Files Examples, 948
Constants Type, 933
Defining Constants, 931
Determine Structure Members Types, 931
Enum and Numbers, 932
Executing code during code generation, 932
Filtering using Expressions, 932
function prototype, 928
Introduction, 927
Loading Files, 947
Managed Classes, 947
Prefix for Functions Names, 930
Qt configuration file, 937
Register New Functions, 931
Static Methods, 946
Threads Support, 935
Using configuration file that wrap C++ library, 937
Using the tool, 928
Wrap structures, 930
Wrapping C++ Classes, 936
CodeEditor Class
RingQt Classes Reference, 1000
Command Line Options
CGI Support, 854
Generate Object File, 855
Introduction, 840
No Run, 854
Performance, 854
Printing Final Intermediate Code, 849
Printing Instruction Operation Code, 854
Printing Intermediate Code, 847
Printing Rules, 843
Printing Tokens, 841
Comments about developing for Android using RingQt
Building RingQt Applications for Mobile, 788
Comments about evaluation
Control Structures - First Style, 235
Comments in configuration file
Code Generator, 932
Compact Syntax
Language Design, 33
Compiler and Virtual Machine (VM)
How to contribute?, 196
Compiler Errors
Reference, 989
Compiling on Manjaro Linux
What is new in Ring 1.8?, 73
Composition
Object Oriented Programming, 357
Configuration file
Code Generator, 928
Configuration file for the Allegro library
Code Generator, 933
Configuration Files Examples
Code Generator, 948
Configure the Apache web server
Web Development (CGI Library), 459
Conflict between Class Attributes and Local Variables
Scope Rules, 811
Conflict between Global Variables and Class Attributes
Frequently Asked Questions, 964
Scope Rules, 810
Conflict between self inside braces and self in the class
region
Scope Rules, 817
Constants Type
Code Generator, 933
Constructor methods in Ring
Frequently Asked Questions, 960
Contact the Authors
Resources, 2039
Context Menu
Desktop and Mobile Development, 693
Control Structures
Branching, 230
Looping, 241
Control Structures - First Style
Comments about evaluation, 235
Do Again Loop, 233
Exit, 233
Exit from two loops, 233
Exit/Loop inside sub functions, 234
For In Loop, 232
for in to modify lists, 232
For Loop, 231
Introduction, 229
Loop Command, 234
Looping, 231
Short-circuit evaluation, 234
Step Option, 232
Switch Statement, 230
While Loop, 231
Control Structures - Second Style
Branching, 237
Exceptions, 239
For In Loop, 239
For Loop, 238
If Statement, 237
Introduction, 236
Looping, 238
Index 2044
8. Ring Documentation, Release 1.10
Switch Statement, 237
Control Structures - Third Style
Branching, 240
Exceptions, 243
For In Loop, 243
For Loop, 242
If Statement, 240
Introduction, 239
Switch Statement, 240
While Loop, 241
Conversion
Data Type, 287
Conversion Class
Stdlib Classes, 429
Convert between Numbers and Bytes
What is new in Ring 1.4?, 148
Convert Letters Case
Strings, 271
Cookies
Web Development (CGI Library), 471
Copy Lists
Lists, 265
Copy()
Strings, 273
Could you explain the output of the StrCmp() function?
Frequently Asked Questions, 967
Create Database
MySQL Functions, 330
Create Executable File
Getting Started - First Style, 197
Getting Started - Second Style, 200
Getting Started - Third Style, 202
Create Lists
Lists, 261
Create Multi Dimension Array Using List and Recursion
Lists, 268
Create Package in the Current Folder
Ring Package Manager (RingPM), 879
Create Table and Insert Data
MySQL Functions, 331
Create Window
RingLibSDL, 538
Create your first extension
Introduction, 948
Location, 949
Steps to create the extension, 949
Testing the extension, 950
Create Zip File
RingZip, 521
Creating a Class for each Window in GUI applications
Scope Rules, 816
Creating Lists
Performance Tips, 858
Creating Menubar
Desktop and Mobile Development, 690
Creating more than one window
Desktop and Mobile Development, 731
Creating New Package
Ring Package Manager (RingPM), 876
Creating Reports using the WebLib and the GUILib
Desktop and Mobile Development, 783
Creating StatusBar
Desktop and Mobile Development, 695
Creating the Game Window
Game Engine for 2D Games, 557
Creating the Qt resource file using Folder2qrc
Distributing Ring Application using Ring2EXE, 871
Creating Toolbar
Desktop and Mobile Development, 694
Creating Windows Installer
Distributing Ring Application, 863
CRUD Example using MVC
Web Development (CGI Library), 493
CurrentDir() Function
System Functions, 311
Data Representation
General Information, 984
Data Type
Ascii(), 288
Char(), 288
Check Character, 283
Check Data Type, 282
Conversion, 287
Dec(), 288
Hex(), 288
Hex2str(), 289
Introduction, 281
IsAlNum(), 284
IsAlpha(), 284
IsCntrl(), 284
IsDigit(), 285
IsGraph(), 285
IsList(), 283
IsLower(), 285
IsNULL(), 283
IsNumber(), 282
IsPrint(), 285
IsPunct(), 286
IsSpace(), 286
IsString(), 282
IsUpper(), 286
IsXdigit(), 286
Number(), 287
Str2Hex(), 289
String(), 287
Type(), 283
Database, ModelBase & ControllerBase classes
Index 2045
9. Ring Documentation, Release 1.10
Web Development (CGI Library), 501
DataType Class
Stdlib Classes, 428
Date and Time
AddDays(), 280
clock(), 278
ClosPerSecond(), 278
Date(), 278
DiffDays(), 280
EpochTime(), 280
Introduction, 277
Time(), 278
TimeList(), 279
Date()
Date and Time, 278
DateTime Class
Stdlib Classes, 423
dayofweek()
Stdlib Functions, 404
Debug Class
Stdlib Classes, 427
Dec()
Data Type, 288
Decimals()
Mathematical Functions, 294
Declarative Programming
Declarative programming on the top of Object-
Oriented, 439
executing code after the end of object access, 439
Introduction, 435
More Beatiful Code, 440
Objects inside lists, 436
Return object by reference, 437
Declarative programming on the top of Object-Oriented
Declarative Programming, 439
Declare parameters
Functions - First Style, 248
Functions - Second Style, 252
Functions - Third Style, 256
Decrypt()
Security and Internet Functions, 351
Deep Copy
Variables, 225
Default value for object attributes
Object Oriented Programming, 369
Default value for object attributes is NULL
What is new in Ring 1.8?, 75
Define Declarative Languages
Language Design, 36
Define Functions
Functions - First Style, 247
Functions - Second Style, 251
Functions - Third Style, 255
Define Natural Statements
Language Design, 34
Defining Commands
Using the Natural Library, 454
Defining commands using classes
Using the Natural Library, 457
Defining Constants
Code Generator, 931
Defining Variables and Variables Access
Scope Rules, 808
Delete Item From List
Lists, 262
Deleting All Packages
Ring Package Manager (RingPM), 876
Demo Programs
Introduction, 315
Language Shell, 316
Main Menu, 316
The Cards Game, 772
Deploying after updates
Deploying Web Applications in the Cloud, 515
Deploying Web Applications in the Cloud
Application Database, 515
Deploying after updates, 515
Hello World program, 514
Introduction, 512, 513
Local Tests, 515
Ring source code files and permissions, 514
Usage, 513
Deploying Web applications in the Cloud
What is new in Ring 1.9?, 61
Designed for a clear goal
Language Design, 31
Desktop and Mobile Development
Adding Hyperlink to QLabel, 711
Change Focus, 748
Classes and their Methods to use the default events,
778
Context Menu, 693
Creating Menubar, 690
Creating more than one window, 731
Creating Reports using the WebLib and the GUILib,
783
Creating StatusBar, 695
Creating Toolbar, 694
Dialog Functions, 738
Display Image using QLabel, 715
Display Scaled Image using QLabel, 724
Drawing using QPainter, 726
Dynamic Objects, 752
Inheritance from GUI Classes, 744
KeyPress and Mouse Move Events, 739
Menubar and StyleSheet Example, 716
Methods to use Events with Events Filter, 781
Movable Label Example, 735
Index 2046
10. Ring Documentation, Release 1.10
Moving Objects using the Mouse, 740
New Classes names - Index Start from 1, 783
Notepad Application, 757
Other Widgets Events, 720
Playing Sound, 732
Printing using QPrinter, 728
QLineEdit Events and QMessageBox, 718
QMessagebox Example, 736
QVideoWidget and QMediaPlayer, 712
Regular Expressions, 749
RingQt Classes and their Qt Documentation, 783
Rotate Text, 746
Simple Client and Server Example, 750
The Cards Game, 772
The Difference between Qt and RingQt, 782
The Events Loop, 681
The First GUI Application, 680
Using Layout, 682
Using QCheckBox, 708
Using QComboBox Class, 689
Using QDateEdit, 703
Using QDesktopWidget Class, 745
Using QDial, 704
Using QDockWidget, 696
Using QFrame, 713
Using QInputDialog Class, 737
Using qLCDNumber, 734
Using QPrintPreviewDialog, 729
Using QProgressBar, 700
Using QProgressBar and Timer, 723
Using QRadioButton and QButtonGroup, 709
Using QSlider, 701
Using QSpinBox, 701
Using QTableWidget, 699
Using QTabWidget, 697
Using QTreeView and QFileSystemModel, 687
Using QTreeWidget and QTreeWidgetItem, 688
Using QWebView, 707
Using the QColorDialog Class, 733
Using the QFileDialog Class, 725
Using the QListWidget Class, 684
Using the QTextEdit Class, 683
Using the QTimer Class, 722
Weight History Application, 753
Determine Structure Members Types
Code Generator, 931
Dialog Functions
Desktop and Mobile Development, 738
DiffDays()
Date and Time, 280
Dir()
Files, 297
direxists()
Stdlib Functions, 406
Disable BreakPoints
The Trace Library and the Interactive Debugger, 907
Discovering Packages
Ring Package Manager (RingPM), 873
Display Error Message
Extension, 917
Display Image
RingLibSDL, 538
Display Image using QLabel
Desktop and Mobile Development, 715
Display PNG Images
RingLibSDL, 539
Display Scaled Image using QLabel
Desktop and Mobile Development, 724
Display Transparent Images
RingLibSDL, 540
Display Warnings Option
What is new in Ring 1.2?, 173
Distributing Applications and Games for Mobile
Distributing Ring Application, 863
Distributing Applications for Microsoft Windows
Distributing Ring Application, 862
Distributing Applications for Mobile using RingQt
Distributing Ring Application using Ring2EXE, 867
Distributing Ring Application
Creating Windows Installer, 863
Distributing Applications and Games for Mobile,
863
Distributing Applications for Microsoft Windows,
862
Introduction, 861
Protecting the Source Code, 862
The files ring.ring and ring.ringo, 863
Using C/C++ Compiler and Linker, 863
Distributing Ring Application using Ring2EXE
Building standalone console application, 865
Building the Cards Game for Mobile using RingQt,
867
Building the Form Designer for Mobile using
RingQt, 869
Building the Weight History Application for Mobile
using RingQt, 868
Creating the Qt resource file using Folder2qrc, 871
Distributing Applications for Mobile using RingQt,
867
Distributing RingAllegro Applications, 866
Example, 864
How Ring2EXE works?, 864
Important Information about Ring2EXE, 871
Introduction, 863
Options, 865
Using Ring2EXE, 864
Distributing RingAllegro Applications
Distributing Ring Application using Ring2EXE, 866
Index 2047