コード例 #1
0
ファイル: BWDB.cpp プロジェクト: felipeq/Code-Clinic-Cpp
long BWDB::count(const BWString &table_name)
{
    BWString q = "SELECT COUNT(*) FROM ";
    q += table_name;
    BWString rc = get_query_value(q, {table_name});
    if (rc.length())
    {
        return std::stol(rc);
    } else
    {
        return 0L;
    }
}
コード例 #2
0
ファイル: BWDB.cpp プロジェクト: felipeq/Code-Clinic-Cpp
bool BWDB::table_exists(const BWString &table_name)
{
    BWString rs = get_query_value("SELECT name FROM sqlite_master WHERE type = ? and name = ?", {"table", table_name});

    if (rs.have_value())
    {
        return true;
    } else
    {
        return false;
    }

    return false;
}
コード例 #3
0
ファイル: BWDB.cpp プロジェクト: felipeq/Code-Clinic-Cpp
bool BWDB::prepare_query(const BWString &sQuery, const std::vector<BWString> &vParams)
{
    _clear_value();
    const char *q = sQuery.c_str();
    if (sqlite3_prepare_v2(_dbh, q, -1, &stmt, NULL) != SQLITE_OK)
    {
        _finalize();
        return false;
    }
    for (unsigned int i = 0; i < vParams.size(); ++i)
    {
        sqlite3_bind_text(stmt, i + 1, vParams[i].c_str(), -1, SQLITE_TRANSIENT);
    }

    return true;
}
コード例 #4
0
ファイル: BWDB.cpp プロジェクト: felipeq/Code-Clinic-Cpp
BWString BWDB::get_query_value(const BWString &q)
{
    _clear_value();
    if (sqlite3_prepare_v2(_dbh, q.c_str(), -1, &stmt, NULL) != SQLITE_OK)
    {
        _finalize();
        return _value;
    }
    if (sqlite3_step(stmt) == SQLITE_ROW)
    {
        char *rc = (char *) sqlite3_column_text(stmt, 0);
        if (rc) _set_value(rc);
    }
    _finalize();
    return _value;
}
コード例 #5
0
ファイル: BWCGI.cpp プロジェクト: cy2296/coding
void BWCGI::process_query_string() {
	if(!have_query_string()) return;
	BWString qs = getvar(_bwcgi_kenv_query_string);
	std::vector<BWString> queries = qs.split("&");
	for ( BWString q : queries ) {
		std::vector<BWString> qv = q.split("=");
		if (qv.size() >= 2) {
			BWString k = qv[0];
			BWString v = qv[1];
			if(k.have_value()) {
				_qmap[k] = v.have_value() ? v : "";
			}
		}
	}
}
コード例 #6
0
ファイル: BWDB.cpp プロジェクト: felipeq/Code-Clinic-Cpp
BWString BWDB::get_query_value(const BWString &sQuery, const std::vector<BWString> &vParams)
{
    _clear_value();
    const char *q = sQuery.c_str();
    if (sqlite3_prepare_v2(_dbh, q, -1, &stmt, NULL) != SQLITE_OK)
    {
        _finalize();
        _get_value();
    }
    for (unsigned int i = 0; i < vParams.size(); ++i)
    {
        sqlite3_bind_text(stmt, i + 1, vParams[i].c_str(), -1, SQLITE_TRANSIENT);
    }

    if (sqlite3_step(stmt) == SQLITE_ROW)
    {
        char *rc = (char *) sqlite3_column_text(stmt, 0);
        if (rc) _set_value(rc);
    }
    _finalize();
    return _get_value();
}
コード例 #7
0
ファイル: main.cpp プロジェクト: felipeq/Code-Clinic-Cpp
int main(int argc, const char * argv[])
{
	BWString filename;
	DIR * dir = nullptr;

	if (filepath.last_char() != '/') {
		filepath += "/";
	}

	JPEGData ref_jpeg = filepath + ref_file;
	if(!ref_jpeg.read_jpeg()) {
	    return 1;
	}

	struct dirent * dirp = nullptr;
	dir = opendir(filepath.c_str());
	if (dir == nullptr) {
		printf("cannot open directory %s (%s)\n", filepath.c_str(), strerror(errno));
		return 1;
	}

	while ((dirp = readdir(dir)) != nullptr) {
		BWString dfilename = dirp->d_name;

		if(*dirp->d_name == '.') continue;
		if(ref_file == dfilename) continue;

		JPEGData * j = new JPEGData(filepath + dfilename);
        if(!j->read_jpeg()) {
            return 1;
        }

		const JPEGData::coords *rc = ref_jpeg.find(j);
		if (rc) {
			printf("--> %s (%d x %d): match! (%d x %d)\n", dfilename.c_str(), j->width(), j->height(), rc->x, rc->y);
		} else {
			printf("%s (%d x %d): no match\n", dfilename.c_str(), j->width(), j->height());
		}
		delete j;
	}

	if(dir) closedir(dir);
	return 0;
}
コード例 #8
0
ファイル: BWDB.cpp プロジェクト: felipeq/Code-Clinic-Cpp
bool BWDB::do_query(const BWString &sQuery, const std::vector<BWString> &params)
{
    const char *q = sQuery.c_str();
    if (sqlite3_prepare_v2(_dbh, q, -1, &stmt, NULL) != SQLITE_OK)
    {
        _finalize();
        return false;
    }
    for (unsigned int i = 0; i < params.size(); ++i)
    {
        sqlite3_bind_text(stmt, i + 1, params[i].c_str(), -1, SQLITE_TRANSIENT);
    }

    if (sqlite3_step(stmt) == SQLITE_ROW)
    {
        _set_value((const char *) sqlite3_column_text(stmt, 0));
        _finalize();
        return true;
    } else
    {
        _finalize();
        return false;
    }
}
コード例 #9
0
ファイル: BWCGI.cpp プロジェクト: cy2296/coding
void BWCGI::disp_page( const BWString & type, const BWString & s ) {
	BWString buf = _content_type + ": " + type + _crlf + _crlf + s;
	fputs(buf.c_str(), stdout);
}
コード例 #10
0
ファイル: BWString.cpp プロジェクト: cy2296/coding
bool BWString::operator != ( const BWString & rhs ) const {
    if( std::strncmp(this->c_str(), rhs.c_str(), __BWString__MAX_LEN) != 0 ) return true;
    else return false;
}
コード例 #11
0
ファイル: BWKV.cpp プロジェクト: cy2296/coding
void BWKV::del( const BWString & key ) {
		del(key.c_str());
}
コード例 #12
0
ファイル: BWKV.cpp プロジェクト: cy2296/coding
const BWString BWKV::operator [] ( const BWString & key ) {
	return BWString(value( key.c_str() ));
}
コード例 #13
0
ファイル: BWDB.cpp プロジェクト: felipeq/Code-Clinic-Cpp
bool BWDB::do_query(const BWString &q)
{
    return do_query(q.c_str());
}