Show Posts
Pages: [1]
1  Development / Suggestions for the Arduino Project / Stream::findUntil shall use const char* for argument 2 (terminator) on: August 23, 2012, 02:39:03 am
As the 2nd argument of function Stream::findUntil(char *target, char *terminator) is not being modified by the function's code, it is advised to use const here.

problem:
if findUntil would modify the terminator string, the compiler would not complain and the programmer would be very surprised.

improvment:
using const in such situations allows other classes to properly define this parameter as const where indicated, telling the compiler to complain if the terminator string is modified by a function (by mistake).

Proposed code the the findUntil() function header and implementation is, thus:

bool  Stream::findUntil(char *target, const char *terminator)
{
  return findUntil(target, strlen(target), terminator, strlen(terminator));
}

In the second function declaration for findUntil(), following changes would be adviced:

bool Stream::findUntil(char *target, size_t targetLen, const char *terminator, const size_t termLen)
{
  size_t index = 0;  // maximum target string length is 64k bytes!
  size_t termIndex = 0;
  int c;
  ...
Pages: [1]