static PyObject *pyCreateRuleset(PyObject *self, PyObject *args) { char *name; char *rules; unsigned int stateCacheSize; if (!PyArg_ParseTuple(args, "lss", &stateCacheSize, &name, &rules)) { PyErr_SetString(RulesError, "pyCreateRuleset Invalid argument"); return NULL; } void *output = NULL; unsigned int result = createRuleset(&output, name, rules, stateCacheSize); if (result != RULES_OK) { if (result == ERR_OUT_OF_MEMORY) { PyErr_NoMemory(); } else { char *message; if (asprintf(&message, "Could not create ruleset, error code: %d", result)) { PyErr_NoMemory(); } else { PyErr_SetString(RulesError, message); free(message); } } return NULL; } return Py_BuildValue("l", output); }
static VALUE rbCreateRuleset(VALUE self, VALUE name, VALUE rules, VALUE stateCacheSize) { Check_Type(name, T_STRING); Check_Type(rules, T_STRING); void *output = NULL; unsigned int result = createRuleset(&output, RSTRING_PTR(name), RSTRING_PTR(rules), FIX2INT(stateCacheSize)); if (result != RULES_OK) { if (result == ERR_OUT_OF_MEMORY) { rb_raise(rb_eNoMemError, "Out of memory"); } else { rb_raise(rb_eException, "Could not create ruleset, error code: %d", result); } } return INT2FIX(output); }