Menu

Tree [c75f4d] default tip /
 History

Read Only access


File Date Author Commit
 .efte 2013-04-23 jim jim [0efca3] Collapse all history; begin new repository
 _MTN 2017-04-08 d3x0r d3x0r [e9ee3f] Git Sync
 amalgamate 2017-09-17 Panther Panther [de6ba7] Add core amalgamation project.
 android_build 2015-09-08 Panther Panther [35bb5c] Update android code; Allow getting wide charact...
 binary 2017-09-18 Panther Panther [e2d1ab] Sync updates for external projects and carriage...
 cmake_all 2017-02-09 d3x0r d3x0r [043349] General linux fixes; some fixes for opendir com...
 config 2016-08-18 JimB JimB [73137a] Sync mass changes refactoring base types
 data 2016-04-20 JimB JimB [349d2e] Working to improve vulkan support.
 doc 2016-11-30 JimB JimB [e1b5c4] some cleanup
 go 2015-07-29 Panther Panther [872860] Beginning GO interface
 include 2017-09-18 Panther Panther [e2d1ab] Sync updates for external projects and carriage...
 makefiles 2017-09-17 Panther Panther [27c1de] Merge
 src 2017-09-18 Panther Panther [c75f4d] Some fixes to build with mingw; disable vulkan ...
 test_deadstart 2013-04-23 jim jim [0efca3] Collapse all history; begin new repository
 .gitignore 2016-04-14 JimB JimB [d2bff1] Begin adding better support for headless displa...
 .hgignore 2016-10-10 d3x0r d3x0r [9f72ca] Add git to ignore.
 .hgtags 2017-09-18 Panther Panther [a7451d] Removed tag default
 .mtn-ignore 2016-08-07 Panther Panther [568d5d] mark monotone rev
 .travis.yml 2017-09-17 Panther Panther [e6b2f5] Github Sync
 Android.cmake 2013-04-23 jim jim [0efca3] Collapse all history; begin new repository
 BlankUnicode.txt 2013-10-09 Jim Jim [03c750] Jump through hoops to configure unicode interfa...
 CMakeExternal.txt 2017-09-17 Panther Panther [6d3c9e] Update zlib version.
 CMakeLists.txt 2017-09-18 Panther Panther [c75f4d] Some fixes to build with mingw; disable vulkan ...
 CMakeLists.txt.all 2013-04-23 jim jim [0efca3] Collapse all history; begin new repository
 CMakeSources.lst 2017-09-17 Panther Panther [27c1de] Merge
 PNaCl.toolchain.txt 2016-10-10 JimB JimB [36d553] Add a rough PNaCl toolchain.
 README.md 2017-03-14 JimB JimB [2715fb] add git readme
 a2_toolchain.64.txt 2015-08-26 Panther Panther [a604d2] Add 64 bit toolchain base file; to use please c...
 a2_toolchain.txt 2013-08-17 Jim Jim [9dd2d4] Update for packaging and deploying to android. ...
 all_resources.rc 2016-03-06 Panther Panther [14565b] Git Sync.
 android.bat 2013-08-19 Jim Jim [5815ce] Some minor fixes for various compilers and systems
 cmake_all.sh 2013-04-23 jim jim [0efca3] Collapse all history; begin new repository
 fix_sems 2015-04-21 d3x0r d3x0r [059da9] sync rpi
 genericheader.h 2013-04-23 jim jim [0efca3] Collapse all history; begin new repository
 howto.compile 2013-04-23 jim jim [0efca3] Collapse all history; begin new repository
 lgpl.txt 2013-04-23 jim jim [0efca3] Collapse all history; begin new repository
 linux_win32_toolchain.txt 2016-01-31 d3x0r d3x0r [30df0e] Update toolchain files
 linux_win32_x64_toolchain.txt 2017-02-07 d3x0r d3x0r [84d183] Fix some options for mingw64
 markver.bat 2013-09-30 Jim Jim [8090b6] Save mercurial version mark batch (needs to be ...
 merge_footer 2013-04-23 jim jim [0efca3] Collapse all history; begin new repository
 qnx.bat 2013-07-23 Jim Jim [ffe664] QNX build updates; resembles android by even an...
 qnx_toolchain.txt 2013-07-22 Jim Jim [a4e36d] Update for QNX target build through cmake
 read.this 2015-02-13 Panther Panther [0107be] Improve VFS handling and interfacing by going t...

Read Me

SACK

Gitter

A document published from header document information - http://sack.sf.net ( https://sourceforge.net/projects/sack/ )

Git is often more up to date. Internal mercurial server is often used.

Monotone would have been best; but; well... maybe they were too closed.


System Abstraction Component Kit

Souces are generally separate, requiring fewest dependancies of others.
Someday this should be combed into actual dependancy tree that can be leveraged at a higher level.

1) deadstart support.
This is support for scheduling initializers performed on library load. Provides a method to easily register a initializer that can create a thread that can run on windows (Impossible to do scheduled through DllMain).
Supports 0-255 levels of proirt to make sure subsystems requires are already initialized, instead of requiring the module to do 'if not initialized, initialize' at every exported function.
2) shared memory support. Regions of memory are created specifying 'where' and 'what'. Where specifies the physical file location that represents the memory. The what is a name given that can be found, and the same shared memory can be known. A custom allocator can allocate in shared memory heaps that are separated by processes, but that have been mapped together. The internal allocator can be replaced with 'malloc/free' which are sometimes more optimal, but lack some tracking features. Memory library also supports a Hold operation, that increments an owner count. This allows routines to 'hold' the memory and allow normal processes to deallocate the block. Every additional 'hold' must be 'released'.
3) Memory library provides lowest level interlocks for a system ( InterlockedExchanged ). And TryEnterCriticalSection/LeaveCriticalSection.
4) Timer library provides an internally timer scheduler, and provides a common threading interface. WakeableSleep is implemented here, (and WakeThread to wake a sleeping thread). EnterCriticalSection, and LeaveCriticalSection are implemented here, because it does a thread-sleep and requires thread knowledge. Timer schedule logic deducts the time that the timer proc ran, so the timer will be scheduled nearaest to starting on the multiple of the tick. (Progressively losses milliseconds in reality due to lack of precision; mabye I should arbitrarily subtract one.)
5) Event based network interface. Built on the timers and threads above, this provides a background thread that watches N sockets (limited by operating system handle limits), and provides event callbacks based on network events.


