/vartypes

Automatically exported from code.google.com/p/vartypes

Primary LanguageC++OtherNOASSERTION

========================================================================
 VarTypes
 Author:  Stefan Zickler <http://szickler.net>, (C) 2007-2015
 Available at: https://github.com/szi/vartypes
 (Formerly at: http://code.google.com/p/vartypes/)
========================================================================
 This software is free: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License Version 3,
 as published by the Free Software Foundation.

 This software 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
 Version 3 in the file COPYING that came with this distribution.
 If not, see <http://www.gnu.org/licenses/>.
========================================================================

=======================================================================
 Changelog:
 12/23/15 - v0.8 - Fixed Issue #2 (VarIntVal constructor was checking
                   _val before it was set)
                 - Made shared_ptr explicitly use std::tr1 namespace
                 - Cleanup in VarTypesFactory
                 - Added import/export options
                 - More coherent use of shared_ptr
                 - Added VarAny wrapper
                 - Added runtime loader interface, for at-runtime
                   loading of vartype .so's (optional feature)
                 - Changed emit to Q_EMIT
                 - Integrated example into CMakeLists.txt and removed
                   .pro build file.
 06/10/11 - v0.7 - Changed to shared_ptr model for all VarTypes.
                 - VarTypes now requires the tr1 C++ extensions.
 10/25/10 - v0.6 - Re-licensed from GPL to LGPL, so VarTypes can now be
                   used in commercial applications.
                 - Added CMake files for building shared library.
                 - Removed directory prefixes from include directives to
                   be compliant with cmake's library installation.
                 - Qt is now a requirement for compilation. Removed all
                   VDATA_NO_QT statements.
 12/04/09 - v0.5 - The VarTypes system now lives in the "VarTypes"
                   namespace.
                 - renamed "VarData" class to "VarType"
                 - restructured code to separate between a full "VarType"
                   and its containing raw data value "VarVal",
                   allowing better integration in projects
                   where pure high-performance data-types are required
                   without the VarData overhead (caused by e.g.
                   mutexes and the string-label + render-flags
                   associated with each VarData type).
                 - VarTypes are now template-instanciated through
                   "VarTypeTemplate"
                 - added the VarTypesFactory class, allowing easier,
                   single-point creation of custom user-defined VarTypes
                   by inheriting the VarTypesFactory.
                 - added the clone() and cloneDeep() operators for
                   all VarVals.
                 - added binary string store load interface.
                 - renamed all enumerations using more reasonable
                   conventions
                 - changed "renderFlags" to just "Flags" since
                   they control much more than just render behavior.
                 - changed string handling in XML i/o for
                   code safety improvements
                 - compilation should now work in windows                   
 4/16/09  - v0.4 - added multi-item selection type
                 - added VarNotifier class to catch change-events
                   for entire sub-trees
                 - fixed several bugs
                 - improved visualization:
                    - used persistent editors where applicable
                    - bools now based on checkboxes
                    - moves delegate functionality into respective
                      type classes
 10/31/08 - v0.3 - added string enums, fixed various performance bugs
                 - added doxygen-style headers to files and classes
 11/13/07 - v0.2 - basic thread-safety added
                 - added VarQWidget and VarTrigger (buttons) types
                 - added persistent editor flag
                 - added no-load and no-save flags
  9/27/07 - v0.1 - first release
========================================================================

 About:       VarTypes is a feature-rich, object-oriented framework
              for managing variables in C++ / QT4.

 Features:    VarTypes allows hierarchical organization, thread-safety,
              load/store to/from xml, QT4-based signals, QT4-based model/view
              visualization.

              VarTypes aims to make it easy for application developers to
              integrate automatic settings loading/storage, even for complex
              trees of settings. At the same time it allows a user to comfortably
              edit such settings in real-time without any risks of concurrency
              problems.

              Among supported base types are int, bool, double, string,
              string enumerations, lists, binary data, and triggers.
              More complex types can be added easily by inheriting the
              VarData base-class.

 Requires:    cmake, Qt >=4.5, C++ tr1 libraries (automatically supplied by
              many modern compilers).

 Usage:       The VarTypes library can be built by running:
              1) make
              2) sudo make install
              Note that cmake is required to build it.
              
              An example including the QT4 GUI is located in the example/
              directory. It is built automatically along with the library
              (but is not installed as part of the install command).
              
              To run the example:
              
              build/vartype_example

              All the interesting code on how to construct a vartree and
              GUI is located in example/src/mainwindow.cpp
              

 Files:       vartypes/primitives/
                  includes all basic vartype-datastructures

              vartypes/VarTypes.h
                  is the main header to include to make use of the system

              vartypes/primitives/VarType.h
                  is the base-class of all vartypes

              vartypes/gui/
                  includes all GUI related QT widgets.

             vartypes/xml/
                  includes the XML file parser/writer which was written by
                  and is copyrighted by Frank Vanden Berghen.