00001 /** \dir src/rutz 00002 00003 \brief basic utilities: strings, smart pointers, containers, debugging, tracing, profiling, i/o 00004 00005 src/rutz offers a range of low-level basic utilities, many of which 00006 can be seen as extensions of, or alternatives to, components from 00007 the c++ standard library. For example, rutz::fstring is similar to 00008 std::string in encapsulating memory-management of c-style strings, 00009 but whereas std::string is a template with everything inline 00010 (causing slow compile times), rutz::fstring is a non-template, with 00011 only efficiency-critical functions inlined. This makes 00012 rutz::fstring much less of a compile-time drain than std::string, 00013 although naturally it has fewer features than 00014 std::string. Nevertheless, in a vast majority of use cases, only 00015 basic string features are needed, and in these cases rutz::fstring 00016 suffices; in the few cases where more sophisticated processing is 00017 required, then std::string can be used and optionally translated 00018 back to a rutz::fstring. 00019 00020 Similarly, there are a number of stl-style containers that provide 00021 extremely lightweight alternatives to std::vector, yet still offer 00022 exception-safe automatic memory management: rutz::static_stack, 00023 rutz::static_block, rutz::fixed_block, rutz::shared_array, 00024 rutz::dynamic_block. 00025 00026 There are a number of facilities for debugging, tracing, and 00027 profiling; these are to be found in rutz/abort.h, rutz/backtrace.h, 00028 rutz/debug.h, rutz/prof.h, and rutz/trace.h. 00029 00030 There a few extensions to c++ std library i/o, including 00031 rutz::gzstreambuf which encapsulated gzip-encoded streams and 00032 rutz::imemstream and rutz::icstrstream which read from in-memory 00033 strings, like std::stringstream but much more lightweight both in 00034 run time and in compile time. 00035 00036 */ 00037 00038 /////////////////////////////////////////////////////////////////////// 00039 // 00040 // Copyright (c) 1998-2005 00041 // Rob Peters <rjpeters at usc dot edu> 00042 // 00043 // created: Wed Jul 6 14:08:39 PDT 2005 00044 // commit: $Id: README.dxy 4830 2005-07-06 21:50:21Z rjpeters $ 00045 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/rutz/README.dxy $ 00046 // 00047 // -------------------------------------------------------------------- 00048 // 00049 // This file is part of GroovX. 00050 // [http://ilab.usc.edu/rjpeters/groovx/] 00051 // 00052 // GroovX is free software; you can redistribute it and/or modify it 00053 // under the terms of the GNU General Public License as published by 00054 // the Free Software Foundation; either version 2 of the License, or 00055 // (at your option) any later version. 00056 // 00057 // GroovX is distributed in the hope that it will be useful, but 00058 // WITHOUT ANY WARRANTY; without even the implied warranty of 00059 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00060 // General Public License for more details. 00061 // 00062 // You should have received a copy of the GNU General Public License 00063 // along with GroovX; if not, write to the Free Software Foundation, 00064 // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 00065 // 00066 ///////////////////////////////////////////////////////////////////////