golib  0.5
Todo List
Module gl
Documentation is rudimentary.
Member go4Vectorf
make this a descendant of goMath::Vector, fix size to 4, provide x,y,z,t/w as references.
Class goBTreeAlgorithm< T >
Add breadth first order.
Class goCaller0< Tret >
Fix the goList issue. golist.hpp must be included at the end of one source file that uses this class.
Class goCaller1< Tret, Targ0 >
Fix the goList issue. golist.hpp must be included at the end of one source file that uses this class.
Class goCaller2< Tret, Targ0, Targ1 >
Fix the goList issue. golist.hpp must be included at the end of one source file that uses this class.
Class goCaller3< Tret, Targ0, Targ1, Targ2 >
Fix the goList issue. golist.hpp must be included at the end of one source file that uses this class.
Class goCaller4< Tret, Targ0, Targ1, Targ2, Targ3 >
Fix the goList issue. golist.hpp must be included at the end of one source file that uses this class.
Class goCaller5< Tret, Targ0, Targ1, Targ2, Targ3, Targ4 >
Fix the goList issue. golist.hpp must be included at the end of one source file that uses this class.
Class goCaller6< Tret, Targ0, Targ1, Targ2, Targ3, Targ4, Targ5 >
Fix the goList issue. golist.hpp must be included at the end of one source file that uses this class.
Class goCaller7< Tret, Targ0, Targ1, Targ2, Targ3, Targ4, Targ5, Targ6 >
Fix the goList issue. golist.hpp must be included at the end of one source file that uses this class.
Class goCaller8< Tret, Targ0, Targ1, Targ2, Targ3, Targ4, Targ5, Targ6, Targ7 >
Fix the goList issue. golist.hpp must be included at the end of one source file that uses this class.
Class goCaller9< Tret, Targ0, Targ1, Targ2, Targ3, Targ4, Targ5, Targ6, Targ7, Targ8 >
Fix the goList issue. golist.hpp must be included at the end of one source file that uses this class.
Member goCreateQuantizationTable (const goType &sourceType, targetT minTargetValue, targetT maxTargetValue, goIndex_t minIndex, goIndex_t maxIndex, goArray< targetT > &tableRet, goDouble sourceMin=0.0, goDouble sourceMax=-1.0)
sourceMinimum and sourceMaximum does not work because index functions assume certain value ranges (esp. float/double!!)
Class goDWT< T >
src/signal/godwt.cc aufraeumen
Member goDWT< T >::unHaar (goSignal3D< godwt_t > &haarSignal, goSignal3D< T > &targetSignal)
Remove the copy operation at the end by specialising a macro to the last filter operation. Using godwt_t types for all data is better anyway as long as it is scalar data. Use a different solution for multimodal data.
Member goFileIO::fileSize (const char *filename)
Fix for 64 bit file offsets
Member goFileIO::readASCIILine (FILE *f, goString &target)
Uses a gnu extension function. Replace by something own some time (very low priority).
Member goFileIO::writeImage (const char *filename, const goSignal3DBase< void > *signal)
This works only for float signals. Add other types. Add multichannel.
Class goFilter< T >
This works on the old 2D classes. Rework to signal3d.
Class goFilterBank< T >
Fix this to work with signal3d. Filterbank, currently only for two dimensional signals.
This is handy for playing with wavelet transforms.
Uses an array of goFilterBankStage. This should be changed to using only one filter which is used iteratively. It could be cool to implement a parallel version that keeps track of the available data in the previous stage to start calculation as soon as enough data is available.
Class goFilterBankReverse< T >
Make it work with signal3d.
Class goFilterBankStage< T >
Make it work with signal3d.
Class goFilterBankStageReverse< T >
Make it work with signal3d.
Class goFixedArray< T >
resize() currently does not shrink memory usage when resizing to a smaller size. This should possibly be changed as it may lead to unexpectedly large memory consumption of programs.
Class goGraphAlgorithm< NodeType, EdgeType >
Add support for multiple connected components (simply by supplying a set of all nodes).
Member goGraphAlgorithm< NodeType, EdgeType >::depthFirstTree (NodeType *root)
Find a better name for this.
Member goGUI::SceneView::loadOFF (const char *filename)
This is a little misplaced here — move it to SceneControl.
Member goGUI::SceneView::setLight (const goGL::Light &light)
Remove — the lights are all stored in the scene.
Class goHashTable< I, O >
I need testing!!! Class was changed together with goList 21.8.2001. Optimizations are possible.
Member goHashTable< I, O >::~goHashTable ()
Problem: Hashtable für Zeiger. Daten müssen per Hand gelöscht werden.
Member goMath::BarrierOpt< matrix_type, vector_type, opt_function_type >::solve (vector_type &x, value_type epsilon=0.01, value_type mu=2, value_type t0=1)
Document choice of t0, mu, epsilon
Member goMath::ddx2D (const goSignal3DBase< void > &sig, goSignal3DBase< void > &retValue)
Implement for 3D-signals.
Member goMath::ddy2D (const goSignal3DBase< void > &sig, goSignal3DBase< void > &retValue)
Implement for 3D-signals.
Member goMath::goConjugateGradients (const MatrixType &A, const VectorType &b, VectorType &x, goDouble epsilon=1e-6)
Spezialimplementierung fuer goSparseMatrix (gibts schon) und Standardimplementierung fuer andere Matrizen.
Member goMath::gradient2D (const goSignal3DBase< void > &sig, goSignal3DBase< void > &retValue)
Look at the code and find the reference where this is documented. It's not simply central differences, but rather central differences including the next neighbours.
Member goMath::laplacian2D (const goSignal3DBase< void > &sig, goSignal3DBase< void > &retValue)
BUG: This sometimes can produce NaNs.
Member goMath::matrixVectorMult (T alpha, const goMath::Matrix< T > &A, bool transA, const goMath::Vector< T > &x, T beta, goMath::Vector< T > &y)
TEST THIS FUNCTION.
Class goMath::MultiGaussPDF< input_vector, scalar_type >
Normalisation factor.
Class goMath::NewtonOpt< type_ >
Add line search
Class goMath::NewtonOptEq< type_ >
Detect when Ax=b is fulfilled; then, calculating Ax-b in each step can be skipped (is always feasible then).
Member goMath::scale2D (const goSignal3DBase< void > &source, goSignal3DBase< void > &target, bool keep_aspect=false)
Extend to 3D – this only requires to write a 3D sampling function.
Class goMath::Vector< T >
Document members.
Member goMath::Vector< T >::norm1 () const
Use cblas for complex as well. Use cblas internal cblas storage then.
Member goMath::Vector< T >::norm2 () const
Use cblas for complex as well. Use cblas internal cblas storage then.
Class goMatlab
The interface is a little inconsistent (use references instead of pointers!).
Class goNet::goNetObject
Add documentation
Class goNet::goServer
serverAcceptThread(): Call a thread for every connection? That might be too special and should be implemented in a specialisation class.
Class goNUBS

