[PPL-devel] Last problem (hope!)
Enrico Oliosi
enrico.oliosi at students.univr.it
Wed Aug 18 13:09:15 CEST 2004
Sorry,
my explanation has not been exhaustive.
I attach two files, one compiles and the other doesn't.
Hope that this is more clareful!
Thanks,
Enrico.
-------------- next part --------------
#include "ppl_test.hh"
#include <string>
#include <fstream>
#include <iostream>
#include <map>
using namespace std;
using namespace Parma_Polyhedra_Library;
using namespace Parma_Polyhedra_Library::IO_Operators;
map<dimension_type, string> var_to_print;
map<dimension_type, string>::iterator iter;
void my_output_function(ostream& s, const Variable v) {
//s << "x" << v.id();
iter = var_to_print.find(v.id());
s << iter->second;
}
void myprint_constraints(const ConSys& cs, const string& intro, ostream& s){
using namespace IO_Operators;
//Save the default output function.
Variable::Output_Function_Type* p_default_output_function
= Variable::get_output_function();
// Install an alternate output function.
Variable::set_output_function(my_output_function);
if (!intro.empty())
s << intro << endl;
ConSys::const_iterator i = cs.begin();
ConSys::const_iterator cs_end = cs.end();
bool printed_something = i != cs_end;
while (i != cs_end) {
s << *i++;
if (i != cs_end)
s << "," << endl;
}
s << (printed_something ? "." : "true.") << endl;
Variable::set_output_function(p_default_output_function);
}
int main() {
var_to_print.insert(pair< dimension_type,string>(0, "var_fst"));
var_to_print.insert(pair< dimension_type,string>(1, "var_snd"));
var_to_print.insert(pair< dimension_type,string>(2, "var_trd"));
Variable a(0);
Variable b(1);
Variable c(2);
C_Polyhedron ph(3);
ph.add_constraint(a == 1);
ph.add_constraint(b >= 1);
myprint_constraints(ph.constraints(),"poliedro",cout);
ph.add_constraint(c == a + 3);
myprint_constraints(ph.constraints(),"poliedro",cout);
/*
// Check that the installation worked as expected.
if (Variable::get_output_function() != my_output_function)
return 1;
// Restore the default output function.
Variable::set_output_function(p_default_output_function);
// Check that the restoration worked as expected.
if (Variable::get_output_function() != p_default_output_function)
return 1;
*/
return 0;
}
-------------- next part --------------
#include "ppl_test.hh"
#include <string>
#include <fstream>
#include <iostream>
#include <map>
using namespace std;
using namespace Parma_Polyhedra_Library;
using namespace Parma_Polyhedra_Library::IO_Operators;
class Cmd{
public:
map<dimension_type, string> var_to_print;
public:
Cmd::Cmd(map<dimension_type, string> vartoprint){
this-> var_to_print = vartoprint;
}
void my_output_function(ostream& s, const Variable v) {
map<dimension_type, string>::iterator iter;
iter = var_to_print.find(v.id());
s << iter->second;
}
void myprint_constraints(const ConSys& cs, const string& intro, ostream& s){
using namespace IO_Operators;
//Save the default output function.
Variable::Output_Function_Type* p_default_output_function
= Variable::get_output_function();
// Install an alternate output function.
Variable::set_output_function(my_output_function);
if (!intro.empty())
s << intro << endl;
ConSys::const_iterator i = cs.begin();
ConSys::const_iterator cs_end = cs.end();
bool printed_something = i != cs_end;
while (i != cs_end) {
s << *i++;
if (i != cs_end)
s << "," << endl;
}
s << (printed_something ? "." : "true.") << endl;
Variable::set_output_function(p_default_output_function);
}
};
int main() {
map<dimension_type, string> var_to_print;
var_to_print.insert(pair< dimension_type,string>(0, "var_fst"));
var_to_print.insert(pair< dimension_type,string>(1, "var_snd"));
var_to_print.insert(pair< dimension_type,string>(2, "var_trd"));
Cmd comando(var_to_print);
Variable a(0);
Variable b(1);
Variable c(2);
C_Polyhedron ph(3);
ph.add_constraint(a == 1);
ph.add_constraint(b >= 1);
comando.myprint_constraints(ph.constraints(),"poliedro",cout);
ph.add_constraint(c == a + 3);
comando.myprint_constraints(ph.constraints(),"poliedro",cout);
return 0;
}
More information about the PPL-devel
mailing list