/* ********************************************************************* This source file is a part of the standard library of Scol For the latest info, see http://www.scolring.org Copyright (c) 2014 Stephane Bisaro aka Iri. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA, or go to http://www.gnu.org/copyleft/lesser.txt ********************************************************************* */ /* * Doxygen configuration, no Scol content * * Groups by ordralphabetic order (easier to retreive a group ...) */ /*! \mainpage Scol libraries documentation These libraries are written in Scol and the developer can add any ones in his Scol project if his project is compatible with the GNU Lesser General Public License version 2 or later as published by the Free Software Foundation. Some libraries depend another ones. In this case, this is written in the library documentation and all its dependancies must be loaded before it. If any, you can read these pages for more informations - \subpage intro "Scol introduction" - \subpage advanced "Advanced libraries uses" */ /*! \page intro Introduction Scol is a free programing language. The license can be found in the official web site : http://www.scolring.org Scol is a free, fonctionnal, high level, interpreted, polymorphic and asynchronous language. Its typing is mainly static and done by inference of type. Scol is under development, it should be multiplatform ultimately. Like Java or Python, Scol runs in a virtual machine (VM) and each Scol application runs in a child virtual machine. A VM can communicate with another VM. A full VM takes 15 to 25 MB in memory (more if extensions are added). Scol has two 3d engine. The legacy engine, very old, is not used to the new applications. The second, newer, is totally based on Ogre3d. It is much more powerful and has a much better rendering. Today, Scol is used rather in the 3d real time, interactive and multi-user application. Applications can be off- or on-line. However, multimedia, graphics, database, ... libraries are in the standard release : other applications are possibles ! - Free : no royalties are required to install, use, study or contribute. Scol is under Scol license (BSD-modified) for the historical part and under GNU / LGPL 2 or later for the newer part. - Functional : Scol is influenced by OCaml and C too. All is function and all instructions must return a single value (never "void" or more). Variables and other objects are internally considered as functions. However, the side effects can be importants. Recursive functions are very commonly used. - High level : psuedo oriented-object (OO) is possible and a Garbage Collector (GC) manages the memory. - Interpreted / script : Scol launches a new virtual machine with a minimal environment (with all Scol APIs availables). Next, it reads and loads each package (source) in the memory, checks the typing and product a byte-code. Finally, this last is executed. - Asynchronous : Scol uses mostly the asynchronous method in the most of cases : networks, graphics, ... - Polymorphic : Some functions do not impose any type conditions on the arguments, or certain parts of certain arguments. - Typing : in Scol, types are simply there to help the developer: the types are only used when compiling. Thereafter, when you run your program, they are no longer used since the program has already been proved to be correctly typed. The typing is done by inference of type : this means that the compiler calculates the type of your functions itself; the developer will not usually have to specify it. - Scol (kernel and extensions) is written in C and C++ with few parts in ASM. More informations, documentations and tutorials can be found in the official website : http://www.scolring.org Now you can proceed to the \ref advanced "Advanced libraries uses". */ /*! \page advanced Advanced libraries uses To do ... */ /* ***** 2D OS library ***** */ /*! \defgroup _2dos The 2D OS supplemental API * * This 2D API add some functions not directly supported by the Scol language. */ /*! \defgroup _2dos_list ListBox API * \ingroup _2dos * Package to load : lib/2dos/2dlist.pkg */ /*! \defgroup _2dos_bitmap Bitmap API * \ingroup _2dos * Package to load : lib/2dos/bitmap.pkg */ /*! \defgroup _2dos_combo ComboBox API * \ingroup _2dos * Package to load : lib/2dos/combo.pkg */ /*! \defgroup _2dos_dialog Dialog Box API * \ingroup _2dos * * To create and manage customized dialog boxes * * Package to load : lib/2dos/dialog.pkg * * Dependancies : * - lib/std/stdlib.pkg * - lib/2dos/bitmap.pkg * * This library is under development yet. */ /*! \defgroup _2dos_button Button API * \ingroup _2dos * * To create and manage customized buttons. * * Package to load : lib/2dos/button.pkg * * Dependancies : * - lib/std/stdlib.pkg * - lib/2dos/bitmap.pkg */ /*! \defgroup _2dos_rsc 2d resources API * \ingroup _2dos * * These resources are PNG files which should be available on each * Scol client. It is recommended to use this API instead of the * filenames directly : they can be modified in a next version. * * Properties : * - size : 48 x 48 pixels * - depth : 32 bits * - resolution : 72 dpi * * Package to load : lib/2dos/rsc2d.pkg */ /*! \defgroup _2dos_working Working progressing API * \ingroup _2dos * Package to load : lib/2dos/working.pkg * * Dependancies : * - lib/2dos/bitmap.pkg * * \image html workingprogress.png * * \include 2dos/working.pkg_ */ /*! \defgroup _2dos_browstext BrowseText widget API * \ingroup _2dos * * A browseText has a text and a button fields * * Package to load : lib/2dos/browseText.pkg * * \image html browsetext.png */ /*! \defgroup _2dos_grid Grid widget API * \ingroup _2dos * * A Grid is a table of window objects which can be freely set * * Package to load : lib/2dos/grid.pkg * * \image html grid.png */ /*! \defgroup _2dos_checklist CheckList widget API * \ingroup _2dos * * A checkList is a serie of check and/or radio boxes in an unique Scol object. * * Package to load : lib/2dos/checkList.pkg * * \image html checklist.png */ /*! \defgroup _2dos_colorselect "ColorSelect" widget API * \ingroup _2dos * * A "ColorSelect" widget is a widget to choose easily a color. * * Package to load : lib/2dos/colorselect.pkg * * Dependancies : * - lib/std/stdlib.pkg * - lib/2d/colors.pkg * - lib/std/list.pkg * * \image html colorselect.png */ /* ***** 2D library ***** */ /*! \defgroup _2d The 2D Graphic and other 2d resources API * * This 2D API add some functions not directly supported by the Scol language. */ /*! \defgroup l2d_colors Colors API * \ingroup _2d * * Colors converters and other stuffs * * Important: Colors are presented as a result of mathematical calculations. * Conversions may be inaccurate / approximate / useless. * * Package to load : lib/2d/colors.pkg * * Dependancies : * - lib/std/stdlib.pkg * * \example 2d/grayscale.pkg_ */ /*! \defgroup l2d_selectcolors SelectColors API * \ingroup _2d * * Dialog box to select a color, make with the Scol 2d graphic api * * Package to load : lib/2d/selectcolors.pkg * * Dependancies : * - lib/std/stdlib.pkg * - lib/2d/colors.pkg * - lib/2dos/rsc2d.pkg * - lib/std/list.pkg * * \image html gcselect.png */ /* ***** 3D basic library ***** */ /*! \defgroup b3d The 3D basic library API * * This 3D library allows a simple and basic library to write an 3d application. * A basic error manager is included too. * * Package to load : lib/3d/base3d.pkg * * \example 3d_test/test_3d.scol * \example 3d_test/test_3dinit.pkg_ * \example 3d_test/test_3d.pkg_ */ /*! \defgroup b3d_load The library : 3d loader API * \ingroup b3d * * To load safely or not all the 3d basic library with -or not- its all dependancies * Package to load : lib/3d/3dbaseload.pkg */ /*! \defgroup b3d_session The library : 3d session API * \ingroup b3d * To create a 3d session, go to 'init' section. * \see b3d_initSession */ /*! \defgroup b3d_object The library : 3d object/node API * \ingroup b3d */ /*! \defgroup b3d_camera The library : 3d camera API * \ingroup b3d */ /*! \defgroup b3d_init The library : 3d initialization API * \ingroup b3d */ /*! \defgroup b3d_error The library : 3d error API * \ingroup b3d */ /*! \defgroup b3d_light The library : 3d light API * \ingroup b3d */ /*! \defgroup b3d_physics The library : 3d physics API * \ingroup b3d */ /*! \defgroup b3d_window The library : 3d window API * \ingroup b3d */ /*! \defgroup b3d_view The library : 3d view API * \ingroup b3d */ /*! \defgroup b3d_viewport The library : 3d viewport API * \ingroup b3d */ /*! \defgroup b3d_buffer The library : buffer API * \ingroup b3d */ /*! \defgroup b3d_info The library : informations API * \ingroup b3d */ /* ***** Console library ***** */ /*! \defgroup console A console API * * This API provides a simple window interface to display any message to the user. * This API provides an high level method to easily include a console. Create and * manage a simple text window (console) to display any message. Several Console * can be used in a same application. For the application users, a contextual menu is available by right clicking in the bottom of the graphical user interface (below the text field). * * Package to load : lib/console/console.pkg */ /* ***** Localization library ***** */ /*! \defgroup loc A localization API * * This API provides a way to localize (internationalize) strings. * This API provides a method to internationalize an application. * * Translators and/or contributors can easily give a translation. * * For an application, a sub directory is created. Within are the * translations. Each translations are named myapp..lang. * * For example : *
myapp.english.lang
myapp.french.lang
myapp.russian.lang
myapp.spanish.lang
...
* In each file, a list of reference and translations : *
REFERENCE_1 word_translated
REFERENCE_2 string translated
REFERENCE_3 substring_1 ## substring_2 ## substring_3
...
* Each ## will be replaced by a provided parameter, if needed. * You can change this symbol as you want, see below. * * - loc_init is the function to load the language file for a given user. * - loc_get is the function for a simple translation. * - loc_gets loc are the functions for a translation with parameters * See http://redmine.scolring.org/projects/tutorials/wiki/How_to_localize_a_program_in_Scol * * Package to load : lib/loc/loc.pkg */ /* ***** Packages library ***** */ /*! \defgroup pkgs A source code API * * This API provides some functions about functions and packages. */ /*! \defgroup pkgs_fun The functions API * \ingroup pkgs * Package to load : lib/pkgs/fun.pkg * * Dependancies : * - lib/std/misc.pkg * - lib/std/string.pkg * - lib/std/list.pkg */ /*! \defgroup pkgs_pkg The packages API * \ingroup pkgs * Package to load : lib/pkgs/pkg.pkg * * Dependancies : * - lib/std/misc.pkg * - lib/std/string.pkg * - lib/std/list.pkg */ /* ***** Standard library ***** */ /*! \defgroup std Standards API * * These API provide the most common and helpful functions. */ /*! \defgroup std_curl The network API based on the new Scol API. * \ingroup std * Package to load : lib/std/curl.pkg */ /*! \defgroup std_error The error API. * \ingroup std * Package to load : lib/std/error.pkg * * This API provides an high level method to easily include a customized error manager * * You can : * - define your masks yourself * - enabled / disabled this manager * - define your code numbers and messages error * - write - or not - in the Scol console * - use a hard file log or a temporary file log * - and more things yet * * It is NOT recommanded to use the internal STD_ERROR structure to any application. * Use this API instead. * * To use it with the Console library (lib/console), this API requires too the * lib/console/console.pkg package. */ /*! \defgroup std_float The floatting point number API. * \ingroup std * Package to load : lib/std/float.pkg */ /*! \defgroup std_http The network API based on the legacy Scol API. * \ingroup std * Package to load : lib/std/http.pkg * * This API provides some options to write HTTP client request routines for Scol. * This is older than the Libcurl API ( lib/std/curl.pkg ). * * Dependancies : * - lib/std/list.pkg * - lib/std/string.pkg ) * * This API uses the legacy INET Scol API. */ /*! \defgroup std_httpsrv The HTTP server API based on the legacy Scol API. * \ingroup std * Package to load : lib/std/httpsrv.pkg * * Dependancies : * - lib/std/list.pkg * - lib/std/string.pkg ) */ /*! \defgroup std_list The list API. * \ingroup std * Package to load : lib/std/list.pkg */ /*! \defgroup std_load The loading API. * \ingroup std * Package to load : lib/std/load.pkg */ /*! \defgroup std_loop The loop-like API. * \ingroup std * Package to load : lib/std/loop.pkg * * Dependancies : * - lib/std/float.pkg */ /*! \defgroup std_math The math API provides some mathematical functions. * \ingroup std * Package to load : lib/std/maths.pkg * * Dependancies : * - lib/std/stdlib.pkg */ /*! \defgroup std_other The other standard API. * \ingroup std * Package to load : lib/std/misc.pkg * * Dependancies : * - lib/std/string.pkg */ /*! \defgroup std_net The common network API provides common network functions for using with other networks APIs. * \ingroup std * Package to load : lib/std/net.pkg * * Dependancies : * - lib/std/string.pkg */ /*! \defgroup std_string The string API for string manipulations. * \ingroup std * Package to load : lib/std/string.pkg */ /*! \defgroup std_fs The file system API. * \ingroup std * Package to load : lib/std/systemfiles.pkg * * Dependancies : * - lib/std/list.pkg * - lib/std/string.pkg */ /*! \defgroup std_table The table (array) API. * \ingroup std * Package to load : lib/std/tab.pkg */ /*! \defgroup std_lib The standard API. * \ingroup std * Package to load : lib/std/stdlib.pkg * * Dependancies : * - lib/std/float.pkg */ /*! \defgroup std_bool The boolean and logical standard API. * \ingroup std * Package to load : lib/std/bool.pkg * * Dependancies : * - none */ /*! \defgroup std_complex The Scol complex numbers standard API. * \ingroup std * Package to load : lib/std/complex.pkg * * Dependancies : * - none */ /*! \defgroup std_iteration The iteration standard API. * \ingroup std * Package to load : lib/std/iteration.pkg * * Dependancies : * - lib/std/stdlib.pkg * - lib/std/string.pkg (lib/std/stdlib.pkg is also required for this last package) */ /*! \defgroup std_vm The Scol virtual machine API. * \ingroup std * Package to load : lib/std/vm.pkg * * Dependancies : * - none */