#
# $RCSfile: source_structure.txt,v $
#
# Copyright (c) 1999-2005. Christian Heller and the CYBOP developers.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU 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 General Public License for more details.
#
# You should have received a copy of the GNU 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.
#
# http://www.cybop.net
# - Cybernetics Oriented Programming -
#
# @version $Revision: 1.4 $ $Date: 2005/06/07 12:13:55 $ $Author: christian $
# @author Christian Heller <christian.heller@tuxtax.de>
#

Introduction
____________

The "Cybernetics Oriented Interpreter" (CYBOI) works on a rather low
system level. It manages the storage of knowledge in memory, contains
input/ output (i/o) mechanisms, handles signals and more. Because of
CYBOI's closeness to hardware, the "von Neumann" model was chosen to
structure its source code. Von Neumann's original model suggests three
main parts, which are listed together with their names in CYBOI, below:

------------------------------------------------------------------------
von Neumann                         | CYBOI
------------------------------------------------------------------------
Memory                              | memory
Control Unit                        | controller
Algorithmic Logic Unit (ALU)        | computer
------------------------------------------------------------------------


Overview
________

computer (formerly: logic)
controller
    communicator: receive + send (auch socket, x window system etc.?)
    converter: parse + serialise (formerly: parser)
    cyboi (replace "handler" with "manager", in the meaning of "lifecycle manager")
    translator: decode + encode
globals
    constants
    logger
    variables
memory
    accessor (move array stuff here)
    creator (move array stuff here) !!?? CAUTION! A better word than "creator" might be "Schpfer" (in English!)
tester


Details
_______

computer (formerly: logic)
    interrupt
        interrupt_tcp_socket
    receive
        receive_tcp_socket
        receive_x_window_system
    send
        send_tcp_socket
        send_x_window_system
    shutdown
        shutdown_tcp_socket
        shutdown_x_window_system
    startup
        startup_tcp_socket
        startup_x_window_system
    suspend
        activate_tcp_socket (is this operation REALLY STILL needed??)
    add
    build
    compare
    copy (formerly "set")
    count
    create
    destroy
    interrupt
    loop
    move (formerly "set")
    receive
    selection
    send
    shutdown
    startup
controller
    communicator: receive + send (auch socket, x window system etc.?)
        file_communicator
        ftp_communicator
        http_communicator
        inline_communicator
        ms_windows_communicator
        tcp_socket_communicator
        unix_console_communicator
        x_window_system_communicator
    converter: parse + serialise (formerly: parser)
        boolean_converter
        complex_converter
        double_converter
        fraction_converter
        integer_converter
        string_converter
        time_converter
        vector_converter
        xml_converter
    cyboi (replace "handler" with "manager", in the meaning of "lifecycle manager")
        compound_signal_handler
        cyboi
        globals_manager (formerly called "handler")
        input_output_activator (can probably be deleted, because /processor contains service startup/shutdown now)
        input_output_handler (can probably be deleted, because /processor contains service startup/shutdown now)
        knowledge_memory_manager (formerly called "handler")
        operation_signal_handler
        signal_memory_manager (formerly called "handler")
        signal_waiter
        system_manager (formerly called "handler")
    translator: decode + encode
        cybol_translator
        html_translator
        x_window_system_translator
globals
    constants
        abstraction_constants
        channel_constants
        character_constants
        cybol_constants
        escape_code_constants
        integer_constants
        log_constants
        name_constants
        structure_constants
    logger
    variables
memory
    accessor (move array stuff here)
        character_array_accessor
        compound_accessor
        double_array_accessor
        integer_array_accessor
        pointer_array_accessor
        signal_memory_accessor
        unsigned_long_array_accessor
    creator (move array stuff here) !!?? CAUTION! A better word than "creator" might be "Schpfer" (in English!)
        character_creator
        complex_creator
        compound_creator
        double_creator
        fraction_creator
        integer_creator
        internals_memory_creator
        pointer_creator
        signal_memory_creator
        string_creator
        time_creator
        unsigned_long_creator
        vector_creator
        xml_node_creator
        xml_property_creator
tester
