lgrUtilityFunctions.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00008 
00009 
00010 #ifndef lgrUtilityFunctions_H_
00011 #define lgrUtilityFunctions_H_
00012 
00013 #include "lgrUtil.h"
00014 #include <vlutil/vlNetTypes.h>
00015 #include <vector>
00016 
00017 namespace MAKLogger
00018 {
00019 
00020    typedef std::vector<DtString> DtStringVector;
00021    const char theDefaultDeliminator = ';';
00022 
00023    inline size_t roundUpTo2( size_t sz )
00024    {
00025       return sz + (sz & (size_t)0x01);
00026    }
00027 
00028    inline int roundUpTo2( int sz )
00029    {
00030       return sz + (sz & (int)0x01);
00031    }
00032 
00033    inline size_t roundUpTo4( size_t sz )
00034    {
00035       size_t align = sz & (size_t)0x03;
00036       return align ? (sz + (size_t)4 - align) : sz;
00037    }
00038 #ifdef _M_X64
00039    inline unsigned int roundUpTo4( unsigned int sz )
00040    {
00041       unsigned int align = sz & (unsigned int)0x03;
00042       return align ? (sz + (unsigned int)4 - align) : sz;
00043    }
00044 #endif
00045    inline int roundUpTo4( int sz )
00046    {
00047       int align = sz & (int)0x03;
00048       return align ? (sz + (int)4 - align) : sz;
00049    }
00050 
00051    inline size_t roundUpTo8( size_t sz )
00052    {
00053       size_t align = sz & (size_t)0x07;
00054       return align ? (sz + (size_t)8 - align) : sz;
00055    }
00056 
00057 #ifdef _M_X64
00058    inline unsigned int roundUpTo8( unsigned int sz )
00059    {
00060       unsigned int align = sz & (unsigned int)0x07;
00061       return align ? (sz + (unsigned int)8 - align) : sz;
00062    }
00063 #endif
00064 
00065 
00066    inline int roundUpTo8( int sz )
00067    {
00068       int align = sz & (int)0x07;
00069       return align ? (sz + (int)8 - align) : sz;
00070    }
00071 
00072    inline void DtCreateDeliminatedString(const DtStringVector& stringList, DtString& deliminatedString, char deliminator=theDefaultDeliminator)
00073    {
00074       DtStringVector::const_iterator stringIter = stringList.begin();
00075       DtStringVector::const_iterator stringEnd = stringList.end();
00076       if (stringIter != stringEnd)
00077       {
00078          deliminatedString = *stringIter;
00079          for ( ++stringIter; stringIter != stringEnd; ++stringIter)
00080          {
00081             deliminatedString += deliminator;
00082             deliminatedString += *stringIter;
00083          }
00084       }
00085    }
00086 
00087    inline int DtSeparateDeliminatedString(const DtString& deliminatedString,
00088       DtStringVector& stringList, char deliminator=theDefaultDeliminator,
00089       bool allowEmptyTokens=false, bool appendToExistingList=false)
00090    {
00091       DtString buffer(deliminatedString);
00092       if (!appendToExistingList)
00093       {
00094          stringList.clear();
00095       }
00096 
00097       while (!buffer.isEmpty())
00098       {
00099          DtString token = buffer;
00100          if (!buffer.snipFront(deliminator))
00101          {
00102             buffer = DtString::nullString();
00103          }
00104          token.snipBack(deliminator, true);
00105          token.chompBack();
00106          token.chompFront();
00107          if (allowEmptyTokens || !token.isEmpty())
00108          {
00109             stringList.push_back(token);
00110          }
00111       }
00112       return stringList.size();
00113    }
00114 }
00115 
00116 #endif

Document ID: Generated on Tue Oct 11 19:41:03 EDT 2011 from SVN revision 107422
Copyright © 2005-2011 VT MÄK Inc. All Rights Reserved (www.mak.com)