Index: sansmodels/src/sans/models/StakedDisksModel.py
===================================================================
--- sansmodels/src/sans/models/StakedDisksModel.py	(revision 50686972861f70ebff2c64a50118cfb6b905253a)
+++ 	(revision )
@@ -1,111 +1,0 @@
-#!/usr/bin/env python
-"""
-	This software was developed by the University of Tennessee as part of the
-	Distributed Data Analysis of Neutron Scattering Experiments (DANSE)
-	project funded by the US National Science Foundation.
-
-	If you use DANSE applications to do scientific research that leads to
-	publication, we ask that you acknowledge the use of the software with the
-	following sentence:
-
-	"This work benefited from DANSE software developed under NSF award DMR-0520547."
-
-	copyright 2008, University of Tennessee
-"""
-
-""" Provide functionality for a C extension model
-
-	WARNING: THIS FILE WAS GENERATED BY WRAPPERGENERATOR.PY
- 	         DO NOT MODIFY THIS FILE, MODIFY ..\c_extensions\stacked_disks.h
- 	         AND RE-RUN THE GENERATOR SCRIPT
-
-"""
-
-from sans.models.BaseComponent import BaseComponent
-from sans_extension.c_models import CStakedDisksModel
-import copy    
-    
-class StakedDisksModel(CStakedDisksModel, BaseComponent):
-    """ Class that evaluates a StakedDisksModel model. 
-    	This file was auto-generated from ..\c_extensions\stacked_disks.h.
-    	Refer to that file and the structure it contains
-    	for details of the model.
-    	List of default parameters:
-         scale           = 0.01 
-         radius          = 3000.0 [A]
-         length          = 10.0 [A]
-         thickness       = 15.0 [A]
-         core_sld        = 4e-006 [1/A²]
-         layer_sld       = -4e-007 [1/A²]
-         solvent_sld     = 5e-006 [1/A²]
-         nlayers         = 1.0 
-         spacing         = 0.0 
-         background      = 0.0001 [1/cm]
-         axis_theta      = 1.0 [rad]
-         axis_phi        = 1.0 [rad]
-
-    """
-        
-    def __init__(self):
-        """ Initialization """
-        
-        # Initialize BaseComponent first, then sphere
-        BaseComponent.__init__(self)
-        CStakedDisksModel.__init__(self)
-        
-        ## Name of the model
-        self.name = "StakedDisksModel"
-        ## Model description
-        self.description =""""""
-       
-		## Parameter details [units, min, max]
-        self.details = {}
-        self.details['scale'] = ['', None, None]
-        self.details['radius'] = ['[A]', None, None]
-        self.details['length'] = ['[A]', None, None]
-        self.details['thickness'] = ['[A]', None, None]
-        self.details['core_sld'] = ['[1/A²]', None, None]
-        self.details['layer_sld'] = ['[1/A²]', None, None]
-        self.details['solvent_sld'] = ['[1/A²]', None, None]
-        self.details['nlayers'] = ['', None, None]
-        self.details['spacing'] = ['', None, None]
-        self.details['background'] = ['[1/cm]', None, None]
-        self.details['axis_theta'] = ['[rad]', None, None]
-        self.details['axis_phi'] = ['[rad]', None, None]
-
-		## fittable parameters
-        self.fixed=['length.width', 'radius.width', 'axis_theta.width', 'axis_phi.width']
-        
-        ## parameters with orientation
-        self.orientation_params =['axis_phi', 'axis_theta', 'axis_phi.width', 'axis_theta.width']
-   
-    def clone(self):
-        """ Return a identical copy of self """
-        return self._clone(StakedDisksModel())   
-   
-    def run(self, x = 0.0):
-        """ Evaluate the model
-            @param x: input q, or [q,phi]
-            @return: scattering function P(q)
-        """
-        
-        return CStakedDisksModel.run(self, x)
-   
-    def runXY(self, x = 0.0):
-        """ Evaluate the model in cartesian coordinates
-            @param x: input q, or [qx, qy]
-            @return: scattering function P(q)
-        """
-        
-        return CStakedDisksModel.runXY(self, x)
-        
-    def set_dispersion(self, parameter, dispersion):
-        """
-            Set the dispersion object for a model parameter
-            @param parameter: name of the parameter [string]
-            @dispersion: dispersion object of type DispersionModel
-        """
-        return CStakedDisksModel.set_dispersion(self, parameter, dispersion.cdisp)
-        
-   
-# End of file
Index: sansmodels/src/sans/models/c_extensions/stakeddisks.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/stakeddisks.c	(revision 50686972861f70ebff2c64a50118cfb6b905253a)
+++ 	(revision )
@@ -1,118 +1,0 @@
-/**
- * Scattering model for a staked disk
- * TODO: Add 2D analysis
- */
-
-#include "stakeddisks.h"
-#include <math.h>
-#include "libCylinder.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-
-/**
- * Function to evaluate 1D scattering function
- * @param pars: parameters of the staked disks
- * @param q: q-value
- * @return: function value
- */
-double flexible_cylinder_analytical_1D(StakedParameters *pars, double q) {
-	double dp[10];
-	
-	// Fill paramater array
-	dp[0] = pars->scale;
-	dp[1] = pars->length;
-	dp[2] = pars->kuhn_length;
-	dp[3] = pars->radius;
-	dp[4] = pars->contrast;
-	dp[5] = pars->background;
-
-	// Call library function to evaluate model
-	return FlexExclVolCyl(dp, q);	
-}
-/**
- * Function to evaluate 2D scattering function
- * @param pars: parameters of the staked disks
- * @param q: q-value
- * @return: function value
- */
-double flexible_cylinder_analytical_2DXY(FlexibleCylinderParameters *pars, double qx, double qy) {
-	double q;
-	q = sqrt(qx*qx+qy*qy);
-    return flexible_cylinder_analytical_2D_scaled(pars, q, qx/q, qy/q);
-} 
-
-
-/**
- * Function to evaluate 2D scattering function
- * @param pars: parameters of the staked disks
- * @param q: q-value
- * @param phi: angle phi
- * @return: function value
- */
-double flexible_cylinder_analytical_2D(FlexibleCylinderParameters *pars, double q, double phi) {
-    return flexible_cylinder_analytical_2D_scaled(pars, q, cos(phi), sin(phi));
-} 
-        
-/**
- * Function to evaluate 2D scattering function
- * @param pars: parameters of the staked disks
- * @param q: q-value
- * @param q_x: q_x / q
- * @param q_y: q_y / q
- * @return: function value
- */
-double flexible_cylinder_analytical_2D_scaled(FlexibleCylinderParameters *pars, double q, double q_x, double q_y) {
-	double cyl_x, cyl_y, cyl_z;
-	double q_z;
-	double alpha, vol, cos_val;
-	double answer;
-	
-	
-
-    // parallelepiped orientation
-    cyl_x = sin(pars->axis_theta) * cos(pars->axis_phi);
-    cyl_y = sin(pars->axis_theta) * sin(pars->axis_phi);
-    cyl_z = cos(pars->axis_theta);
-     
-    // q vector
-    q_z = 0;
-        
-    // Compute the angle btw vector q and the
-    // axis of the parallelepiped
-    cos_val = cyl_x*q_x + cyl_y*q_y + cyl_z*q_z;
-    
-    // The following test should always pass
-    if (fabs(cos_val)>1.0) {
-    	printf("parallel_ana_2D: Unexpected error: cos(alpha)>1\n");
-     	return 0;
-    }
-    
-    // Note: cos(alpha) = 0 and 1 will get an
-    // undefined value from PPKernel
-	alpha = acos( cos_val );
-
-	// Call the IGOR library function to get the kernel
-	answer = CylKernel(q, pars->radius, pars->length/2.0, alpha) / sin(alpha);
-	
-	// Multiply by contrast^2
-	answer *= pars->contrast*pars->contrast;
-	
-	//normalize by staked disks volume
-	//NOTE that for this (Fournet) definition of the integral, one must MULTIPLY by Vparallel
-    vol = acos(-1.0) * pars->radius * pars->radius * pars->length;
-	answer *= vol;
-	
-	//convert to [cm-1]
-	answer *= 1.0e8;
-	
-	//Scale
-	answer *= pars->scale;
-	
-	// add in the background
-	answer += pars->background;
-	
-	return answer;
-}
-    
-
Index: sansmodels/src/sans/models/c_models/CStakedDisksModel.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/CStakedDisksModel.cpp	(revision 50686972861f70ebff2c64a50118cfb6b905253a)
+++ 	(revision )
@@ -1,414 +1,0 @@
-/**
-	This software was developed by the University of Tennessee as part of the
-	Distributed Data Analysis of Neutron Scattering Experiments (DANSE)
-	project funded by the US National Science Foundation.
-
-	If you use DANSE applications to do scientific research that leads to
-	publication, we ask that you acknowledge the use of the software with the
-	following sentence:
-
-	"This work benefited from DANSE software developed under NSF award DMR-0520547."
-
-	copyright 2008, University of Tennessee
- */
-
-/** CStakedDisksModel
- *
- * C extension 
- *
- * WARNING: THIS FILE WAS GENERATED BY WRAPPERGENERATOR.PY
- *          DO NOT MODIFY THIS FILE, MODIFY stacked_disks.h
- *          AND RE-RUN THE GENERATOR SCRIPT
- *
- */
- 
-extern "C" {
-#include <Python.h>
-#include "structmember.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <time.h>
-#include "stacked_disks.h"
-}
-
-#include "models.hh"
-#include "dispersion_visitor.hh"
-
-/// Error object for raised exceptions
-static PyObject * CStakedDisksModelError = NULL;
-
-
-// Class definition
-typedef struct {
-    PyObject_HEAD
-    /// Parameters
-    PyObject * params;
-    /// Dispersion parameters
-    PyObject * dispersion;
-    /// Underlying model object
-    StakedDisksModel * model;
-    /// Log for unit testing
-    PyObject * log;
-} CStakedDisksModel;
-
-
-static void
-CStakedDisksModel_dealloc(CStakedDisksModel* self)
-{
-    self->ob_type->tp_free((PyObject*)self);
-    
-
-}
-
-static PyObject *
-CStakedDisksModel_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    CStakedDisksModel *self;
-    
-    self = (CStakedDisksModel *)type->tp_alloc(type, 0);
-   
-    return (PyObject *)self;
-}
-
-static int
-CStakedDisksModel_init(CStakedDisksModel *self, PyObject *args, PyObject *kwds)
-{
-    if (self != NULL) {
-    	
-    	// Create parameters
-        self->params = PyDict_New();
-        self->dispersion = PyDict_New();
-        self->model = new StakedDisksModel();
-        
-        // Initialize parameter dictionary
-        PyDict_SetItemString(self->params,"scale",Py_BuildValue("d",0.010000));
-        PyDict_SetItemString(self->params,"axis_theta",Py_BuildValue("d",1.000000));
-        PyDict_SetItemString(self->params,"spacing",Py_BuildValue("d",0.000000));
-        PyDict_SetItemString(self->params,"nlayers",Py_BuildValue("d",1.000000));
-        PyDict_SetItemString(self->params,"layer_sld",Py_BuildValue("d",-0.000000));
-        PyDict_SetItemString(self->params,"solvent_sld",Py_BuildValue("d",0.000005));
-        PyDict_SetItemString(self->params,"thickness",Py_BuildValue("d",15.000000));
-        PyDict_SetItemString(self->params,"axis_phi",Py_BuildValue("d",1.000000));
-        PyDict_SetItemString(self->params,"length",Py_BuildValue("d",10.000000));
-        PyDict_SetItemString(self->params,"core_sld",Py_BuildValue("d",0.000004));
-        PyDict_SetItemString(self->params,"radius",Py_BuildValue("d",3000.000000));
-        PyDict_SetItemString(self->params,"background",Py_BuildValue("d",0.000100));
-        // Initialize dispersion / averaging parameter dict
-        DispersionVisitor* visitor = new DispersionVisitor();
-        PyObject * disp_dict;
-        disp_dict = PyDict_New();
-        self->model->length.dispersion->accept_as_source(visitor, self->model->length.dispersion, disp_dict);
-        PyDict_SetItemString(self->dispersion, "length", disp_dict);
-        disp_dict = PyDict_New();
-        self->model->radius.dispersion->accept_as_source(visitor, self->model->radius.dispersion, disp_dict);
-        PyDict_SetItemString(self->dispersion, "radius", disp_dict);
-        disp_dict = PyDict_New();
-        self->model->axis_theta.dispersion->accept_as_source(visitor, self->model->axis_theta.dispersion, disp_dict);
-        PyDict_SetItemString(self->dispersion, "axis_theta", disp_dict);
-        disp_dict = PyDict_New();
-        self->model->axis_phi.dispersion->accept_as_source(visitor, self->model->axis_phi.dispersion, disp_dict);
-        PyDict_SetItemString(self->dispersion, "axis_phi", disp_dict);
-
-
-         
-        // Create empty log
-        self->log = PyDict_New();
-        
-        
-
-    }
-    return 0;
-}
-
-static PyMemberDef CStakedDisksModel_members[] = {
-    {"params", T_OBJECT, offsetof(CStakedDisksModel, params), 0,
-     "Parameters"},
-	{"dispersion", T_OBJECT, offsetof(CStakedDisksModel, dispersion), 0,
-	  "Dispersion parameters"},     
-    {"log", T_OBJECT, offsetof(CStakedDisksModel, log), 0,
-     "Log"},
-    {NULL}  /* Sentinel */
-};
-
-/** Read double from PyObject
-    @param p PyObject
-    @return double
-*/
-double CStakedDisksModel_readDouble(PyObject *p) {
-    if (PyFloat_Check(p)==1) {
-        return (double)(((PyFloatObject *)(p))->ob_fval);
-    } else if (PyInt_Check(p)==1) {
-        return (double)(((PyIntObject *)(p))->ob_ival);
-    } else if (PyLong_Check(p)==1) {
-        return (double)PyLong_AsLong(p);
-    } else {
-        return 0.0;
-    }
-}
-
-
-/**
- * Function to call to evaluate model
- * @param args: input q or [q,phi]
- * @return: function value
- */
-static PyObject * run(CStakedDisksModel *self, PyObject *args) {
-	double q_value, phi_value;
-	PyObject* pars;
-	int npars;
-	
-	// Get parameters
-	
-	    // Reader parameter dictionary
-    self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
-    self->model->axis_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_theta") );
-    self->model->spacing = PyFloat_AsDouble( PyDict_GetItemString(self->params, "spacing") );
-    self->model->nlayers = PyFloat_AsDouble( PyDict_GetItemString(self->params, "nlayers") );
-    self->model->layer_sld = PyFloat_AsDouble( PyDict_GetItemString(self->params, "layer_sld") );
-    self->model->solvent_sld = PyFloat_AsDouble( PyDict_GetItemString(self->params, "solvent_sld") );
-    self->model->thickness = PyFloat_AsDouble( PyDict_GetItemString(self->params, "thickness") );
-    self->model->axis_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_phi") );
-    self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
-    self->model->core_sld = PyFloat_AsDouble( PyDict_GetItemString(self->params, "core_sld") );
-    self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    // Read in dispersion parameters
-    PyObject* disp_dict;
-    DispersionVisitor* visitor = new DispersionVisitor();
-    disp_dict = PyDict_GetItemString(self->dispersion, "length");
-    self->model->length.dispersion->accept_as_destination(visitor, self->model->length.dispersion, disp_dict);
-    disp_dict = PyDict_GetItemString(self->dispersion, "radius");
-    self->model->radius.dispersion->accept_as_destination(visitor, self->model->radius.dispersion, disp_dict);
-    disp_dict = PyDict_GetItemString(self->dispersion, "axis_theta");
-    self->model->axis_theta.dispersion->accept_as_destination(visitor, self->model->axis_theta.dispersion, disp_dict);
-    disp_dict = PyDict_GetItemString(self->dispersion, "axis_phi");
-    self->model->axis_phi.dispersion->accept_as_destination(visitor, self->model->axis_phi.dispersion, disp_dict);
-
-	
-	// Get input and determine whether we have to supply a 1D or 2D return value.
-	if ( !PyArg_ParseTuple(args,"O",&pars) ) {
-	    PyErr_SetString(CStakedDisksModelError, 
-	    	"CStakedDisksModel.run expects a q value.");
-		return NULL;
-	}
-	  
-	// Check params
-	if( PyList_Check(pars)==1) {
-		
-		// Length of list should be 2 for I(q,phi)
-	    npars = PyList_GET_SIZE(pars); 
-	    if(npars!=2) {
-	    	PyErr_SetString(CStakedDisksModelError, 
-	    		"CStakedDisksModel.run expects a double or a list of dimension 2.");
-	    	return NULL;
-	    }
-	    // We have a vector q, get the q and phi values at which
-	    // to evaluate I(q,phi)
-	    q_value = CStakedDisksModel_readDouble(PyList_GET_ITEM(pars,0));
-	    phi_value = CStakedDisksModel_readDouble(PyList_GET_ITEM(pars,1));
-	    // Skip zero
-	    if (q_value==0) {
-	    	return Py_BuildValue("d",0.0);
-	    }
-		return Py_BuildValue("d",(*(self->model)).evaluate_rphi(q_value,phi_value));
-
-	} else {
-
-		// We have a scalar q, we will evaluate I(q)
-		q_value = CStakedDisksModel_readDouble(pars);		
-		
-		return Py_BuildValue("d",(*(self->model))(q_value));
-	}	
-}
-
-/**
- * Function to call to evaluate model in cartesian coordinates
- * @param args: input q or [qx, qy]]
- * @return: function value
- */
-static PyObject * runXY(CStakedDisksModel *self, PyObject *args) {
-	double qx_value, qy_value;
-	PyObject* pars;
-	int npars;
-	
-	// Get parameters
-	
-	    // Reader parameter dictionary
-    self->model->scale = PyFloat_AsDouble( PyDict_GetItemString(self->params, "scale") );
-    self->model->axis_theta = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_theta") );
-    self->model->spacing = PyFloat_AsDouble( PyDict_GetItemString(self->params, "spacing") );
-    self->model->nlayers = PyFloat_AsDouble( PyDict_GetItemString(self->params, "nlayers") );
-    self->model->layer_sld = PyFloat_AsDouble( PyDict_GetItemString(self->params, "layer_sld") );
-    self->model->solvent_sld = PyFloat_AsDouble( PyDict_GetItemString(self->params, "solvent_sld") );
-    self->model->thickness = PyFloat_AsDouble( PyDict_GetItemString(self->params, "thickness") );
-    self->model->axis_phi = PyFloat_AsDouble( PyDict_GetItemString(self->params, "axis_phi") );
-    self->model->length = PyFloat_AsDouble( PyDict_GetItemString(self->params, "length") );
-    self->model->core_sld = PyFloat_AsDouble( PyDict_GetItemString(self->params, "core_sld") );
-    self->model->radius = PyFloat_AsDouble( PyDict_GetItemString(self->params, "radius") );
-    self->model->background = PyFloat_AsDouble( PyDict_GetItemString(self->params, "background") );
-    // Read in dispersion parameters
-    PyObject* disp_dict;
-    DispersionVisitor* visitor = new DispersionVisitor();
-    disp_dict = PyDict_GetItemString(self->dispersion, "length");
-    self->model->length.dispersion->accept_as_destination(visitor, self->model->length.dispersion, disp_dict);
-    disp_dict = PyDict_GetItemString(self->dispersion, "radius");
-    self->model->radius.dispersion->accept_as_destination(visitor, self->model->radius.dispersion, disp_dict);
-    disp_dict = PyDict_GetItemString(self->dispersion, "axis_theta");
-    self->model->axis_theta.dispersion->accept_as_destination(visitor, self->model->axis_theta.dispersion, disp_dict);
-    disp_dict = PyDict_GetItemString(self->dispersion, "axis_phi");
-    self->model->axis_phi.dispersion->accept_as_destination(visitor, self->model->axis_phi.dispersion, disp_dict);
-
-	
-	// Get input and determine whether we have to supply a 1D or 2D return value.
-	if ( !PyArg_ParseTuple(args,"O",&pars) ) {
-	    PyErr_SetString(CStakedDisksModelError, 
-	    	"CStakedDisksModel.run expects a q value.");
-		return NULL;
-	}
-	  
-	// Check params
-	if( PyList_Check(pars)==1) {
-		
-		// Length of list should be 2 for I(qx, qy))
-	    npars = PyList_GET_SIZE(pars); 
-	    if(npars!=2) {
-	    	PyErr_SetString(CStakedDisksModelError, 
-	    		"CStakedDisksModel.run expects a double or a list of dimension 2.");
-	    	return NULL;
-	    }
-	    // We have a vector q, get the qx and qy values at which
-	    // to evaluate I(qx,qy)
-	    qx_value = CStakedDisksModel_readDouble(PyList_GET_ITEM(pars,0));
-	    qy_value = CStakedDisksModel_readDouble(PyList_GET_ITEM(pars,1));
-	    return Py_BuildValue("d",(*(self->model))(qx_value,qy_value));
-
-	} else {
-
-		// We have a scalar q, we will evaluate I(q)
-		qx_value = CStakedDisksModel_readDouble(pars);		
-		
-		return Py_BuildValue("d",(*(self->model))(qx_value));
-	}	
-}
-
-static PyObject * reset(CStakedDisksModel *self, PyObject *args) {
-    
-
-    return Py_BuildValue("d",0.0);
-}
-
-static PyObject * set_dispersion(CStakedDisksModel *self, PyObject *args) {
-	PyObject * disp;
-	const char * par_name;
-
-	if ( !PyArg_ParseTuple(args,"sO", &par_name, &disp) ) {
-	    PyErr_SetString(CStakedDisksModelError,
-	    	"CStakedDisksModel.set_dispersion expects a DispersionModel object.");
-		return NULL;
-	}
-	void *temp = PyCObject_AsVoidPtr(disp);
-	DispersionModel * dispersion = static_cast<DispersionModel *>(temp);
-
-
-	// Ugliness necessary to go from python to C
-	    // TODO: refactor this
-    if (!strcmp(par_name, "length")) {
-        self->model->length.dispersion = dispersion;
-    } else    if (!strcmp(par_name, "radius")) {
-        self->model->radius.dispersion = dispersion;
-    } else    if (!strcmp(par_name, "axis_theta")) {
-        self->model->axis_theta.dispersion = dispersion;
-    } else    if (!strcmp(par_name, "axis_phi")) {
-        self->model->axis_phi.dispersion = dispersion;
-    } else {
-	    PyErr_SetString(CStakedDisksModelError,
-	    	"CStakedDisksModel.set_dispersion expects a valid parameter name.");
-		return NULL;
-	}
-
-	DispersionVisitor* visitor = new DispersionVisitor();
-	PyObject * disp_dict = PyDict_New();
-	dispersion->accept_as_source(visitor, dispersion, disp_dict);
-	PyDict_SetItemString(self->dispersion, par_name, disp_dict);
-    return Py_BuildValue("i",1);
-}
-
-
-static PyMethodDef CStakedDisksModel_methods[] = {
-    {"run",      (PyCFunction)run     , METH_VARARGS,
-      "Evaluate the model at a given Q or Q, phi"},
-    {"runXY",      (PyCFunction)runXY     , METH_VARARGS,
-      "Evaluate the model at a given Q or Qx, Qy"},
-    {"reset",    (PyCFunction)reset   , METH_VARARGS,
-      "Reset pair correlation"},
-    {"set_dispersion",      (PyCFunction)set_dispersion     , METH_VARARGS,
-      "Set the dispersion model for a given parameter"},
-   {NULL}
-};
-
-static PyTypeObject CStakedDisksModelType = {
-    PyObject_HEAD_INIT(NULL)
-    0,                         /*ob_size*/
-    "CStakedDisksModel",             /*tp_name*/
-    sizeof(CStakedDisksModel),             /*tp_basicsize*/
-    0,                         /*tp_itemsize*/
-    (destructor)CStakedDisksModel_dealloc, /*tp_dealloc*/
-    0,                         /*tp_print*/
-    0,                         /*tp_getattr*/
-    0,                         /*tp_setattr*/
-    0,                         /*tp_compare*/
-    0,                         /*tp_repr*/
-    0,                         /*tp_as_number*/
-    0,                         /*tp_as_sequence*/
-    0,                         /*tp_as_mapping*/
-    0,                         /*tp_hash */
-    0,                         /*tp_call*/
-    0,                         /*tp_str*/
-    0,                         /*tp_getattro*/
-    0,                         /*tp_setattro*/
-    0,                         /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
-    "CStakedDisksModel objects",           /* tp_doc */
-    0,		               /* tp_traverse */
-    0,		               /* tp_clear */
-    0,		               /* tp_richcompare */
-    0,		               /* tp_weaklistoffset */
-    0,		               /* tp_iter */
-    0,		               /* tp_iternext */
-    CStakedDisksModel_methods,             /* tp_methods */
-    CStakedDisksModel_members,             /* tp_members */
-    0,                         /* tp_getset */
-    0,                         /* tp_base */
-    0,                         /* tp_dict */
-    0,                         /* tp_descr_get */
-    0,                         /* tp_descr_set */
-    0,                         /* tp_dictoffset */
-    (initproc)CStakedDisksModel_init,      /* tp_init */
-    0,                         /* tp_alloc */
-    CStakedDisksModel_new,                 /* tp_new */
-};
-
-
-static PyMethodDef module_methods[] = {
-    {NULL} 
-};
-
-/**
- * Function used to add the model class to a module
- * @param module: module to add the class to
- */ 
-void addCStakedDisksModel(PyObject *module) {
-	PyObject *d;
-	
-    if (PyType_Ready(&CStakedDisksModelType) < 0)
-        return;
-
-    Py_INCREF(&CStakedDisksModelType);
-    PyModule_AddObject(module, "CStakedDisksModel", (PyObject *)&CStakedDisksModelType);
-    
-    d = PyModule_GetDict(module);
-    CStakedDisksModelError = PyErr_NewException("CStakedDisksModel.error", NULL, NULL);
-    PyDict_SetItemString(d, "CStakedDisksModelError", CStakedDisksModelError);
-}
-
