示例#1
0
文件: testprgm.cpp 项目: eriser/wired
int main()
{
  akaiImage *img = new akaiImage("/akai.iso");
  dumpPartitions(img);
  if (img)
  {
    akaiSample *smp = img->getSample("A/01 VI LNG FF/VI LGFF G2-L");
    if (smp)
      dumpSample(smp);
    akaiProgram *prgm = img->getProgram("A/01 VI LNG FF/VI LONG FF");
    if (prgm)
      dumpProgram(prgm);
    if (prgm)
      delete prgm;
    if (smp)
      delete smp;
    delete img;
  }
  return 0;
}
void
dumpShadersUniforms(StateWriter &writer, Context &context)
{
    GLint pipeline = 0;
    GLint vertex_program = 0;
    GLint fragment_program = 0;
    GLint geometry_program = 0;
    GLint tess_control_program = 0;
    GLint tess_evaluation_program = 0;
    GLint compute_program = 0;

    if (!context.ES) {
        glGetIntegerv(GL_PROGRAM_PIPELINE_BINDING, &pipeline);
        if (pipeline) {
            glGetProgramPipelineiv(pipeline, GL_VERTEX_SHADER, &vertex_program);
            glGetProgramPipelineiv(pipeline, GL_FRAGMENT_SHADER, &fragment_program);
            glGetProgramPipelineiv(pipeline, GL_GEOMETRY_SHADER, &geometry_program);
            glGetProgramPipelineiv(pipeline, GL_TESS_CONTROL_SHADER, &tess_control_program);
            glGetProgramPipelineiv(pipeline, GL_TESS_EVALUATION_SHADER, &tess_evaluation_program);
            glGetProgramPipelineiv(pipeline, GL_COMPUTE_SHADER, &compute_program);
        }
    }

    GLint program = 0;
    if (!pipeline) {
        glGetIntegerv(GL_CURRENT_PROGRAM, &program);
    }

    writer.beginMember("shaders");
    writer.beginObject();
    if (pipeline) {
        dumpProgram(writer, context, vertex_program);
        dumpProgram(writer, context, fragment_program);
        dumpProgram(writer, context, geometry_program);
        dumpProgram(writer, context, tess_control_program);
        dumpProgram(writer, context, tess_evaluation_program);
        dumpProgram(writer, context, compute_program);
    } else if (program) {
        dumpProgram(writer, context, program);
    } else {
        dumpArbProgram(writer, context, GL_FRAGMENT_PROGRAM_ARB);
        dumpArbProgram(writer, context, GL_VERTEX_PROGRAM_ARB);
    }
    writer.endObject();
    writer.endMember(); // shaders

    writer.beginMember("uniforms");
    writer.beginObject();
    if (pipeline) {
        dumpProgramUniformsStage(writer, vertex_program, "GL_VERTEX_SHADER");
        dumpProgramUniformsStage(writer, fragment_program, "GL_FRAGMENT_SHADER");
        dumpProgramUniformsStage(writer, geometry_program, "GL_GEOMETRY_SHADER");
        dumpProgramUniformsStage(writer, tess_control_program, "GL_TESS_CONTROL_SHADER");
        dumpProgramUniformsStage(writer, tess_evaluation_program, "GL_TESS_EVALUATION_SHADER");
        dumpProgramUniformsStage(writer, compute_program, "GL_COMPUTE_SHADER");
    } else if (program) {
        dumpProgramUniforms(writer, program);
    } else {
        dumpArbProgramUniforms(writer, context, GL_FRAGMENT_PROGRAM_ARB, "fp.");
        dumpArbProgramUniforms(writer, context, GL_VERTEX_PROGRAM_ARB, "vp.");
    }
    writer.endObject();
    writer.endMember(); // uniforms

    writer.beginMember("buffers");
    writer.beginObject();
    if (!context.ES) {
        if (pipeline) {
            dumpVertexAttributes(writer, context, vertex_program);
        } else {
            dumpVertexAttributes(writer, context, program);
        }
        if (program) {
            dumpTransformFeedback(writer, program);
        }
    }
    writer.endObject();
    writer.endMember(); // buffers
}
示例#3
0
文件: pryacc.c 项目: ombt/ombt
// convert statements to conjunctive normal form
int
convert2cnf()
{
	if (!phases[EXPANDFILE] || !phases[PARSEFILE] || 
	    !phases[ADDEXTRAAXIOMS] || !phases[CONVERT2CNF])
	{
		cout << endl;
		cout << "Skipping conversion to CNF ..." << endl;
		return(OK);
	}
	// clear program structure
	clearProgram();
	clearClauses();

	// loop over all expressions and convert
	ListIterator<Semantic * > ptreesIter(ptrees);
	for ( ; !ptreesIter.done(); ptreesIter++)
	{
		// convert biconditionals to implications
		if (ptreesIter()->removeBiconditionals() != OK)
		{
			ERROR("removeBiconditionals failed.", EINVAL);
			return(NOTOK);
		}

		// convert implications to ORs and NOTs
		if (ptreesIter()->removeConditionals() != OK)
		{
			ERROR("removeConditionals failed.", EINVAL);
			return(NOTOK);
		}

		// apply demorgan's laws to push negation down
		if (ptreesIter()->demorgans() != OK)
		{
			ERROR("demorgans failed.", EINVAL);
			return(NOTOK);
		}

		// rename all variables to unique names
		if (ptreesIter()->renameVariables() != OK)
		{
			ERROR("renameVariables failed.", EINVAL);
			return(NOTOK);
		}

		// remove existential quantifier with skolem functions
		if (ptreesIter()->skolemize() != OK)
		{
			ERROR("skolemize failed.", EINVAL);
			return(NOTOK);
		}

		// remove universal quantifiers
		if (ptreesIter()->removeUniversals() != OK)
		{
			ERROR("removeUniversals failed.", EINVAL);
			return(NOTOK);
		}

		// distribution law for ORs and ANDs.
		if (ptreesIter()->distribution() != OK)
		{
			ERROR("distribution failed.", EINVAL);
			return(NOTOK);
		}

		// get clauses in programs
		if (ptreesIter()->getClauses(program) != OK)
		{
			ERROR("getClauses failed.", EINVAL);
			return(NOTOK);
		}
	}

	// rename variables in clauses
	ListIterator<Semantic *> programIter(program);
	for ( ; !programIter.done(); programIter++)
	{
		// rename all variables to unique names
		if (programIter()->renameAgain() != OK)
		{
			ERROR("renameAgain failed.", EINVAL);
			return(NOTOK);
		}

		// get clauses as lists
		if (programIter()->getClausesAsLists(clauses) != OK)
		{
			ERROR("getClausesAsList failed.", EINVAL);
			return(NOTOK);
		}
	}
	// dump data
	if (verbose)
	{
		cout << endl;
		cout << "Dumping program ..." << endl;
		dumpProgram();
		cout << endl;
		cout << "Dumping program clauses ..." << endl;
		dumpClauses();
	}

	// all done 
	return(OK);
}