+const Program::AttributeInfo &Program::get_attribute_info(const string &name) const
+{
+ return get_item(attributes, name);
+}
+
+int Program::get_attribute_location(const string &n) const
+{
+ if(n[n.size()-1]==']')
+ throw invalid_argument("Program::get_attribute_location");
+
+ AttributeMap::const_iterator i = attributes.find(n);
+ return i!=attributes.end() ? i->second.location : -1;
+}
+