srcanamdw/appdep/src/appdep_statdeps.cpp
author noe\swadi
Sat, 09 Jan 2010 10:04:12 +0530
changeset 0 509e4801c378
permissions -rw-r--r--
1. Copyrights changed to EPL 2. Feature updates mentioned in release notes.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     1
/*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     3
* All rights reserved.
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     4
* This component and the accompanying materials are made available
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     6
* which accompanies this distribution, and is available
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     8
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     9
* Initial Contributors:
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    11
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    12
* Contributors:
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    13
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    14
* Description:  Handling of StaticDependencies.txt 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    15
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    16
*/
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    17
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    18
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    19
#include "appdep.hpp"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    20
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    21
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    22
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    23
// Note that in C/C++ code \ has been replaced with \\ and " with \".
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    24
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    25
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    26
void GetDataFromStaticDependenciesTxt()
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    27
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    28
    // read cache data from given StaticDependencies.txt
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    29
 	if (!FileExists(_cl_usestaticdepstxt))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    30
	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    31
		cerr << "ERROR: Unable to find " + _cl_usestaticdepstxt << ", check -usestaticdepstxt param" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    32
		cerr << "Please note that this parameter is required only if you use StaticDependencies.txt." << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    33
		exit(EXIT_CANNOT_OPEN_STATIC_DEPENDENCIES_TXT);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    34
	} 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    35
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    36
	ifstream staticdepsf(_cl_usestaticdepstxt.c_str());
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    37
	string line;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    38
	
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    39
	getline(staticdepsf, line);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    40
	if (line != "# Full direct component mapping:")
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    41
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    42
		cerr << "ERROR: " << _cl_usestaticdepstxt << " is not a supported StaticDependencies.txt file!" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    43
		staticdepsf.close(); 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    44
		exit(EXIT_OPENED_STATIC_DEPENDENCIES_TXT_NOT_SUPPORTED);   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    45
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    46
    else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    47
    { 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    48
        cerr << "Warning: Use of StaticDependencies.txt may provide incomplete results..." << endl;    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    49
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    50
        bool line_was_consumed = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    51
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    52
        // loop through all lines in the file
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    53
        while(!staticdepsf.eof())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    54
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    55
            // get a line
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    56
            if (line_was_consumed)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    57
                getline(staticdepsf, line);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    58
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    59
            if (line == "# Full inverse component mapping:")
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    60
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    61
                // no interesting lines in this file anymore, break the loop
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    62
                break;    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    63
            }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    64
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    65
            // first line is the executable type, eg
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    66
            // armv5::screengrabber (exe)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    67
            boost::regex re1("^(\\S+)::(\\S+)\\s\\((\\S+)\\).*");
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    68
            boost::cmatch matches1;                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    69
            if (boost::regex_match(line.c_str(), matches1, re1))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    70
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    71
                // match found
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    72
                string ms1(matches1[1].first, matches1[1].second); // binary type
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    73
                string ms2(matches1[2].first, matches1[2].second); // filename
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    74
                string ms3(matches1[3].first, matches1[3].second); // extension
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    75
                                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    76
                line_was_consumed = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    77
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    78
                binary_info b_info;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    79
                b_info.directory = UNKNOWN;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    80
                b_info.filename = ms2 + "." + ms3;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    81
                b_info.binary_format = ms1 + " " +ms3;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    82
                b_info.uid1 = UNKNOWN;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    83
                b_info.uid2 = UNKNOWN;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    84
                b_info.uid3 = UNKNOWN;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    85
                b_info.secureid = UNKNOWN;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    86
                b_info.vendorid = UNKNOWN;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    87
                b_info.capabilities = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    88
                b_info.min_heap_size = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    89
                b_info.max_heap_size = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    90
                b_info.stack_size = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    91
                b_info.mod_time = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    92
                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    93
                vector<dependency> deps;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    94
                for (;;)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    95
                {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    96
                    // get a line
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    97
                    if (line_was_consumed)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    98
                        getline(staticdepsf, line);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    99
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   100
                    // check for dependency line, eg
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   101
                    //    screengrabber -> euser
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   102
                    boost::regex re2("^\\s\\s\\s(\\S+)\\s->\\s(\\S+).*");
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   103
                    boost::cmatch matches2;                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   104
                    if (boost::regex_match(line.c_str(), matches2, re2))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   105
                    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   106
                        // match found
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   107
                        string ms1(matches2[1].first, matches2[1].second); // filename
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   108
                        string ms2(matches2[2].first, matches2[2].second); // dependency
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   109
                        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   110
                        line_was_consumed = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   111
                                            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   112
                        dependency dep;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   113
                        dep.filename = ms2 + ".dll"; // assumming that the file extension is always .dll 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   114
                        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   115
                        vector<import> imps;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   116
                        for (;;)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   117
                        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   118
                            if (line_was_consumed)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   119
                                getline(staticdepsf, line);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   120
                    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   121
                            // check for function names, eg
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   122
                            //       fref::screengrabber->euser.CActive::Cancel (1)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   123
                            boost::regex re3("^\\s\\s\\s\\s\\s\\sfref::(\\S+)->(\\S+)\\.(\\S+)\\s\\((\\S+)\\).*");
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   124
                            boost::cmatch matches3;   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   125
                            if (boost::regex_match(line.c_str(), matches3, re3))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   126
                            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   127
                                // match found
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   128
                                string ms1(matches3[1].first, matches3[1].second); // filename
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   129
                                string ms2(matches3[2].first, matches3[2].second); // dependency
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   130
                                string ms3(matches3[3].first, matches3[3].second); // functionname
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   131
                                string ms4(matches3[4].first, matches3[4].second); // ???
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   132
                                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   133
                                line_was_consumed = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   134
                                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   135
                                import imp;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   136
                                imp.funcpos = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   137
                                imp.funcname = ms3;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   138
                                imp.is_vtable = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   139
                                imp.vtable_offset = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   140
                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   141
                                // append to the import info vector
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   142
                                imps.push_back( imp );
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   143
                            }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   144
                            else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   145
                            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   146
                                // the line does not match, break the loop
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   147
                                line_was_consumed = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   148
                                break;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   149
                            }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   150
                                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   151
                        } // for (;;)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   152
                            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   153
                        // now we have import info too
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   154
                        dep.imports = imps;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   155
                        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   156
                        // append to the deps info vector
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   157
                        deps.push_back( dep );
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   158
                            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   159
                    } 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   160
                    else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   161
                    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   162
                        // the line does not match, break the loop
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   163
                        line_was_consumed = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   164
                        break;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   165
                    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   166
                } // for (;;)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   167
                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   168
                // now we have the dep info too
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   169
                b_info.dependencies = deps;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   170
                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   171
                // apppend binary info to the vectory
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   172
                _all_binary_infos.push_back( b_info );
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   173
                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   174
            }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   175
            else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   176
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   177
                // no match found, line was consumed anyway
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   178
                line_was_consumed = true;    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   179
            } // else of if (boost::regex_match(tempVector.at(j).c_str(), matches1, re1))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   180
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   181
        } // while(!staticdepsf.eof())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   182
    } // else of if (line != "# Full direct component mapping:")   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   183
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   184
    // close handle to the cache file
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   185
    staticdepsf.close();  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   186
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   187
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   188
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   189