src/main.cc

changeset 87
8f65914e7046
parent 86
43fe4be38a58
equal deleted inserted replaced
86:43fe4be38a58 87:8f65914e7046
79 } 79 }
80 80
81 string outfile; 81 string outfile;
82 82
83 if (argc < 3) 83 if (argc < 3)
84 outfile = ObjectFileName (argv[1]); 84 outfile = make_object_file_name (argv[1]);
85 else 85 else
86 outfile = argv[2]; 86 outfile = argv[2];
87 87
88 // Prepare reader and writer 88 // Prepare reader and writer
89 botscript_parser* parser = new botscript_parser; 89 botscript_parser* parser = new botscript_parser;
114 fprint (stderr, "error: %1\n", e.what()); 114 fprint (stderr, "error: %1\n", e.what());
115 } 115 }
116 } 116 }
117 117
118 // ============================================================================ 118 // ============================================================================
119 // Utility functions 119 //
120
121 // ============================================================================
122 // Does the given file exist?
123 bool fexists (string path)
124 {
125 if (FILE* test = fopen (path, "r"))
126 {
127 fclose (test);
128 return true;
129 }
130
131 return false;
132 }
133
134 // ============================================================================
135 // Mutates given filename to an object filename 120 // Mutates given filename to an object filename
136 string ObjectFileName (string s) 121 //
122 string make_object_file_name (string s)
137 { 123 {
138 // Locate the extension and chop it out 124 // Locate the extension and chop it out
139 int extdot = s.last ("."); 125 int extdot = s.last (".");
140 126
141 if (extdot >= s.length() - 4) 127 if (extdot >= s.length() - 4)
144 s += ".o"; 130 s += ".o";
145 return s; 131 return s;
146 } 132 }
147 133
148 // ============================================================================ 134 // ============================================================================
149 type_e GetTypeByName (string t) 135 //
136 type_e get_type_by_name (string t)
150 { 137 {
151 t = t.to_lowercase(); 138 t = t.to_lowercase();
152 return (t == "int") ? TYPE_INT : 139 return (t == "int") ? e_int_type :
153 (t == "str") ? TYPE_STRING : 140 (t == "str") ? e_string_type :
154 (t == "void") ? TYPE_VOID : 141 (t == "void") ? e_void_type :
155 (t == "bool") ? TYPE_BOOL : 142 (t == "bool") ? e_bool_type :
156 TYPE_UNKNOWN; 143 e_unknown_type;
157 } 144 }
158 145
159 146
160 // ============================================================================ 147 // ============================================================================
148 //
161 // Inverse operation - type name by value 149 // Inverse operation - type name by value
162 string GetTypeName (type_e type) 150 //
151 string get_type_name (type_e type)
163 { 152 {
164 switch (type) 153 switch (type)
165 { 154 {
166 case TYPE_INT: return "int"; break; 155 case e_int_type: return "int"; break;
167 case TYPE_STRING: return "str"; break; 156 case e_string_type: return "str"; break;
168 case TYPE_VOID: return "void"; break; 157 case e_void_type: return "void"; break;
169 case TYPE_BOOL: return "bool"; break; 158 case e_bool_type: return "bool"; break;
170 case TYPE_UNKNOWN: return "???"; break; 159 case e_unknown_type: return "???"; break;
171 } 160 }
172 161
173 return ""; 162 return "";
174 } 163 }
164
175 // ============================================================================= 165 // =============================================================================
176 // 166 //
177
178 string make_version_string (int major, int minor, int patch) 167 string make_version_string (int major, int minor, int patch)
179 { 168 {
180 string ver = format ("%1.%2", major, minor); 169 string ver = format ("%1.%2", major, minor);
181 170
182 if (patch != 0) 171 if (patch != 0)

mercurial