B is currently calculated recursively. Use de Boor instead.

Currently this class is not compiled. Replace the use of goPoint with goMath::Vector.

B is currently calculated recursively. Use de Boor instead.

Member goNUBS::operator() (goFloat u)

If it nags someone too much, return the end point when nubs.operator()(nurbs.getCurveLength()) is requested.

Currently intervals are searched for linearly. Improve that when there's time.

Store the control points in an array additionally to speed up access.

Class goObjectBase

The object messaging must be stable against re-entries and changing connections during message sending. There is no way to control what connected classes do during a receive call, so this is the place where everything must be stable. Already hardened against disconnecting while receiving, see sendObjectMessage() in the source code. Mutexes alone are of little help since they will lead to deadlocks here. The pointer in the connection list is therefore first set to NULL and later the list is cleaned up. Test this on multi-processor machines.

Do writeObjectFile/readObjectFile as ASCII. Better to port/debug/change. Check if libxml is nice enough to use for this.

Member goObjectBase::connectObject (goObjectBase *object)
It may be necessary to only allow bi-directional connections.
Class goObjectMethodParameters
Add goObjectBase* parameters?
Member goPlot::Graph::setDimensions (goPlot::real xmin, goPlot::real xmax, goPlot::real ymin, goPlot::real ymax)
Setting the tics may not be wanted (rethink this).
Member goPlot::GraphAxis::configure (int c)
Replace this or leave it?
Member goPlot::GraphAxis::updateTicsText ()
Add variable precision
Member goPlot::object2DImage (const goSignal3DBase< void > &img)
Convert 1-channel images also to ARGB32
Class goPointCloud< T >
Add function to create a configuration matrix goMath::Matrix (N,getDim()) and/or a configuration vector from a point cloud.
Class goProcess
If needed, add Windoze support.
Class goQueue< T >
Document.
Class goSignal3D< T >
The size is initially (0,0,0). That may lead to segfaults where getPtr() is used on zero-size signals. Maybe it is better to set size to (1,1,1) by default.
Member goSignal3D< T >::destroy ()
Take care what happens when axes are rotated. Nothing bad should happen though.
Class goSignal3DBase< T >

