![]() |
MechSys
1.0
Computing library for simulations in continuum and discrete mechanics
|
00001 /************************************************************************ 00002 * MechSys - Open Library for Mechanical Systems * 00003 * Copyright (C) 2005 Dorival M. Pedroso, Raul Durand * 00004 * Copyright (C) 2009 Sergio Galindo * 00005 * * 00006 * This program is free software: you can redistribute it and/or modify * 00007 * it under the terms of the GNU General Public License as published by * 00008 * the Free Software Foundation, either version 3 of the License, or * 00009 * any later version. * 00010 * * 00011 * This program is distributed in the hope that it will be useful, * 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00014 * GNU General Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU General Public License * 00017 * along with this program. If not, see <http://www.gnu.org/licenses/> * 00018 ************************************************************************/ 00019 00020 #ifndef MECHSYS_NUMSTREAMS_H 00021 #define MECHSYS_NUMSTREAMS_H 00022 00023 // STL 00024 #include <iostream> 00025 #include <iomanip> 00026 00027 namespace Util 00028 { 00029 00031 struct NumStream 00032 { 00033 bool BoolAlpha; 00034 bool Integer; 00035 bool Scientific; 00036 int Width; 00037 int Precision; 00038 bool Reset; 00039 }; 00040 00041 // bool integ scien w p reset 00042 NumStream _a = { true, false, false, 0, 0, false }; 00043 NumStream _2 = { false, true, false, 2, 0, false }; 00044 NumStream _3 = { false, true, false, 3, 0, false }; 00045 NumStream _4 = { false, true, false, 4, 0, false }; 00046 NumStream _6 = { false, true, false, 6, 0, false }; 00047 NumStream _8 = { false, true, false, 8, 0, false }; 00048 NumStream _3s = { false, false, true, 0, 3, false }; 00049 NumStream _6s = { false, false, true, 0, 6, false }; 00050 NumStream _8s = { false, false, true, 0, 8, false }; 00051 NumStream _15s = { false, false, true, 0, 15, false }; 00052 NumStream _3_2 = { false, false, false, 3, 2, false }; 00053 NumStream _4_2 = { false, false, false, 4, 2, false }; 00054 NumStream _6_2 = { false, false, false, 6, 3, false }; 00055 NumStream _6_3 = { false, false, false, 6, 3, false }; 00056 NumStream _6_4 = { false, false, false, 6, 4, false }; 00057 NumStream _6_6 = { false, false, false, 6, 6, false }; 00058 NumStream _8_0 = { false, false, false, 8, 0, false }; 00059 NumStream _8_2 = { false, false, false, 8, 2, false }; 00060 NumStream _8_3 = { false, false, false, 8, 3, false }; 00061 NumStream _8_4 = { false, false, false, 8, 4, false }; 00062 NumStream _8_6 = { false, false, false, 8, 6, false }; 00063 NumStream _10_2 = { false, false, false, 10, 2, false }; 00064 NumStream _10_3 = { false, false, false, 10, 3, false }; 00065 NumStream _10_4 = { false, false, false, 10, 4, false }; 00066 NumStream _10_6 = { false, false, false, 10, 6, false }; 00067 NumStream _12_4 = { false, false, false, 12, 4, false }; 00068 NumStream _12_6 = { false, false, false, 12, 6, false }; 00069 NumStream _13_2 = { false, false, false, 13, 2, false }; 00070 NumStream _13_6 = { false, false, false, 13, 6, false }; 00071 NumStream _14_6 = { false, false, false, 14, 6, false }; 00072 NumStream _15_2 = { false, false, false, 15, 2, false }; 00073 NumStream _15_6 = { false, false, false, 15, 6, false }; 00074 NumStream _20_15 = { false, false, false, 20, 15, false }; 00075 NumStream _reset = { false, false, false, 0, 0, true }; 00076 00078 std::ostream & operator<< (std::ostream & os, NumStream const & NS) 00079 { 00080 if (NS.Reset) 00081 { 00082 os << std::resetiosflags(std::ios_base::scientific) << std::resetiosflags(std::ios_base::fixed) << std::resetiosflags(std::ios_base::boolalpha); 00083 } 00084 else 00085 { 00086 if (NS.BoolAlpha) { os<<" "<<std::setw(6)<<std::boolalpha; } 00087 else if (NS.Integer) { os<<" "<<std::setw(NS.Width); } 00088 else if (NS.Scientific) { os<<" "<<std::setw(NS.Precision+9)<<std::scientific<<std::setprecision(NS.Precision); } // add 9 00089 else { os<<" "<<std::setw(NS.Width+1)<<std::fixed<<std::setprecision(NS.Precision); } // add 1 (for sign) 00090 } 00091 return os; 00092 } 00093 00094 }; // namespace Util 00095 00096 #endif // MECHSYS_NUMSTREAMS_H