resources[resource].insert(call_no);
}
+ /* Like provide, but with a simply-formatted string, (appending an
+ * integer to the given string). */
+ void providef(std::string resource, int resource_no, trace::CallNo call_no) {
+ std::stringstream ss;
+ ss << resource << resource_no;
+ provide(ss.str(), call_no);
+ }
+
/* Link: Establish a dependency between resource 'resource' and
* resource 'dependency'. This dependency is captured by name so
* that if the list of calls that provide 'dependency' grows
dependencies[resource].insert(dependency);
}
+ /* Like link, but with a simply-formatted string, (appending an
+ * integer to the given string). */
+ void linkf(std::string resource, std::string dependency, int dep_no) {
+
+ std::stringstream ss;
+ ss << dependency << dep_no;
+ link(resource, ss.str());
+ }
+
/* Unlink: Remove dependency from 'resource' on 'dependency'. */
void unlink(std::string resource, std::string dependency) {
dependencies[resource].erase(dependency);
}
}
+ /* Like unlink, but with a simply-formated string, (appending an
+ * integer to the given string). */
+ void unlinkf(std::string resource, std::string dependency, int dep_no) {
+
+ std::stringstream ss;
+ ss << dependency << dep_no;
+ unlink(resource, ss.str());
+ }
+
/* Unlink all: Remove dependencies from 'resource' to all other
* resources. */
void unlinkAll(std::string resource) {
if (textures) {
for (i = 0; i < textures->size(); i++) {
- std::stringstream ss;
-
texture = textures->values[i]->toUInt();
- ss << "texture-" << texture;
-
- provide(ss.str(), call->no);
+ providef("texture-", texture, call->no);
}
}
return;
cap == GL_TEXTURE_3D ||
cap == GL_TEXTURE_CUBE_MAP)
{
- std::stringstream ss;
-
- ss << "texture-target-" << cap;
-
- link("render-state", ss.str());
+ linkf("render-state", "texture-target-", cap);
}
provide("state", call->no);
-
return;
}
cap == GL_TEXTURE_3D ||
cap == GL_TEXTURE_CUBE_MAP)
{
- std::stringstream ss;
-
- ss << "texture-target-" << cap;
-
- unlink("render-state", ss.str());
+ unlinkf("render-state", "texture-target-", cap);
}
provide("state", call->no);
-
return;
}
if (strcmp(name, "glCreateShader") == 0 ||
strcmp(name, "glCreateShaderObjectARB") == 0) {
- GLuint shader;
- std::stringstream ss;
-
- shader = call->ret->toUInt();
-
- ss << "shader-" << shader;
-
- provide(ss.str(), call->no);
-
+ GLuint shader = call->ret->toUInt();
+ providef("shader-", shader, call->no);
return;
}
strcmp(name, "glGetShaderiv") == 0 ||
strcmp(name, "glGetShaderInfoLog") == 0) {
- GLuint shader;
- std::stringstream ss;
-
- shader = call->arg(0).toUInt();
-
- ss << "shader-" << shader;
-
- provide(ss.str(), call->no);
-
+ GLuint shader = call->arg(0).toUInt();
+ providef("shader-", shader, call->no);
return;
}
if (strcmp(name, "glCreateProgram") == 0 ||
strcmp(name, "glCreateProgramObjectARB") == 0) {
- GLuint program;
- std::stringstream ss;
-
- program = call->ret->toUInt();
-
- ss << "program-" << program;
-
- provide(ss.str(), call->no);
-
+ GLuint program = call->ret->toUInt();
+ providef("program-", program, call->no);
return;
}
strcmp(name, "glGetProgramResourceLocationIndex") == 0 ||
strcmp(name, "glGetVaryingLocationNV") == 0) {
- GLuint program;
- std::stringstream ss;
-
- program = call->arg(0).toUInt();
-
- ss << "program-" << program;
+ GLuint program = call->arg(0).toUInt();
- provide(ss.str(), call->no);
+ providef("program-", program, call->no);
return;
}
if (call->sig->num_args > 0 &&
strcmp(call->sig->arg_names[0], "location") == 0) {
- std::stringstream ss;
-
- ss << "program-" << activeProgram;
-
- provide(ss.str(), call->no);
-
+ providef("program-", activeProgram, call->no);
return;
}
(strcmp(call->sig->arg_names[0], "program") == 0 ||
strcmp(call->sig->arg_names[0], "programObj") == 0))) {
- GLuint program;
- std::stringstream ss;
-
- program = call->arg(0).toUInt();
-
- ss << "program-" << program;
-
- provide(ss.str(), call->no);
-
+ GLuint program = call->arg(0).toUInt();
+ providef("program-", program, call->no);
return;
}