The void implementation may not completely be done. Check if some of the routines in gosignal3d and base are still marked as "not yet implemented".

typedef the void instantiation to something else and use that.

Member goSignal3DBase< T >::flip (int axis)
BROKEN. Fix when there's time.
Member goSignal3DBase< T >::setBorderFlags (int axes=GO_X|GO_Y|GO_Z, int borderFlag=GO_PERIODIC_BORDER)
If border strategies are mixed, make the corners do something defined.
Member goSignal3DBase< T >::setChannel (goSize_t c)
This will be a problem with const objects. Find out how that can be solved without const_cast<>
Class goSignal3DGenericIterator
Maybe do something about the pitfall described in the note (documentation). Low priority.
Member goSignal3DGenericIterator2< T >::incrementZ ()
This runs over the edge of the dz array when there is no border (holds for all increment functions). This leads to an invalid read operation which may lead to problems. Check if there is a way to fix this without having to change
Member goSignal3DGenericIterator::incrementZ ()
This runs over the edge of the dz array when there is no border (holds for all increment functions). This leads to an invalid read operation which may lead to problems. Check if there is a way to fix this without having to change
Class goSignal3DIterator< T >
This needs some testing for functionality and speed
Class goSparseMatrix

Make a "get all nonzero elements" method.

TEST ADD / MULT / SUBTRACT METHODS THOROUGHLY!

Class goStatusObject
Fix this class when there is a use for it. It is not complete and tested.
Member goString::replace (const char *str, const char *replacement)
Inefficient. Rework when there's need and time.
Class goSubSignal3D< T >
Implement GO_PARENT_BORDER as copying jumps and diffs on the border from the parent. Currently, CONSTANT_BORDER is default.
Member goSubSignal3D< T >::setPosition (goPosition &p)

Try out if borders are set correctly.

Enable own border flags or borders from parent as option. Should work easily, but try.

Class goUniformQuantizer< _input_type, _output_type >
Check the example quantizer.cpp. The last value may not be reached (maybe a rounding problem) and that may also result in the problems with histogram equalisation that have been observed.
Member goVideoCapture::getValidRanges ()
Does not work yet. a) doesn't find the real maximum value the way it works now, b) gets invalid argument all the time.
Class goViewVolume
Define operations for this class as they are needed. (Development of goVolumeNavigator will need some more functionality in here).
Module gui
Documentation is rudimentary.
Module signal
Fix readPGM etc. for signal3d