Datum rcml(PG_FUNCTION_ARGS) { Datum react_datum = PG_GETARG_DATUM(0); char* result = 0; PG_BINGO_BEGIN { BingoPgCommon::BingoSessionHandler bingo_handler(fcinfo->flinfo->fn_oid); bingo_handler.setFunctionName("rcml"); BingoPgText react_text(react_datum); int buf_size; const char* react_buf = react_text.getText(buf_size); const char* bingo_result = ringoRCML(react_buf, buf_size); if(bingo_result == 0) { CORE_HANDLE_WARNING(0, 1, "bingo.rcml", bingoGetError()); PG_RETURN_NULL(); } result = BingoPgCommon::releaseString(bingo_result); } PG_BINGO_END if (result == 0) PG_RETURN_NULL(); PG_RETURN_CSTRING(result); }
Datum cansmiles(PG_FUNCTION_ARGS) { Datum mol_datum = PG_GETARG_DATUM(0); void* result = 0; PG_BINGO_BEGIN { BingoPgCommon::BingoSessionHandler bingo_handler(fcinfo->flinfo->fn_oid); bingo_handler.setFunctionName("cansmiles"); BingoPgText mol_text(mol_datum); int buf_size; const char* mol_buf = mol_text.getText(buf_size); const char* bingo_result = mangoSMILES(mol_buf, buf_size, 1); if(bingo_result == 0) { CORE_HANDLE_WARNING(0, 1, "bingo.cansmiles", bingoGetError()); PG_RETURN_NULL(); } BingoPgText result_text; result_text.initFromString(bingo_result); result = result_text.release(); } PG_BINGO_END if (result == 0) PG_RETURN_NULL(); PG_RETURN_TEXT_P(result); }
Datum checkreaction(PG_FUNCTION_ARGS) { Datum react_datum = PG_GETARG_DATUM(0); char* result = 0; PG_BINGO_BEGIN { BingoPgCommon::BingoSessionHandler bingo_handler(fcinfo->flinfo->fn_oid); bingo_handler.setFunctionName("checkreaction"); BingoPgText react_text(react_datum); int buf_size; const char* react_buf = react_text.getText(buf_size); const char* bingo_result = ringoCheckReaction(react_buf, buf_size); if(bingo_result == 0) PG_RETURN_NULL(); result = BingoPgCommon::releaseString(bingo_result); } PG_BINGO_END if (result == 0) PG_RETURN_NULL(); PG_RETURN_CSTRING(result); }
Datum compactmolecule(PG_FUNCTION_ARGS){ Datum mol_datum = PG_GETARG_DATUM(0); bool options_xyz = PG_GETARG_BOOL(1); void* result = 0; PG_BINGO_BEGIN { BingoPgCommon::BingoSessionHandler bingo_handler(fcinfo->flinfo->fn_oid); bingo_handler.setFunctionName("compactmolecule"); BingoPgText mol_text(mol_datum); int buf_size; const char* mol_buf = mol_text.getText(buf_size); int res_buf; const char* bingo_result = mangoICM(mol_buf, buf_size, options_xyz, &res_buf); if(bingo_result == 0) { CORE_HANDLE_WARNING(0, 1, "bingo.compactmolecule", bingoGetError()); PG_RETURN_NULL(); } BingoPgText result_data; result_data.initFromBuffer(bingo_result, res_buf); result = result_data.release(); } PG_BINGO_END if(result == 0) PG_RETURN_NULL(); PG_RETURN_BYTEA_P(result); }
Datum getweight(PG_FUNCTION_ARGS){ Datum mol_datum = PG_GETARG_DATUM(0); Datum options_datum = PG_GETARG_DATUM(1); float result = 0; PG_BINGO_BEGIN { BingoPgCommon::BingoSessionHandler bingo_handler(fcinfo->flinfo->fn_oid); bingo_handler.setFunctionName("getweight"); BingoPgText mol_text(mol_datum); BingoPgText mol_options(options_datum); int buf_len, bingo_res; const char* buf = mol_text.getText(buf_len); bingo_res = mangoMass(buf, buf_len, mol_options.getString(), &result); if(bingo_res < 1) { CORE_HANDLE_WARNING(0, 1, "bingo.getweight", bingoGetError()); PG_RETURN_NULL(); } } PG_BINGO_END PG_RETURN_FLOAT4(result); }
Datum checkmolecule(PG_FUNCTION_ARGS) { Datum mol_datum = PG_GETARG_DATUM(0); void* result = 0; PG_BINGO_BEGIN { BingoPgCommon::BingoSessionHandler bingo_handler(fcinfo->flinfo->fn_oid); bingo_handler.setFunctionName("checkmolecule"); BingoPgText mol_text(mol_datum); int buf_size; const char* mol_buf = mol_text.getText(buf_size); const char* bingo_result = mangoCheckMolecule(mol_buf, buf_size); if(bingo_result == 0) PG_RETURN_NULL(); BingoPgText result_text; result_text.initFromString(bingo_result); result = result_text.release(); } PG_BINGO_END if (result == 0) PG_RETURN_NULL(); PG_RETURN_TEXT_P(result); }
Datum aam(PG_FUNCTION_ARGS) { Datum react_datum = PG_GETARG_DATUM(0); Datum mode_datum = PG_GETARG_DATUM(1); void* result = 0; PG_BINGO_BEGIN { BingoPgCommon::BingoSessionHandler bingo_handler(fcinfo->flinfo->fn_oid); bingo_handler.setFunctionName("aam"); BingoPgText react_text(react_datum); BingoPgText aam_mode(mode_datum); int buf_size; const char* react_buf = react_text.getText(buf_size); const char* bingo_result = ringoAAM(react_buf, buf_size, aam_mode.getString()); if(bingo_result == 0) { CORE_HANDLE_WARNING(0, 1, "bingo.AAM", bingoGetError()); PG_RETURN_NULL(); } BingoPgText result_text; result_text.initFromString(bingo_result); result = result_text.release(); } PG_BINGO_END if (result == 0) PG_RETURN_NULL(); PG_RETURN_TEXT_P(result); }
Datum rfingerprint(PG_FUNCTION_ARGS){ Datum react_datum = PG_GETARG_DATUM(0); Datum options_datum = PG_GETARG_DATUM(1); void* result = 0; PG_BINGO_BEGIN { BingoPgCommon::BingoSessionHandler bingo_handler(fcinfo->flinfo->fn_oid); bingo_handler.setFunctionName("rfingerprint"); BingoPgText r_text(react_datum); BingoPgText react_options(options_datum); int buf_size; const char* r_buf = r_text.getText(buf_size); int res_buf; const char* bingo_result = ringoFingerprint(r_buf, buf_size, react_options.getString(), &res_buf); if(bingo_result == 0) { CORE_HANDLE_WARNING(0, 1, "bingo.rfingerprint", bingoGetError()); PG_RETURN_NULL(); } BingoPgText result_data; result_data.initFromBuffer(bingo_result, res_buf); result = result_data.release(); } PG_BINGO_END if(result == 0) PG_RETURN_NULL(); PG_RETURN_BYTEA_P(result); }