Changes between Version 16 and Version 17 of LibrariesUnderConstruction
- Timestamp:
- Jan 3, 2009, 9:42:33 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
LibrariesUnderConstruction
v16 v17 116 116 * '''Last upload:'''2008 Nov 26 117 117 * '''Links:''' [http://www.boostpro.com/vault/index.php?action=downloadfile&filename=euclid.zip&directory=& Boost Vault] 118 * '''Description:''' Euclidean vector class templates providing Orientational analysis on geo emtrical dimensions.118 * '''Description:''' Euclidean vector class templates providing Orientational analysis on geometrical dimensions. 119 119 120 120 --------------------------------------------------------------------------------------------------- … … 144 144 * '''Links:''' [http://www.boostpro.com/vault/index.php?action=downloadfile&filename=FSM.zip&directory=& Boost Vault] 145 145 * '''Description:'''The Boost.FSM library is an implementation of FSM (stands for Finite State Machine) programming concept. 146 There are many cases when a developer would like to distinguish behavio ur of a given object depending on some conditions or its internal state. For example, while developing software to control an charging turnstile a programmer would like to separate states in which the turnstile may persist: an idle state, when the device awaits for another passenger that would like to pass; a processing state, when the passenger have come and put his ticket into the device; and the passing state, when the turnstile lets the passenger pass through. In fact, each state describes a different reaction of the machine at the same events. That's why a passenger may only pass after paying for ticket. Obviously, the turnstile have to be able to change its internal state in order to function properly, this is called state switching or transitions between states (or just transitions for short).146 There are many cases when a developer would like to distinguish behavior of a given object depending on some conditions or its internal state. For example, while developing software to control an charging turnstile a programmer would like to separate states in which the turnstile may persist: an idle state, when the device awaits for another passenger that would like to pass; a processing state, when the passenger have come and put his ticket into the device; and the passing state, when the turnstile lets the passenger pass through. In fact, each state describes a different reaction of the machine at the same events. That's why a passenger may only pass after paying for ticket. Obviously, the turnstile have to be able to change its internal state in order to function properly, this is called state switching or transitions between states (or just transitions for short). 147 147 This implementation is aimed to ease the creation of such state machines in C++. It supports constructing passive automatons (which means that every action the machine performs is a response to some external event) with finite number of states and finite number of transitions (that is why they are called finite state machines). The main goals of the library are: 148 148 * Simplicity. It should be very simple to create state machines using this library. … … 255 255 * '''Links:''' [http://home.roadrunner.com/~hinnant/unique_ptr03.html Documentation & Download] 256 256 * '''Description:''' unique_ptr is a class template smart pointer currently in the [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2800.pdf C++0X CD1 draft]. It is intended to be a safer and more flexible replacement for auto_ptr. It represents sole (unique) ownership of a resource such as memory (like auto_ptr). 257 The actual C++0X unique_ptr makes use of a new C++ lang auge feature called rvalue reference which is similar to our current reference (&), but spelled &&. This emulation is intended to capture most of the behavior of the C++0X unique_ptr but work with C++03 compilers. Furthermore this emulation makes use of boost library facilities and has been placed in the boost namespace. Though at the time of this writing, this library is not part of the official boost library release.257 The actual C++0X unique_ptr makes use of a new C++ language feature called rvalue reference which is similar to our current reference (&), but spelled &&. This emulation is intended to capture most of the behavior of the C++0X unique_ptr but work with C++03 compilers. Furthermore this emulation makes use of boost library facilities and has been placed in the boost namespace. Though at the time of this writing, this library is not part of the official boost library release. 258 258 259 259 --------------------------------------------------------------------------------------------------- … … 527 527 == Quartets == 528 528 * '''Suggested by:''' Vicente J. Botet Escriba 529 * '''Description:''' Quartet are half un octet, i.e. 4 bits taking values from 0..15, and usualy represented by chars '0'-'9' 'A'-'F'.529 * '''Description:''' Quartet are half an octet, i.e. 4 bits taking values from 0..15, and usually represented by chars '0'-'9' 'A'-'F'. 530 530 There are some container specializations as std::string, std::vector and boost::array that could be of interest to some applications. 531 They are also used when a decimal number is encoded using the BCD format (binary coded decimal) or to encode telephon numbers.531 They are also used when a decimal number is encoded using the BCD format (binary coded decimal) or to encode telephone numbers. 532 532 533 533 --------------------------------------------------------------------------------------------------- … … 536 536 * '''Description:''' Concurrent components may interact in different ways: they may access the same objects by, for example, executing functions of these objects; or they may communicate directly by executing functions of each other. These library will provide the so-called rendezvous mechanism for handling direct communication between active objects. 537 537 538 --------------------------------------------------------------------------------------------------- 539 == !SpreadSheet == 540 * '''Suggested by:''' Vicente J. Botet Escriba 541 * '''Description:''' Allows to manage with the underlying concepts of a Spreadsheet but without displaying them. 542 543 Defines '''cells''' that can be organized in a classical grid consisting of rows and columns, or any other structure as for example a tree. 544 Each cell could contains alphanumeric text or numeric values but can also contain any other value. 545 A spreadsheet cell may alternatively contain a '''formula''' that defines how the contents of that cell is to be calculated from the contents of any other cell (or combination of cells) each time any cell is updated. 546 547 It seems natural to use Boost.Proto to define the DSL for the cell formulas. 548 549 {{{ 550 #!cpp 551 space sh; 552 space::cell<int> c1(sh), c2(sh), c3(sh); 553 c1.expr=1; 554 c2.expr=2; 555 c3.expr=c1+c2; 556 sh.refresh(); 557 std::cout<< c1.value() << ", " << c2.value() << ", " << c3.value() << std::endl; 558 }}} 559 560 {{{ 561 #!cpp 562 sheet sh(2,3); 563 sheet::cell<int> c01(sh,0,1), c02(sh,0,2), c03(sh,0,3); 564 c01.expr=1; 565 c02.expr=2; 566 c03.expr=rel_cell(c03,0,1)+rel_cell(c03,0,2); 567 sh.refresh(); 568 std::cout<< c01.value() << ", " << c02.value() << ", " << c03.value() << std::endl; 569 c11.expr=5; 570 c12.expr=8; 571 c13.expr=c03.copy(); 572 sh.refresh(); 573 std::cout<< c11 << ", " << c12 << ", " << c13 << std::endl; 574 }}} 538 575 539 576 --------------------------------------------------------------------------------------------------- … … 549 586 * Lock traits: very specific traits classes, some of them encapsulate a single trait for a Lockable type; for example, is a lock recursive (is_recursive), is useful in a multi threaded context (is_multi_threaded). 550 587 * Finding the best lock: Inverse traits can match a lockable type based on specific traits, for a given family of lock types. 551 * Synchronization famil ly: A class that will do internal locking can be parameterized by the type of synchronization familly needed to achieve the desired level of concurrency control. This depends of the usage scope of this class, and this can be mono_threaded, multi_threaded, multi_process.588 * Synchronization family: A class that will do internal locking can be parameterized by the type of synchronization family needed to achieve the desired level of concurrency control. This depends of the usage scope of this class, and this can be mono_threaded, multi_threaded, multi_process. 552 589 * Strict lockers: A strict_locker is a scoped lock guard ensuring the mutex is locked on the scope of the lock, by locking the mutex on construction and unlocking it on destruction. 553 590 * External lockers: An alternative or complementary approach to internal locking is to support external locking for an object - Multiple calls may be grouped within the same externally defined critical region. … … 667 704 --------------------------------------------------------------------------------------------------- 668 705 == Miscellaneous == 669 * [# !ContraintsProgramming ContraintsProgramming]706 * [#ContraintsProgramming ContraintsProgramming] 670 707 * [#Boost.Dataflow Dataflow] 671 708 * [#Boost.Fsm Fsm] … … 673 710 * [#Boost.Mirror Mirror] 674 711 * [#Boost.Reflection Reflection] 712 * [#SpreadSheet SpreadSheet] 675 713 * [#STM STM] 676 714