/[svn]/linuxsampler/trunk/src/scriptvm/editor/CodeScanner.cpp
ViewVC logotype

Contents of /linuxsampler/trunk/src/scriptvm/editor/CodeScanner.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3034 - (show annotations) (download)
Mon Oct 31 00:05:00 2016 UTC (7 years, 5 months ago) by schoenebeck
File size: 2184 byte(s)
* Fixed a bunch of minor issues (mostly compiler warnings).
* Bumped version (2.0.0.svn31).

1 /*
2 * Copyright (c) 2015-2016 Christian Schoenebeck
3 *
4 * http://www.linuxsampler.org
5 *
6 * This file is part of LinuxSampler and released under the same terms.
7 * See README file for details.
8 */
9
10 #include "CodeScanner.h"
11 #include "../../common/global_private.h"
12
13 namespace LinuxSampler {
14
15 CodeScanner::CodeScanner(std::istream* _is)
16 : scanner(NULL), is(_is), line(0), column(0)
17 {
18 }
19
20 CodeScanner::~CodeScanner() {
21 }
22
23 SourceToken CodeScanner::processOneToken() {
24 processScanner();
25 token.line = line;
26 token.column = column;
27 return token;
28 }
29
30 void CodeScanner::processAll() {
31 for (SourceToken token = processOneToken(); token; token = processOneToken()) {
32 if (!m_tokens.empty() && token.equalsType(*(m_tokens.end()-1)) && !token.isNewLine())
33 (m_tokens.end()-1)->txt += token.text();
34 else
35 m_tokens.push_back(token);
36 }
37 //trim();
38 }
39
40 bool CodeScanner::isMultiLine() const {
41 for (int i = 0; i < m_tokens.size(); ++i)
42 if (m_tokens[i].isNewLine())
43 return true;
44 return false;
45 }
46
47 void CodeScanner::trim() {
48 // remove initial blank line(s)
49 {
50 std::vector<SourceToken>::iterator lineFeed = m_tokens.end();
51 for (std::vector<SourceToken>::iterator it = m_tokens.begin();
52 it != m_tokens.end(); ++it)
53 {
54 if (it->isNewLine()) {
55 lineFeed = it;
56 } else if (! ::trim(it->text()).empty()) {
57 if (lineFeed != m_tokens.end())
58 m_tokens.erase(m_tokens.begin(), lineFeed+1);
59 break;
60 }
61 }
62 }
63 // remove blank line(s) at end
64 {
65 std::vector<SourceToken>::reverse_iterator lineFeed = m_tokens.rend();
66 for (std::vector<SourceToken>::reverse_iterator it = m_tokens.rbegin();
67 it != m_tokens.rend(); ++it)
68 {
69 if (it->isNewLine()) {
70 lineFeed = it;
71 } else if (! ::trim(it->text()).empty()) {
72 if (lineFeed != m_tokens.rend())
73 m_tokens.erase(--(lineFeed.base()));
74 break;
75 }
76 }
77 }
78 }
79
80 } // namespace LinuxSampler

  ViewVC Help
Powered by ViewVC