Annotation of truecrypt/main/stringformatter.cpp, revision 1.1.1.1

1.1       root        1: /*
                      2:  Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
                      3: 
                      4:  Governed by the TrueCrypt License 2.4 the full text of which is contained
                      5:  in the file License.txt included in TrueCrypt binary and source code
                      6:  distribution packages.
                      7: */
                      8: 
                      9: #include "System.h"
                     10: #include "StringFormatter.h"
                     11: #include "UserInterfaceException.h"
                     12: 
                     13: namespace TrueCrypt
                     14: {
                     15:        StringFormatter::StringFormatter (const wxString &format, StringFormatterArg arg0, StringFormatterArg arg1, StringFormatterArg arg2, StringFormatterArg arg3, StringFormatterArg arg4, StringFormatterArg arg5, StringFormatterArg arg6, StringFormatterArg arg7, StringFormatterArg arg8, StringFormatterArg arg9)
                     16:        {
                     17:                bool numberExpected = false;
                     18:                bool endTagExpected = false;
                     19:                foreach (wchar_t c, wstring (format))
                     20:                {
                     21:                        if (numberExpected)
                     22:                        {
                     23:                                endTagExpected = true;
                     24:                                bool err = false;
                     25: 
                     26:                                switch (c)
                     27:                                {
                     28:                                case L'{': FormattedString += L'{'; endTagExpected = false; break; // Escaped {
                     29: 
                     30:                                case L'0': FormattedString += arg0; err = arg0.IsEmpty(); break;
                     31:                                case L'1': FormattedString += arg1; err = arg1.IsEmpty(); break;
                     32:                                case L'2': FormattedString += arg2; err = arg2.IsEmpty(); break;
                     33:                                case L'3': FormattedString += arg3; err = arg3.IsEmpty(); break;
                     34:                                case L'4': FormattedString += arg4; err = arg4.IsEmpty(); break;
                     35:                                case L'5': FormattedString += arg5; err = arg5.IsEmpty(); break;
                     36:                                case L'6': FormattedString += arg6; err = arg6.IsEmpty(); break;
                     37:                                case L'7': FormattedString += arg7; err = arg7.IsEmpty(); break;
                     38:                                case L'8': FormattedString += arg8; err = arg8.IsEmpty(); break;
                     39:                                case L'9': FormattedString += arg9; err = arg9.IsEmpty(); break;
                     40: 
                     41:                                default: err = true; break;
                     42:                                }
                     43: 
                     44:                                if (err)
                     45:                                        throw StringFormatterException (SRC_POS, wstring (format));
                     46: 
                     47:                                numberExpected = false;
                     48:                        }
                     49:                        else if (endTagExpected)
                     50:                        {
                     51:                                if (c != L'}')
                     52:                                        throw StringFormatterException (SRC_POS, wstring (format));
                     53: 
                     54:                                endTagExpected = false;
                     55:                        }
                     56:                        else if (c == L'{')
                     57:                        {
                     58:                                numberExpected = true;
                     59:                        }
                     60:                        else if (c == L'}')
                     61:                        {
                     62:                                FormattedString += c;
                     63:                                endTagExpected = true;
                     64:                        }
                     65:                        else
                     66:                                FormattedString += c;
                     67:                }
                     68: 
                     69:                if (numberExpected
                     70:                        || endTagExpected
                     71:                        || !arg0.WasReferenced() && !arg0.IsEmpty()
                     72:                        || !arg1.WasReferenced() && !arg1.IsEmpty()
                     73:                        || !arg2.WasReferenced() && !arg2.IsEmpty()
                     74:                        || !arg3.WasReferenced() && !arg3.IsEmpty()
                     75:                        || !arg4.WasReferenced() && !arg4.IsEmpty()
                     76:                        || !arg5.WasReferenced() && !arg5.IsEmpty()
                     77:                        || !arg6.WasReferenced() && !arg6.IsEmpty()
                     78:                        || !arg7.WasReferenced() && !arg7.IsEmpty()
                     79:                        || !arg8.WasReferenced() && !arg8.IsEmpty()
                     80:                        || !arg9.WasReferenced() && !arg9.IsEmpty()
                     81:                        )
                     82:                        throw StringFormatterException (SRC_POS, wstring (format));
                     83:        }
                     84: 
                     85:        StringFormatter::~StringFormatter ()
                     86:        {
                     87:        }
                     88: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.