MAK Data Logger API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
lgrUtilityFunctions.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 
10 #ifndef lgrUtilityFunctions_H_
11 #define lgrUtilityFunctions_H_
12 
13 #include "lgrUtil.h"
14 #include <vlutil/vlNetTypes.h>
15 #include <vlutil/vlString.h>
16 #include <vector>
17 
18 namespace MAKLogger
19 {
20 
21  typedef std::vector<DtString> DtStringVector;
22  const char theDefaultDeliminator = ';';
23 
24  inline size_t roundUpTo2( size_t sz )
25  {
26  return sz + (sz & (size_t)0x01);
27  }
28 
29  inline int roundUpTo2( int sz )
30  {
31  return sz + (sz & (int)0x01);
32  }
33 
34  inline size_t roundUpTo4( size_t sz )
35  {
36  size_t align = sz & (size_t)0x03;
37  return align ? (sz + (size_t)4 - align) : sz;
38  }
39 #ifdef _M_X64
40  inline unsigned int roundUpTo4( unsigned int sz )
41  {
42  unsigned int align = sz & (unsigned int)0x03;
43  return align ? (sz + (unsigned int)4 - align) : sz;
44  }
45 #endif
46  inline int roundUpTo4( int sz )
47  {
48  int align = sz & (int)0x03;
49  return align ? (sz + (int)4 - align) : sz;
50  }
51 
52  inline size_t roundUpTo8( size_t sz )
53  {
54  size_t align = sz & (size_t)0x07;
55  return align ? (sz + (size_t)8 - align) : sz;
56  }
57 
58 #ifdef _M_X64
59  inline unsigned int roundUpTo8( unsigned int sz )
60  {
61  unsigned int align = sz & (unsigned int)0x07;
62  return align ? (sz + (unsigned int)8 - align) : sz;
63  }
64 #endif
65 
66 
67  inline int roundUpTo8( int sz )
68  {
69  int align = sz & (int)0x07;
70  return align ? (sz + (int)8 - align) : sz;
71  }
72 
73  inline void DtCreateDeliminatedString(const DtStringVector& stringList, DtString& deliminatedString, char deliminator=theDefaultDeliminator)
74  {
75  DtStringVector::const_iterator stringIter = stringList.begin();
76  DtStringVector::const_iterator stringEnd = stringList.end();
77  if (stringIter != stringEnd)
78  {
79  deliminatedString = *stringIter;
80  for ( ++stringIter; stringIter != stringEnd; ++stringIter)
81  {
82  deliminatedString += deliminator;
83  deliminatedString += *stringIter;
84  }
85  }
86  }
87 
88  inline int DtSeparateDeliminatedString(const DtString& deliminatedString,
89  DtStringVector& stringList, char deliminator=theDefaultDeliminator,
90  bool allowEmptyTokens=false, bool appendToExistingList=false)
91  {
92  DtString buffer(deliminatedString);
93  if (!appendToExistingList)
94  {
95  stringList.clear();
96  }
97 
98  while (!buffer.isEmpty())
99  {
100  DtString token = buffer;
101  if (!buffer.snipFront(deliminator))
102  {
103  buffer = DtString::nullString();
104  }
105  token.snipBack(deliminator, true);
106  token.chompBack();
107  token.chompFront();
108  if (allowEmptyTokens || !token.isEmpty())
109  {
110  stringList.push_back(token);
111  }
112  }
113  return stringList.size();
114  }
115 }
116 
117 #endif

Document ID: Generated on Thu Apr 7 20:50:59 EDT 2016 from SVN revision 163818
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)