⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysql.cc

📁 linux下基于c++的处理器仿真平台。具有处理器流水线
💻 CC
📖 第 1 页 / 共 2 页
字号:
	panic("could not commit transaction\n");}voidUpdatePrereq(uint16_t stat, uint16_t prereq){    MySQL::Connection &mysql = MySqlDB.conn();    assert(mysql.connected());    stringstream update;    ccprintf(update, "UPDATE stats SET st_prereq=%d WHERE st_id=%d",	     prereq, stat);    mysql.query(update);    if (mysql.error)	panic("could not update prereq\n%s\n", mysql.error);    if (mysql.commit())	panic("could not commit transaction\n");}voidMySql::configure(){    /*     * set up all stats!     */    using namespace Database;    MySQL::Connection &mysql = MySqlDB.conn();    if (mysql.commit())	panic("could not commit transaction\n");    stat_list_t::const_iterator i, end = stats().end();    for (i = stats().begin(); i != end; ++i) {	(*i)->visit(*this);    }    for (i = stats().begin(); i != end; ++i) {	StatData *data = *i;	if (data->prereq) {	    uint16_t stat_id = find(data->id);	    uint16_t prereq_id = find(data->prereq->id);	    assert(stat_id && prereq_id);	    UpdatePrereq(stat_id, prereq_id);	}    }    if (mysql.commit())        panic("could not commit transaction\n");    configured = true;}boolMySql::configure(const StatData &data, string type){    stat.init();    stat.name = data.name;    stat.descr = data.desc;    stat.type = type;    stat.print = data.flags & print;    stat.prec = data.precision;    stat.nozero = data.flags & nozero;    stat.nonan = data.flags & nonan;    stat.total = data.flags & total;    stat.pdf = data.flags & pdf;    stat.cdf = data.flags & cdf;    return stat.print;}voidMySql::configure(const ScalarData &data){    if (!configure(data, "SCALAR"))	return;    insert(data.id, stat.setup());}voidMySql::configure(const VectorData &data){    if (!configure(data, "VECTOR"))	return;    uint16_t statid = stat.setup();    if (!data.subnames.empty()) {	InsertSubData subdata;	subdata.stat = statid;	subdata.y = 0;	for (int i = 0; i < data.subnames.size(); ++i) {	    subdata.x = i;	    subdata.name = data.subnames[i];	    subdata.descr = data.subdescs.empty() ? "" : data.subdescs[i];	    if (!subdata.name.empty() || !subdata.descr.empty())		subdata.setup();	}    }		     insert(data.id, statid);}voidMySql::configure(const DistData &data){    if (!configure(data, "DIST"))	return;    if (!data.data.fancy) {	stat.size = data.data.size;	stat.min = data.data.min;	stat.max = data.data.max;	stat.bktsize = data.data.bucket_size;    }    insert(data.id, stat.setup());}voidMySql::configure(const VectorDistData &data){    if (!configure(data, "VECTORDIST"))	return;    if (!data.data[0].fancy) {	stat.size = data.data[0].size;	stat.min = data.data[0].min;	stat.max = data.data[0].max;	stat.bktsize = data.data[0].bucket_size;    }    uint16_t statid = stat.setup();    if (!data.subnames.empty()) {	InsertSubData subdata;	subdata.stat = statid;	subdata.y = 0;	for (int i = 0; i < data.subnames.size(); ++i) {	    subdata.x = i;	    subdata.name = data.subnames[i];	    subdata.descr = data.subdescs.empty() ? "" : data.subdescs[i];	    if (!subdata.name.empty() || !subdata.descr.empty())		subdata.setup();	}    }    insert(data.id, statid);}voidMySql::configure(const Vector2dData &data){    if (!configure(data, "VECTOR2D"))	return;    uint16_t statid = stat.setup();    if (!data.subnames.empty()) {	InsertSubData subdata;	subdata.stat = statid;	subdata.y = -1;	for (int i = 0; i < data.subnames.size(); ++i) {	    subdata.x = i;	    subdata.name = data.subnames[i];	    subdata.descr = data.subdescs.empty() ? "" : data.subdescs[i];	    if (!subdata.name.empty() || !subdata.descr.empty())		subdata.setup();	}    }    if (!data.y_subnames.empty()) {	InsertSubData subdata;	subdata.stat = statid;	subdata.x = -1;	subdata.descr = "";	for (int i = 0; i < data.y_subnames.size(); ++i) {	    subdata.y = i;	    subdata.name = data.y_subnames[i];	    if (!subdata.name.empty())		subdata.setup();	}    }    insert(data.id, statid);}voidMySql::configure(const FormulaData &data){    configure(data, "FORMULA");    insert(data.id, stat.setup());    InsertFormula(find(data.id), data.str());}voidMySql::output(MainBin *bin){    MySQL::Connection &mysql = MySqlDB.conn();    if (bin) {	bin->activate();	newdata.bin = SetupBin(bin->name());    } else {	newdata.bin = 0;    }    Database::stat_list_t::const_iterator i, end = Database::stats().end();    for (i = Database::stats().begin(); i != end; ++i) {	StatData *stat = *i;	if (bin && stat->binned() || !bin && !stat->binned()) {	    stat->visit(*this);            if (mysql.commit())                panic("could not commit transaction\n");        }    }}boolMySql::valid() const{    return MySqlDB.connected();}voidMySql::output(){    using namespace Database;    assert(valid());    if (!configured)	configure();    // store sample #    newdata.tick = curTick;    output(NULL);    if (!bins().empty()) {	bin_list_t::iterator i, end = bins().end();	for (i = bins().begin(); i != end; ++i)	    output(*i);    }    newdata.flush();}voidMySql::output(const ScalarData &data){    if (!(data.flags & print))	return;    newdata.stat = find(data.id);    newdata.x = 0;    newdata.y = 0;    newdata.data = data.value();    newdata.insert();}voidMySql::output(const VectorData &data){    if (!(data.flags & print))	return;    newdata.stat = find(data.id);    newdata.y = 0;    const VCounter &cvec = data.value();    int size = data.size();    for (int x = 0; x < size; x++) {	newdata.x = x;	newdata.data = cvec[x];	newdata.insert();    }}voidMySql::output(const DistDataData &data){    const int db_sum = -1;    const int db_squares = -2;    const int db_samples = -3;    const int db_min_val = -4;    const int db_max_val = -5;    const int db_underflow = -6;    const int db_overflow = -7;    newdata.x = db_sum;    newdata.data = data.sum;    newdata.insert();    newdata.x = db_squares;    newdata.data = data.squares;    newdata.insert();    newdata.x = db_samples;    newdata.data = data.samples;    newdata.insert();    if (data.samples && !data.fancy) {	newdata.x = db_min_val;	newdata.data = data.min_val;	newdata.insert();	newdata.x = db_max_val;	newdata.data = data.max_val;	newdata.insert();	newdata.x = db_underflow;	newdata.data = data.underflow;	newdata.insert();	newdata.x = db_overflow;	newdata.data = data.overflow;	newdata.insert();	int size = data.cvec.size();	for (int x = 0; x < size; x++) {	    newdata.x = x;	    newdata.data = data.cvec[x];	    newdata.insert();	}    }}voidMySql::output(const DistData &data){    if (!(data.flags & print))	return;    newdata.stat = find(data.id);    newdata.y = 0;    output(data.data);}voidMySql::output(const VectorDistData &data){    if (!(data.flags & print))	return;    newdata.stat = find(data.id);    int size = data.data.size();    for (int y = 0; y < size; ++y) {	newdata.y = y;	output(data.data[y]);    }}voidMySql::output(const Vector2dData &data){    if (!(data.flags & print))	return;    newdata.stat = find(data.id);    int index = 0;    for (int x = 0; x < data.x; x++) {	newdata.x = x;	for (int y = 0; y < data.y; y++) {	    newdata.y = y;	    newdata.data = data.cvec[index++];	    newdata.insert();	}    }}voidMySql::output(const FormulaData &data){}/* * Implement the visitor */voidMySql::visit(const ScalarData &data){    if (!configured)	configure(data);    else	output(data);}voidMySql::visit(const VectorData &data){    if (!configured)	configure(data);    else	output(data);}voidMySql::visit(const DistData &data){    if (!configured)	configure(data);    else	output(data);}voidMySql::visit(const VectorDistData &data){    if (!configured)	configure(data);    else	output(data);}voidMySql::visit(const Vector2dData &data){    if (!configured)	configure(data);    else	output(data);}voidMySql::visit(const FormulaData &data){    if (!configured)	configure(data);    else	output(data);}/* namespace Stats */ }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -