1 /*
2 * Copyright (c) 2012-2013, Texas Instruments Incorporated
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * * Neither the name of Texas Instruments Incorporated nor the names of
17 * its contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32 /*
33 * ======== getFileContents ========
34 * Returns a string containing the contents of file at 'filename'
35 */
37 var mod = "GateMP";
38 function getFileContents(filename)
39 {
40 var symbolDB = [];
42 try {
43 var input = "";
44 var inputFile = java.io.File(filename);
45 var fos = java.io.FileReader(inputFile);
46 var reader = new java.io.BufferedReader(fos);
47 var line;
48 while ((line = reader.readLine()) != null) {
49 var matched = line.match("(" + mod + "_[^ ,().:\t;\[{}]+)");
50 if (matched != null && symbolDB.indexOf(matched[1]) == -1) {
51 if (matched[1].indexOf("__") != -1) {
52 continue;
53 }
54 symbolDB.push(matched[1]);
55 }
56 }
58 reader.close();
59 }
60 catch (e) {
61 print(e);
62 throw("Error reading file '" + filename + "'");
63 }
67 return (symbolDB);
68 }
70 function getVal(str)
71 {
72 if (str.indexOf("_S_") != -1) {
73 return (0);
74 }
75 else if (str.indexOf("_E_") != -1) {
76 return (1);
77 }
78 else if (str.match(mod + "_([A-Z_]+[^a-z])")) {
79 return (2);
80 }
81 else if (str != (mod + "_Params_init") && str.match(mod + "_([A-Z])")) {
82 return (3);
83 }
84 else {
85 return (4);
86 }
87 }
89 /*
90 * ======== sortFunction ========
91 */
92 function sortFunction(a, b)
93 {
94 var valA = getVal(a);
95 var valB = getVal(b);
97 if (valA != valB) {
98 return (valA - valB);
99 }
100 else {
101 return (a > b);
102 }
103 }
105 /*
106 * ======== strPad ========
107 */
108 function strPad(str, pad)
109 {
110 for (i = str.length; i < pad; i++) {
111 str += " ";
112 }
113 return(str);
114 }
117 var results = getFileContents(mod + ".h");
118 results.sort(sortFunction);
119 for each (var symbol in results) {
120 print(" #pragma FUNC_EXT_CALLED(" + symbol + ");");
121 }