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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3034 - (hide annotations) (download)
Mon Oct 31 00:05:00 2016 UTC (7 years, 6 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 schoenebeck 2885 /*
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 schoenebeck 3034 : scanner(NULL), is(_is), line(0), column(0)
17 schoenebeck 2885 {
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