diff -r a74f2ff353b8 -r b376645315ab src/Format.h
--- a/src/Format.h Wed Mar 12 16:20:40 2014 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,172 +0,0 @@
-/*
- * LDForge: LDraw parts authoring CAD
- * Copyright (C) 2013, 2014 Santeri Piippo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-#include
-#include "Types.h"
-
-//! \file Format.h
-//! Contains string formatting-related functions and classes.
-
-//!
-//! Converts a given value into a string that can be retrieved with text().
-//! Used as the argument type to the formatting functions, hence its name.
-//!
-class StringFormatArg
-{
- public:
- StringFormatArg (const QString& a) : m_text (a) {}
- StringFormatArg (const char& a) : m_text (a) {}
- StringFormatArg (const uchar& a) : m_text (a) {}
- StringFormatArg (const QChar& a) : m_text (a) {}
- StringFormatArg (int a) : m_text (QString::number (a)) {}
- StringFormatArg (long a) : m_text (QString::number (a)) {}
- StringFormatArg (const float& a) : m_text (QString::number (a)) {}
- StringFormatArg (const double& a) : m_text (QString::number (a)) {}
- StringFormatArg (const Vertex& a) : m_text (a.toString (false)) {}
- StringFormatArg (const Matrix& a) : m_text (a.toString()) {}
- StringFormatArg (const char* a) : m_text (a) {}
-
- StringFormatArg (const void* a)
- {
- m_text.sprintf ("%p", a);
- }
-
- template
- StringFormatArg (const QList& a)
- {
- m_text = "{";
-
- for (const T& it : a)
- {
- if (&it != &a.first())
- m_text += ", ";
-
- StringFormatArg arg (it);
- m_text += arg.text();
- }
-
- m_text += "}";
- }
-
- inline QString text() const
- {
- return m_text;
- }
-
- private:
- QString m_text;
-};
-
-//!
-//! Helper function for \c format
-//!
-template
-void formatHelper (QString& str, Arg1 arg1, Rest... rest)
-{
- str = str.arg (StringFormatArg (arg1).text());
- formatHelper (str, rest...);
-}
-
-//!
-//! Overload of \c formatHelper() with no template args
-//!
-static void formatHelper (QString& str) __attribute__ ((unused));
-static void formatHelper (QString& str)
-{
- (void) str;
-}
-
-//!
-//! @brief Format the message with the given args.
-//!
-//! The formatting ultimately uses QString's arg() method to actually format
-//! the args so the format string should be prepared accordingly, with %1
-//! referring to the first arg, %2 to the second, etc.
-//!
-//! \param fmtstr The string to format
-//! \param args The args to format with
-//! \return The formatted string
-//!
-template
-QString format (QString fmtstr, Args... args)
-{
- formatHelper (fmtstr, args...);
- return fmtstr;
-}
-
-//!
-//! From MessageLog.cc - declared here so that I don't need to include
-//! MessageLog.h here. Prints the given message to log.
-//!
-void printToLog (const QString& msg);
-
-//!
-//! Format and print the given args to the message log.
-//! \param fmtstr The string to format
-//! \param args The args to format with
-//!
-template
-void print (QString fmtstr, Args... args)
-{
- formatHelper (fmtstr, args...);
- printToLog (fmtstr);
-}
-
-//!
-//! Format and print the given args to the given file descriptor
-//! \param fp The file descriptor to print to
-//! \param fmtstr The string to format
-//! \param args The args to format with
-//!
-template
-void fprint (FILE* fp, QString fmtstr, Args... args)
-{
- formatHelper (fmtstr, args...);
- fprintf (fp, "%s", qPrintable (fmtstr));
-}
-
-//!
-//! Overload of \c fprint with a QIODevice
-//! \param dev The IO device to print to
-//! \param fmtstr The string to format
-//! \param args The args to format with
-//!
-template
-void fprint (QIODevice& dev, QString fmtstr, Args... args)
-{
- formatHelper (fmtstr, args...);
- dev.write (fmtstr.toUtf8());
-}
-
-//!
-//! Exactly like print() except no-op in release builds.
-//! \param fmtstr The string to format
-//! \param args The args to format with
-//!
-template
-void dprint (QString fmtstr, Args... args)
-{
-#ifndef RELEASE
- formatHelper (fmtstr, args...);
- printToLog (fmtstr);
-#else
- (void) fmtstr;
- (void) args;
-#endif
-}