@@ -377,6 +377,40 @@ class StdIStream : public simplecpp::TokenList::Stream {
377
377
std::istream &istr;
378
378
};
379
379
380
+ class StdCharBufStream : public simplecpp ::TokenList::Stream {
381
+ public:
382
+ // cppcheck-suppress uninitDerivedMemberVar - we call Stream::init() to initialize the private members
383
+ EXPLICIT StdCharBufStream (const char * str, int size)
384
+ : str(str)
385
+ , size(size)
386
+ , pos(-1 )
387
+ {
388
+ init ();
389
+ }
390
+
391
+ virtual int get () OVERRIDE {
392
+ if (pos >= size)
393
+ return EOF;
394
+ return static_cast <unsigned char >(str[++pos]);
395
+ }
396
+ virtual int peek () OVERRIDE {
397
+ if ((pos+1 ) >= size)
398
+ return EOF;
399
+ return static_cast <unsigned char >(str[pos+1 ]);
400
+ }
401
+ virtual void unget () OVERRIDE {
402
+ --pos;
403
+ }
404
+ virtual bool good () OVERRIDE {
405
+ return pos < size;
406
+ }
407
+
408
+ private:
409
+ const char *str;
410
+ const int size;
411
+ int pos;
412
+ };
413
+
380
414
class FileStream : public simplecpp ::TokenList::Stream {
381
415
public:
382
416
// cppcheck-suppress uninitDerivedMemberVar - we call Stream::init() to initialize the private members
@@ -442,6 +476,13 @@ simplecpp::TokenList::TokenList(std::istream &istr, std::vector<std::string> &fi
442
476
readfile (stream,filename,outputList);
443
477
}
444
478
479
+ simplecpp::TokenList::TokenList (const char * str, int size, std::vector<std::string> &filenames, const std::string &filename, OutputList *outputList)
480
+ : frontToken(nullptr ), backToken(nullptr ), files(filenames)
481
+ {
482
+ StdCharBufStream stream (str, size);
483
+ readfile (stream,filename,outputList);
484
+ }
485
+
445
486
simplecpp::TokenList::TokenList (const std::string &filename, std::vector<std::string> &filenames, OutputList *outputList)
446
487
: frontToken(nullptr ), backToken(nullptr ), files(filenames)
447
488
{
0 commit comments