/** START - First code written in C (calc.c). **/ /** * A simple calculator that works with whole numbers written in C. * Copyright (C) 2008 by Nycholas de Oliveira e Oliveira <nycholas@gmail.com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program 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 General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <stdlib.h> #include <stdio.h> int calc_sum(int, int); int calc_subtract(int, int); int calc_multiplies(int, int); int calc_divides(int, int); int main(void) { int a = 6; int b = 2; printf(" a = %d; b = %d;\n", a, b); printf("==============\n\n"); printf(" + sum: %d\n", calc_sum(a, b)); printf(" + subtract: %d\n", calc_subtract(a, b)); printf(" + multiplies: %d\n", calc_multiplies(a, b)); printf(" + divides: %d\n", calc_divides(a, b)); return 0; } int calc_sum(int a, int b) { return a + b; } int calc_subtract(int a, int b) { return a - b; } int calc_multiplies(int a, int b) { return a * b; } int calc_divides(int a, int b) { return a / b; } /** END - First code written in C (calc.c). **/ /** START - According code written in C / Python (pycalc.c). **/ /** * A simple calculator that works with whole numbers written in C/Python. * Copyright (C) 2008 by Nycholas de Oliveira e Oliveira <nycholas@gmail.com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program 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 General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <stdlib.h> #include <python2.5/Python.h> static PyObject *pycalc_sum(PyObject *self, PyObject *args) { int a, b; if (!PyArg_ParseTuple(args, "ii", &a, &b)) return NULL; return Py_BuildValue("i", (a + b)); } static PyObject *pycalc_subtract(PyObject *self, PyObject *args) { int a, b; if (!PyArg_ParseTuple(args, "ii", &a, &b)) return NULL; return Py_BuildValue("i", (a - b)); } static PyObject *pycalc_multiplies(PyObject *self, PyObject *args) { int a, b; if (!PyArg_ParseTuple(args, "ii", &a, &b)) return NULL; return Py_BuildValue("i", (a * b)); } static PyObject *pycalc_divides(PyObject *self, PyObject *args) { int a, b; if (!PyArg_ParseTuple(args, "ii", &a, &b)) return NULL; return Py_BuildValue("i", (a / b)); } static PyMethodDef pycalc_methods[] = { {"sum", pycalc_sum, METH_VARARGS, "Sum two integers."}, {"subtract", pycalc_subtract, METH_VARARGS, "Subtracts two integers."}, {"multiplies", pycalc_multiplies, METH_VARARGS, "Subtracts two integers."}, {"divides", pycalc_divides, METH_VARARGS, "Divide two integers."}, {NULL, NULL, 0, NULL} }; void initpycalc(void) { PyObject *m; m = Py_InitModule("pycalc", pycalc_methods); if (m == NULL) return; } int main(int argc, char *argv[]) { Py_SetProgramName(argv[0]); Py_Initialize(); initpycalc(); return 0; } /** END - According code written in C / Python (pycalc.c). **/ ## START - Code setup.py. ## #!/usr/bin/env python # -*- coding: utf-8 -*- # # Script `setup` the install/build Simple calculator. # Copyright (C) 2008 by Nycholas de Oliveira e Oliveira <nycholas@gmail.com> # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program 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 General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. # """A simple calculator that works with whole numbers written in C / Python.""" from distutils.core import setup, Extension def run(): setup(name='pycalc', version='0.1', author='Nycholas de Oliveira e Oliveira', author_email='nycholas@gmail.com', license='GNU General Public License (GPL)', description="""A simple calculator that works with """ """whole numbers written in C/Python.""", platforms=['Many'], ext_modules=[Extension('pycalc', sources = ['pycalc.c'])] ) # Commands: # # ++ clean up temporary files from 'build' command # ./setup.py clean -a # # ++ build everything needed to install # ./setup.py build # # ++ install everything from build directory # ./setup.py install -c -O2 # if __name__ == "__main__": run() ## END - Code setup.py. ##