state machines
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 2147
State Machine Compiler 4.4.0
State Machine Compiler takes a state machine stored in an .sm file and generates the state pattern classes. more>>
State Machine Compiler takes a state machine stored in an .sm file and generates the state pattern classes in nine programming languages.
Its features include default transitions, transition arguments, transition guards, push/pop transitions, and Entry/Exit actions. State Machine Compiler requires Java SE 1.4.1 or better.
Enhancements:
- This release cleans up C# and VB.net debug output using System.Diagnostics.Trace.
- It fixes a number of minor bugs.
<<lessIts features include default transitions, transition arguments, transition guards, push/pop transitions, and Entry/Exit actions. State Machine Compiler requires Java SE 1.4.1 or better.
Enhancements:
- This release cleans up C# and VB.net debug output using System.Diagnostics.Trace.
- It fixes a number of minor bugs.
Download (MB)
Added: 2007-02-19 License: MPL (Mozilla Public License) Price:
982 downloads
State Threads 1.8
State Threads project is a small library for designing scalable Internet applications. more>>
State Threads project is a small library for designing scalable Internet applications.
The State Threads is a small application library which provides a foundation for writing fast and highly scalable Internet applications (such as Web servers, proxy servers, mail transfer agents, etc.) on UNIX-like platforms.
It offers a threading API for structuring a network application as an event-driven state machine.
The State Threads library is a derivative of the Netscape Portable Runtime library (NSPR) and therefore is distributed under the Mozilla Public License (MPL) version 1.1 or the GNU General Public License (GPL) version 2 or later.
Enhancements:
- Added support for kqueue and epoll on platforms that support them.
- Added ability to choose the event notification system at program startup.
- Long-overdue public definitions of ST_UTIME_NO_TIMEOUT (-1ULL) and ST_UTIME_NO_WAIT (0) [bug 1514436].
- Documentation patch for st_utime() [bug 1514484].
- Documentation patch for st_timecache_set() [bug 1514486].
- Documentation patch for st_netfd_serialize_accept() [bug 1514494].
- Added st_writev_resid() [rfe 1538344].
- Added st_readv_resid() [rfe 1538768] and, for symmetry, st_readv().
<<lessThe State Threads is a small application library which provides a foundation for writing fast and highly scalable Internet applications (such as Web servers, proxy servers, mail transfer agents, etc.) on UNIX-like platforms.
It offers a threading API for structuring a network application as an event-driven state machine.
The State Threads library is a derivative of the Netscape Portable Runtime library (NSPR) and therefore is distributed under the Mozilla Public License (MPL) version 1.1 or the GNU General Public License (GPL) version 2 or later.
Enhancements:
- Added support for kqueue and epoll on platforms that support them.
- Added ability to choose the event notification system at program startup.
- Long-overdue public definitions of ST_UTIME_NO_TIMEOUT (-1ULL) and ST_UTIME_NO_WAIT (0) [bug 1514436].
- Documentation patch for st_utime() [bug 1514484].
- Documentation patch for st_timecache_set() [bug 1514486].
- Documentation patch for st_netfd_serialize_accept() [bug 1514494].
- Added st_writev_resid() [rfe 1538344].
- Added st_readv_resid() [rfe 1538768] and, for symmetry, st_readv().
Download (0.097MB)
Added: 2007-03-16 License: MPL (Mozilla Public License) Price:
953 downloads
Ragel State Machine Compiler 5.23
Ragel State Machine Compiler compiles state machines from regular languages. more>>
Ragel State Machine Compiler compiles finite state machines from regular languages into executable C/C++/Objective-C code. Ragel state machines can not only recognize byte sequences as regular expression machines do, but can also execute code at arbitrary points in the recognition of a regular language.
Ragel can also be thought of as a finite state transducer compiler where output symbols represent blocks of code that get executed instead of written to the output stream.
When you wish to write down a regular language you start with some simple regular language and build a bigger one using the regular language operators union, concatenation, kleene star, intersection and subtraction.
This is precisely the way you describe to Ragel how to compile your finite state machines. Ragel also understands operators that embed actions into machines and operators that control any non-determinism in machines.
Ragel FSMs are closed under all of Ragels regular language, action specification and priority assignment operators. This property allows arbitrary regular languages to be described. Complexity is limited only by available processing resources.
For example, you can make one machine that picks out specially formatted comments in C code, another machine that builds a list all function declarations and a third that identifies string constants then "or" them all together to make a single machine that performs all of these tasks concurrently and independently on one pass of the input.
Main features:
- Describe arbitrary state machines using regular language operators and/or state tables.
- NFA to DFA conversion.
- Hopcrofts state minimization.
- Embed any number of actions into machines at arbitrary places.
- Control non-determinism using priorities on transitions.
- Visualize output with Graphviz.
- Use byte, double byte or word sized alphabets.
- Generate C/C++/Objective-C code with no dependencies.
- Choose from table or control flow driven output.
Enhancements:
- The documentation and the Ruby code generator were improved.
<<lessRagel can also be thought of as a finite state transducer compiler where output symbols represent blocks of code that get executed instead of written to the output stream.
When you wish to write down a regular language you start with some simple regular language and build a bigger one using the regular language operators union, concatenation, kleene star, intersection and subtraction.
This is precisely the way you describe to Ragel how to compile your finite state machines. Ragel also understands operators that embed actions into machines and operators that control any non-determinism in machines.
Ragel FSMs are closed under all of Ragels regular language, action specification and priority assignment operators. This property allows arbitrary regular languages to be described. Complexity is limited only by available processing resources.
For example, you can make one machine that picks out specially formatted comments in C code, another machine that builds a list all function declarations and a third that identifies string constants then "or" them all together to make a single machine that performs all of these tasks concurrently and independently on one pass of the input.
Main features:
- Describe arbitrary state machines using regular language operators and/or state tables.
- NFA to DFA conversion.
- Hopcrofts state minimization.
- Embed any number of actions into machines at arbitrary places.
- Control non-determinism using priorities on transitions.
- Visualize output with Graphviz.
- Use byte, double byte or word sized alphabets.
- Generate C/C++/Objective-C code with no dependencies.
- Choose from table or control flow driven output.
Enhancements:
- The documentation and the Ruby code generator were improved.
Download (0.52MB)
Added: 2007-07-25 License: GPL (GNU General Public License) Price:
824 downloads
Visual Turing Machine 2.0
Visual Turing Machine is a program that lets you create Turing machines with a point and click interface. more>>
Visual Turing Machine project is a program that lets you create Turing machines with a point and click interface instead of using esoteric languages.
You can pack your complex machines into small boxes, and then reuse them as part of a bigger machine. VTM also features an infinite length tape.
Enhancements:
- New features include an n-ary set of symbols, multiple windows (MDI), a huge workspace (10000x10000 pixels) without a memory issue, the ability to edit your own machines, the ability to execute machines n times (where n is undefined), the ability to use expressions (like n+5) to execute machines, the ability to execute machines at desired speeds, statistics to see how many instructions were executed and how much tape was "used", and an easy wasy to translate the program to other languages.
<<lessYou can pack your complex machines into small boxes, and then reuse them as part of a bigger machine. VTM also features an infinite length tape.
Enhancements:
- New features include an n-ary set of symbols, multiple windows (MDI), a huge workspace (10000x10000 pixels) without a memory issue, the ability to edit your own machines, the ability to execute machines n times (where n is undefined), the ability to use expressions (like n+5) to execute machines, the ability to execute machines at desired speeds, statistics to see how many instructions were executed and how much tape was "used", and an easy wasy to translate the program to other languages.
Download (0.28MB)
Added: 2007-05-31 License: GPL (GNU General Public License) Price:
890 downloads
XML::SAX::Machine 0.41
XML::SAX::Machine is a Perl module that can manage a collection of SAX processors. more>>
XML::SAX::Machine is a Perl module that can manage a collection of SAX processors.
SYNOPSIS
## Note: See XML::SAX::Pipeline and XML::SAX::Machines first,
## this is the gory, detailed interface.
use My::SAX::Machines qw( Machine );
use My::SAX::Filter2;
use My::SAX::Filter3;
my $filter3 = My::SAX::Filter3->new;
## A simple pipeline. My::SAX::Filter1 will be autoloaded.
my $m = Machine(
#
# Name => Class/object => handler(s)
#
[ Intake => "My::SAX::Filter1" => "B" ],
[ B => My::SAX::Filter2->new() => "C" ],
[ C => $filter3 => "D" ],
[ D => *STDOUT ],
);
## A parser will be created unless My::SAX::Filter1 can parse_file
$m->parse_file( "foo.revml" );
my $m = Machine(
[ Intake => "My::SAX::Filter1" => qw( Tee ) ],
[ Tee => "XML::Filter::SAXT" => qw( Foo Bar ) ],
[ Foo => "My::SAX::Filter2" => qw( Out1 ) ],
[ Out1 => $log ],
[ Bar => "My::SAX::Filter3" => qw( Exhaust ) ],
);
WARNING: This API is alpha!!! It will be changing.
A generic SAX machine (an instance of XML::SAX::Machine) is a container of SAX processors (referred to as "parts") connected in arbitrary ways.
Each parameter to Machine() (or XML::SAX::Machine-new()>) represents one top level part of the machine. Each part has a name, a processor, and one or more handlers (usually specified by name, as shown in the SYNOPSIS).
Since SAX machines may be passed in as single top level parts, you can also create nested, complex machines ($filter3 in the SYNOPSIS could be a Pipeline, for example).
A SAX machines can act as a normal SAX processors by connecting them to other SAX processors:
my $w = My::Writer->new();
my $m = Machine( ...., { Handler => $w } );
my $g = My::Parser->new( Handler => $w );
<<lessSYNOPSIS
## Note: See XML::SAX::Pipeline and XML::SAX::Machines first,
## this is the gory, detailed interface.
use My::SAX::Machines qw( Machine );
use My::SAX::Filter2;
use My::SAX::Filter3;
my $filter3 = My::SAX::Filter3->new;
## A simple pipeline. My::SAX::Filter1 will be autoloaded.
my $m = Machine(
#
# Name => Class/object => handler(s)
#
[ Intake => "My::SAX::Filter1" => "B" ],
[ B => My::SAX::Filter2->new() => "C" ],
[ C => $filter3 => "D" ],
[ D => *STDOUT ],
);
## A parser will be created unless My::SAX::Filter1 can parse_file
$m->parse_file( "foo.revml" );
my $m = Machine(
[ Intake => "My::SAX::Filter1" => qw( Tee ) ],
[ Tee => "XML::Filter::SAXT" => qw( Foo Bar ) ],
[ Foo => "My::SAX::Filter2" => qw( Out1 ) ],
[ Out1 => $log ],
[ Bar => "My::SAX::Filter3" => qw( Exhaust ) ],
);
WARNING: This API is alpha!!! It will be changing.
A generic SAX machine (an instance of XML::SAX::Machine) is a container of SAX processors (referred to as "parts") connected in arbitrary ways.
Each parameter to Machine() (or XML::SAX::Machine-new()>) represents one top level part of the machine. Each part has a name, a processor, and one or more handlers (usually specified by name, as shown in the SYNOPSIS).
Since SAX machines may be passed in as single top level parts, you can also create nested, complex machines ($filter3 in the SYNOPSIS could be a Pipeline, for example).
A SAX machines can act as a normal SAX processors by connecting them to other SAX processors:
my $w = My::Writer->new();
my $m = Machine( ...., { Handler => $w } );
my $g = My::Parser->new( Handler => $w );
Download (0.042MB)
Added: 2007-07-31 License: Perl Artistic License Price:
815 downloads
Concurrent Hierarchical State Machine 4.3
Concurrent Hierarchical State Machine (CHSM) is a language system for specifying concurrent, hierarchical, finite state machines more>>
Concurrent Hierarchical State Machine (CHSM) is a language system for specifying concurrent, hierarchical, finite state machines (an implementation of "statecharts") to model and control reactive systems.
CHSM uses its own statechart specification langauge annotated with either C++ or Java code fragments in the tradition of yacc grammars with C code fragments. The generated code is fully object oriented allowing multiple state machines to exist concurrently. The CHSM run-time library is small, efficient, and thread-safe.
CHSM has been used successfullly in production environments such as CERN, Philips, and Qualcomm. There is an independent review from users at CERN.
Enhancements:
- The "dominance" rule has been extended from parent/child transitions to sibling transitions.
- This allows "if-else" transitions to be done more efficiently.
<<lessCHSM uses its own statechart specification langauge annotated with either C++ or Java code fragments in the tradition of yacc grammars with C code fragments. The generated code is fully object oriented allowing multiple state machines to exist concurrently. The CHSM run-time library is small, efficient, and thread-safe.
CHSM has been used successfullly in production environments such as CERN, Philips, and Qualcomm. There is an independent review from users at CERN.
Enhancements:
- The "dominance" rule has been extended from parent/child transitions to sibling transitions.
- This allows "if-else" transitions to be done more efficiently.
Download (0.24MB)
Added: 2007-08-04 License: GPL (GNU General Public License) Price:
819 downloads
Virtual Machine Viewer 0.0.1
Virtual Machine Manager software is a desktop user interface for managing virtual machines. more>>
Virtual Machine Manager software (virt-manager for short package name) is a desktop user interface for managing virtual machines. The project presents a summary view of running domains and their live performance & resource utilization statistics. A detailed view presents graphs showing performance & utilization over time. Ultimately it will allow creation of new domains, and configuration & adjustment of a domains resource allocation & virtual hardware. Finally an embedded VNC client viewer presents a full graphical console to the guest domain.
The application logic is written in Python, while the UI is constructed with Glade and GTK+, based on mockups provided by UI interaction designers. The libvirt Python bindings are used to interacting with the underlying hypervisor. This enables the application to be written independant of any particular hypervisor technology. Initially Xen was the primary platform supported, however, since libvirt 0.2.0 and virt-manager 0.3.1 it is possible to manage QEMU and KVM guests too. It is expected that support for additional hypervisors / virtualization products will expand even further over time as additional libvirt drivers are written.
The "Virt Install" tool (virtinst for short package name) is a command line tool which provides an easy way to provision operating systems into virtual machines. It also provides an API to the virt-manager application for its graphical VM creation wizard.
The "Virt Clone" tool (virtinst for short package name) is a command line tool for cloning existing inactive guests. It copies the disk images, and defines a config with new name, UUID and MAC address pointing to the copied disks.
The "Virtual Machine Viewer" application (virt-viewer for short package name) is a lightweight interface for interacting with the graphical display of virtualized guest OS. It uses GTK-VNC as its display capability, and libvirt to lookup the VNC server details associated with the guest. It is intended as a replacement for the traditional vncviewer client, since the latter does not support SSL/TLS encryption of x509 certificate authentication.
<<lessThe application logic is written in Python, while the UI is constructed with Glade and GTK+, based on mockups provided by UI interaction designers. The libvirt Python bindings are used to interacting with the underlying hypervisor. This enables the application to be written independant of any particular hypervisor technology. Initially Xen was the primary platform supported, however, since libvirt 0.2.0 and virt-manager 0.3.1 it is possible to manage QEMU and KVM guests too. It is expected that support for additional hypervisors / virtualization products will expand even further over time as additional libvirt drivers are written.
The "Virt Install" tool (virtinst for short package name) is a command line tool which provides an easy way to provision operating systems into virtual machines. It also provides an API to the virt-manager application for its graphical VM creation wizard.
The "Virt Clone" tool (virtinst for short package name) is a command line tool for cloning existing inactive guests. It copies the disk images, and defines a config with new name, UUID and MAC address pointing to the copied disks.
The "Virtual Machine Viewer" application (virt-viewer for short package name) is a lightweight interface for interacting with the graphical display of virtualized guest OS. It uses GTK-VNC as its display capability, and libvirt to lookup the VNC server details associated with the guest. It is intended as a replacement for the traditional vncviewer client, since the latter does not support SSL/TLS encryption of x509 certificate authentication.
Download (0.081MB)
Added: 2007-08-22 License: GPL (GNU General Public License) Price:
804 downloads
C++ Machine Objects 0.9.4
C++ Machine Objects class library supports a subset of the UML statechart notation. more>>
C++ Machine Objects class library supports a subset of the UML statechart notation for implementing hierarchical state machines in straight C++, similar in spirit to the GoF "State" design pattern.
The currently supported features are hierarchical states, entry and exit actions, state histories, and state variables.
Installation:
The class library as such does not need to be installed. Just include the header file Macho.hpp to make use of it. Prerequisite however is a C++ compiler with sane support for templates.
Included are the example state machines HelloWorld, Example, Microwave and Test. To make the examples run just compile them in the directory they are in, for example:
# GCC
g++ -o microwave Microwave.cpp
# MSVC7
cl /EHsc Microwave.cpp
I like the GoF "State" design pattern. It enables implementing the important concept of state machines with common programming language features. By utilising only basic language mechanisms it is easy to apply in real-life software development.
Another important property that stems from this simplicity is orthogonality, meaning that the pattern can be combined with other design elements, patterns and idioms in arbitrary ways.
In contrast stand the tool supported approaches to state machine creation (of which there is no shortage). Based on code generators and graphical editors, they tend to generate incomprehensible code and forfeit orthogonality by necessarily being outside the domain of the programming language.
Unfortunately the "State" pattern is limited in scope because it does not allow for hierarchical state machines. This is regrettable because flat state machines tend to become unwieldy when getting bigger, for the sheer number of states they produce.
Hierarchical state machines as defined by the statechart notation alleviate this problem by giving an additional structural element through grouping states into hierarchies.
The "State" pattern in its original form is not capable of modeling state hierarchies. The Macho class library extends the concept with this possibility, while keeping the properties of simplicity (there possible) and tool independence from its inspiration.
Enhancements:
- This release adds the feature of backtracking to previous states by using "Snapshots".
<<lessThe currently supported features are hierarchical states, entry and exit actions, state histories, and state variables.
Installation:
The class library as such does not need to be installed. Just include the header file Macho.hpp to make use of it. Prerequisite however is a C++ compiler with sane support for templates.
Included are the example state machines HelloWorld, Example, Microwave and Test. To make the examples run just compile them in the directory they are in, for example:
# GCC
g++ -o microwave Microwave.cpp
# MSVC7
cl /EHsc Microwave.cpp
I like the GoF "State" design pattern. It enables implementing the important concept of state machines with common programming language features. By utilising only basic language mechanisms it is easy to apply in real-life software development.
Another important property that stems from this simplicity is orthogonality, meaning that the pattern can be combined with other design elements, patterns and idioms in arbitrary ways.
In contrast stand the tool supported approaches to state machine creation (of which there is no shortage). Based on code generators and graphical editors, they tend to generate incomprehensible code and forfeit orthogonality by necessarily being outside the domain of the programming language.
Unfortunately the "State" pattern is limited in scope because it does not allow for hierarchical state machines. This is regrettable because flat state machines tend to become unwieldy when getting bigger, for the sheer number of states they produce.
Hierarchical state machines as defined by the statechart notation alleviate this problem by giving an additional structural element through grouping states into hierarchies.
The "State" pattern in its original form is not capable of modeling state hierarchies. The Macho class library extends the concept with this possibility, while keeping the properties of simplicity (there possible) and tool independence from its inspiration.
Enhancements:
- This release adds the feature of backtracking to previous states by using "Snapshots".
Download (0.035MB)
Added: 2006-06-02 License: MIT/X Consortium License Price:
1240 downloads
Virtual Machine Manager 0.3.1
Virtual Machine Manager (virt-manager for short package name) is a desktop application for managing virtual machines. more>>
Virtual Machine Manager (virt-manager for short package name) is a desktop application for managing virtual machines. It presents a summary view of running domains and their live performance & resource utilization statistics.
A detailed view presents graphs showing performance & utilization over time. Ultimately it will allow creation of new domains, and configuration & adjustment of a domains resource allocation & virtual hardware. Finally an embedded VNC client viewer presents a full graphical console to the guest domain.
The application logic is written in Python, while the UI is constructed with Glade and GTK+, based on mockups provided by UI interaction designers. The libvirt Python bindings are used to interacting with the underlying hypervisor.
This enables the application to be written independant of any particular hypervisor technology, although Xen is the current primary platform. When libvirt is ported to additional hypervisors minimal effort will be required to update the management UI.
<<lessA detailed view presents graphs showing performance & utilization over time. Ultimately it will allow creation of new domains, and configuration & adjustment of a domains resource allocation & virtual hardware. Finally an embedded VNC client viewer presents a full graphical console to the guest domain.
The application logic is written in Python, while the UI is constructed with Glade and GTK+, based on mockups provided by UI interaction designers. The libvirt Python bindings are used to interacting with the underlying hypervisor.
This enables the application to be written independant of any particular hypervisor technology, although Xen is the current primary platform. When libvirt is ported to additional hypervisors minimal effort will be required to update the management UI.
Download (0.92MB)
Added: 2007-02-23 License: GPL (GNU General Public License) Price:
581 downloads
StateML 0.22
StateML is a State Machine Markup Language, with GraphViz and template-driven code generation. more>>
StateML is a State Machine Markup Language, with GraphViz and template-driven code generation.
SYNOPSIS
## See the stml command for command line use (recommended)
## Heres what a .stml file might look like:
< machine
id="main"
xmlns="http://slaysys.com/StateML/1.0"
xmlns:C="http://your.com/path/to/ns/for/C/code"
xmlns:Perl="http://your.com/path/to/ns/for/perl/code"
xmlns:Java="http://your.com/path/to/ns/for/Java/code"
...
>
< event id="init">
< C:api>void init_event_handler()< /C:api>
< /event>
< state id="#ALL" graphviz:style="dashed">
< arc event_id="init" goto="running">
< C:handler>init_device()< /C:handler>
< /arc>
< /state>
< state id="running"/>
< /machine>
use StateML;
my $machine = StateML->parse( $source ); ## filename, GLOB, etc.
StateML->parse( $source, $machine ); ## Add to existing machine
... process $machine as needed, see stml source for ideas...
WARNING: Alpha code. I use it in production, but you may want to limit your use to development only.
StateML is an XML dialect and a tool (stml) that reads this dialect (by default from files with a ".stml" extension) and converts it to source code using source code to a data structure.
It can then emit the data structure as a graphviz-generated image or graph specification or you may take the data structure and do what you want with it (bin/stml can pass it to template toolkit, for instance).
parse
my $m = StateML->parse( $StateML_string ) ;
my $m = StateML->parse( *F ) ;
<<lessSYNOPSIS
## See the stml command for command line use (recommended)
## Heres what a .stml file might look like:
< machine
id="main"
xmlns="http://slaysys.com/StateML/1.0"
xmlns:C="http://your.com/path/to/ns/for/C/code"
xmlns:Perl="http://your.com/path/to/ns/for/perl/code"
xmlns:Java="http://your.com/path/to/ns/for/Java/code"
...
>
< event id="init">
< C:api>void init_event_handler()< /C:api>
< /event>
< state id="#ALL" graphviz:style="dashed">
< arc event_id="init" goto="running">
< C:handler>init_device()< /C:handler>
< /arc>
< /state>
< state id="running"/>
< /machine>
use StateML;
my $machine = StateML->parse( $source ); ## filename, GLOB, etc.
StateML->parse( $source, $machine ); ## Add to existing machine
... process $machine as needed, see stml source for ideas...
WARNING: Alpha code. I use it in production, but you may want to limit your use to development only.
StateML is an XML dialect and a tool (stml) that reads this dialect (by default from files with a ".stml" extension) and converts it to source code using source code to a data structure.
It can then emit the data structure as a graphviz-generated image or graph specification or you may take the data structure and do what you want with it (bin/stml can pass it to template toolkit, for instance).
parse
my $m = StateML->parse( $StateML_string ) ;
my $m = StateML->parse( *F ) ;
Download (0.022MB)
Added: 2007-06-13 License: Perl Artistic License Price:
865 downloads
Money-Making-Machine 1.0
The Ultimate Safe Money Guide -Free Online Money Guide Make Your Online Money The Safe Way And Generate a Daily Income Stream. The best thing I came ... more>> <<less
Download (2117KB)
Added: 2009-04-19 License: Freeware Price: Free
188 downloads
UML::State 0.02
UML::State is an object oriented module which draws simple state diagrams. more>>
UML::State is an object oriented module which draws simple state diagrams.
SYNOPSIS
use UML::State;
my $diagram = UML::State->new(
$node_array,
$start_list,
$accept_list,
$edges
);
# You may change these defaults (doing so may even work):
$UML::State::ROW_SPACING = 75; # all numbers are in pixels
$UML::State::LEFT_MARGIN = 20;
$UML::State::WIDTH = 800;
$UML::State::HEIGHT = 800;
print $diagram->draw();
ABSTRACT
Are you tired of pointing and clicking to make simple diagrams? Do your wrists hurt thinking about making the pretty UML your boss likes so well? Consider using UML::State and UML::Sequence to make your life easier.
UML::State together with drawstate.pl allows you to easily generate state diagrams. You enter them in something like a cross between ASCII art and school room algebra. They come out looking like something from a drawing program like Visio. See drawstate.pl in the distribution for details about the input format and the samples directory for some examples of input and output.
You will probably use this class by running drawstate.pl or drawstatexml.pl which are included in the distribution. But you can use this package directly to gain control over the appearance of your pictures.
The two methods you need are new and draw (see below). If you want, you may change the dimensions by setting the package global variables as shown in the SYNOPSIS. Obviously, no error checking is done, so be careful to use reasonable values (positive numbers are good). All numbers are in pixels (sorry by Beziers in SVG seem to require pixels). I have not tried changing the numbers, so I dont have any idea if doing so makes reasonable changes to the output.
<<lessSYNOPSIS
use UML::State;
my $diagram = UML::State->new(
$node_array,
$start_list,
$accept_list,
$edges
);
# You may change these defaults (doing so may even work):
$UML::State::ROW_SPACING = 75; # all numbers are in pixels
$UML::State::LEFT_MARGIN = 20;
$UML::State::WIDTH = 800;
$UML::State::HEIGHT = 800;
print $diagram->draw();
ABSTRACT
Are you tired of pointing and clicking to make simple diagrams? Do your wrists hurt thinking about making the pretty UML your boss likes so well? Consider using UML::State and UML::Sequence to make your life easier.
UML::State together with drawstate.pl allows you to easily generate state diagrams. You enter them in something like a cross between ASCII art and school room algebra. They come out looking like something from a drawing program like Visio. See drawstate.pl in the distribution for details about the input format and the samples directory for some examples of input and output.
You will probably use this class by running drawstate.pl or drawstatexml.pl which are included in the distribution. But you can use this package directly to gain control over the appearance of your pictures.
The two methods you need are new and draw (see below). If you want, you may change the dimensions by setting the package global variables as shown in the SYNOPSIS. Obviously, no error checking is done, so be careful to use reasonable values (positive numbers are good). All numbers are in pixels (sorry by Beziers in SVG seem to require pixels). I have not tried changing the numbers, so I dont have any idea if doing so makes reasonable changes to the output.
Download (0.054MB)
Added: 2007-04-23 License: Perl Artistic License Price:
915 downloads
High Level Virtual Machine 0.1
High Level Virtual Machine is a toolkit for developing virtual machines for dynamic languages. more>>
High Level Virtual Machine is a toolkit for developing virtual machines for dynamic languages.
The High Level Virtual Machine is:
- Based on LLVM (Low Level Virtual Machine). LLVM is HLVMs sister project. HLVM gains tremendous capability from LLVM in the areas of code generation, bytecode storage, runtime execution, etc.
- Aimed at supporting dynamic languages such as Ruby, Python, Perl, Jython, Haskell, Prolog, etc.
- A complete compiler developers toolkit for creating new languages easily. To write a new compiler, language designers simply write a plugin that describes the language to HLVM and how to translate the grammar productions into HLVMs comprehensive Abstract Syntax Tree (AST). After that, HLVM handles all aspects of code generation, bytecode storage, XML translation, JIT execution or interpretation, and native compilation.
- A language interoperability framework. Because all front end compilers generate code in the same AST, they can interoperate. Use of the runtime library for common constructs (e.g. "string") allow even complex data types to be shared between languages. Users of HLVM can write complex programs in multiple languages and be assured the result can be executed efficiently.
- A code management system including code revisioning, interface versioning, automated recompilation, separation of workspaces, etc.
- Currently under development. Project started April 20th, 2006. Stay tuned to this web site for future developments.
<<lessThe High Level Virtual Machine is:
- Based on LLVM (Low Level Virtual Machine). LLVM is HLVMs sister project. HLVM gains tremendous capability from LLVM in the areas of code generation, bytecode storage, runtime execution, etc.
- Aimed at supporting dynamic languages such as Ruby, Python, Perl, Jython, Haskell, Prolog, etc.
- A complete compiler developers toolkit for creating new languages easily. To write a new compiler, language designers simply write a plugin that describes the language to HLVM and how to translate the grammar productions into HLVMs comprehensive Abstract Syntax Tree (AST). After that, HLVM handles all aspects of code generation, bytecode storage, XML translation, JIT execution or interpretation, and native compilation.
- A language interoperability framework. Because all front end compilers generate code in the same AST, they can interoperate. Use of the runtime library for common constructs (e.g. "string") allow even complex data types to be shared between languages. Users of HLVM can write complex programs in multiple languages and be assured the result can be executed efficiently.
- A code management system including code revisioning, interface versioning, automated recompilation, separation of workspaces, etc.
- Currently under development. Project started April 20th, 2006. Stay tuned to this web site for future developments.
Download (0.12MB)
Added: 2006-06-15 License: LGPL (GNU Lesser General Public License) Price:
1227 downloads
Kernel-Machine Library 0.1
Kernel-Machine Library is a C++ library to implement kernel machines. more>>
The Kernel-Machine Library is a freely available (released under the GPL) C++ library to promote the use and progress of kernel machines. It is both for academic use and for developing real world applications.
The Kernel-Machine Library draws heavily from features of modern C++ such as template meta-programming to achieve high performance while at the same time offering a comfortable interface.
It enables compile-time selection of specialised algorithms on the basis of data types: for example, the specific case of a SVM in combination with a linear kernel can be computed by a specialised efficient algorithm.
The Kernel-Machine Library has implementations for the following kernel machines and their cited algorithms:
- Support Vector Machine [1, 2, 3]
- Relevance Vector Machine [4]
- Kernel Recursive Least Squares [5]
- Adaptive Sparseness using Jeffreys Prior [6]
- Smooth Relevance Vector Machine [7]
Up till now, the focus has been on regression. The handling of classification and ranking problems is being added.
<<lessThe Kernel-Machine Library draws heavily from features of modern C++ such as template meta-programming to achieve high performance while at the same time offering a comfortable interface.
It enables compile-time selection of specialised algorithms on the basis of data types: for example, the specific case of a SVM in combination with a linear kernel can be computed by a specialised efficient algorithm.
The Kernel-Machine Library has implementations for the following kernel machines and their cited algorithms:
- Support Vector Machine [1, 2, 3]
- Relevance Vector Machine [4]
- Kernel Recursive Least Squares [5]
- Adaptive Sparseness using Jeffreys Prior [6]
- Smooth Relevance Vector Machine [7]
Up till now, the focus has been on regression. The handling of classification and ranking problems is being added.
Download (0.050MB)
Added: 2005-10-08 License: GPL (GNU General Public License) Price:
1478 downloads
multistat 1.0
multistat is a generic program to display the up/down status of all kinds of things. more>>
multistat is a generic program to display the up/down status of all kinds of things (some examples: VPN, particular machines, whether filesystems are mounted).
You will need to edit the multistat.py file to configure the things whose status you want to check.
Status for each "property" (i.e., VPN, computer, filesystem mount) is either red or green.
For each property, you enter values into several arrays, as defined below
Taken from multistat.py:
# commands that set properties to the green state
green_cmds = []
# commands that set properties to the red state
red_cmds = []
# commands whose output can be used to determine whether the state is green or red
check_colour_cmds = []
# strings that, if present in check_colour_cmds, mean that we are in the green state
is_green = []
# display this when in the green state
green_display_strings = []
# display this when in the red state
red_display_strings = []
So what happens is:
For each property:
1. In the green state the green_display_strings value for the property is displayed in green.
2. In the red state the red_display_strings value for the property is displayed in red.
3. To determine whether the property is in the gren or red state, the command in the check_colour_cmds array is run, and if the string in the is_green array is found in the output, then the property is in the green state. Otherwise, it is in the red state.
4. If green_cmds and red_cmds are not null (they MUST be defined, but they MAY be empty strings), then clicking the displayed string for the property on the widget will cause the relevant command to be executed to cause the property to change state. In other words, you can force a property to toggle between green and red by clicking the property on the widget. So, for example, you can mount/umount filesystems with a click. For some properties it makes no sense to provide a toggle (for example, if you are simply monitoring whether a particular computer is on the network): for such properties, define red_cmds and green_cmds to be empty strings.
This may not make much sense (sorry!) but if you read it again with the multistat.py script open in front of you, you should be able to see what I mean.
You can change the actual displayed colours easily (see screenshot 2 for an example where "red" has been redefined).
By default, properties are scanned and updated once per miute.
<<lessYou will need to edit the multistat.py file to configure the things whose status you want to check.
Status for each "property" (i.e., VPN, computer, filesystem mount) is either red or green.
For each property, you enter values into several arrays, as defined below
Taken from multistat.py:
# commands that set properties to the green state
green_cmds = []
# commands that set properties to the red state
red_cmds = []
# commands whose output can be used to determine whether the state is green or red
check_colour_cmds = []
# strings that, if present in check_colour_cmds, mean that we are in the green state
is_green = []
# display this when in the green state
green_display_strings = []
# display this when in the red state
red_display_strings = []
So what happens is:
For each property:
1. In the green state the green_display_strings value for the property is displayed in green.
2. In the red state the red_display_strings value for the property is displayed in red.
3. To determine whether the property is in the gren or red state, the command in the check_colour_cmds array is run, and if the string in the is_green array is found in the output, then the property is in the green state. Otherwise, it is in the red state.
4. If green_cmds and red_cmds are not null (they MUST be defined, but they MAY be empty strings), then clicking the displayed string for the property on the widget will cause the relevant command to be executed to cause the property to change state. In other words, you can force a property to toggle between green and red by clicking the property on the widget. So, for example, you can mount/umount filesystems with a click. For some properties it makes no sense to provide a toggle (for example, if you are simply monitoring whether a particular computer is on the network): for such properties, define red_cmds and green_cmds to be empty strings.
This may not make much sense (sorry!) but if you read it again with the multistat.py script open in front of you, you should be able to see what I mean.
You can change the actual displayed colours easily (see screenshot 2 for an example where "red" has been redefined).
By default, properties are scanned and updated once per miute.
Download (0.032MB)
Added: 2006-06-19 License: GPL (GNU General Public License) Price:
1222 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above state machines search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed