#ifndef UTILS_FASM_FASM_UTILS_H_
#define UTILS_FASM_FASM_UTILS_H_

#include <string>
#include <vector>
#include <map>

namespace fasm {

// Parse a port name that may have an index.
//
// in="A" parts to *name="A", *index=0
// in="A[5]" parts to *name="A", *index=5
//
// Throws vpr exception if parsing fails.
void parse_name_with_optional_index(const std::string in, std::string *name, int *index);

// Split FASM entry into parts.
//
// delims - Characters to split on.
// ignore - Characters to ignore.
std::vector<std::string> split_fasm_entry(std::string entry,
                                                 std::string delims,
                                                 std::string ignore);

// Searches for tags in given string, returns their names in a vector.
std::vector<std::string> find_tags_in_feature (const std::string& a_String);

// Substitutes tags found in a string with their values provided by the map.
// Thorws an error if a tag is found in the string and its value is not present
// in the map.
//
// a_Feature - Fasm feature string (or any other string)
// a_Tags    - Map with tags and their values
std::string substitute_tags (const std::string& a_Feature,
                             const std::map<const std::string, std::string>& a_Tags);

} // namespace fasm

#endif /* UTILS_FASM_FASM_UTILS_H_ */
