Welcome to Ring’s documentation!
Contents:
- Applications developed in a few hours
- Introduction
- Using Ring Notepad
- Ring Notepad - Main Window
- Creating and running your first Console Application
- Creating and running your first GUI/WebAssembly/Mobile Application
- Creating and running your first Web Application
- Creating and running your first Desktop/Mobile Game
- The Main File in the Project
- The File Menu
- The Edit Menu
- The View Menu
- The Program Menu
- The Browser Menu
- The Tools Menu
- The Distribute Menu
- The Help Menu
- Getting Started - First Style
- Getting Started - Second Style
- Getting Started - Third Style
- Variables
- Operators
- Arithmetic Operators
- Relational Operators
- Logical Operators
- Bitwise Operators
- Assignment Operators
- Misc Operators
- Operators Precedence
- Mixing Arithmetic Operators and Types
- Mixing Relational Operators and Types
- Mixing Logical Operators and Types
- Mixing Bitwise Operators and Types
- Mixing Assignment Operators and Types
- Control Structures - First Style
- Control Structures - Second Style
- Control Structures - Third Style
- Getting Input
- Functions - First Style
- Functions - Second Style
- Functions - Third Style
- Program Structure
- Lists
- Create Lists
- Add Items
- Get List Size
- Delete Item From List
- Get List Item
- Set List Item
- Search
- Sort
- Reverse
- Insert Items
- Nested Lists
- Copy Lists
- First-class lists
- Using Lists during definition
- Passing Lists to Functions
- Access List Items by String Index
- Passing Parameters or Arguments Using List
- Passing Parameters or Arguments Using List Array
- Return Parameters as List or Hash Table
- Creating a Multi-Dimensional Array using List
- Swap Lists and Items
- Strings
- String Literals
- Get String Length
- Convert Letters Case
- Access String Letters
- Left() Function
- Right() Function
- Trim() Function
- Copy() Function
- Lines() Function
- Substr() Function
- Find substring
- Get substring from position to end
- Get Number of Characters From Position
- Transform Substring To Another Substring
- strcmp() Function
- Reverse() Function
- str2list() and list2str() Functions
- Merge binary characters
- Date and Time
- Check Data Type and Conversion
- Check Data Type
- IsString() Function
- IsNumber() Function
- IsList() Function
- Type() Function
- IsNULL() Function
- Check Character
- IsAlNum() Function
- IsAlpha() Function
- IsCntrl() Function
- IsDigit() Function
- IsGraph() Function
- IsLower() Function
- IsPrint() Function
- IsPunct() Function
- IsSpace() Function
- IsUpper() Function
- IsXdigit() Function
- Conversion
- Number() Function
- String() Function
- Ascii() Function
- Char() Function
- Hex() Function
- Dec() Function
- Str2hex() Function
- Hex2str() Function
- Mathematical Functions
- Files
- Read() Function
- Write() Function
- Dir() Function
- Rename() Function
- Remove() Function
- Fopen() Function
- Fclose() Function
- Fflush() Function
- Freopen() Function
- Tempfile() Function
- Tempname() Function
- Fseek() Function
- Ftell() Function
- Rewind() Function
- Fgetpos() Function
- Fsetpos() Function
- Clearerr() Function
- Feof() Function
- Ferror() Function
- Perror() Function
- Fgetc() Function
- Fgets() Function
- Fputc() Function
- Fputs() Function
- Ungetc() Function
- Fread() Function
- Fwrite() Function
- Fexists() Function
- Direxists() Function
- Getpathtype() Function
- Getfilesize() Function
- Example
- Numbers and Bytes
- System Functions
- System() Function
- SysGet() Function
- SysSet() Function
- SysUnset() Function
- IsMSDOS() Function
- IsWindows() Function
- IsWindows64() Function
- IsUnix() Function
- IsMacOSX() Function
- IsLinux() Function
- IsFreeBSD() Function
- IsAndroid() Function
- Example
- GetArch() Function
- Windowsnl() Function
- Get Command Line Arguments
- Get Active Source File Name
- PrevFileName() Function
- CurrentDir() Function
- ExeFileName() Function
- ChDir() Function
- ExeFolder() Function
- Version() Function
- Shutdown() Function
- NofProcessors() Function
- Eval() and Debugging
- Demo Programs
- ODBC Functions
- odbc_init() Function
- odbc_drivers() Function
- odbc_datasources() Function
- odbc_close() Function
- Print List of ODBC Drivers
- Print List of ODBC Data Sources
- odbc_connect() Function
- odbc_disconnect() Function
- Open and Close Connection
- odbc_execute() Function
- odbc_colcount() Function
- odbc_fetch() Function
- odbc_getdata() Function
- Execute Query and Print Result
- odbc_tables() Function
- odbc_columns() Function
- odbc_autocommit() Function
- odbc_commit() Function
- odbc_rollback() Function
- Transactions and Using Commit and Rollback
- Save and Restore images
- MySQL Functions
- MySQL_Info() Function
- MySQL_Init() Function
- MySQL_Error() Function
- MySQL_Connect() Function
- MySQL_Close() Function
- MySQL_Query() Function
- Create Database
- Create Table and Insert Data
- MySQL_Insert_ID() Function
- MySQL_Result() Function
- MySQL_Next_Result() Function
- Print Query Result
- MySQL_Columns() Function
- MySQL_Result2() Function
- MySQL_Escape_String() Function
- Save Image inside the database
- Restore Image From The Database
- MySQL_AutoCommit() Function
- MySQL_Commit() Function
- MySQL_Rollback() Function
- Transaction Example
- SQLite Functions
- PostgreSQL Functions
- Security and Internet Functions
- MD5() Function
- SHA1() Function
- SHA256() Function
- SHA512() Function
- SHA384() Function
- SHA224() Function
- SupportedCiphers() Function
- Encrypt() Function
- Decrypt() Function
- Encryption and Decryption Example
- File Hash
- Randbytes() Function
- rsa_generate() Function
- rsa_export_params() Function
- rsa_import_params() Function
- rsa_export_pem() Function
- rsa_import_pem() Function
- rsa_is_privatekey() Function
- rsa_encrypt_pkcs() Function
- rsa_decrypt_pkcs() Function
- rsa_encrypt_oaep() Function
- rsa_decrypt_oaep() Function
- rsa_encrypt_raw() Function
- rsa_decrypt_raw() Function
- rsa_sign_pkcs() Function
- rsa_signhash_pkcs() Function
- rsa_verify_pkcs() Function
- rsa_verifyhash_pkcs() Function
- rsa_sign_pss() Function
- rsa_signhash_pss() Function
- rsa_verify_pss() Function
- rsa_verifyhash_pss() Function
- openssl_versiontext() Function
- openssl_version() Function
- Large Files Hash
- Download() Function
- SendEmail() Function
- Object Oriented Programming (OOP)
- Classes and Objects
- Access Objects Using Braces
- Composition
- Setter and Getter
- Private Attributes and Methods
- Operator Overloading
- Inheritance
- Dynamic Attributes
- Packages
- Printing Objects
- Find() and List of Objects
- Sort() and List of Objects
- Using Self.Attribute and Self.Method()
- Using This.Attribute and This.Method()
- Using This in the class region as Self
- Default value for object attributes
- Command: New From
- Using Objects During Definition
- Functional Programming (FP)
- Reflection and Meta-programming
- locals() Function
- globals() Function
- functions() Function
- cfunctions() Function
- islocal() Function
- isglobal() Function
- isfunction() Function
- iscfunction() Function
- packages() Function
- ispackage() Function
- classes() Function
- isclass() Function
- packageclasses() Function
- ispackageclass() Function
- classname() Function
- parentclassname() Function
- objectid() Function
- isobject() Function
- attributes() Function
- methods() Function
- isattribute() Function
- isprivateattribute() Function
- ismethod() Function
- isprivatemethod() Function
- addattribute() Function
- addmethod() Function
- getattribute() function
- setattribute() function
- mergemethods() Function
- packagename() Function
- importpackage() Function
- Nothing() function
- OptionalFunc() function
- Declarative Programming using Nested Structures
- Natural language programming
- Using the Natural Library
- Scope Rules for Variables and Attributes
- Three Scopes
- Defining Variables and Variables Access
- How Ring find the variable?
- Using Object.Attribute
- The Self Object
- How Ring Define Variables and Attributes
- Conflict between Global Variables and Class Attributes
- Conflict between Class Attributes and Local Variables
- Using Braces to access objects inside Class Methods
- Accessing the class attributes from braces inside class methods
- Creating a Class for each Window in GUI applications
- Conflict between self inside braces and self in the class region
- Using braces to escape from the current object scope
- The For Loops uses the local scope
- Summary of Scope Rules
- Scope Rules for Functions and Methods
- Syntax Flexibility
- Change Language Keywords
- Change Language Operators
- Load Syntax Files
- Using “()” around the function parameters
- Using Semi-colon after and between statements
- Using $ and @ in the start of the variable name
- Using the ‘elseif’ keyword as ‘but’ in if statement
- Using the ‘else’ keyword as ‘other’ in switch statement
- Using the ‘end’ keyword in different control structures
- Using braces to start and end different control structures
- Using ‘put’ and ‘get’ as ‘see’ and ‘give’
- Using ‘case’ as ‘on’ in switch statements
- Using ‘def’ as ‘func’ in functions/methods definition
- Using braces { } in Packages/Classes/Functions
- Using ‘break’/’continue’ keywords
- Using ‘end’ keyword after Packages/Classes/Functions
- Using ‘function’/’endfunction’ keywords
- Using ‘endif’/’endfor’/’endwhile’/’endswitch’/’endtry’ keywords
- Using ‘endpackage’/’endclass’/’endfunc’ keywords after Packages/Classes/Functions
- Ignore new lines after keywords
- Automatic loading for syntax files
- Enable/Disable Hash Comments
- The Type Hints Library
- The Trace Library and the Interactive Debugger
- Embedding Ring Language in Ring Programs
- Stdlib Functions
- IsAppCompiled() Function
- AppArguments() Function
- AppPath() Function
- JustFilePath() Function
- JustFileName() Function
- Value() Function
- Times() Function
- Map() Function
- Filter() Function
- Reduce() Function
- Split() Function
- SplitMany() Function
- Capitalized() Function
- IsSpecial() Function
- IsVowel() Function
- LineCount() Function
- Factorial() Function
- Fibonacci() Function
- IsPrime() Function
- Sign() Function
- List2File() Function
- File2List() Function
- StartsWith() Function
- EndsWith() Function
- GCD() Function
- LCM() Function
- SumList() Function
- ProdList() Function
- EvenOrOdd() Function
- Factors() Function
- IsPalindrome() Function
- IsLeapYear() Function
- BinaryDigits() Function
- MatrixMulti() Function
- MatrixTrans() Function
- DayOfWeek() Function
- Permutation() Function
- ReadLine() Function
- SubString() Function
- ChangeString() Function
- Sleep() Function
- IsMainSourceFile() Function
- MakeDir() Function
- Fsize() Function
- TrimAll() Function
- TrimLeft() Function
- TrimRight() Function
- EpochTime() Function
- SystemCmd() Function
- ListAllFiles() Function
- SystemSilent() Function
- OSCreateOpenFolder() Function
- OSCopyFolder() Function
- OSDeleteFolder() Function
- OSCopyFile() Function
- OSDeleteFile() Function
- OSRenameFile() Function
- List2Code() Function
- Str2ASCIIList() Function
- ASCIIList2Str() Function
- IsListContainsItems() Function
- IsBetween() Function
- TimeInfo() Function
- RandomList() Function
- RandomItem() Function
- CheckEquality() Function
- NumOrZero() Function
- Stdlib Classes
- Desktop, WebAssembly and Mobile development using RingQt
- The First GUI Application
- The Events Loop
- Using Layout
- Using the QTextEdit Class
- Using the QListWidget Class
- Using QTreeView and QFileSystemModel
- Using QTreeWidget and QTreeWidgetItem
- Using QComboBox Class
- Creating Menubar
- Context Menu
- Creating Toolbar
- Creating StatusBar
- Using QDockWidget
- Using QTabWidget
- Using QTableWidget
- Using QProgressBar
- Using QSpinBox
- Using QSlider
- Using QDateEdit
- Using QDial
- Using QWebView
- Using QCheckBox
- Using QRadioButton and QButtonGroup
- Adding Hyperlink to QLabel
- QVideoWidget and QMediaPlayer
- Using QFrame
- Display Image using QLabel
- Menubar and StyleSheet Example
- QLineEdit Events and QMessageBox
- Other Widgets Events
- Using the QTimer Class
- Using QProgressBar and Timer
- Display Scaled Image using QLabel
- Using the QFileDialog Class
- Drawing using QPainter
- Printing using QPrinter
- Using QPrintPreviewDialog
- Creating More than one Window
- Playing Sound
- Using the QColorDialog Class
- Using qLCDNumber Class
- Movable Label Example
- QMessagebox Example
- Using QInputDialog Class
- Dialog Functions
- KeyPress and Mouse Move Events
- Moving Objects using the Mouse
- Inheritance from GUI Classes
- Using QDesktopWidget Class
- Rotate Text
- Change Focus
- Regular Expressions
- Simple Client and Server Example
- Dynamic Objects
- Weight History Application
- Notepad Application
- The Cards Game
- Classes and their Methods to use the default events
- Methods to use Events with Events Filter
- The Difference between Qt and RingQt
- RingQt Classes and their Qt Documentation
- New Classes names - Index Start from 1
- TableWidget - AddList() Method
- Creating Reports using the WebLib and the GUILib
- Using the Form Designer
- Graphics Programming using RingQt3D
- Objects Library for RingQt Application
- Multi-language Applications
- Building RingQt Applications for Mobile
- Building RingQt Applications for WebAssembly
- Web Development (CGI Library)
- Configure the Apache web server
- Setting the shebang line
- Grant Ring files execution permission
- Ring CGI Hello World Program
- Hello World Program using the Web Library
- Web Library Features
- HTTP Get Example
- HTTP POST Example
- Upload Files
- Cookies
- URL Encode
- Templates
- HTML Special Characters
- Hash Functions
- Random Image
- HTML Lists
- HTML Tables
- Gradient
- Generating Pages using Objects
- HtmlPage Class
- Using Bootstrap Library using Functions
- Using Bootstrap Library using Objects
- CRUD Example using MVC
- Users registration and Login
- Database, ModelBase & ControllerBase classes
- WebLib API
- Application Class
- Page Class
- ScriptFunctions Class
- StyleFunctions Class
- WebPage Class
- HtmlPage Class
- Deploying Web Applications in the Cloud
- Graphics and 2D Games programming using RingAllegro
- Demo Project - Game Engine for 2D Games
- Project Layers
- Graphics Library bindings
- Interface to graphics library
- Game Engine Classes
- Games Layer
- Game Class
- GameObject Class
- Sprite Class
- Text Class
- Animate Class
- Sound Class
- Map Class
- Using the Game Engine - Creating the Game Window
- Using the Game Engine - Drawing Text
- Using the Game Engine - Moving Text
- Using the Game Engine - Playing Sound
- Using the Game Engine - Animation
- Using the Game Engine - Animation and Functions
- Using the Game Engine - Sprite - Automatic Movement using Keyboard
- Using the Game Engine - Sprite - Keypress event
- Using the Game Engine - Sprite - Mouse event
- Using the Game Engine - Sprite - State event
- Using the Game Engine - Animate - Events
- Using the Game Engine - Map
- Using the Game Engine - Map Events
- Using the Game Engine - Object and Drawing
- Stars Fighter Game
- Flappy Bird 3000 Game
- Super Man 2016 Game
- Building Games For Android
- Developing Games using RingRayLib
- Introduction
- Basic Window
- Input Keys
- Input Mouse
- 3D Camera
- 3D Camera Free
- Mouse Wheel
- Input Multi-touch
- Camera First Person
- 3D Picking
- Full Screen
- Two Cubes
- Basic Shapes
- Draw Ring
- Bezier Lines
- Collision Area
- Following Eyes
- Colors Palette
- Rectangle Scaling
- Music Playing
- Sound Loading
- Image Drawing
- Image Generation
- Texture Source
- Geometric Shapes
- Cubic Map
- Implementation
- Using RingOpenGL and RingFreeGLUT for 3D Graphics
- Samples Source (Authors)
- What is RingOpenGL?
- What is RingFreeGLUT?
- The First Window using RingFreeGLUT
- Drawing using RingOpenGL
- The First Triangle
- Window Resize Event
- Triangle Rotation
- Keyboard Events and Colors
- The Camera
- Mouse Events
- Menu Events
- Using Fonts
- Frames Per Second
- Make a Cube using RingOpenGL and RingFreeGLUT
- Using RingOpenGL and RingAllegro for 3D Graphics
- Demo Project - The Gold Magic 800 Game
- Using RingTilengine
- Performance Tips
- Command Line Options
- Distributing Ring Applications (Manual)
- Distributing Ring Applications using Ring2EXE
- Using Ring2EXE
- How Ring2EXE works?
- Example
- Options
- Building standalone console application
- Distributing RingAllegro Applications
- Distributing RingQt Applications
- Distributing Applications for Mobile using RingQt
- Distributing Applications for WebAssembly using RingQt
- Building the Cards Game for Mobile using RingQt
- Building the Weight History Application for Mobile using RingQt
- Building the Form Designer for Mobile using RingQt
- Creating the Qt resource file using Folder2qrc
- Important Information about Ring2EXE
- The Ring Package Manager (RingPM)
- ZeroLib Functions Reference
- FoxRing Functions Reference
- FoxRing functions
- frAbs() function
- frAsc() function
- frAddBs() function
- frAt() function
- frAtC() function
- frChr() function
- frEmpty() function
- frFile() function
- frFileToStr() function
- frStr() function
- frSetIfEmpty() function
- frSpace() function
- frInList() function
- frForcePath() function
- frAllTrim() function
- frLTrim() function
- frJustDrive() function
- frJustExt() function
- frJustStem() function
- frRTrim() function
- frJustPath() function
- frForceExt() function
- frALines() function
- frJustFName() function
- frPadL() function
- frPadR() function
- frProper() function
- frReplicate() function
- frLen() function
- frStuff() function
- frSubStr() function
- frStrTran() function
- frListToString() function
- frInt() function
- frStringToList() function
- frIIf() function
- frVal() function
- frBetween() function
- frSetSeparatorTo() function
- frTransform() function
- frVarType() function
- Example
- BigNumber Functions Reference
- CSVLib Functions Reference
- JSONLib Functions Reference
- HTTPLib Functions Reference
- TokensLib Functions Reference
- Using RingLibCurl
- RingLibCurl Functions Reference
- Using RingSockets
- Using RingThreads
- Using RingLibui
- Using RingZip
- RingLibZip Functions Reference
- RingMurmurHash Functions Reference
- RingConsoleColors Functions Reference
- Using RingRogueUtil
- RingAllegro Functions Reference
- Using RingLibSDL
- RingLibSDL Functions Reference
- Using Ringlibuv
- RingLibuv Functions Reference
- RingFreeGLUT Functions Reference
- RingStbImage Functions Reference
- RingOpenGL (OpenGL 3.2) Functions Reference
- RingQt Classes and Methods Reference
- AbstractAxis Class
- AbstractBarSeries Class
- CodeEditor Class
- QAbstractAspect Class
- QAbstractButton Class
- QAbstractCameraController Class
- QAbstractGraphicsShapeItem Class
- QAbstractItemView Class
- QAbstractPrintDialog Class
- QAbstractScrollArea Class
- QAbstractSeries Class
- QAbstractSlider Class
- QAbstractSocket Class
- QAbstractSpinBox Class
- QAction Class
- QAllEvents Class
- QApp Class
- QAreaLegendMarker Class
- QAreaSeries Class
- QAspectEngine Class
- QAudioOutput Class
- QAxBase Class
- QAxObject Class
- QAxWidget Class
- QAxWidget2 Class
- QBarCategoryAxis Class
- QBarLegendMarker Class
- QBarSeries Class
- QBarSet Class
- QBitmap Class
- QBluetoothAddress Class
- QBluetoothDeviceDiscoveryAgent Class
- QBluetoothDeviceInfo Class
- QBluetoothHostInfo Class
- QBluetoothLocalDevice Class
- QBluetoothServer Class
- QBluetoothServiceDiscoveryAgent Class
- QBluetoothServiceInfo Class
- QBluetoothSocket Class
- QBluetoothTransferManager Class
- QBluetoothTransferReply Class
- QBluetoothTransferRequest Class
- QBluetoothUuid Class
- QBoxLayout Class
- QBoxPlotLegendMarker Class
- QBoxPlotSeries Class
- QBoxSet Class
- QBrush Class
- QBuffer Class
- QButtonGroup Class
- QByteArray Class
- QCalendarWidget Class
- QCamera Class
- QCameraImageCapture Class
- QCameraLens Class
- QCameraSelector Class
- QCameraViewfinder Class
- QCandlestickLegendMarker Class
- QCandlestickModelMapper Class
- QCandlestickSeries Class
- QCandlestickSet Class
- QCategoryAxis Class
- QChar Class
- QChart Class
- QChartView Class
- QCheckBox Class
- QChildEvent Class
- QClipboard Class
- QColor Class
- QColorDialog Class
- QComboBox Class
- QCompleter Class
- QCompleter2 Class
- QCompleter3 Class
- QCompleter4 Class
- QComponent Class
- QConeGeometry Class
- QConeMesh Class
- QCoreApplication Class
- QCuboidMesh Class
- QCullFace Class
- QCursor Class
- QCylinderMesh Class
- QDate Class
- QDateEdit Class
- QDateTime Class
- QDateTimeAxis Class
- QDateTimeEdit Class
- QDepthTest Class
- QDesktopServices Class
- QDial Class
- QDialog Class
- QDiffuseSpecularMaterial Class
- QDir Class
- QDockWidget Class
- QDrag Class
- QDragEnterEvent Class
- QDragLeaveEvent Class
- QDragMoveEvent Class
- QDropEvent Class
- QEffect Class
- QEntity Class
- QEvent Class
- QExtrudedTextMesh Class
- QFile Class
- QFile2 Class
- QFileDevice Class
- QFileDialog Class
- QFileInfo Class
- QFileSystemModel Class
- QFirstPersonCameraController Class
- QFont Class
- QFontDialog Class
- QFontMetrics Class
- QForwardRenderer Class
- QFrame Class
- QFrame2 Class
- QFrame3 Class
- QFrameAction Class
- QGeoAddress Class
- QGeoAreaMonitorInfo Class
- QGeoAreaMonitorSource Class
- QGeoCircle Class
- QGeoCoordinate Class
- QGeoPositionInfo Class
- QGeoPositionInfoSource Class
- QGeoRectangle Class
- QGeoSatelliteInfo Class
- QGeoSatelliteInfoSource Class
- QGeoShape Class
- QGoochMaterial Class
- QGradient Class
- QGraphicsAnchor Class
- QGraphicsAnchorLayout Class
- QGraphicsEffect Class
- QGraphicsEllipseItem Class
- QGraphicsGridLayout Class
- QGraphicsItem Class
- QGraphicsItemGroup Class
- QGraphicsLayout Class
- QGraphicsLayoutItem Class
- QGraphicsLineItem Class
- QGraphicsLinearLayout Class
- QGraphicsObject Class
- QGraphicsPathItem Class
- QGraphicsPixmapItem Class
- QGraphicsPolygonItem Class
- QGraphicsProxyWidget Class
- QGraphicsRectItem Class
- QGraphicsScene Class
- QGraphicsSceneContextMenuEvent Class
- QGraphicsSceneDragDropEvent Class
- QGraphicsSceneEvent Class
- QGraphicsSceneHelpEvent Class
- QGraphicsSceneHoverEvent Class
- QGraphicsSceneMouseEvent Class
- QGraphicsSceneMoveEvent Class
- QGraphicsSceneResizeEvent Class
- QGraphicsSceneWheelEvent Class
- QGraphicsSimpleTextItem Class
- QGraphicsSvgItem Class
- QGraphicsTextItem Class
- QGraphicsVideoItem Class
- QGraphicsView Class
- QGraphicsWidget Class
- QGridLayout Class
- QGuiApplication Class
- QHBarModelMapper Class
- QHBoxLayout Class
- QHBoxPlotModelMapper Class
- QHCandlestickModelMapper Class
- QHPieModelMapper Class
- QHXYModelMapper Class
- QHeaderView Class
- QHorizontalBarSeries Class
- QHorizontalPercentBarSeries Class
- QHorizontalStackedBarSeries Class
- QHostAddress Class
- QHostInfo Class
- QIODevice Class
- QIcon Class
- QImage Class
- QInputAspect Class
- QInputDialog Class
- QJsonArray Class
- QJsonDocument Class
- QJsonObject Class
- QJsonParseError Class
- QJsonValue Class
- QKeySequence Class
- QLCDNumber Class
- QLabel Class
- QLayout Class
- QLegend Class
- QLegendMarker Class
- QLibraryInfo Class
- QLineEdit Class
- QLineF Class
- QLineSeries Class
- QLinearGradient Class
- QListView Class
- QListWidget Class
- QListWidgetItem Class
- QLocale Class
- QLogValueAxis Class
- QLogicAspect Class
- QMainWindow Class
- QMaterial Class
- QMatrix4x4 Class
- QMdiArea Class
- QMdiSubWindow Class
- QMediaObject Class
- QMediaPlayer Class
- QMediaPlaylist Class
- QMenu Class
- QMenuBar Class
- QMesh Class
- QMessageBox Class
- QMetalRoughMaterial Class
- QMimeData Class
- QModelIndex Class
- QMorphPhongMaterial Class
- QMovie Class
- QMutex Class
- QMutexLocker Class
- QNetworkAccessManager Class
- QNetworkProxy Class
- QNetworkReply Class
- QNetworkRequest Class
- QNmeaPositionInfoSource Class
- QNode Class
- QObject Class
- QObjectPicker Class
- QOpenGLBuffer Class
- QOpenGLContext Class
- QOpenGLDebugLogger Class
- QOpenGLFramebufferObject Class
- QOpenGLFunctions Class
- QOpenGLFunctions_3_2_Core Class
- QOpenGLPaintDevice Class
- QOpenGLShader Class
- QOpenGLShaderProgram Class
- QOpenGLTexture Class
- QOpenGLTimerQuery Class
- QOpenGLVersionProfile Class
- QOpenGLVertexArrayObject Class
- QOpenGLWidget Class
- QOrbitCameraController Class
- QPageSetupDialog Class
- QPaintDevice Class
- QPainter Class
- QPainter2 Class
- QPainterPath Class
- QPen Class
- QPerVertexColorMaterial Class
- QPercentBarSeries Class
- QPhongMaterial Class
- QPicture Class
- QPieLegendMarker Class
- QPieSeries Class
- QPieSlice Class
- QPixmap Class
- QPixmap2 Class
- QPlainTextEdit Class
- QPlaneMesh Class
- QPoint Class
- QPointF Class
- QPointLight Class
- QPolarChart Class
- QPrintDialog Class
- QPrintPreviewDialog Class
- QPrintPreviewWidget Class
- QPrinter Class
- QPrinterInfo Class
- QProcess Class
- QProgressBar Class
- QPushButton Class
- QQmlEngine Class
- QQmlError Class
- QQuaternion Class
- QQuickView Class
- QQuickWidget Class
- QRadioButton Class
- QRect Class
- QRectF Class
- QRegExp Class
- QRegion Class
- QRegularExpression Class
- QRegularExpressionMatch Class
- QRegularExpressionMatchIterator Class
- QRenderAspect Class
- QRenderPass Class
- QScatterSeries Class
- QSceneLoader Class
- QScreen Class
- QScrollArea Class
- QScrollBar Class
- QSerialPort Class
- QSerialPortInfo Class
- QSize Class
- QSkyboxEntity Class
- QSlider Class
- QSphereMesh Class
- QSpinBox Class
- QSplashScreen Class
- QSplineSeries Class
- QSplitter Class
- QSqlDatabase Class
- QSqlDriver Class
- QSqlDriverCreatorBase Class
- QSqlError Class
- QSqlField Class
- QSqlIndex Class
- QSqlQuery Class
- QSqlRecord Class
- QStackedBarSeries Class
- QStackedWidget Class
- QStandardPaths Class
- QStatusBar Class
- QString2 Class
- QStringList Class
- QStringRef Class
- QStyle Class
- QStyleOptionGraphicsItem Class
- QSurfaceFormat Class
- QSystemTrayIcon Class
- QTabBar Class
- QTabWidget Class
- QTableView Class
- QTableWidget Class
- QTableWidgetItem Class
- QTcpServer Class
- QTcpSocket Class
- QTechnique Class
- QTest Class
- QText2DEntity Class
- QTextBlock Class
- QTextBrowser Class
- QTextCharFormat Class
- QTextCodec Class
- QTextCursor Class
- QTextDocument Class
- QTextEdit Class
- QTextOption Class
- QTextStream Class
- QTextStream2 Class
- QTextStream3 Class
- QTextStream4 Class
- QTextStream5 Class
- QTextToSpeech Class
- QTextureLoader Class
- QTextureMaterial Class
- QThread Class
- QThreadPool Class
- QTime Class
- QTimer Class
- QToolBar Class
- QToolButton Class
- QTorusMesh Class
- QTransform Class
- QTransform2 Class
- QTransform3 Class
- QTreeView Class
- QTreeWidget Class
- QTreeWidgetItem Class
- QUrl Class
- QUuid Class
- QVBarModelMapper Class
- QVBoxLayout Class
- QVBoxPlotModelMapper Class
- QVCandlestickModelMapper Class
- QVPieModelMapper Class
- QVXYModelMapper Class
- QValueAxis Class
- QVariant Class
- QVariant2 Class
- QVariant3 Class
- QVariant4 Class
- QVariant5 Class
- QVariantDouble Class
- QVariantFloat Class
- QVariantInt Class
- QVariantString Class
- QVector2D Class
- QVector3D Class
- QVector4D Class
- QVectorQVoice Class
- QVersionNumber Class
- QVideoWidget Class
- QVideoWidgetControl Class
- QViewport Class
- QVoice Class
- QWebEnginePage Class
- QWebEngineView Class
- QWebView Class
- QWidget Class
- QWindow Class
- QXYLegendMarker Class
- QXYSeries Class
- QXmlStreamAttribute Class
- QXmlStreamAttributes Class
- QXmlStreamEntityDeclaration Class
- QXmlStreamEntityResolver Class
- QXmlStreamNamespaceDeclaration Class
- QXmlStreamNotationDeclaration Class
- QXmlStreamReader Class
- QXmlStreamWriter Class
- Qt3DCamera Class
- Qt3DWindow Class
- RingCodeHighlighter Class
- Using FastPro Extension
- Using RingPDFGen Extension
- Using References
- Low Level Functions
- callgc() function
- varptr() function
- space() function
- nullpointer() function
- object2pointer() function
- pointer2object() function
- ispointer() function
- ptrcmp() function
- setpointer() function
- getpointer() function
- pointer2string() function
- memcpy() function
- ringvm_cfunctionslist() function
- ringvm_functionslist() function
- ringvm_classeslist() function
- ringvm_packageslist() function
- ringvm_memorylist() function
- ringvm_calllist() function
- ringvm_fileslist() function
- ringvm_settrace()
- ringvm_tracedata()
- ringvm_traceevent()
- ringvm_tracefunc()
- ringvm_scopescount()
- ringvm_evalinscope()
- ringvm_passerror()
- ringvm_hideerrormsg()
- ringvm_callfunc()
- Example - Using the Trace Functions
- Example - The Trace Library
- ringvm_see() function
- ringvm_give() function
- ringvm_codelist() function
- ringvm_info() function
- ringvm_ismempool() function
- ringvm_runcode() function
- Tutorial: Ring Extensions in C/C++
- Extension using the C/C++ languages
- ring_ext.h
- ring_ext.c
- Module Organization
- Function Structure
- Check Parameters Count
- Display Error Message
- Check Parameters Type
- Get Parameters Values
- Return Value
- Function Prototype
- Sin() Function Implementation
- Fopen() and Fclose() Functions Implementation
- Ring API - List Functions
- RING_API_STATE
- Ring API - String Functions
- MySQL_Columns() Function Implementation
- Dynamic/Shared Libraries (DLL/So/Dylib) and LoadLib() function
- Using RING_API_RETMANAGEDCPOINTER()
- Memory Functions
- Embedding Ring Language in C/C++ Programs
- Code Generator for wrapping C/C++ Libraries
- Using the tool
- Configuration file
- Using the function prototype
- Adding code to the generated code
- Prefix for Functions Names
- Generate function to wrap structures
- Determine Structure Members Types
- Defining Constants
- Register New Functions
- Writing comments in the configuration file
- Executing code during code generation
- Enum and Numbers
- Filtering using Expressions
- Constants Type
- Configuration file for the Allegro Library
- Threads Support
- Code Generator Rules for Wrapping C++ Classes
- Using configuration file that wrap C++ Library
- Configuration file for the Qt Framework
- Static Methods
- Loading Files
- Managed Classes
- Extra names for functions
- Configuration Files Examples
- Create your first extension using the Code Generator
- Using Ring for Raspberry Pi Pico Microcontroller
- Release Notes: Version 1.0
- Why Ring?
- Designed for a Clear Goal
- Simple
- Trying to be natural
- Encourage Organization
- Data Representation
- Compact Syntax
- Define Natural Statements
- Define Declarative Languages
- Transparent Implementation
- Visual Implementation
- Smart Garbage Collector
- No Global Interpreter (VM) Lock - No GIL
- Fast Enough For Many Applications
- Release Notes: Version 1.1
- List of changes and new features
- Better Natural Language Programming Support
- Generate/Execute Ring Object Files (*.ringo)
- Syntax Flexibility and different styles for I/O and Control Structures
- New Functions and Changes
- StdLib functions and classes written in Ring
- RingLibSDL
- Demo Project - Game Engine for 2D Games
- RingSQLite
- Better Code Generator for Extensions
- Using Self.Attribute in the Class Region to define new attributes
- Using This.Attribute in nested Braces inside the Class Methods
- Better Documentation
- Release Notes: Version 1.2
- Release Notes: Version 1.3
- Release Notes: Version 1.4
- Release Notes: Version 1.5
- List of changes and new features
- Video-Music-Player Application
- Windows StartUp Manager Application
- Calculator Application
- Better Ring Notepad
- Better StdLib
- Better WebLib
- Better RingQt
- Better Objects Library
- RingFreeGLUT Extension
- RingOpenGL Extension
- Better Code Generator for Extensions
- Better Documentation Generator for Extensions
- Ring VM - Tracing Functions
- Trace Library and Interactive Debugger
- More Syntax Flexibility
- Type Hints Library
- Better Quality
- What is new in Ring 1.5.1?
- What is new in Ring 1.5.2?
- What is new in Ring 1.5.3?
- What is new in Ring 1.5.4?
- Release Notes: Version 1.6
- List of changes and new features
- Employee Application
- New Tool: Ring2EXE
- Better Ring For Android
- New Tool: Folder2qrc
- Better Scripts for building Ring
- RingConsoleColors Extension
- RingMurmurHash Extension
- Better Ring Notepad
- Better RingQt
- Better StdLib
- Better RingVM
- Better RingREPL
- Using Tab instead of char(9)
- Using CR as Carriage return
- Using the ! operator as not
- Using && and || operators
- Using ? to print expression then new line
- Release Notes: Version 1.7
- Release Notes: Version 1.8
- List of changes and new features
- Better Performance
- Find in files Application
- String2Constant Application
- StopWatch Application
- More 3D Samples
- Compiling on Manjaro Linux
- Using This in the class region as Self
- Default value for object attributes is NULL
- The For Loops uses the local scope
- Merge binary characters
- FoxRing Library
- Better Form Designer
- Better Cards Game
- Better RingQt
- Better Code Generator For Extensions
- Better Ring Compiler and VM
- Notes to extensions creators
- Release Notes: Version 1.9
- Release Notes: Version 1.10
- Release Notes: Version 1.11
- List of changes and new features
- More 3D Samples
- Checkers Game
- Sokoban Game
- Maze Game
- Snake Game
- Sudoku Game
- Desktop Screen Shot Application
- Text To Speech Application
- RingRayLib Extension
- ZeroLib Library
- StdLib - More Functions
- Better RingQt
- Better Performance
- Better Documentation
- More Improvements
- Release Notes: Version 1.12
- Release Notes: Version 1.13
- List of changes and new features
- New Book by Apress
- Ring for WebAssembly
- Better Threads Support
- Laser Game
- Magic Balls Game
- Money Boxes Game
- Matching Game
- Pairs Game
- Word Game
- Tetris Game
- Escape Game
- Hassouna Course Samples
- Ring support in SpaceVim
- Better RingQt
- Better RingRayLib
- RingStbImage Extension
- More Low Level Functions
- Better Organization
- More Improvements
- Release Notes: Version 1.14
- List of changes and new features
- MyCoffee (Web Application)
- Web Development Samples
- More Samples
- Erlang B Formula
- Customers Form
- RingTilengine Extension
- RingLibui Extension
- RingSockets Extension
- RingThreads Extension
- Better RingOpenSSL
- More Functions
- Better Functions
- Better Performance For Strings
- Better Handling For Numbers
- Using CLOC (Count Lines of Code)
- More Improvements
- Release Notes: Version 1.15
- Release Notes: Version 1.16
- Release Notes: Version 1.17
- List of changes and new features
- Merge Two Files
- Poetry Analysis
- Citations Prediction
- TokensLib Library
- CSVLib Library
- JSONLib Library
- HTTPLib Library
- Better GUILib
- Better RingOpenSSL
- Better RingWinAPI
- Better Syntax Flexibility
- Better I/O Functions
- Better Ring API
- Better Code Generator for Extensions
- More Improvements
- Release Notes: Version 1.18
- List of changes and new features
- Read Files application
- Random User application
- Better CitPre application
- Better Tools
- More Samples
- Syntax Files
- The Power Operator
- Using References
- Ring for MS-DOS
- Faster (For-In) Loop
- Faster BraceError()
- Better RingRayLib
- Better RingSockets
- Heroku (Better support)
- Command: New From
- ImportPackage() Function
- More Low Level Functions
- Better WebLib
- Better Ring API
- Better Documentation
- MatrixLib Library
- More Improvements
- Release Notes: Version 1.19
- List of changes and new features
- Image Pixel application
- Hours Counter application
- Planetary Orbits application
- Listen to Quran application
- More Samples
- Ring for Windows 64bit
- Better batch files for building Ring
- For Loop - Better Performance
- Calling Functions - Better Performance
- Using Objects During Definition
- Nothing() function
- OptionalFunc() function
- ParentClassName() Function
- FastPro Extension
- Better TypeHints
- Better RingRayLib
- Better RingStbImage
- Better Extensions Generator
- Better Documentation
- More Improvements
- Release Notes: Version 1.20
- List of changes and new features
- Try Ring Online (WebAssembly)
- Better Samples and Applications
- Better Functions
- Enable/Disable Hash Comments
- Better Files for Loading the StdLib
- Better Performance when using Braces
- Better Support for Threads
- RingRogueUtil Extension
- Pause/Resume Embedded Ring VM
- Better Tools and Extensions
- Better Scripts for Building Ring
- Improving Ring Compiler/VM Source Code
- Better Documentation
- More Improvements
- Release Notes: Version 1.21
- List of changes and new features
- Ring for Raspberry Pi Pico
- Lectures Tracker application
- RingPDFGen Extension
- Better MatrixLib
- Better RingQt
- Better RingRayLib
- More Samples
- Faster Function Call
- Faster Arithmetic Operations
- Faster Compiler
- Reducing Memory Usage
- ForEach Keyword
- NumOrZero() Function
- Better Operator Overloading
- Syntax Highlighting for Vim/nano
- New VM Instructions
- More Improvements
- What is new in Ring 1.21.1?
- Using Other Code Editors
- Frequently Asked Questions (FAQ)
- Why do we need Yet Another Programming Language (YAPL)?
- Which of 3 coding styles are commonly used or recommended by the community?
- What is the Ring Architecture?
- What about Memory Management in Ring?
- What about Data Representation in Ring?
- Why is Ring weakly typed?
- What are the advantages to using Ring over Lisp or Smalltalk?
- Why is Ring largely focused on UI creation?
- Is Ring some sort of an improvement of PHP?
- What are the advantages of using Ring over native C or C++?
- What is the difference between Ring and Python? And is Ring Open Source?
- What are the advantages to using Ring over Perl, PHP, Python or Ruby?
- What are the advantages to using Ring over Tcl or Lua?
- What are the advantages to using Ring over C# or Java?
- The documentation says functional programming is supported, but then this happens?
- Why the ability to define your own languages Instead of parsing?
- Why you can specify the number of loops you want to break out of?
- Why Ring uses ‘See’, ‘Give’, ‘But’ and ‘Ok’ Keywords?
- What is the philosophy behind data types in Ring?
- What about the Boolean values in Ring?
- What is the goal of including the “Main” function in Ring?
- Why the list index start from 1 in Ring?
- Why Ring is not case-sensitive?
- Why the Assignment operator uses Deep Copy?
- Is there constructor methods in Ring?
- What happens when we create a new object?
- Can we use the attributes by accessing the Getter and Setter methods?
- Why should a search of global names be made while defining the class attributes?
- Why Ring doesn’t avoid the conflict between Global Variables and Class Attributes Names?
- Where can I write a program and execute it?
- How to get the file size using ftell() and fseek() functions?
- How to get the current source file path?
- What about predefined parameters or optional parameters in functions?
- How to print keys or values only in List/Dictionary?
- Why I get a strange result when printing nl with lists?
- Could you explain the output of the StrCmp() function?
- How to use many source code files in the project?
- Why this example use the GetChar() twice?
- How to use NULL and ISNULL() function?
- How to print lists that contains objects?
- How to insert an item to the first position in the list?
- How to print new lines and other characters?
- Why I get Calling Function without definition Error?
- Can Ring work on Windows XP?
- Why we don’t use () after the QApp class name?
- Why the window title bar is going outside the screen?
- How to create an array of buttons in GUI applications?
- How to Close a window then displaying another one?
- How to create a Modal Window?
- How can I disable maximize button and resize window?
- Why setClickEvent() doesn’t see the object methods directly?
- How to extend RingQt and add more classes?
- How to add Combobox and other elements to the cells of a QTableWidget?
- How to perform some manipulations on selected cells in QTableWidget?
- How to use SQLite using ODBC?
- Can I connect to dbase/harbour database?
- Building From Source Code
- Building using Microsoft Windows
- Complete Build (Compiler/VM, Extensions, Tools, etc.)
- Custom Build for Windows (64bit)
- Custom Build for Windows (32bit)
- Building using Ubuntu Linux
- Complete Build for Ubuntu Linux
- Custom Build for Ubuntu Linux
- Building using MacOS X
- Complete Build for macOS
- Custom Build for macOS
- Building using CMake
- How to contribute?
- Language Specification
- Resources