Ring 1.3 includes several new features and improvements, such as better RingQt and Ring Notepad, new functions, and a form designer. It also allows embedding Ring code without sharing state.
The Ring programming language version 1.5.1 book - Part 12 of 180Mahmoud Samir Fayed
Ring 1.5.1 includes several updates and new features:
1. The StdLib functions were updated to include SplitMany(), JustFilePath(), and JustFileName().
2. The Loop|Exit command was updated to accept expressions instead of just numbers.
3. New functions were added including PackageName() and Swap().
4. Class methods now return objects by reference using Return Self.
5. The '<', ':', and 'from' operators can be used interchangeably for inheritance.
6. Functions were added for embedding Ring code in Ring without sharing state.
7. The RingZip library allows creating, modifying, and extracting zip files.
8.
The Ring programming language version 1.5.4 book - Part 13 of 185Mahmoud Samir Fayed
The document summarizes updates to the Ring programming language and its standard library in version 1.5.4, including:
1. Added new classes to RingQt like QPixMap2 and support for defining GUI controls with indices starting from 1.
2. Improved the Ring notepad application with features like auto-complete, output window, and changing text styles.
3. Added new functions to the standard library like SplitMany() and support for better loop/exit commands.
The Ring programming language version 1.5.4 book - Part 12 of 185Mahmoud Samir Fayed
This document summarizes the new features and changes in Ring 1.3. Some key updates include better functionality for RingQt and Ring Notepad, adding Ring mode for the Emacs editor, improvements to the standard library and loop/exit commands, new functions, and the ability to return objects by reference. It also covers embedding Ring in Ring without shared state, the new RingZip library, and a form designer.
The Ring programming language version 1.9 book - Part 33 of 210Mahmoud Samir Fayed
This document section describes various system functions in Ring including:
- System() to execute system commands
- SysGet() to get environment variables
- Functions like IsWindows(), IsLinux() etc. to check the operating system
- Windowsnl() to get the newline string for Windows
- Getting command line arguments from sysargv
- Functions like filename() and prevfilename() to get the active source file name
The Ring programming language version 1.5.1 book - Part 32 of 180Mahmoud Samir Fayed
The document provides documentation on Ring programming language functions and features. It summarizes the use of various functions in the stdlib.ring library including puts(), print(), print2Str(), getstring(), getnumber(), apppath(), justfilepath(), justfilename(), value(), times(), map(), filter(), split(), splitmany(), newlist(), capitalized(), isspecial(), isvowel(), linecount(), factorial(), fibonacci(), isprime(), and sign(). Examples are given to demonstrate the usage of each function.
The Ring programming language version 1.5.2 book - Part 13 of 181Mahmoud Samir Fayed
Ring 1.5.2 introduces new features for using operators like '<' and ':' as the 'from' keyword in class definitions. It also provides functions for embedding Ring code in Ring programs without sharing state between instances, allowing Ring code to be executed safely and with isolated environments. The documentation also describes the RingZip library for working with zip files, and the Form Designer tool for building GUI applications visually.
The Ring programming language version 1.6 book - Part 15 of 189Mahmoud Samir Fayed
The document summarizes the new features and changes in Ring 1.2, including:
1. New functions like PtrCmp(), PrevFileName(), and functions to retrieve lists of functions, classes, packages, etc.
2. Improved existing functions like find() and type() to support C pointers.
3. Enhancements to Ring Notepad and RingQt like line number restoration and event handling.
4. The introduction of an Objects library for RingQt and better support for the MVC pattern.
5. The RingLibCurl library providing an API for the libcurl functions.
6. Updates to call handling and allowing NULL instead of NULLPointer().
The Ring programming language version 1.8 book - Part 39 of 202Mahmoud Samir Fayed
This document provides documentation on Ring programming language functions from the stdlib library. It describes functions for input/output like print(), puts(), getstring(), mathematical functions like factorial(), fibonacci(), type checking functions like isprime(), and more. Examples are given showing how to use each function.
The Ring programming language version 1.5.1 book - Part 12 of 180Mahmoud Samir Fayed
Ring 1.5.1 includes several updates and new features:
1. The StdLib functions were updated to include SplitMany(), JustFilePath(), and JustFileName().
2. The Loop|Exit command was updated to accept expressions instead of just numbers.
3. New functions were added including PackageName() and Swap().
4. Class methods now return objects by reference using Return Self.
5. The '<', ':', and 'from' operators can be used interchangeably for inheritance.
6. Functions were added for embedding Ring code in Ring without sharing state.
7. The RingZip library allows creating, modifying, and extracting zip files.
8.
The Ring programming language version 1.5.4 book - Part 13 of 185Mahmoud Samir Fayed
The document summarizes updates to the Ring programming language and its standard library in version 1.5.4, including:
1. Added new classes to RingQt like QPixMap2 and support for defining GUI controls with indices starting from 1.
2. Improved the Ring notepad application with features like auto-complete, output window, and changing text styles.
3. Added new functions to the standard library like SplitMany() and support for better loop/exit commands.
The Ring programming language version 1.5.4 book - Part 12 of 185Mahmoud Samir Fayed
This document summarizes the new features and changes in Ring 1.3. Some key updates include better functionality for RingQt and Ring Notepad, adding Ring mode for the Emacs editor, improvements to the standard library and loop/exit commands, new functions, and the ability to return objects by reference. It also covers embedding Ring in Ring without shared state, the new RingZip library, and a form designer.
The Ring programming language version 1.9 book - Part 33 of 210Mahmoud Samir Fayed
This document section describes various system functions in Ring including:
- System() to execute system commands
- SysGet() to get environment variables
- Functions like IsWindows(), IsLinux() etc. to check the operating system
- Windowsnl() to get the newline string for Windows
- Getting command line arguments from sysargv
- Functions like filename() and prevfilename() to get the active source file name
The Ring programming language version 1.5.1 book - Part 32 of 180Mahmoud Samir Fayed
The document provides documentation on Ring programming language functions and features. It summarizes the use of various functions in the stdlib.ring library including puts(), print(), print2Str(), getstring(), getnumber(), apppath(), justfilepath(), justfilename(), value(), times(), map(), filter(), split(), splitmany(), newlist(), capitalized(), isspecial(), isvowel(), linecount(), factorial(), fibonacci(), isprime(), and sign(). Examples are given to demonstrate the usage of each function.
The Ring programming language version 1.5.2 book - Part 13 of 181Mahmoud Samir Fayed
Ring 1.5.2 introduces new features for using operators like '<' and ':' as the 'from' keyword in class definitions. It also provides functions for embedding Ring code in Ring programs without sharing state between instances, allowing Ring code to be executed safely and with isolated environments. The documentation also describes the RingZip library for working with zip files, and the Form Designer tool for building GUI applications visually.
The Ring programming language version 1.6 book - Part 15 of 189Mahmoud Samir Fayed
The document summarizes the new features and changes in Ring 1.2, including:
1. New functions like PtrCmp(), PrevFileName(), and functions to retrieve lists of functions, classes, packages, etc.
2. Improved existing functions like find() and type() to support C pointers.
3. Enhancements to Ring Notepad and RingQt like line number restoration and event handling.
4. The introduction of an Objects library for RingQt and better support for the MVC pattern.
5. The RingLibCurl library providing an API for the libcurl functions.
6. Updates to call handling and allowing NULL instead of NULLPointer().
The Ring programming language version 1.8 book - Part 39 of 202Mahmoud Samir Fayed
This document provides documentation on Ring programming language functions from the stdlib library. It describes functions for input/output like print(), puts(), getstring(), mathematical functions like factorial(), fibonacci(), type checking functions like isprime(), and more. Examples are given showing how to use each function.
The Ring programming language version 1.4.1 book - Part 7 of 31Mahmoud Samir Fayed
This document provides documentation on various file handling, system, and debugging functions in Ring. It describes functions for reading and writing files (Fread(), Fwrite()), checking if a file exists (Fexists()), getting environment variables (SysGet()), determining the operating system (IsWindows(), IsLinux(), etc.), handling errors (Try/Catch), executing code dynamically (Eval()), and more. Examples are provided to demonstrate the usage of each function.
The Ring programming language version 1.7 book - Part 16 of 196Mahmoud Samir Fayed
This document summarizes the new features and changes in Ring 1.2, including new functions like PtrCmp() and PrevFileName(), improved functions like find() supporting C pointers, an improved Ring Notepad that saves line numbers, better RingQt classes with event handling, a new Objects library for RingQt, an enhanced RingLibCurl library, improved call command support, using NULL instead of NULLPointer(), a new display warnings option, and general quality improvements.
The Ring programming language version 1.4.1 book - Part 9 of 31Mahmoud Samir Fayed
This document summarizes reflection and meta-programming functions in the Ring programming language. It describes functions to get information about code at runtime like variable names, functions, classes and more. It also describes functions to check and modify objects, like getting/adding attributes, checking if an attribute exists, and more. These meta-programming capabilities allow Ring programs to introspect and modify their own code and objects at runtime.
The Ring programming language version 1.8 book - Part 40 of 202Mahmoud Samir Fayed
The document describes various functions available in the Ring programming language for working with lists, strings, files, directories and more. Some of the functions covered include List2File() to write a list to a text file, File2List() to read a text file into a list, StartsWith() and EndsWith() to check substrings in strings, and functions for working with matrices, dates, files and directories. Examples are provided for most functions.
The Ring programming language version 1.8 book - Part 30 of 202Mahmoud Samir Fayed
The document describes various functions for working with files in Ring programming language. Some of the key functions covered include Read() and Write() for reading from and writing to files, Dir() for getting directory listings, Rename() and Remove() for renaming and deleting files, Fopen() and Fclose() for opening and closing file handles, and Fseek(), Ftell(), Rewind() for manipulating the file position indicator. Functions for error handling like Feof(), Ferror(), Clearerr() and temporary files management are also discussed.
The Ring programming language version 1.5.3 book - Part 26 of 184Mahmoud Samir Fayed
This document describes various file and system functions in the Ring programming language. It explains functions for reading and writing files (Fread, Fwrite), checking if a file exists (Fexists), getting environment variables (SysGet), determining the operating system (IsWindows, IsLinux), getting file paths (ExeFileName, CurrentDir), and executing system commands (System, SystemCmd). Examples are provided for many of the functions.
The Ring programming language version 1.5.1 book - Part 74 of 180Mahmoud Samir Fayed
This document provides documentation on Ring's low-level debugging and tracing functions. It describes functions for getting lists of objects in memory, functions called, files loaded, and more. It also describes functions for setting a trace function, getting trace data, and controlling error handling from within the trace function. An example shows how to use these functions to trace program execution events.
The Ring programming language version 1.5.4 book - Part 26 of 185Mahmoud Samir Fayed
This document discusses various file and system functions in Ring including:
- Rewind(), Fgetpos(), Fsetpos(), Clearerr(), Feof(), Ferror(), Perror(), Fgetc(), Fgets(), Fputc(), Fputs(), Ungetc(), Fread(), Fwrite(), and Fexists() functions for file handling
- System(), SystemCmd(), SysGet(), IsMSDOS(), IsWindows(), IsWindows64(), IsUnix(), IsMacOSX(), IsLinux(), IsFreeBSD(), IsAndroid(), and Windowsnl() functions for system/OS information and commands
- Examples of getting command line arguments, active source file name, and previous source file name
The Ring programming language version 1.9 book - Part 90 of 210Mahmoud Samir Fayed
This document provides documentation on low-level functions in Ring that give access to the Ring virtual machine and runtime system. It describes functions for garbage collection, pointers, memory allocation, querying lists of functions, classes, packages, and more. It also covers functions for tracing, debugging, and interacting with the Ring VM.
The Ring programming language version 1.5.3 book - Part 19 of 194Mahmoud Samir Fayed
The document provides the language grammar for Ring, including statements, expressions, and virtual machine instructions. It defines statements like package, class, func, if/else, for/in loops, and expressions involving operators, comparisons, math, logic, lists, and functions. The virtual machine section describes over 70 instructions for operations on the stack, variables, functions, comparisons, math, logic, lists, control flow, and more.
The Ring programming language version 1.10 book - Part 45 of 212Mahmoud Samir Fayed
The document provides documentation on various functions available in the Ring programming language. It describes functions for string manipulation like TrimLeft(), TrimRight(), functions for file and directory operations like ListAllFiles(), OSCopyFile(), OSDeleteFolder(), functions for executing system commands like SystemCmd(), SystemSilent(), and functions for date/time, math, lists, and more. Syntax and examples are provided for many of the functions.
The Ring programming language version 1.5.1 book - Part 33 of 180Mahmoud Samir Fayed
The document describes various functions available in the Ring programming language including:
- list2file() and file2list() to write lists to files and read files into lists.
- startswith(), endswith(), and other string functions like substring() and trim().
- Mathematical functions like gcd(), lcm(), sumlist(), and matrix operations.
- Date/time functions like isleapyear(), dayofweek(), and epochtime().
- File/directory functions to check for existence, get size, list files.
- System functions to execute commands and get results.
The Ring programming language version 1.10 book - Part 43 of 212Mahmoud Samir Fayed
The document provides examples of using various functions in Ring's standard library (stdlib) for input/output, string manipulation, lists, and more. Key functions discussed include puts(), print(), print2Str(), getString(), getNumber(), appPath(), justFilePath(), justFileName(), value(), times(), map(), filter(), split(), splitMany(), newList(), and capitalized(). Examples are given to demonstrate how each function works and what it returns. The document serves as a reference for the main functions available in Ring's standard library.
The Ring programming language version 1.9 book - Part 42 of 210Mahmoud Samir Fayed
The document discusses Ring programming language functions from the stdlib module for input/output, string manipulation, lists, files and math operations. Functions described include print(), getsring(), split(), capitalized(), factorial(), fibonacci(), isprime() and more. Examples are provided to demonstrate how to use each function.
The Ring programming language version 1.6 book - Part 81 of 189Mahmoud Samir Fayed
This document provides documentation on Ring's low-level tracing and debugging functions. It describes functions for getting lists of functions, classes, files, calls, memory, and more. It also covers functions for setting trace functions, getting trace data and events, and evaluating code in specific scopes. Examples are given for tracing program execution using these functions.
The Ring programming language version 1.6 book - Part 27 of 189Mahmoud Samir Fayed
The document describes various file handling functions in Ring programming language. It explains functions to read and write files, get directory listings, rename and delete files, open/close files, seek to positions in files, generate temporary files and names, check for end of file and errors, and more. Examples are provided to demonstrate the usage of each file function.
The Ring programming language version 1.7 book - Part 30 of 196Mahmoud Samir Fayed
The document describes various functions in Ring for getting information about the operating system and environment. It includes functions like IsMacOSX(), IsLinux(), IsFreeBSD(), IsAndroid() to check the operating system, as well as functions like CurrentDir(), ExeFileName(), ChDir(), ExeFolder() for getting directory and path information. It also describes functions like Eval(), Raise(), Assert() for debugging and error handling, and provides examples of their usage.
The Ring programming language version 1.7 book - Part 37 of 196Mahmoud Samir Fayed
The document provides examples of using various functions in Ring to add, get, and modify methods and attributes of objects. It demonstrates how to add methods to classes using addmethod(), get attribute values using getattribute(), set attribute values using setattribute(), share methods between classes using mergemethods(), and get the package name of the latest import using packagename(). Examples are given for each function to illustrate their usage.
The Ring programming language version 1.3 book - Part 50 of 88Mahmoud Samir Fayed
This document describes a simple notepad application created using RingQt. The application contains buttons for common editing functions like new, open, save, cut, copy, paste. It allows setting the font, text color, and background color. The application initializes default values for the active file name, text/background colors, font, and contains a search feature to find and replace text.
The Ring programming language version 1.5.2 book - Part 12 of 181Mahmoud Samir Fayed
The document summarizes the new features and changes in Ring 1.3. Some of the key updates include better RingQt and Ring Notepad functionality, adding Ring mode for the Emacs editor, improvements to the standard library, changes to the Loop/Exit command, new functions like PackageName() and Swap(), and classes now return by reference when using the Return Self statement.
The Ring programming language version 1.3 book - Part 6 of 88Mahmoud Samir Fayed
This document summarizes the new features in Ring 1.2, including new functions for working with pointers, files, and the runtime environment. It also describes improvements to existing functions, Ring Notepad, RingQt, and overall code quality. Some key additions are new functions for comparing pointers, retrieving lists of functions, classes, files and more from the runtime. RingQt also includes new objects library and RingNotepad saves line numbers and prompts users to save changes.
The Ring programming language version 1.4.1 book - Part 7 of 31Mahmoud Samir Fayed
This document provides documentation on various file handling, system, and debugging functions in Ring. It describes functions for reading and writing files (Fread(), Fwrite()), checking if a file exists (Fexists()), getting environment variables (SysGet()), determining the operating system (IsWindows(), IsLinux(), etc.), handling errors (Try/Catch), executing code dynamically (Eval()), and more. Examples are provided to demonstrate the usage of each function.
The Ring programming language version 1.7 book - Part 16 of 196Mahmoud Samir Fayed
This document summarizes the new features and changes in Ring 1.2, including new functions like PtrCmp() and PrevFileName(), improved functions like find() supporting C pointers, an improved Ring Notepad that saves line numbers, better RingQt classes with event handling, a new Objects library for RingQt, an enhanced RingLibCurl library, improved call command support, using NULL instead of NULLPointer(), a new display warnings option, and general quality improvements.
The Ring programming language version 1.4.1 book - Part 9 of 31Mahmoud Samir Fayed
This document summarizes reflection and meta-programming functions in the Ring programming language. It describes functions to get information about code at runtime like variable names, functions, classes and more. It also describes functions to check and modify objects, like getting/adding attributes, checking if an attribute exists, and more. These meta-programming capabilities allow Ring programs to introspect and modify their own code and objects at runtime.
The Ring programming language version 1.8 book - Part 40 of 202Mahmoud Samir Fayed
The document describes various functions available in the Ring programming language for working with lists, strings, files, directories and more. Some of the functions covered include List2File() to write a list to a text file, File2List() to read a text file into a list, StartsWith() and EndsWith() to check substrings in strings, and functions for working with matrices, dates, files and directories. Examples are provided for most functions.
The Ring programming language version 1.8 book - Part 30 of 202Mahmoud Samir Fayed
The document describes various functions for working with files in Ring programming language. Some of the key functions covered include Read() and Write() for reading from and writing to files, Dir() for getting directory listings, Rename() and Remove() for renaming and deleting files, Fopen() and Fclose() for opening and closing file handles, and Fseek(), Ftell(), Rewind() for manipulating the file position indicator. Functions for error handling like Feof(), Ferror(), Clearerr() and temporary files management are also discussed.
The Ring programming language version 1.5.3 book - Part 26 of 184Mahmoud Samir Fayed
This document describes various file and system functions in the Ring programming language. It explains functions for reading and writing files (Fread, Fwrite), checking if a file exists (Fexists), getting environment variables (SysGet), determining the operating system (IsWindows, IsLinux), getting file paths (ExeFileName, CurrentDir), and executing system commands (System, SystemCmd). Examples are provided for many of the functions.
The Ring programming language version 1.5.1 book - Part 74 of 180Mahmoud Samir Fayed
This document provides documentation on Ring's low-level debugging and tracing functions. It describes functions for getting lists of objects in memory, functions called, files loaded, and more. It also describes functions for setting a trace function, getting trace data, and controlling error handling from within the trace function. An example shows how to use these functions to trace program execution events.
The Ring programming language version 1.5.4 book - Part 26 of 185Mahmoud Samir Fayed
This document discusses various file and system functions in Ring including:
- Rewind(), Fgetpos(), Fsetpos(), Clearerr(), Feof(), Ferror(), Perror(), Fgetc(), Fgets(), Fputc(), Fputs(), Ungetc(), Fread(), Fwrite(), and Fexists() functions for file handling
- System(), SystemCmd(), SysGet(), IsMSDOS(), IsWindows(), IsWindows64(), IsUnix(), IsMacOSX(), IsLinux(), IsFreeBSD(), IsAndroid(), and Windowsnl() functions for system/OS information and commands
- Examples of getting command line arguments, active source file name, and previous source file name
The Ring programming language version 1.9 book - Part 90 of 210Mahmoud Samir Fayed
This document provides documentation on low-level functions in Ring that give access to the Ring virtual machine and runtime system. It describes functions for garbage collection, pointers, memory allocation, querying lists of functions, classes, packages, and more. It also covers functions for tracing, debugging, and interacting with the Ring VM.
The Ring programming language version 1.5.3 book - Part 19 of 194Mahmoud Samir Fayed
The document provides the language grammar for Ring, including statements, expressions, and virtual machine instructions. It defines statements like package, class, func, if/else, for/in loops, and expressions involving operators, comparisons, math, logic, lists, and functions. The virtual machine section describes over 70 instructions for operations on the stack, variables, functions, comparisons, math, logic, lists, control flow, and more.
The Ring programming language version 1.10 book - Part 45 of 212Mahmoud Samir Fayed
The document provides documentation on various functions available in the Ring programming language. It describes functions for string manipulation like TrimLeft(), TrimRight(), functions for file and directory operations like ListAllFiles(), OSCopyFile(), OSDeleteFolder(), functions for executing system commands like SystemCmd(), SystemSilent(), and functions for date/time, math, lists, and more. Syntax and examples are provided for many of the functions.
The Ring programming language version 1.5.1 book - Part 33 of 180Mahmoud Samir Fayed
The document describes various functions available in the Ring programming language including:
- list2file() and file2list() to write lists to files and read files into lists.
- startswith(), endswith(), and other string functions like substring() and trim().
- Mathematical functions like gcd(), lcm(), sumlist(), and matrix operations.
- Date/time functions like isleapyear(), dayofweek(), and epochtime().
- File/directory functions to check for existence, get size, list files.
- System functions to execute commands and get results.
The Ring programming language version 1.10 book - Part 43 of 212Mahmoud Samir Fayed
The document provides examples of using various functions in Ring's standard library (stdlib) for input/output, string manipulation, lists, and more. Key functions discussed include puts(), print(), print2Str(), getString(), getNumber(), appPath(), justFilePath(), justFileName(), value(), times(), map(), filter(), split(), splitMany(), newList(), and capitalized(). Examples are given to demonstrate how each function works and what it returns. The document serves as a reference for the main functions available in Ring's standard library.
The Ring programming language version 1.9 book - Part 42 of 210Mahmoud Samir Fayed
The document discusses Ring programming language functions from the stdlib module for input/output, string manipulation, lists, files and math operations. Functions described include print(), getsring(), split(), capitalized(), factorial(), fibonacci(), isprime() and more. Examples are provided to demonstrate how to use each function.
The Ring programming language version 1.6 book - Part 81 of 189Mahmoud Samir Fayed
This document provides documentation on Ring's low-level tracing and debugging functions. It describes functions for getting lists of functions, classes, files, calls, memory, and more. It also covers functions for setting trace functions, getting trace data and events, and evaluating code in specific scopes. Examples are given for tracing program execution using these functions.
The Ring programming language version 1.6 book - Part 27 of 189Mahmoud Samir Fayed
The document describes various file handling functions in Ring programming language. It explains functions to read and write files, get directory listings, rename and delete files, open/close files, seek to positions in files, generate temporary files and names, check for end of file and errors, and more. Examples are provided to demonstrate the usage of each file function.
The Ring programming language version 1.7 book - Part 30 of 196Mahmoud Samir Fayed
The document describes various functions in Ring for getting information about the operating system and environment. It includes functions like IsMacOSX(), IsLinux(), IsFreeBSD(), IsAndroid() to check the operating system, as well as functions like CurrentDir(), ExeFileName(), ChDir(), ExeFolder() for getting directory and path information. It also describes functions like Eval(), Raise(), Assert() for debugging and error handling, and provides examples of their usage.
The Ring programming language version 1.7 book - Part 37 of 196Mahmoud Samir Fayed
The document provides examples of using various functions in Ring to add, get, and modify methods and attributes of objects. It demonstrates how to add methods to classes using addmethod(), get attribute values using getattribute(), set attribute values using setattribute(), share methods between classes using mergemethods(), and get the package name of the latest import using packagename(). Examples are given for each function to illustrate their usage.
The Ring programming language version 1.3 book - Part 50 of 88Mahmoud Samir Fayed
This document describes a simple notepad application created using RingQt. The application contains buttons for common editing functions like new, open, save, cut, copy, paste. It allows setting the font, text color, and background color. The application initializes default values for the active file name, text/background colors, font, and contains a search feature to find and replace text.
The Ring programming language version 1.5.2 book - Part 12 of 181Mahmoud Samir Fayed
The document summarizes the new features and changes in Ring 1.3. Some of the key updates include better RingQt and Ring Notepad functionality, adding Ring mode for the Emacs editor, improvements to the standard library, changes to the Loop/Exit command, new functions like PackageName() and Swap(), and classes now return by reference when using the Return Self statement.
The Ring programming language version 1.3 book - Part 6 of 88Mahmoud Samir Fayed
This document summarizes the new features in Ring 1.2, including new functions for working with pointers, files, and the runtime environment. It also describes improvements to existing functions, Ring Notepad, RingQt, and overall code quality. Some key additions are new functions for comparing pointers, retrieving lists of functions, classes, files and more from the runtime. RingQt also includes new objects library and RingNotepad saves line numbers and prompts users to save changes.
The Ring programming language version 1.4 book - Part 3 of 30Mahmoud Samir Fayed
This document summarizes the new features and changes in Ring 1.4. It describes improvements to the Ring Notepad including using QPlainTextEdit, displaying line numbers, and auto-complete functions. It also discusses new features for the Emacs editor, updated standard library functions, changes to the Loop|Exit command, and new functions like PackageName() and Swap(). Additional sections cover classes returning by reference, using < and : operators as 'from', embedding Ring code without shared state, the new RingZip library, and the included Form Designer.
The Ring programming language version 1.3 book - Part 7 of 88Mahmoud Samir Fayed
Ring 1.3 includes improvements to RingQt classes, the Objects library, LibCurl, and other features. Better RingQt classes allow getting event information and enabling/disabling events. The updated Objects library manages GUI objects and provides a natural API for creating windows from classes. RingLibCurl adds functions wrapping LibCurl. Other enhancements include better support for calling methods from object attributes, displaying compiler warnings, and code quality improvements.
The Ring programming language version 1.6 book - Part 14 of 189Mahmoud Samir Fayed
Ring 1.3 includes several new features and improvements to existing functionality. Key updates include better support for RingQt, Ring Notepad, and the Emacs editor. New classes and functions were added to RingQt and the standard library. The Loop/Exit command was improved to accept expressions instead of just numbers.
The Ring programming language version 1.6 book - Part 8 of 189Mahmoud Samir Fayed
The document outlines new features and updates in Ring 1.6, including:
1. Support for additional file extensions in the Distribute menu.
2. Updates to RingQt, StdLib, RingVM, and RingREPL for improved functionality and code quality.
3. New syntax features like using tab characters and carriage returns, logical operators, and printing expressions.
The Ring programming language version 1.7 book - Part 92 of 196Mahmoud Samir Fayed
The document provides information about the Ring programming language including language keywords, functions, compiler errors, runtime errors, and environment errors.
It lists the 49 keywords used in Ring such as class, def, else, func, if, new, etc. It also lists 199 language functions organized alphabetically from add() to ring_state_setvar().
26 potential compiler errors are described that may occur during compilation such as errors in parameters, class names, missing brackets or parentheses. 15 runtime errors are also listed that could happen during execution like divide by zero, out of bounds array access, or calling undefined functions.
The document serves as a reference for the core components of the Ring language specification including the syntax rules
The Ring programming language version 1.5.2 book - Part 7 of 181Mahmoud Samir Fayed
The document summarizes updates and new features in Ring version 1.5, including:
1) A calculator application added to the Applications folder. Better Ring Notepad updated with new styles and a main file toolbar.
2) The Ring Notepad output window displays new lines correctly and contains a clear button. It also opens and switches between large files while preparing function/class lists.
3) New functions added to the StdLib - Print2Str(), ListAllFiles(), and SystemCmd(). The WebLib updated with an HTMLPage class to create HTML outside of web applications.
4) Better support for RingQt classes including QStringRef and Bluetooth classes. An example parses an XML response from
The Ring programming language version 1.7 book - Part 9 of 196Mahmoud Samir Fayed
Ring 1.5 includes several new applications and improvements to existing libraries and tools. It adds a video-music player, Windows startup manager, and calculator application. It improves Ring Notepad, standard library, web library, RingQt, OpenGL extension, and documentation generator. Ring VM now supports tracing functions and there is a new trace library and debugger. Syntax was made more flexible and a type hints library was added.
The Ring programming language version 1.5.4 book - Part 78 of 185Mahmoud Samir Fayed
The ringvm_classeslist() function returns a list of classes. Each list member is itself a list containing the class name, program counter, parent class name, methods list, flag, and package pointer. The ringvm_packageslist() function similarly returns a list of packages, with each member being a list of the package name and classes list. The ringvm_memorylist() function returns the memory scopes and variables, with each scope member listing the variable name, type, value, pointer type, and private flag.
The Ring programming language version 1.7 book - Part 15 of 196Mahmoud Samir Fayed
Ring 1.3 includes several new features and improvements to existing functionality, including:
- Better RingQt and Ring Notepad user interfaces with additional classes and functions
- Ring mode for the Emacs text editor
- Enhancements to common functions in the StdLib
- Allowing expressions instead of just numbers with the Loop|Exit command
The Ring programming language version 1.2 book - Part 57 of 84Mahmoud Samir Fayed
The document provides documentation for Ring, an open source programming language. It summarizes functions for extending the Ring virtual machine using C/C++. Key functions described include ring_ext.h for defining extension modules, ring_ext.c for loading the modules, and ring_vm_funcregister for registering C functions in Ring. Extension modules are organized with include files, registration functions, and following the Ring API for parameter checking and returning values.
The Ring programming language version 1.5.3 book - Part 14 of 184Mahmoud Samir Fayed
Ring 1.1 includes several new features and improvements such as better support for natural language programming, the ability to generate and execute Ring object files, more flexible syntax options for input/output and control structures, new functions in the standard library, and demo projects for game development. It also improves the code generator for extensions and allows attributes to be defined within class regions and method braces. The documentation is also improved.
The Ring programming language version 1.6 book - Part 184 of 189Mahmoud Samir Fayed
This section provides an overview of the Ring programming language, including lists of its 49 keywords, 198 functions, common compiler errors, and the structure and instructions of its virtual machine (VM). The keywords include common ones like class, func, if, and while. The many functions cover strings, files, math, objects, and the VM. Compiler errors relate to missing elements like ok or end in control structures. The VM executes Ring code through its instructions and uses scopes and pointers to manage memory.
The Ring programming language version 1.5.2 book - Part 75 of 181Mahmoud Samir Fayed
This document describes various functions in the Ring programming language for getting runtime information and controlling program execution. It provides functions to get lists of functions, classes, packages, memory scopes, call stacks, files, and more. It also describes functions for tracing program execution, handling errors, and evaluating code in different scopes. Examples are given to demonstrate how to use these functions.
The Ring programming language version 1.9 book - Part 17 of 210Mahmoud Samir Fayed
The document summarizes the new features in Ring 1.4. Key points include:
1. Basic extensions like ODBC, MySQL, SQLite, OpenSSL and Internet libraries are now separate loadable files rather than part of the RingVM.
2. A new Natural Language library allows defining languages and commands to write programs in a more natural way, like English.
3. A new style is added to the Ring Notepad text editor.
4. Functions are introduced to convert between numbers and bytes.
5. The standard library and web library are updated with new functions and better error handling.
The Ring programming language version 1.2 book - Part 21 of 84Mahmoud Samir Fayed
This document summarizes key concepts in functional programming covered in Chapter 35 of the Ring documentation, including pure functions, first-class functions, higher-order functions, anonymous and nested functions, and equality of functions. It provides examples and explanations of each concept.
The Ring programming language version 1.5.3 book - Part 189 of 194Mahmoud Samir Fayed
This document provides information about the Ring programming language including its keywords, built-in functions, compiler errors, runtime errors, and language grammar.
It lists 49 keywords used in the Ring language. It also lists 197 built-in functions included in Ring for working with strings, files, math, dates, objects and more.
26 possible compiler errors are described that may occur during compilation. 21 runtime errors that can happen during execution are also detailed.
The document concludes by mentioning the language follows certain grammar rules and the virtual machine uses specific instructions to run Ring code.
The Ring programming language version 1.8 book - Part 18 of 202Mahmoud Samir Fayed
Ring 1.1 includes several new features and improvements:
1) It adds better support for natural language programming by allowing methods to be called when expressions are evaluated.
2) It enables generating and executing Ring object files (.ringo) for distributing applications without source code.
3) It provides more flexibility in syntax, including optional styles for I/O, control structures, and language keywords/operators.
4) New functions and changes include stdlib functions written in Ring, RingLibSDL game engine demo, and RingSQLite.
5) Improvements to code generation for extensions, class attributes, nested method attributes, and documentation.
The Ring programming language version 1.8 book - Part 15 of 202Mahmoud Samir Fayed
The document summarizes the new features in Ring 1.4. It includes:
1. Basic extensions like ODBC, MySQL, SQLite, OpenSSL and Internet libraries are now separated from the RingVM for easier loading.
2. A new Natural Library is added to define languages with natural commands in text files.
3. A new style is added to the Ring Notepad.
4. Functions are added to convert between numbers and bytes.
5. The standard library and web library are improved with additional functions.
Similar to The Ring programming language version 1.4.1 book - Part 3 of 31 (20)
The Ring programming language version 1.10 book - Part 212 of 212Mahmoud Samir Fayed
This document summarizes new features and changes in different versions of the Ring programming language and library. It discusses various topics including using different syntax styles and code editors, developing graphical desktop and mobile applications using RingQt, and using Ring for 3D graphics and games development. The document also provides overviews of the core Ring libraries and language features.
The Ring programming language version 1.10 book - Part 211 of 212Mahmoud Samir Fayed
This document provides documentation for the Ring programming language and various Ring extensions and libraries. It includes sections on Ring mode for Emacs editor, the Ring Notepad IDE, the Ring Package Manager (RingPM), embedding Ring code in C/C++ programs, and references for the functions and classes of various Ring extensions for areas like 2D/3D graphics, networking, multimedia and more.
The Ring programming language version 1.10 book - Part 210 of 212Mahmoud Samir Fayed
This document contains summaries of various Ring classes, functions and concepts:
- It describes Ring classes like the Map, Math, MySQL, and PostgreSQL classes.
- It lists and briefly explains Ring standard library functions such as map(), random(), newlist(), and print().
- It covers Ring concepts and features like object oriented programming, operators, files and I/O, GUI programming, and web development.
The Ring programming language version 1.10 book - Part 208 of 212Mahmoud Samir Fayed
This document provides a summary of functions in the Ring documentation for Release 1.10. It lists functions for drawing quadrics, normals, orientation, and textures. It also lists functions for scaling images, drawing spheres, starting and ending contours and polygons for tessellation, setting tessellation normals and properties, adding tessellation vertices, and unprojecting coordinates. The document also provides resources for the Ring language like the website, source code repository, contact information, and lists Arabic language resources.
The Ring programming language version 1.10 book - Part 207 of 212Mahmoud Samir Fayed
This document contains listings of over 100 OpenGL functions related to lighting, materials, textures, and rendering. The functions listed specify parameters for lights, materials, texture coordinates, and rendering operations like clearing buffers and drawing primitives.
The Ring programming language version 1.10 book - Part 205 of 212Mahmoud Samir Fayed
This document lists numerous OpenGL constants and enumerations related to textures, blending, shaders, buffers, and other graphics features. It includes constants for texture types and formats, shader variable types, buffer bindings and usages, and more. The listing contains over 200 individual constants and enumerations without descriptions.
The Ring programming language version 1.10 book - Part 206 of 212Mahmoud Samir Fayed
The document lists OpenGL functions and constants added in version 1.10 of the OpenGL specification. It includes over 100 functions and constants for features such as unsigned integer textures, texture buffers, geometry shaders, transform feedback, and more robust context handling.
The Ring programming language version 1.10 book - Part 203 of 212Mahmoud Samir Fayed
The document contains a list of functions and constants related to OpenGL graphics functionality. It includes functions for vertex specification, texture mapping, tessellation, nurbs modeling, quadric surfaces, and more. It also includes constants for OpenGL states, modes, and error codes.
The Ring programming language version 1.10 book - Part 202 of 212Mahmoud Samir Fayed
The document lists over 100 OpenGL functions for querying and retrieving information about OpenGL objects, state, and errors. Some of the functions listed include glGetError() to retrieve OpenGL error codes, glGetUniformLocation() to retrieve the location of a uniform variable in a program, and glGetString() to retrieve version and extension information.
The Ring programming language version 1.10 book - Part 201 of 212Mahmoud Samir Fayed
The document lists various OpenGL constants and functions related to OpenGL graphics functionality. It includes constants for texture and color formats, clipping planes, buffer objects, shader operations, and more. It also lists over 100 OpenGL function declarations for operations like drawing, clearing, texture handling, blending, and shader manipulation.
The Ring programming language version 1.10 book - Part 200 of 212Mahmoud Samir Fayed
This document lists numerous OpenGL constants related to graphics hardware capabilities, state variables, and functions. It includes constants for vertex arrays, texture mapping, blending, multisampling, shader types, and more. The constants are used to query and set the state and capabilities of the OpenGL graphics processing context.
The Ring programming language version 1.10 book - Part 199 of 212Mahmoud Samir Fayed
The document lists over 200 OpenGL constants related to graphics rendering features such as fog, depth testing, blending, textures, and more. It provides the names of constants for configuring various graphics pipeline states and settings in OpenGL.
The Ring programming language version 1.10 book - Part 198 of 212Mahmoud Samir Fayed
The document contains listings of over 100 OpenGL and GLU function declarations related to texture coordinates, uniforms, vertex specification, and tessellation. It provides the function name, return type if any, and parameters for each function for specifying texture coordinates, uniforms, vertices and performing tessellation in OpenGL and GLU.
The Ring programming language version 1.10 book - Part 197 of 212Mahmoud Samir Fayed
The document contains documentation for over 100 OpenGL functions related to rendering, textures, shaders, and more. It lists each function name and its parameters. The functions allow specifying colors, textures, shader programs, and various rendering states and operations in OpenGL.
The Ring programming language version 1.10 book - Part 196 of 212Mahmoud Samir Fayed
This document lists OpenGL constants and functions related to graphics rendering. It includes constants for buffer types, shader data types, texture types, and more. It also lists function prototypes for common OpenGL operations like drawing, clearing, binding textures and buffers, and setting shader uniforms.
The Ring programming language version 1.10 book - Part 195 of 212Mahmoud Samir Fayed
The document lists over 200 OpenGL constants related to textures, vertex arrays, blending, and buffer objects. It provides reference documentation for OpenGL version 1.10 including constants for texture formats and parameters, vertex attribute types, blending functions, and buffer usage flags.
The Ring programming language version 1.10 book - Part 194 of 212Mahmoud Samir Fayed
The document lists various constants used in OpenGL such as GL_FOG_BIT, GL_DEPTH_BUFFER_BIT, GL_ACCUM, and others related to OpenGL rendering, blending, textures, lighting, and more. It provides definitions for OpenGL enums and related values.
The Ring programming language version 1.10 book - Part 193 of 212Mahmoud Samir Fayed
This document lists over 100 OpenGL functions for specifying textures, lighting, shaders, and other graphics operations. The functions include glMultiTexCoord2iv() for specifying texture coordinates, glNormal3f() for specifying normals, and glUniform1f() for specifying shader uniforms.
The Ring programming language version 1.10 book - Part 192 of 212Mahmoud Samir Fayed
This document lists OpenGL functions and constants that were added or changed in OpenGL version 1.10. It includes over 150 new OpenGL constants for features such as geometry shaders, transform feedback, cube map arrays, and more. It also lists over 80 OpenGL functions, providing their parameters and types.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
OpenID AuthZEN Interop Read Out - AuthorizationDavid Brossard
During Identiverse 2024 and EIC 2024, members of the OpenID AuthZEN WG got together and demoed their authorization endpoints conforming to the AuthZEN API
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Things to Consider When Choosing a Website Developer for your Website | FODUUFODUU
Choosing the right website developer is crucial for your business. This article covers essential factors to consider, including experience, portfolio, technical skills, communication, pricing, reputation & reviews, cost and budget considerations and post-launch support. Make an informed decision to ensure your website meets your business goals.
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
CAKE: Sharing Slices of Confidential Data on BlockchainClaudio Di Ciccio
Presented at the CAiSE 2024 Forum, Intelligent Information Systems, June 6th, Limassol, Cyprus.
Synopsis: Cooperative information systems typically involve various entities in a collaborative process within a distributed environment. Blockchain technology offers a mechanism for automating such processes, even when only partial trust exists among participants. The data stored on the blockchain is replicated across all nodes in the network, ensuring accessibility to all participants. While this aspect facilitates traceability, integrity, and persistence, it poses challenges for adopting public blockchains in enterprise settings due to confidentiality issues. In this paper, we present a software tool named Control Access via Key Encryption (CAKE), designed to ensure data confidentiality in scenarios involving public blockchains. After outlining its core components and functionalities, we showcase the application of CAKE in the context of a real-world cyber-security project within the logistics domain.
Paper: https://doi.org/10.1007/978-3-031-61000-4_16
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
The Ring programming language version 1.4.1 book - Part 3 of 31
1. CHAPTER
SIX
WHAT IS NEW IN RING 1.3?
In this chapter we will learn about the changes and new features in Ring 1.3 release.
6.1 List of changes and new features
Ring 1.3 comes with many new features
• Better RingQt
• Better Ring Notepad
• Ring mode for Emacs Editor
• Better StdLib
• Better Loop/Exit Command
• New Functions
• Return Self by Reference
• Using ‘<’ and ‘:’ operators as ‘from’ keyword
• Embedding Ring in Ring without sharing the State
• RingZip Library
• Form Designer
6.2 Better RingQt
(1) Another version of QPixMap class is added (QPixMap2) which takes (int width,int height) during object init.
Example:
Load "guilib.ring"
New qapp
{
win1 = new qwidget()
{
setwindowtitle("Drawing using QPixMap")
setgeometry(100,100,500,500)
label1 = new qlabel(win1)
{
setgeometry(10,10,400,400)
settext("")
38
2. Ring Documentation, Release 1.4.1
}
imageStock = new qlabel(win1)
{
image = new qPixMap2(200,200)
color = new qcolor() {
setrgb(255,255,255,255)
}
pen = new qpen() {
setcolor(color)
setwidth(10)
}
new qpainter() {
begin(image)
setpen(pen)
drawline(0,0,200,200)
drawline(200,0,0,200)
endpaint()
}
setpixmap(image)
}
show()
}
exec()
}
Screen Shot:
6.2. Better RingQt 39
3. Ring Documentation, Release 1.4.1
2. The Objects Library is updated to include the next functions
• Last_WindowID()
• Open_WindowNoShow()
• Open_WindowAndLink()
Also the class name (WindowViewBase) is changed to (WindowsViewParent).
In The next code for example the Open_WindowAndLink() will create an object from the SecondWindowController
Class Then will add the Method SecondWindow() to the FirstWindowController Class Also will add the Method
FirstWindow() to the SecondWindowController Class
So the SendMessage() method in FirstWindowController class can use the SecondWindow() method to access the
object.
class firstwindowController from windowsControllerParent
oView = new firstwindowView
func OpenSecondWindow
Open_WindowAndLink(:SecondWindowController,self)
6.2. Better RingQt 40
4. Ring Documentation, Release 1.4.1
func SendMessage
if IsSecondWindow()
SecondWindow().setMessage("Message from the first window")
ok
func setMessage cMessage
oView.Label1.setText(cMessage)
3. The next classes are added to RingQt
• QPixMap2
• QScrollArea
• QSplitter
• QCompleter
• QCompleter2
• QCompleter3
• QProcess
• QMdiArea
• QMdiSubWindow
• QCursor
• QListView
• QDesktopServices
4. Many constants are defined in qt.rh (loaded by guilib.ring)
5. New Classes names - Index Start from 1
We added new classes to RingQt - another version of classes where the class names doesn’t start with the “q” letter
Also updated methods so the index start from 1 when we deal with the GUI controls like
• ComboBox
• ListWidget
• TableWidget
• TreeWidget
These classes are inside guilib.ring under the package name : System.GUI
To use it
load "guilib.ring"
import System.GUI
This doesn’t have any effect on our previous code, It’s just another choice for better code that is consistent with Ring
rules.
Also the form designer is updated to provide us the choice between using classes where (index start from 0) or (index
start from 1)
Example (Uses the Form Designer)
1. https://github.com/ring-lang/ring/blob/master/applications/formdesigner/tests/indexstart/indexstartView.ring
6.2. Better RingQt 41
5. Ring Documentation, Release 1.4.1
2. https://github.com/ring-lang/ring/blob/master/applications/formdesigner/tests/indexstart/indexstartController.ring
6.3 Better Ring Notepad
1. Using QPlainTextEdit instead of QTextEdit
2. Displaying the line number for each line in the source code file.
Screen Shot:
3. Auto-Complete for Ring functions names, classes and words in the opened file.
6.3. Better Ring Notepad 42
8. Ring Documentation, Release 1.4.1
7. Change the Current Style
6.4 Ring mode for Emacs Editor
Ring 1.3 comes with Ring mode for Emacs Editor
Screen Shot:
6.4. Ring mode for Emacs Editor 45
9. Ring Documentation, Release 1.4.1
6.5 Better StdLib
The StdLib is updated to include the next functions
• SplitMany()
• JustFilePath()
• JustFileName()
6.6 Better Loop|Exit Command
The Loop|Exit command is updated to accept Expressions after the command (not only numbers).
The syntax:
Loop|Exit [Number]
Changed to
Loop|Exit [Expression]
Example
XLoop = 2 # The outer loop
YLoop = 1 # The first inner loop
for x = 1 to 10
for y = 1 to 10
see "x=" + x + " y=" + y + nl
if x = 3 and y = 5
exit XLoop
ok
6.5. Better StdLib 46
10. Ring Documentation, Release 1.4.1
next
next
6.7 New Functions
• PackageName() function
• Swap() function
Example:
aList = [:one,:two,:four,:three]
see aList
see copy("*",50) + nl
swap(aList,3,4)
see aList
Output
one
two
four
three
**************************************************
one
two
three
four
6.8 Return Self by Reference
In this release, using Return Self in class methods will return the object by reference.
Example:
mylist = [new mytest() {
see self
x = 20
see self
}]
see mylist
class mytest
x = 15
func init
return self # Return by reference
Output
x: 15.000000
x: 20.000000
x: 20.000000
6.7. New Functions 47
11. Ring Documentation, Release 1.4.1
6.9 Using ‘<’ and ‘:’ operators as ‘from’ keyword
In this release of the Ring language we can use the ‘<’ and ‘:’ operators as the ‘from’ keyword
Syntax (1):
class Cat from Animal
Syntax (2):
class Cat < Animal
Syntax (3):
class Cat : Animal
6.10 Embedding Ring in Ring without sharing the State
From Ring 1.0 we already have functions for embedding Ring in the C language. Also we can execute Ring code
inside Ring programs using the eval() function. In this release we provide functions for embedding Ring in Ring
programs without sharing the state.
Advantages:
1. Quick integration for Ring programs and applications together without conflicts.
2. Execute and run Ring code in safe environments that we can trace.
Example:
pState = ring_state_init()
ring_state_runcode(pState,"See 'Hello, World!'+nl")
ring_state_runcode(pState,"x = 10")
pState2 = ring_state_init()
ring_state_runcode(pState2,"See 'Hello, World!'+nl")
ring_state_runcode(pState2,"x = 20")
ring_state_runcode(pState,"see x +nl")
ring_state_runcode(pState2,"see x +nl")
v1 = ring_state_findvar(pState,"x")
v2 = ring_state_findvar(pState2,"x")
see v1[3] + nl
see V2[3] + nl
ring_state_delete(pState)
ring_state_delete(pState2)
Output:
Hello, World!
Hello, World!
10
20
10
20
6.9. Using ‘<’ and ‘:’ operators as ‘from’ keyword 48
12. Ring Documentation, Release 1.4.1
6.11 RingZip Library
Ring 1.3 comes with the RingZip library for creating, modifying and extracting *.zip files.
Example (1): Create myfile.zip contains 4 files
load "ziplib.ring"
oZip = zip_openfile("myfile.zip",'w')
zip_addfile(oZip,"test.c")
zip_addfile(oZip,"zip.c")
zip_addfile(oZip,"zip.h")
zip_addfile(oZip,"miniz.h")
zip_close(oZip)
Example (2): Extract myfile.zip to myfolder folder.
load "ziplib.ring"
zip_extract_allfiles("myfile.zip","myfolder")
Example (3): Print file names in the myfile.zip
load "ziplib.ring"
oZip = zip_openfile("myfile.zip",'r')
for x=1 to zip_filescount(oZip)
see zip_getfilenamebyindex(oZip,x) + nl
next
zip_close(oZip)
Example (4) : Using Classes instead of Functions
load "ziplib.ring"
new Zip {
SetFileName("myfile.zip")
Open("w")
AddFile("test.c")
AddFile("zip.c")
AddFile("zip.h")
AddFile("miniz.h")
Close()
}
6.12 Form Designer
Ring 1.3 comes with the Form Designer to quickly design your GUI application windows/forms and generate the Ring
source code.
It’s written in Ring (Around 8000 Lines of code) using Object-Oriented Programming and Meta-Programming.
We can run the From Designer from Ring Notepad
6.11. RingZip Library 49
13. Ring Documentation, Release 1.4.1
Also we can run the Form Designer in another window.
6.12. Form Designer 50
14. CHAPTER
SEVEN
WHAT IS NEW IN RING 1.2?
In this chapter we will learn about the changes and new features in Ring 1.2 release.
7.1 List of changes and new features
Ring 1.2 comes with many new features
• New Functions
• Better Functions
• Better Ring Notepad
• Better RingQt
• Objects Library for RingQt
• RingLibCurl
• Better Call Command
• Using NULL instead of NULLPointer()
• Display Warnings Option
• Better Quality
7.2 New Functions
• PtrCmp() Function is a new function that compare between C pointers like the GUI objects.
• PrevFileName() Function is added to return the previous active source file name.
• RingVM_CFunctionsList() Function is added to return a list of functions written in C.
• RingVM_FunctionsList() Function is added to return a list of functions written in Ring.
• RingVM_ClassesList() Function is added to return a list of Classes.
• RingVM_PackagesList() Function is added to return a list of Packages.
• RingVM_MemoryList() Function is added to return a list of Memory Scopes and Variables.
• RingVM_CallList() Function is added to return a list of the functions call list.
• RingVM_FilesList() Function is added to return a list of the Ring Files.
Example:
51
15. Ring Documentation, Release 1.4.1
fp = fopen("ptrcmp.ring","r")
fp2 = fp
fp3 = fopen("ptrcmp.ring","r")
see ptrcmp(fp,fp2) + nl
see ptrcmp(fp,fp3) + nl
fclose(fp)
fclose(fp3)
Output:
1
0
Also we can compare between them using the ‘=’ operator
Example:
fp = fopen("ptrcmp2.ring","r")
fp2 = fopen("ptrcmp2.ring","r")
fp3 = fp
see fp = fp2
see nl
see fp = fp3
fclose(fp)
fclose(fp2)
Output:
0
1
Example:
The next function in stdlib.ring uses the PrevFileName() to know if the file of the caller function is the main source
file of the program or not.
Func IsMainSourceFile
if PrevFileName() = sysargv[2]
return true
ok
return false
7.3 Better Functions
The find() function is updated to support searching in lists using C pointers like GUI Objects.
The type() function is updated to display the C pointers types (like the GUI Object Class Name).
7.4 Better Ring Notepad
The Ring Notepad will save the current line number of opened files to be restored when we switch between files.
Also Ring Notepad will ask the user to save the file if the file content is changed when the user switch between files.
7.3. Better Functions 52
16. Ring Documentation, Release 1.4.1
7.5 Better RingQt
RingQt classes are updated to include methods to get events (The code that will be executed when an event is fired).
This is necessary to enable/disable events for some time or to get the events information.
For example the next code disable an event then call a method then enable the event again.
cEvent = oView.oListResult.getCurrentItemChangedEvent()
oView.oListResult.setCurrentItemChangedEvent("")
FindValueAction() # Call Method while an event is disabled
oView.oListResult.setCurrentItemChangedEvent(cEvent)
Also the QAllEvents class is updated where we can set the output from the event function to be true or false using a
new method added to the class called setEventOutput.
Load "guilib.ring"
MyApp = New qApp {
win = new qWidget() {
setwindowtitle("Hello World")
setGeometry(100,100,370,250)
lineedit1 = new qlineedit(win) {
setGeometry(10,100,350,30)
setinputmask("9999;_")
oFilter = new qallevents(lineedit1)
oFilter.setfocusoutEvent("pMove()")
installeventfilter(oFilter)
}
lineedit2 = new qlineedit(win) {
setGeometry(10,150,350,30)
}
show()
}
exec()
}
func pMove
win.setWindowTitle("xxxx")
oFilter.setEventOutput(False)
7.6 Objects Library for RingQt
Ring 1.2 comes with the Objects library for RingQt applications. Instead of using global variables for windows
objects and connecting events to objects using the object name, the Objects Library will manage the GUI objects and
will provide a more natural API to quickly create one or many windows from the same class and the library provide
a way to quickly set methods to be executed when an event is fired. Also the library provide a natural interface to
quickly use the parent or the caller windows from the child or sub windows.
The Objects Library is designed to be used with the MVC Design Pattern.
The Objects Library is merged in RingQt so you can use it directly when you use RingQt
Example :
load "guilib.ring"
new qApp {
7.5. Better RingQt 53
17. Ring Documentation, Release 1.4.1
open_window( :MainWindowController )
exec()
}
class MainWindowController from WindowsControllerParent
oView = new MainWindowView
func SubWindowAction
Open_window( :SubWindowController )
Last_Window().SetParentObject(self)
class MainWindowView from WindowsViewParent
win = new qWidget() {
SetWindowTitle("Main Window")
btnSub = new qPushButton(win) {
setText("Sub Window")
setClickEvent( Method( :SubWindowAction ) )
}
resize(400,400)
}
class SubWindowController from WindowsControllerParent
oView = new SubWindowView
func SetMainWindowTitleAction
Parent().oView.win.SetWindowTitle("Message from the Sub Window")
oView.win.SetWindowTitle("Click Event Done!")
class SubWindowView from WindowsViewParent
win = new qWidget() {
SetWindowTitle("Sub Window")
btnMsg = new qPushButton(win) {
setText("Set Main Window Title")
setClickEvent( Method( :SetMainWindowTitleAction ) )
}
btnClose = new qPushButton(win) {
Move(200,0)
setText("Close")
setClickEvent( Method( :CloseAction ) )
}
resize(400,400)
}
7.7 RingLibCurl
The LibCurl library is used starting from Ring 1.0 for the Download() and SendEmail() functions implementation. In
Ring 1.2 more functions are added to provide a powerful library (RingLibCurl) around LibCurl.
Example:
load "libcurl.ring"
curl = curl_easy_init()
cPostThis = "page=4&Number1=4&Number2=5"
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/ringapp/index.ring?page=3")
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, cPostThis)
7.7. RingLibCurl 54
18. Ring Documentation, Release 1.4.1
curl_easy_perform(curl)
curl_easy_cleanup(curl)
7.8 Better Call Command
The Call command is updated to support calling functions from object attributes also (not only variables).
For example the next code from the Stars Fighter Game
cFunc = oself.keypress
call cFunc(oGame,oSelf,Key_Space)
Can be written in one line
call oself.keypress(oGame,oSelf,Key_Space)
7.9 Using NULL instead of NULLPointer()
We can pass NULL to functions instead of using NULLPointer()
For example the next code from RingLibSDL
SDL_RenderCopy(SDL_ren,tex,NULLPointer(),rect)
Can be written as in the next line
SDL_RenderCopy(SDL_ren,tex,NULL,rect)
7.10 Display Warnings Option
In Ring 1.2 the Ring compiler is updated to include the Display Warnings option (-w)
Example:
load "stdlib.ring"
load "stdlib.ring"
compiling the program using the Display Warnings option will display the file duplication warning, While without that
option the error will pass silent.
This is a warning (not an error) because in large projects you may use the same file more than one time. For example
it’s common to start each file with the next code. where the function IsMainSourceFile() is part from the stdlib.ring
load "stdlib.ring"
if IsMainSourceFile()
// Testing
ok
7.8. Better Call Command 55
19. Ring Documentation, Release 1.4.1
7.11 Better Quality
Ring 1.2 is more stable, We discovered and fixed more bugs during Ring usage everyday in practical projects. Some
functions are optimized to be faster like the SubStr() function. Also the documentation is more better.
7.11. Better Quality 56
20. CHAPTER
EIGHT
WHAT IS NEW IN RING 1.1?
In this chapter we will learn about the changes and new features in Ring 1.1 release.
8.1 List of changes and new features
Ring 1.1 comes with many 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
8.2 Better Natural Language Programming Support
Ring is an innovative language because of it’s compact syntax, smart implementation (small, transparent & visual) and
it’s ability to create declarative and natural domain specific languages in a fraction of time.
This release add support for calling methods when an expression is evaluated
check this example:
# Natural Code
new program {
Accept 2 numbers then print the sum
}
# Natural Code Implementation
57
21. Ring Documentation, Release 1.4.1
class program
# Keywords
Accept=0 numbers=0 then=0 print=0 the=0 sum=0
# Execution
func braceexpreval x
value = x
func getnumbers
for x=1 to value
see "Enter Number ("+x+") :" give nNumber
aNumbers + nNumber
next
func getsum
nSUm = 0
for x in aNumbers nSum+= x next
see "The Sum : " + nSum
private
value=0 aNumbers=[]
Output:
Enter Number (1) :3
Enter Number (2) :4
The Sum : 7
for more information see the “Natural Language Programming” chapter.
8.3 Generate/Execute Ring Object Files (*.ringo)
This feature enable you to distribute your applications without distributing the source code. Also it makes application
distribution a simple process where you get one Ring object file for the complete project (many source code files).
Also using Ring object file remove the loading time required for compiling the application.
Check the “command line options” chapter to know more about this feature.
8.4 Syntax Flexibility and different styles for I/O and Control Struc-
tures
Programmers are sensitive to the programming language syntax. Great programmers know how to work using many
different styles but each programmer may have his/her favorite style.
Each programming language comes with a style that you may like or not. Ring is just one of these languages, but as a
response to many programmers asking for a better syntax we decided to provide more options.
Also some of these features are very necessary for Natural Language Programming.
Example :
We have two commands to change language keywords and operators.
ChangeRingOperator + plus
ChangeRingKeyword see print
Print 5 plus 5
8.3. Generate/Execute Ring Object Files (*.ringo) 58
22. Ring Documentation, Release 1.4.1
ChangeRingOperator plus +
ChangeRingKeyword print see
We have new styles (Optional) for Input/Output.
Example :
Put "What is your name? "
Get cName
Put "Hello " + cName
Example :
Load "stdlib.ring"
Print("What is your name? ") # print message on screen
cName=GetString() # get input from the user
print("Hello #{cName}") # say hello!
We have new styles (optional) for control structures.
Example :
While True
Put "
Main Menu
---------
(1) Say Hello
(2) About
(3) Exit
" Get nOption
Switch nOption
Case 1
Put "Enter your name : "
Get name
Put "Hello " + name + nl
Case 2
Put "Sample : using while loop" + nl
Case 3
Bye
Else
Put "bad option..." + nl
End
End
Example :
Load "stdlib.ring"
While True {
print("
Main Menu
---------
(1) Say Hello
(2) About
(3) Exit
8.4. Syntax Flexibility and different styles for I/O and Control Structures 59
23. Ring Documentation, Release 1.4.1
")
nOption = GetString()
switch nOption {
case 1
print("Enter your name : ")
name = getstring()
print("Hello #{name}n")
case 2
print("Sample : using switch statementn")
case 3
Bye
else
print("bad option...n")
}
}
Check the next chapters:-
• Getting Started - Second Style
• Getting Started - Third Style
• Control Structures - Second Style - May looks like Lua and Ruby
• Control Structures - Third Style - May looks like C (uses braces)
• Syntax Flexibility
Note: All of these styles are provided automatically by the compiler at the same time, It’s better to select one style for
the same project (you can create your style as a mix from these styles) for example you can use Put/Get and Braces.
8.5 New Functions and Changes
Changed:
• get() function : changed to sysget()
• sort() function : can now work on list of objects
• find() function : can now work on list of objects
Added:
• clockspersecond()
• CurrentDir()
• ExeFileName()
• ChDir()
• ExeFolder()
• varptr()
• space()
• nullpointer()
8.5. New Functions and Changes 60
24. Ring Documentation, Release 1.4.1
• object2pointer()
• pointer2object()
Check the next chapters
• System Functions
• Object Oriented Programming (OOP)
• Low Level Functions
8.6 StdLib functions and classes written in Ring
Ring 1.1 comes with a library called StdLib, it’s written in Ring by the help of Ring Team
The library provide a useful group of new functions and classes
Example:
Load "stdlib.ring"
Puts("Test Times()")
Times ( 3 , func { see "Hello, World!" + nl } )
Example:
Load "stdlib.ring"
Puts("Test Map()")
See Map( 1:10, func x { return x*x } )
Example:
Load "stdlib.ring"
Puts("Test Filter()")
See Filter( 1:10 , func x { if x <= 5 return true else return false ok } )
Example:
Load "stdlib.ring"
See "Testing the String Class" + nl
oString = new string("Hello, World!")
oString.println()
oString.upper().println()
oString.lower().println()
oString.left(5).println()
oString.right(6).println()
Example:
Load "stdlib.ring"
oList = new list ( [1,2,3] )
oList.Add(4)
oList.print()
Example:
8.6. StdLib functions and classes written in Ring 61
25. Ring Documentation, Release 1.4.1
Load "stdlib.ring"
oStack = new Stack
oStack.push(1)
oStack.push(2)
oStack.push(3)
see oStack.pop() + nl
Example:
Load "stdlib.ring"
oQueue = new Queue
oQueue.add(1)
oQueue.add(2)
oQueue.add(3)
see oQueue.remove() + nl
Example:
Load "stdlib.ring"
ohashtable = new hashtable
See "Test the hashtable Class Methods" + nl
ohashtable {
Add("Egypt","Cairo")
Add("KSA","Riyadh")
see self["Egypt"] + nl
see self["KSA"] + nl
see contains("Egypt") + nl
see contains("USA") + nl
see index("KSA") + NL
print()
delete(index("KSA"))
see copy("*",60) + nl
print()
}
Example:
Load "stdlib.ring"
otree = new tree
See "Test the tree Class Methods" + nl
otree {
set("The first step") # set the root node value
see value() + nl
Add("one")
Add("two")
Add("three") {
Add("3.1")
Add("3.2")
Add("3.3")
see children
}
see children
oTree.children[2] {
Add("2.1") Add("2.2") Add("2.3") {
Add("2.3.1") Add("2.3.2") Add("test")
8.6. StdLib functions and classes written in Ring 62
26. Ring Documentation, Release 1.4.1
}
}
oTree.children[2].children[3].children[3].set("2.3.3")
}
see copy("*",60) + nl
oTree.print()
Check the next chapters:
• StdLib Functions
• StdLib Classes
8.7 RingLibSDL
Ring 1.0 provided RingAllegro to be able to create games using the Allegro game programming library
Now Ring 1.1 provide RingLibSDL also so we can have the choice between Allegro or LibSDL
Example:
Load "libsdl.ring"
SDL_Init(SDL_INIT_EVERYTHING)
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
SDL_Delay(2000)
SDL_DestroyWindow(win)
SDL_Quit()
See the RingLibSDL Chapter.
8.8 Demo Project - Game Engine for 2D Games
In practice we would create a game engine in a language like C/C++ to get the best performance then provide Ring
classes to use the engine.
But many 2D Games are simple and creating a game engine in Ring will be fast enough in many cases
Also this would be a good demo project to learn about the language concepts where we build things using Object Ori-
ented Programming (OOP) then access the power that we have using declarative programming using nested structures
or using natural programming.
In this project we selected the first way (declarative programming using nested structures)
Example:
Load "gameengine.ring" # Give Control to the Game Engine
func main # Called by the Game Engine
oGame = New Game # Create the Game Object
{
title = "My First Game"
text {
x = 10 y=50
animate = false
size = 20
8.7. RingLibSDL 63
27. Ring Documentation, Release 1.4.1
file = "fonts/pirulen.ttf"
text = "game development using ring is very fun!"
color = rgb(0,0,0) # Color = black
}
text {
x = 10 y=150
# Animation Part ======================================
animate = true # Use Animation
direction = GE_DIRECTION_INCVERTICAL # Increase y
point = 400 # Continue until y=400
nStep = 3 # Each time y+= 3
#======================================================
size = 20
file = "fonts/pirulen.ttf"
text = "welcome to the real world!"
color = rgb(0,0,255) # Color = Blue
}
Sound { # Play Sound
file = "sound/music1.wav" # Sound File Name
}
} # Start the Events Loop
See the “Demo Project - Game Engine for 2D Games” chapter.
8.9 RingSQLite
Ring 1.0 provided support for ODBC to use any database and provided native support for MySQL.
Now Ring 1.1 provide native support for SQLite database too.
Example:
oSQLite = sqlite_init()
sqlite_open(oSQLite,"mytest.db")
sql = "CREATE TABLE COMPANY(" +
"ID INT PRIMARY KEY NOT NULL," +
"NAME TEXT NOT NULL," +
"AGE INT NOT NULL," +
"ADDRESS CHAR(50)," +
"SALARY REAL );"
sqlite_execute(oSQLite,sql)
sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " +
"VALUES (1, 'Mahmoud', 29, 'Jeddah', 20000.00 ); " +
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " +
"VALUES (2, 'Ahmed', 27, 'Jeddah', 15000.00 ); " +
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" +
"VALUES (3, 'Mohammed', 31, 'Egypt', 20000.00 );" +
"INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" +
"VALUES (4, 'Ibrahim', 24, 'Egypt ', 65000.00 );"
sqlite_execute(oSQLite,sql)
aResult = sqlite_execute(oSQLite,"select * from COMPANY")
8.9. RingSQLite 64
28. Ring Documentation, Release 1.4.1
for x in aResult
for t in x
see t[2] + nl
next
next
see copy("*",50) + nl
for x in aResult
see x["name"] + nl
next
sqlite_close(oSQLite)
8.10 Better Code Generator for Extensions
We are using the code generator (written in Ring) every day to add new libraries to Ring.
The generator is used to create RingQt and RingAllegro
Also in Ring 1.1 it’s used to create RingLibSDL.
more features are added like
• Set/Get structure members (numbers & pointers)
• Using constants
• Better Generated Code
See the Code Generator chapter.
8.11 Using Self.Attribute in the Class Region to define new attributes
We can use Self.Attribute in the Class Region (after the class name and before any methods) to define new attributes.
class Person
name # Define name as attribute if it's not a global variable
address
phone
class person2
self.name # Must Define the attribute
self.address
self.phone
8.12 Using This.Attribute in nested Braces inside the Class Methods
We can use nested braces {} while we are inside methods to access another objects, In this case the current object
scope will be changed while we are inside the brace and Self will point to the object that we access using braces {}. In
this case we can use This.Attribute and This.Method() to access the object that will be created from the current class.
Check the Object Oriented Programming chapter for more information.
Also Check the Weight History Application in GUI Development using RingQt chapter.
8.10. Better Code Generator for Extensions 65
29. Ring Documentation, Release 1.4.1
8.13 Better Documentation
Ring 1.1 documentation (800 pages) is better than Ring 1.0 documentation (340 pages)
Many chapters are added for providing better information about the language like
• Language Reference
• Scope Rules
• FAQ
And more!
8.13. Better Documentation 66
30. CHAPTER
NINE
BUILDING FROM SOURCE CODE
The Ring programming language is a free open source product (MIT License).
You can build Ring using CMake or using Scripts (Batch Files or Shell Scripts).
The next steps explains building using scripts.
9.1 Building using Microsoft Windows
Get the source code
git clone http://github.com/ring-lang/ring.git
Build Ring (Compiler/VM)
cd ring/src
buildvccomplete.bat
buildvccompletew.bat
Build RingODBC
cd ../extensions/ringodbc
buildvc.bat
Build RingMySQL
cd ../extensions/ringmysql
buildvc.bat
Build RingSQLite
cd ../extensions/ringsqlite
buildvc.bat
Build RingOpenSSL
cd ../extensions/ringopenssl
buildvc.bat
Build RingInternet
cd ../extensions/ringinternet
buildvc.bat
Generate RingAllegro Source Code and Build
67