6) type library (lists, stacks, queues, binarylists, family tree, text, text parsing, ... )
7) vector math library
8) faction library - keeps numbers in terms of numerator and denominator. Can resolve multiple fractions mulitplied to lowest common denominator.
9) configuration script processing library. Define format strings and a related callback called with variable arguments based on the format string, and the match to line of input processed. Configuration library can scan for files in a variety of locations; or can be opened and fed arbitrary strings from some other external source...
10) SQL abstraction library. DoSQLCommand(), for( SQLRecordQueryf(); GetRecord(); ). Supports ODBC (unixodbc on linux/android), and Sqlite native. Option library based on sql abstraction, with a default of a sqlite database, for 0 configuration configuration options. External utilities are given that can edit options after the face, or program startup configuration file can force options, or specify defaults for options, and read options, such that if( options/version == 1 ) option set options/version=2... option default otheroption/app/color=12344


And somewhere ordered in the above...
11) Process registry, allows registering values, functions, and types for later consumption. PSI control registry is based on this registry tree. Names in the tree can be dumped for later browsing (debugging like, where did that end up?). This module is also the library deadstart that reads interface.conf and handles loading additional modules, or configuring aliases to interfaces based on options specified. (this deserves at least a whole wikipage)

12...n) Lots of little utilities written with this abstraction library that just generally work on all systems.
Some base functionality that is different - create a process, handle sockets efficiently, file system abstractions (even an example virtual file system, that shows how you might implement your own file system interfaces), ping(raw sockets), arp, a whois query driver that's a little obsolete now, windows service hook to write your own services. Even an example service that just runs an arbitrary executable. Language translation system (nothing all that special or magical).
n+1) Intershell; THis is a generic application layout handler. It handles high level plugins with generic controls that can be placed easily even after deployment.

n+10) Dekware - all of the above; it can load intershell, then extend buttons to provide scripting. Terminal, general script processing utility...


Image and Render libraries are connected via Interfaces. An Interface is a struct of function pointers that is requested by name. Interfaces may be aliased, so if video loads as 'video.opengl' an alias called 'video' can be created to select which of several are provided by default.

Images are 32 bit color; There are functions to provide platform ordered dwords to create colors from components or get components from colors. Internally there are just a few tight loops optimized for 32 bit color transfers and operations. Back in 2000 I searched for '64 bit color' which exists internally on video cards for higher precision (fewer lost decimals of precision)... but generally the user cannot differentiate every level of 256 colors so it's more than sufficient.

Linux support through navtive X now
Android can use GLES2 or Native Framebuffer (ANativeWindow?)
Windows can use Win32 Windows, OpenGL, d3d (roughly), in OpenGL, windows/controls created turn into surfaces in a 3d Space, which can be rendered in and around other 3d objects. (This is why the image layer is a pluggable interface, because draw operations turn into opengl calls).
All can use the proxy which provides a network interafce that a browser can connect to, the draw commands are fowarded to the brwser to perform...

Started a vulkan layer, which would simplify some things. The image opengl interface for shaders could really use vulkan as a backend... but they're somewhat flexible now... so maybe implementing deeper layers of API In a Vulkan sort of way will be done.

Panther's Slick Interface (psi)

This is a control library build on registered callbacks of classes of controls. The library is built on the image and renderer interfaces... it tracks higher level things like sliders, listboxes, buttons, and provides custom extensions based on each class.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.