MAK Data Logger API Documentation for HLA
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 <vector>
16 
17 namespace MAKLogger
18 {
19 
20  typedef std::vector<DtString> DtStringVector;
21  const char theDefaultDeliminator = ';';
22 
23  inline size_t roundUpTo2( size_t sz )
24  {
25  return sz + (sz & (size_t)0x01);
26  }
27 
28  inline int roundUpTo2( int sz )
29  {
30  return sz + (sz & (int)0x01);
31  }
32 
33  inline size_t roundUpTo4( size_t sz )
34  {
35  size_t align = sz & (size_t)0x03;
36  return align ? (sz + (size_t)4 - align) : sz;
37  }
38 #ifdef _M_X64
39  inline unsigned int roundUpTo4( unsigned int sz )
40  {
41  unsigned int align = sz & (unsigned int)0x03;
42  return align ? (sz + (unsigned int)4 - align) : sz;
43  }
44 #endif
45  inline int roundUpTo4( int sz )
46  {
47  int align = sz & (int)0x03;
48  return align ? (sz + (int)4 - align) : sz;
49  }
50 
51  inline size_t roundUpTo8( size_t sz )
52  {
53  size_t align = sz & (size_t)0x07;
54  return align ? (sz + (size_t)8 - align) : sz;
55  }
56 
57 #ifdef _M_X64
58  inline unsigned int roundUpTo8( unsigned int sz )
59  {
60  unsigned int align = sz & (unsigned int)0x07;
61  return align ? (sz + (unsigned int)8 - align) : sz;
62  }
63 #endif
64 
65 
66  inline int roundUpTo8( int sz )
67  {
68  int align = sz & (int)0x07;
69  return align ? (sz + (int)8 - align) : sz;
70  }
71 
72  inline void DtCreateDeliminatedString(const DtStringVector& stringList, DtString& deliminatedString, char deliminator=theDefaultDeliminator)
73  {
74  DtStringVector::const_iterator stringIter = stringList.begin();
75  DtStringVector::const_iterator stringEnd = stringList.end();
76  if (stringIter != stringEnd)
77  {
78  deliminatedString = *stringIter;
79  for ( ++stringIter; stringIter != stringEnd; ++stringIter)
80  {
81  deliminatedString += deliminator;
82  deliminatedString += *stringIter;
83  }
84  }
85  }
86 
87  inline int DtSeparateDeliminatedString(const DtString& deliminatedString,
88  DtStringVector& stringList, char deliminator=theDefaultDeliminator,
89  bool allowEmptyTokens=false, bool appendToExistingList=false)
90  {
91  DtString buffer(deliminatedString);
92  if (!appendToExistingList)
93  {
94  stringList.clear();
95  }
96 
97  while (!buffer.isEmpty())
98  {
99  DtString token = buffer;
100  if (!buffer.snipFront(deliminator))
101  {
102  buffer = DtString::nullString();
103  }
104  token.snipBack(deliminator, true);
105  token.chompBack();
106  token.chompFront();
107  if (allowEmptyTokens || !token.isEmpty())
108  {
109  stringList.push_back(token);
110  }
111  }
112  return stringList.size();
113  }
114 }
115 
116 #endif

Document ID: Generated on Thu Apr 11 12:13:00 EDT 2013 from SVN revision 126011
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)