Create pyextension_utils.h

This commit is contained in:
Simon D. Levy
2014-09-07 21:09:43 -04:00
parent 699fde1948
commit fa5ca61686

146
python/pyextension_utils.h Normal file
View File

@@ -0,0 +1,146 @@
/*
pyextension_utils.h : header for Python C extension utilities
Copyright (C) 2014 Simon D. Levy
This code is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this code. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Raises a bad-argument exception and returns NULL
* @param classname name of class in which exception happened
* @param methodname name of method in which exception happened
* @param details details of exception
* @return NULL
*/
PyObject *
null_on_raise_argument_exception_with_details(
const char * classname,
const char * methodname,
const char * details);
/**
* Raises a bad-argument exception and returns NULL
* @param classname name of class in which exception happened
* @param methodname name of method in which exception happened
* @return NULL
*/
PyObject *
null_on_raise_argument_exception(
const char * classname,
const char * methodname);
/**
* Raises a bad-argument exception and returns -1
* @param classname name of class in which exception happened
* @param methodname name of method in which exception happened
* @param details details of exception
* @return -1
*/
int
error_on_raise_argument_exception_with_details(
const char * classname,
const char * methodname,
const char * details);
/**
* Raises a bad-argument exception and returns -1 on __init__.
* @param classname name of class in which exception happened
* @param methodname name of method in which exception happened
* @return -1
*/
int
error_on_raise_argument_exception(
const char * classname);
/**
* Returns 1 if type is ready, 0 otherwise
* @param type the type object
* @return 1 if type is ready, 0 otherwise
*/
int
type_is_ready(
PyTypeObject * type);
/**
* Adds a class to a module.
* @param module the module
* @param type the type object
* @param name the class name
*/
void
add_class(
PyObject * module,
PyTypeObject * type,
const char * classname);
/**
* Extracts a double from a tuple.
* @param tup the tuple
* @param pos position in the tuple
* @param val gets the returned value
* @return true on sucess, false on failure
*/
int
double_from_tuple(
PyObject * tup,
int pos,
double * val);
/**
* Extracts a named double from an object.
* @param obj the obj
* @param name the name
* @param val gets the returned value
* @return true on sucess, false on failure
*/
int
double_from_obj(
PyObject * obj,
const char * name,
double * val);
/**
* Extracts a named int from an object.
* @param obj the obj
* @param name the name
* @param val gets the returned value
* @return true on sucess, false on failure
*/
int
int_from_obj(
PyObject * obj,
const char * name,
int * val);
/**
* Raises a bad-argument exception and returns -1 on passing of incorrent argument type
* @param classname name of class in which exception happened
* @param methodname name of method in which exception happened
* @param typname name of expected type
* @return -1 on error; 0 on success
*/
int
error_on_check_argument_type(
PyObject * obj,
PyTypeObject * typ,
int pos,
const char * typname,
const char * classname,
const char *methodname);