From: <ha...@us...> - 2008-08-24 16:19:10
|
Revision: 5260 http://octave.svn.sourceforge.net/octave/?rev=5260&view=rev Author: hauberg Date: 2008-08-24 16:19:14 +0000 (Sun, 24 Aug 2008) Log Message: ----------- Bumped version number Modified Paths: -------------- trunk/octave-forge/extra/NaN/DESCRIPTION trunk/octave-forge/extra/Windows/DESCRIPTION trunk/octave-forge/extra/ad/DESCRIPTION trunk/octave-forge/extra/bim/DESCRIPTION trunk/octave-forge/extra/civil/DESCRIPTION trunk/octave-forge/extra/engine/DESCRIPTION trunk/octave-forge/extra/fpl/DESCRIPTION trunk/octave-forge/extra/graceplot/DESCRIPTION trunk/octave-forge/extra/integration/DESCRIPTION trunk/octave-forge/extra/java/DESCRIPTION trunk/octave-forge/extra/jhandles/DESCRIPTION trunk/octave-forge/extra/mapping/DESCRIPTION trunk/octave-forge/extra/msh/DESCRIPTION trunk/octave-forge/extra/multicore/DESCRIPTION trunk/octave-forge/extra/nlwing2/INDEX trunk/octave-forge/extra/ocs/DESCRIPTION trunk/octave-forge/extra/pdb/DESCRIPTION trunk/octave-forge/extra/secs1d/DESCRIPTION trunk/octave-forge/extra/secs1d/INDEX trunk/octave-forge/extra/secs2d/DESCRIPTION trunk/octave-forge/extra/secs2d/INDEX trunk/octave-forge/extra/soctcl/DESCRIPTION trunk/octave-forge/extra/symband/DESCRIPTION trunk/octave-forge/extra/tsa/DESCRIPTION trunk/octave-forge/extra/xraylib/DESCRIPTION Modified: trunk/octave-forge/extra/NaN/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/NaN/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/NaN/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: NaN -Version: 1.0.6 -Date: 2008-04-29 +Version: 1.0.7 +Date: 2008-08-23 Author: Alois Schloegl <a.s...@ie...> Maintainer: Matthew W. Roberts Title: NaN statisical toolbox Modified: trunk/octave-forge/extra/Windows/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/Windows/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/Windows/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: Windows -Version: 1.0.5 -Date: 2008-04-29 +Version: 1.0.6 +Date: 2008-08-23 Author: Andy Adler <al...@nc...> Maintainer: Andy Adler <al...@nc...> Title: Windows functions Modified: trunk/octave-forge/extra/ad/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/ad/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/ad/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: AD -Version: 1.0.2 -Date: 2008-04-29 +Version: 1.0.3 +Date: 2008-08-23 Author: Thomas Kasper Maintainer: Thomas Kasper Title: AD. Modified: trunk/octave-forge/extra/bim/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/bim/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/bim/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: BIM -Version: 0.0.6 -Date: 2008-04-29 +Version: 0.0.7 +Date: 2008-08-23 Author: Carlo de Falco, Culpo Massimiliano Maintainer: Culpo Massimiliano Title: PDE Solver using a Finite Element/Finite Volume approach Modified: trunk/octave-forge/extra/civil/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/civil/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/civil/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: Civil-Engineering -Version: 1.0.5 -Date: 2008-04-29 +Version: 1.0.6 +Date: 2008-08-23 Author: Matthew W. Roberts Maintainer: The Octave Community Title: Civil Engineering Modified: trunk/octave-forge/extra/engine/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/engine/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/engine/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: Engine -Version: 1.0.6 -Date: 2008-04-29 +Version: 1.0.7 +Date: 2008-08-23 Author: Jesse Bennett <je...@se...> Maintainer: Paul Kienzle Title: Engine Modified: trunk/octave-forge/extra/fpl/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/fpl/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/fpl/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: FPL -Version: 0.1.2 -Date: 2008-04-29 +Version: 0.1.3 +Date: 2008-08-23 Author: Carlo de Falco and Massimiliano Culpo Maintainer: Massimiliano Culpo Title: FEM Plotting Modified: trunk/octave-forge/extra/graceplot/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/graceplot/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/graceplot/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: Graceplot -Version: 1.0.5 -Date: 2008-04-29 +Version: 1.0.6 +Date: 2008-08-23 Author: Teemu Ikonen Maintainer: Teemu Ikonen Title: Graceplot Modified: trunk/octave-forge/extra/integration/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/integration/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/integration/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: Integration -Version: 1.0.5 -Date: 2008-04-29 +Version: 1.0.6 +Date: 2008-08-23 Author: Howard Wilson & Bryce Gardner Maintainer: The Octave Community Title: Numerical Integration Toolbox Modified: trunk/octave-forge/extra/java/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/java/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/java/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: Java -Version: 1.2.4 -Date: 2008-04-29 +Version: 1.2.5 +Date: 2008-08-23 Author: Michael Goffioul <mic...@gm...> Maintainer: Michael Goffioul <mic...@gm...> Title: Java Interface Modified: trunk/octave-forge/extra/jhandles/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/jhandles/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/jhandles/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: JHandles -Version: 0.3.3 -Date: 2008-04-29 +Version: 0.3.4 +Date: 2008-08-23 Author: Michael Goffioul <mic...@gm...> Maintainer: Michael Goffioul <mic...@gm...> Title: Java Graphic Handles Package Modified: trunk/octave-forge/extra/mapping/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/mapping/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/mapping/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: Mapping -Version: 1.0.5 -Date: 2008-04-29 +Version: 1.0.6 +Date: 2008-08-23 Author: Andrew Collier <abc...@us...> Maintainer: The Octave Community Title: Mapping Functions Modified: trunk/octave-forge/extra/msh/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/msh/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/msh/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: MSH -Version: 0.0.6 -Date: 2008-04-29 +Version: 0.0.7 +Date: 2008-08-23 Author: Carlo de Falco, Culpo Massimiliano Maintainer: Carlo de Falco, Culpo Massimiliano Title: Meshing Software Package for Octave Modified: trunk/octave-forge/extra/multicore/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/multicore/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/multicore/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: Multicore -Version: 0.2.12 -Date: 2008-04-29 +Version: 0.2.13 +Date: 2008-08-23 Author: Markus Buehren <mb_...@gm...> Maintainer: Markus Buehren, Chuong Nguyen and the Octave Community Title: Parallel Processing on Multiple Cores Modified: trunk/octave-forge/extra/nlwing2/INDEX =================================================================== --- trunk/octave-forge/extra/nlwing2/INDEX 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/nlwing2/INDEX 2008-08-24 16:19:14 UTC (rev 5260) @@ -15,3 +15,4 @@ qcalc setalfa spwinterp + vitensor Modified: trunk/octave-forge/extra/ocs/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/ocs/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/ocs/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: OCS -Version: 0.0.1 -Date: 2008-04-29 +Version: 0.0.2 +Date: 2008-08-23 Author: Carlo de Falco, Culpo Massimiliano Maintainer: Culpo Massimiliano Title: Octave Circuit Simulator Modified: trunk/octave-forge/extra/pdb/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/pdb/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/pdb/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: PDB -Version: 1.0.5 -Date: 2008-04-29 +Version: 1.0.6 +Date: 2008-08-23 Author: Teemu Ikonen Maintainer: Teemu Ikonen Title: PDB protien database Modified: trunk/octave-forge/extra/secs1d/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/secs1d/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/secs1d/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: SECS1D -Version: 0.0.6 -Date: 2008-04-29 +Version: 0.0.7 +Date: 2008-08-23 Author: Carlo de Falco Maintainer: Carlo de Falco Title: SEmi Conductor Simulator in 1D Modified: trunk/octave-forge/extra/secs1d/INDEX =================================================================== --- trunk/octave-forge/extra/secs1d/INDEX 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/secs1d/INDEX 2008-08-24 16:19:14 UTC (rev 5260) @@ -21,3 +21,4 @@ Udriftdiffusion Umediaarmonica Uscharfettergummel + secs1d Modified: trunk/octave-forge/extra/secs2d/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/secs2d/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/secs2d/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: SECS2D -Version: 0.0.6 -Date: 2008-04-29 +Version: 0.0.7 +Date: 2008-08-23 Author: Carlo de Falco Maintainer: Carlo de Falco Title: SEmi Conductor Simulator in 2D Modified: trunk/octave-forge/extra/secs2d/INDEX =================================================================== --- trunk/octave-forge/extra/secs2d/INDEX 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/secs2d/INDEX 2008-08-24 16:19:14 UTC (rev 5260) @@ -40,6 +40,7 @@ Usubdomains2 Usubmesh Utemplogm + secs2d Finite Element matrix assembly functions Udriftdiffusion Ucomplap Modified: trunk/octave-forge/extra/soctcl/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/soctcl/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/soctcl/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: Tcl-Octave -Version: 0.1.6 -Date: 2008-04-29 +Version: 0.1.7 +Date: 2008-08-23 Author: Paul Kienzle Maintainer: Paul Kienzle Title: Tcl Interface to Octave Modified: trunk/octave-forge/extra/symband/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/symband/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/symband/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: SymBand -Version: 1.0.6 -Date: 2008-04-29 +Version: 1.0.7 +Date: 2008-08-23 Author: Andreas Stahel <And...@ht...> Maintainer: The Octave Community Title: Symmetric Banded Matrices Modified: trunk/octave-forge/extra/tsa/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/tsa/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/tsa/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: TSA -Version: 4.0 -Date: 2008-06-10 +Version: 4.0.0 +Date: 2008-08-23 Author: Alois Schloegl <a.s...@ie...> Maintainer: Alois Schloegl <a.s...@ie...> Title: Time Series Analysis Toolbox Modified: trunk/octave-forge/extra/xraylib/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/xraylib/DESCRIPTION 2008-08-24 16:17:40 UTC (rev 5259) +++ trunk/octave-forge/extra/xraylib/DESCRIPTION 2008-08-24 16:19:14 UTC (rev 5260) @@ -1,6 +1,6 @@ Name: Xraylib -Version: 1.0.6 -Date: 2008-04-29 +Version: 1.0.7 +Date: 2008-08-23 Author: Teemu Ikonen <tpi...@gm...> Maintainer: Teemu Ikonen <tpi...@gm...> Title: GNU Scientific Library This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-08-31 17:54:26
|
Revision: 5288 http://octave.svn.sourceforge.net/octave/?rev=5288&view=rev Author: hauberg Date: 2008-08-31 17:54:33 +0000 (Sun, 31 Aug 2008) Log Message: ----------- Update version number Modified Paths: -------------- trunk/octave-forge/extra/ad/DESCRIPTION trunk/octave-forge/extra/symband/DESCRIPTION Modified: trunk/octave-forge/extra/ad/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/ad/DESCRIPTION 2008-08-31 17:53:57 UTC (rev 5287) +++ trunk/octave-forge/extra/ad/DESCRIPTION 2008-08-31 17:54:33 UTC (rev 5288) @@ -1,5 +1,5 @@ Name: AD -Version: 1.0.3 +Version: 1.0.4 Date: 2008-08-23 Author: Thomas Kasper Maintainer: Thomas Kasper Modified: trunk/octave-forge/extra/symband/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/symband/DESCRIPTION 2008-08-31 17:53:57 UTC (rev 5287) +++ trunk/octave-forge/extra/symband/DESCRIPTION 2008-08-31 17:54:33 UTC (rev 5288) @@ -1,5 +1,5 @@ Name: SymBand -Version: 1.0.7 +Version: 1.0.8 Date: 2008-08-23 Author: Andreas Stahel <And...@ht...> Maintainer: The Octave Community This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2008-11-07 13:07:38
|
Revision: 5405 http://octave.svn.sourceforge.net/octave/?rev=5405&view=rev Author: cdf Date: 2008-11-07 13:07:33 +0000 (Fri, 07 Nov 2008) Log Message: ----------- new nurbs package Added Paths: ----------- trunk/octave-forge/extra/nurbs/ trunk/octave-forge/extra/nurbs/DESCRIPTION Added: trunk/octave-forge/extra/nurbs/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/nurbs/DESCRIPTION (rev 0) +++ trunk/octave-forge/extra/nurbs/DESCRIPTION 2008-11-07 13:07:33 UTC (rev 5405) @@ -0,0 +1,11 @@ +Name: Nurbs +Version: 1.0 +Date: 2008-11-06 +Author: Mark Spink, Daniel Claxton +Maintainer: Carlo de Falco +Title: Nurbs. +Description: Collection of routines for the creation, and manipulation of Non-Uniform Rational B-Splines (NURBS). +Depends: octave (>= 3.0.3) +Autoload: no +License: GPL version 2 or later +Url: http://octave.sf.net This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2009-05-01 06:58:01
|
Revision: 5748 http://octave.svn.sourceforge.net/octave/?rev=5748&view=rev Author: cdf Date: 2009-05-01 06:57:59 +0000 (Fri, 01 May 2009) Log Message: ----------- cleanup Modified Paths: -------------- trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m trunk/octave-forge/extra/bim/inst/BIM2Cpdegrad.m trunk/octave-forge/extra/bim/inst/BIM2Cunknownsonside.m trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m trunk/octave-forge/extra/bim/inst/BIM3Areaction.m trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m trunk/octave-forge/extra/bim/inst/BIM3Cunknownsonside.m trunk/octave-forge/extra/nurbs/inst/bspdegelev.m trunk/octave-forge/extra/nurbs/inst/bspderiv.m trunk/octave-forge/extra/nurbs/inst/bspeval.m trunk/octave-forge/extra/nurbs/inst/bspkntins.m trunk/octave-forge/extra/nurbs/inst/findspan.m trunk/octave-forge/extra/nurbs/inst/nrbruled.m trunk/octave-forge/extra/nurbs/src/low_level_functions.cc Modified: trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -36,7 +36,6 @@ ## Builds the Scharfetter-Gummel matrix for the ## discretization of the LHS ## of the equation: -## ## @iftex ## @tex ## $ - ( \alpha \gamma ( \eta u' - \vect{beta} u ))' = f $ Modified: trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -36,7 +36,6 @@ ## Builds the finite-element matrix for the ## discretization of the LHS ## of the equation: -## ## @iftex ## @tex ## $ -( \varepsilon \gamma ( u' ))' = f $ Modified: trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -36,7 +36,6 @@ ## Builds the Scharfetter-Gummel matrix for the ## discretization of the LHS ## of the equation: -## ## @iftex ## @tex ## $ -div ( \alpha \gamma ( \eta \vect{\nabla} u - \vect{beta} u )) = f $ Modified: trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -36,7 +36,6 @@ ## Builds the finite-element matrix for the ## discretization of the LHS ## of the equation: -## ## @iftex ## @tex ## $ -div ( \varepsilon \gamma ( \nabla u )) = f $ Modified: trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -31,7 +31,8 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{omesh}]} = BIM2Cmeshproperties(@var{imesh}) ## -## Creates an omesh structure starting from imesh. All the properties needed by BIM are added as fields. +## Compute mesh properties needed by the operator assenmbly routines and +## add the as fields to the mesh structure. ## ## Input: ## @itemize @minus Modified: trunk/octave-forge/extra/bim/inst/BIM2Cpdegrad.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Cpdegrad.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM2Cpdegrad.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -32,7 +32,7 @@ ## ## @deftypefn {Function File} {[@var{gx},@var{gy}]} = BIM2Cpdegrad(@var{mesh},@var{u}) ## -## Builds the P1 approximation of the gradient of the computed solution. +## Build the P1 approximation to the gradient of a computed solution. ## ## Input: ## @itemize @minus Modified: trunk/octave-forge/extra/bim/inst/BIM2Cunknownsonside.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Cunknownsonside.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM2Cunknownsonside.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -31,7 +31,7 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{nodelist}]} = BIM2Cunknownsonside(@var{mesh},@var{sidelist}) ## -## Returns the list of the mesh nodes that lie on the specified geometrical sides. +## List the mesh nodes that lie on the specified geometrical sides. ## ## Input: ## @itemize @minus Modified: trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -34,7 +34,6 @@ ## ## Builds the Laplacian matrix for the discretization of the LHS of the ## equation: -## ## @iftex ## @tex ## $ -div ( \alpha ( \eta \vect{\nabla} u ) $ Modified: trunk/octave-forge/extra/bim/inst/BIM3Areaction.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Areaction.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM3Areaction.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -34,7 +34,6 @@ ## ## Builds the mass matrix for the discretization of the LHS of the ## equation: -## ## @iftex ## @tex ## $ \delta \zeta u = f $ Modified: trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -31,7 +31,8 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{omesh}]} = BIM3Cmeshproperties(@var{imesh}) ## -## Creates an omesh structure starting from imesh. All the properties needed by BIM are added as fields. +## Compute mesh properties needed by the operator assenmbly routines and +## add the as fields to the mesh structure. ## ## Input: ## @itemize @minus Modified: trunk/octave-forge/extra/bim/inst/BIM3Cunknownsonside.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Cunknownsonside.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/bim/inst/BIM3Cunknownsonside.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -31,7 +31,7 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{nodelist}]} = BIM3Cunknownsonside(@var{mesh},@var{sidelist}) ## -## Returns the list of the mesh nodes that lie on the specified geometrical sides. +## List the mesh nodes that lie on the specified geometrical sides. ## ## Input: ## @itemize @minus Modified: trunk/octave-forge/extra/nurbs/inst/bspdegelev.m =================================================================== --- trunk/octave-forge/extra/nurbs/inst/bspdegelev.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/nurbs/inst/bspdegelev.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -16,10 +16,6 @@ function [ic,ik] = bspdegelev(d,c,k,t) % BSPDEGELEV: Degree elevate a univariate B-Spline. -% -% ------------------------------------------------------------------------- -% ADAPTATION of BSPDEGELEV from C Routine -% ------------------------------------------------------------------------- % % Calling Sequence: % Modified: trunk/octave-forge/extra/nurbs/inst/bspderiv.m =================================================================== --- trunk/octave-forge/extra/nurbs/inst/bspderiv.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/nurbs/inst/bspderiv.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -16,10 +16,6 @@ function [dc,dk] = bspderiv(d,c,k) % BSPDERIV: B-Spline derivative -% -% ------------------------------------------------------------------------- -% ADAPTATION of BSPDERIV from C Routine -% ------------------------------------------------------------------------- % % MATLAB SYNTAX: % Modified: trunk/octave-forge/extra/nurbs/inst/bspeval.m =================================================================== --- trunk/octave-forge/extra/nurbs/inst/bspeval.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/nurbs/inst/bspeval.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -16,10 +16,6 @@ function p = bspeval(d,c,k,u) % BSPEVAL: Evaluate B-Spline at parametric points -% -% ------------------------------------------------------------------------- -% ADAPTATION of BSPEVAL from C Routine -% ------------------------------------------------------------------------- % % Calling Sequence: % Modified: trunk/octave-forge/extra/nurbs/inst/bspkntins.m =================================================================== --- trunk/octave-forge/extra/nurbs/inst/bspkntins.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/nurbs/inst/bspkntins.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -17,10 +17,6 @@ % BSPKNTINS: Insert knots into a B-Spline % -% ------------------------------------------------------------------------- -% ADAPTATION of BSPKNTINS from C Routine -% ------------------------------------------------------------------------- -% % Calling Sequence: % % [ic,ik] = bspkntins(d,c,k,u) Modified: trunk/octave-forge/extra/nurbs/inst/findspan.m =================================================================== --- trunk/octave-forge/extra/nurbs/inst/findspan.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/nurbs/inst/findspan.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -17,10 +17,6 @@ % FINDSPAN Find the span of a B-Spline knot vector at a parametric point % -% ------------------------------------------------------------------------- -% ADAPTATION of FINDSPAN from C -% ------------------------------------------------------------------------- -% % Calling Sequence: % % s = findspan(n,p,u,U) Modified: trunk/octave-forge/extra/nurbs/inst/nrbruled.m =================================================================== --- trunk/octave-forge/extra/nurbs/inst/nrbruled.m 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/nurbs/inst/nrbruled.m 2009-05-01 06:57:59 UTC (rev 5748) @@ -15,8 +15,6 @@ function srf = nrbruled(crv1, crv2) -% -% % NRBRULED: Construct a ruled surface between two NURBS curves. % % Calling Sequence: Modified: trunk/octave-forge/extra/nurbs/src/low_level_functions.cc =================================================================== --- trunk/octave-forge/extra/nurbs/src/low_level_functions.cc 2009-05-01 05:46:02 UTC (rev 5747) +++ trunk/octave-forge/extra/nurbs/src/low_level_functions.cc 2009-05-01 06:57:59 UTC (rev 5748) @@ -39,12 +39,10 @@ // bspeval, bspderiv, findspan, basisfun // PKG_ADD: autoload ("bspeval", "low_level_functions.oct"); -DEFUN_DLD(bspeval, args, nargout,"\n\ - BSPEVAL: Evaluate B-Spline at parametric points\n \ -\n \ -\n \ -\n \ -\n \ +DEFUN_DLD(bspeval, args, nargout,"\ + BSPEVAL: Evaluate B-Spline at parametric points\n\ +\n\ +\n\ Calling Sequence:\n \ \n \ p = bspeval(d,c,k,u)\n \ @@ -110,10 +108,9 @@ // PKG_ADD: autoload ("bspderiv", "low_level_functions.oct"); DEFUN_DLD(bspderiv, args, nargout,"\n\ - BSPDERIV: B-Spline derivative\n \ -\n \ -\n \ -\n \ + BSPDERIV: B-Spline derivative\n\ +\n\ +\n\ Calling Sequence:\n \ \n \ [dc,dk] = bspderiv(d,c,k)\n \ @@ -208,6 +205,8 @@ // PKG_ADD: autoload ("findspan", "low_level_functions.oct"); DEFUN_DLD(findspan, args, nargout,"\ FINDSPAN: Find the span of a B-Spline knot vector at a parametric point\n \ +\n\ +\n\ Calling Sequence:\n \ \n \ s = findspan(n,p,u,U)\n \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2009-05-02 11:54:46
|
Revision: 5752 http://octave.svn.sourceforge.net/octave/?rev=5752&view=rev Author: cdf Date: 2009-05-02 11:54:35 +0000 (Sat, 02 May 2009) Log Message: ----------- address change Modified Paths: -------------- trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m trunk/octave-forge/extra/bim/inst/BIM1Areaction.m trunk/octave-forge/extra/bim/inst/BIM1Arhs.m trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m trunk/octave-forge/extra/bim/inst/BIM2Aboundarymass.m trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m trunk/octave-forge/extra/bim/inst/BIM2Areaction.m trunk/octave-forge/extra/bim/inst/BIM2Arhs.m trunk/octave-forge/extra/bim/inst/BIM2Cglobalflux.m trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m trunk/octave-forge/extra/bim/inst/BIM2Cpdegrad.m trunk/octave-forge/extra/bim/inst/BIM2Cunknowncoord.m trunk/octave-forge/extra/bim/inst/BIM2Cunknownsonside.m trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m trunk/octave-forge/extra/bim/inst/BIM3Areaction.m trunk/octave-forge/extra/bim/inst/BIM3Arhs.m trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m trunk/octave-forge/extra/bim/inst/BIM3Cunknownsonside.m trunk/octave-forge/extra/bim/inst/BIMUbern.m trunk/octave-forge/extra/bim/inst/BIMUlogm.m trunk/octave-forge/extra/fpl/inst/FPL2dxappenddata.m trunk/octave-forge/extra/fpl/inst/FPL2dxoutputdata.m trunk/octave-forge/extra/fpl/inst/FPL2dxoutputtimeseries.m trunk/octave-forge/extra/fpl/inst/FPL2pdequiver.m trunk/octave-forge/extra/fpl/inst/FPL2pdeshowmesh.m trunk/octave-forge/extra/fpl/inst/FPL2pdesurf.m trunk/octave-forge/extra/fpl/inst/FPL2ptcquiver.m trunk/octave-forge/extra/fpl/inst/FPL2ptcshowmesh.m trunk/octave-forge/extra/fpl/inst/FPL2ptcsurf.m trunk/octave-forge/extra/fpl/inst/FPL2trspdesurf.m trunk/octave-forge/extra/fpl/inst/FPL2trsptcsurf.m trunk/octave-forge/extra/fpl/inst/FPL3dxoutputfield.m trunk/octave-forge/extra/fpl/inst/FPL3dxoutputmesh.m trunk/octave-forge/extra/msh/inst/MSH2Mdisplacementsmoothing.m trunk/octave-forge/extra/msh/inst/MSH2Mequalizemesh.m trunk/octave-forge/extra/msh/inst/MSH2Mgeomprop.m trunk/octave-forge/extra/msh/inst/MSH2Mgmsh.m trunk/octave-forge/extra/msh/inst/MSH2Mjigglemesh.m trunk/octave-forge/extra/msh/inst/MSH2Mjoinstructm.m trunk/octave-forge/extra/msh/inst/MSH2Mmeshalongspline.m trunk/octave-forge/extra/msh/inst/MSH2Mnodesonsides.m trunk/octave-forge/extra/msh/inst/MSH2Mstructmesh.m trunk/octave-forge/extra/msh/inst/MSH2Msubmesh.m trunk/octave-forge/extra/msh/inst/MSH2Mtopprop.m trunk/octave-forge/extra/msh/inst/MSH3Mgeomprop.m trunk/octave-forge/extra/msh/inst/MSH3Mgmsh.m trunk/octave-forge/extra/msh/inst/MSH3Mjoinstructm.m trunk/octave-forge/extra/msh/inst/MSH3Mnodesonfaces.m trunk/octave-forge/extra/msh/inst/MSH3Mstructmesh.m trunk/octave-forge/extra/msh/inst/MSH3Msubmesh.m trunk/octave-forge/extra/ocs/inst/ASM/ASMbuildsystem.m trunk/octave-forge/extra/ocs/inst/ASM/ASMinitsystem.m trunk/octave-forge/extra/ocs/inst/NLS/NLSnewtonraphson.m trunk/octave-forge/extra/ocs/inst/NLS/NLSstationary.m trunk/octave-forge/extra/ocs/inst/PRS/PRSIFFparse.m trunk/octave-forge/extra/ocs/inst/SBN/Mcapacitors.m trunk/octave-forge/extra/ocs/inst/SBN/Mcurrentsources.m trunk/octave-forge/extra/ocs/inst/SBN/Mdiode.m trunk/octave-forge/extra/ocs/inst/SBN/Minductors.m trunk/octave-forge/extra/ocs/inst/SBN/Mnmoscap.m trunk/octave-forge/extra/ocs/inst/SBN/Mnmosfet.m trunk/octave-forge/extra/ocs/inst/SBN/Mpdesympnjunct.m trunk/octave-forge/extra/ocs/inst/SBN/Mpmosfet.m trunk/octave-forge/extra/ocs/inst/SBN/Mresistors.m trunk/octave-forge/extra/ocs/inst/SBN/Mschichmanhodgesmosfet.m trunk/octave-forge/extra/ocs/inst/SBN/Mvoltagesources.m trunk/octave-forge/extra/ocs/inst/TST/TSTBWEFUNJAC0.m trunk/octave-forge/extra/ocs/inst/TST/TSTBWEFUNJAC1.m trunk/octave-forge/extra/ocs/inst/TST/TSTBWEFUNRES0.m trunk/octave-forge/extra/ocs/inst/TST/TSTBWEFUNRES1.m trunk/octave-forge/extra/ocs/inst/TST/TSTBWEFUNUP1.m trunk/octave-forge/extra/ocs/inst/TST/TSTDASPKFUNJAC.m trunk/octave-forge/extra/ocs/inst/TST/TSTDASPKFUNRES.m trunk/octave-forge/extra/ocs/inst/TST/TSTODEPKGFUNJAC.m trunk/octave-forge/extra/ocs/inst/TST/TSTODEPKGFUNMASS.m trunk/octave-forge/extra/ocs/inst/TST/TSTODEPKGFUNRES.m trunk/octave-forge/extra/ocs/inst/TST/TSTTHETAFUNJAC1.m trunk/octave-forge/extra/ocs/inst/TST/TSTTHETAFUNRES1.m trunk/octave-forge/extra/ocs/inst/TST/TSTbweuler.m trunk/octave-forge/extra/ocs/inst/TST/TSTbweulernr.m trunk/octave-forge/extra/ocs/inst/TST/TSTdaspk.m trunk/octave-forge/extra/ocs/inst/TST/TSTodepkg.m trunk/octave-forge/extra/ocs/inst/TST/TSTthetamethod.m trunk/octave-forge/extra/ocs/inst/UTL/UTLplotbyname.m trunk/octave-forge/extra/ocs/inst/UTL/UTLsbnserver.m Added Paths: ----------- trunk/octave-forge/extra/bugfix-3.0.5/ trunk/octave-forge/extra/bugfix-3.0.5/COPYING trunk/octave-forge/extra/bugfix-3.0.5/DESCRIPTION trunk/octave-forge/extra/bugfix-3.0.5/INDEX trunk/octave-forge/extra/bugfix-3.0.5/inst/ trunk/octave-forge/extra/bugfix-3.0.5/inst/intersect.m Modified: trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM1Areaction.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM1Areaction.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM1Areaction.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM1Arhs.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM1Arhs.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM1Arhs.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM2Aboundarymass.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Aboundarymass.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM2Aboundarymass.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM2Areaction.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Areaction.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM2Areaction.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM2Arhs.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Arhs.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM2Arhs.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM2Cglobalflux.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Cglobalflux.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM2Cglobalflux.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM2Cpdegrad.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Cpdegrad.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM2Cpdegrad.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM2Cunknowncoord.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Cunknowncoord.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM2Cunknowncoord.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM2Cunknownsonside.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Cunknownsonside.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM2Cunknownsonside.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM3Areaction.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Areaction.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM3Areaction.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM3Arhs.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Arhs.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM3Arhs.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIM3Cunknownsonside.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Cunknownsonside.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIM3Cunknownsonside.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIMUbern.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIMUbern.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIMUbern.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Modified: trunk/octave-forge/extra/bim/inst/BIMUlogm.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIMUlogm.m 2009-05-02 11:16:09 UTC (rev 5751) +++ trunk/octave-forge/extra/bim/inst/BIMUlogm.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -1,4 +1,4 @@ -## Copyright (C) 2007,2008 Carlo de Falco, Massimiliano Culpo +## Copyright (C) 2007,2008,2009 Carlo de Falco, Massimiliano Culpo ## ## BIM - Box Integration Method Package for Octave ## @@ -18,9 +18,7 @@ ## ## AUTHORS: ## -## Carlo de Falco -## Dublin City University -## Glasnevin, Dublin 9, Ireland +## Carlo de Falco <cdf _AT_ users.sourceforge.net> ## ## Culpo Massimiliano ## Bergische Universitaet Wuppertal Added: trunk/octave-forge/extra/bugfix-3.0.5/COPYING =================================================================== --- trunk/octave-forge/extra/bugfix-3.0.5/COPYING (rev 0) +++ trunk/octave-forge/extra/bugfix-3.0.5/COPYING 2009-05-02 11:54:35 UTC (rev 5752) @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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 3 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, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Added: trunk/octave-forge/extra/bugfix-3.0.5/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/bugfix-3.0.5/DESCRIPTION (rev 0) +++ trunk/octave-forge/extra/bugfix-3.0.5/DESCRIPTION 2009-05-02 11:54:35 UTC (rev 5752) @@ -0,0 +1,11 @@ +Name: bugfix-3.0.5 +Version: 1.0 +Date: 2009-04-14 +Author: The Community +Maintainer: The Community +Title: Minor Bug Fixes for the 3.0.5 release. +Description: This package overrides some functions included with the 3.0.5 release that contain minor bugs. +Depends: octave (= 3.0.5) +Autoload: yes +License: GPL version 2 or later +Url: http://octave.sf.net Added: trunk/octave-forge/extra/bugfix-3.0.5/INDEX =================================================================== --- trunk/octave-forge/extra/bugfix-3.0.5/INDEX (rev 0) +++ trunk/octave-forge/extra/bugfix-3.0.5/INDEX 2009-05-02 11:54:35 UTC (rev 5752) @@ -0,0 +1,3 @@ +bugfix-3.0.5 >> Minor Bug Fixes for the 3.0.5 release. +Functions from script/set + intersect \ No newline at end of file Added: trunk/octave-forge/extra/bugfix-3.0.5/inst/intersect.m =================================================================== --- trunk/octave-forge/extra/bugfix-3.0.5/inst/intersect.m (rev 0) +++ trunk/octave-forge/extra/bugfix-3.0.5/inst/intersect.m 2009-05-02 11:54:35 UTC (rev 5752) @@ -0,0 +1,111 @@ +## Copyright (C) 2008, 2009 Jaroslav Hajek +## Copyright (C) 2000, 2006, 2007 Paul Kienzle +## +## This file is part of Octave. +## +## Octave 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 3 of the License, or (at +## your option) any later version. +## +## Octave 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 Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} intersect (@var{a}, @var{b}) +## @deftypefnx {Function File} {[@var{c}, @var{ia}, @var{ib}] =} intersect (@var{a}, @var{b}) +## +## Return the elements in both @var{a} and @var{b}, sorted in ascending +## order. If @var{a} and @var{b} are both column vectors return a column +## vector, otherwise return a row vector. +## +## Return index vectors @var{ia} and @var{ib} such that @code{a(ia)==c} and +## @code{b(ib)==c}. +## +## @end deftypefn +## @seealso{unique, union, setxor, setdiff, ismember} + +function [c, ia, ib] = intersect (a, b, varargin) + + if (nargin < 2 || nargin > 3) + ... [truncated message content] |
From: <ha...@us...> - 2009-05-06 20:08:22
|
Revision: 5777 http://octave.svn.sourceforge.net/octave/?rev=5777&view=rev Author: hauberg Date: 2009-05-06 20:08:13 +0000 (Wed, 06 May 2009) Log Message: ----------- Add categories Modified Paths: -------------- trunk/octave-forge/extra/bugfix-3.0.5/DESCRIPTION trunk/octave-forge/extra/nurbs/DESCRIPTION Modified: trunk/octave-forge/extra/bugfix-3.0.5/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/bugfix-3.0.5/DESCRIPTION 2009-05-06 18:44:42 UTC (rev 5776) +++ trunk/octave-forge/extra/bugfix-3.0.5/DESCRIPTION 2009-05-06 20:08:13 UTC (rev 5777) @@ -5,6 +5,7 @@ Maintainer: The Community Title: Minor Bug Fixes for the 3.0.5 release. Description: This package overrides some functions included with the 3.0.5 release that contain minor bugs. +Categories: stable Depends: octave (= 3.0.5) Autoload: yes License: GPL version 2 or later Modified: trunk/octave-forge/extra/nurbs/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/nurbs/DESCRIPTION 2009-05-06 18:44:42 UTC (rev 5776) +++ trunk/octave-forge/extra/nurbs/DESCRIPTION 2009-05-06 20:08:13 UTC (rev 5777) @@ -5,6 +5,7 @@ Maintainer: Carlo de Falco Title: Nurbs. Description: Collection of routines for the creation, and manipulation of Non-Uniform Rational B-Splines (NURBS). +Categories: splines Depends: octave (>= 3.0.3) Autoload: no License: GPL version 2 or later This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cu...@us...> - 2009-05-10 07:26:40
|
Revision: 5795 http://octave.svn.sourceforge.net/octave/?rev=5795&view=rev Author: culpo Date: 2009-05-10 07:26:34 +0000 (Sun, 10 May 2009) Log Message: ----------- Fixed a few typos plus minor errors. Modified Paths: -------------- trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m trunk/octave-forge/extra/bim/inst/BIM3Areaction.m trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m trunk/octave-forge/extra/ocs/inst/TST/TSTbweuler.m Modified: trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m 2009-05-10 07:23:43 UTC (rev 5794) +++ trunk/octave-forge/extra/bim/inst/BIM1Aadvdiff.m 2009-05-10 07:26:34 UTC (rev 5795) @@ -34,6 +34,7 @@ ## Builds the Scharfetter-Gummel matrix for the ## discretization of the LHS ## of the equation: +## ## @iftex ## @tex ## $ - ( \alpha \gamma ( \eta u' - \vect{beta} u ))' = f $ Modified: trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m 2009-05-10 07:23:43 UTC (rev 5794) +++ trunk/octave-forge/extra/bim/inst/BIM1Alaplacian.m 2009-05-10 07:26:34 UTC (rev 5795) @@ -34,6 +34,7 @@ ## Builds the finite-element matrix for the ## discretization of the LHS ## of the equation: +## ## @iftex ## @tex ## $ -( \varepsilon \gamma ( u' ))' = f $ Modified: trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m 2009-05-10 07:23:43 UTC (rev 5794) +++ trunk/octave-forge/extra/bim/inst/BIM2Aadvdiff.m 2009-05-10 07:26:34 UTC (rev 5795) @@ -34,6 +34,7 @@ ## Builds the Scharfetter-Gummel matrix for the ## discretization of the LHS ## of the equation: +## ## @iftex ## @tex ## $ -div ( \alpha \gamma ( \eta \vect{\nabla} u - \vect{beta} u )) = f $ Modified: trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m 2009-05-10 07:23:43 UTC (rev 5794) +++ trunk/octave-forge/extra/bim/inst/BIM2Alaplacian.m 2009-05-10 07:26:34 UTC (rev 5795) @@ -34,6 +34,7 @@ ## Builds the finite-element matrix for the ## discretization of the LHS ## of the equation: +## ## @iftex ## @tex ## $ -div ( \varepsilon \gamma ( \nabla u )) = f $ Modified: trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m 2009-05-10 07:23:43 UTC (rev 5794) +++ trunk/octave-forge/extra/bim/inst/BIM2Cmeshproperties.m 2009-05-10 07:26:34 UTC (rev 5795) @@ -29,8 +29,8 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{omesh}]} = BIM2Cmeshproperties(@var{imesh}) ## -## Compute mesh properties needed by the operator assenmbly routines and -## add the as fields to the mesh structure. +## Compute mesh properties needed by the operator assembly routines and +## add them as fields to the mesh structure. ## ## Input: ## @itemize @minus Modified: trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m 2009-05-10 07:23:43 UTC (rev 5794) +++ trunk/octave-forge/extra/bim/inst/BIM3Alaplacian.m 2009-05-10 07:26:34 UTC (rev 5795) @@ -32,6 +32,7 @@ ## ## Builds the Laplacian matrix for the discretization of the LHS of the ## equation: +## ## @iftex ## @tex ## $ -div ( \alpha ( \eta \vect{\nabla} u ) $ Modified: trunk/octave-forge/extra/bim/inst/BIM3Areaction.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Areaction.m 2009-05-10 07:23:43 UTC (rev 5794) +++ trunk/octave-forge/extra/bim/inst/BIM3Areaction.m 2009-05-10 07:26:34 UTC (rev 5795) @@ -32,6 +32,7 @@ ## ## Builds the mass matrix for the discretization of the LHS of the ## equation: +## ## @iftex ## @tex ## $ \delta \zeta u = f $ Modified: trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m =================================================================== --- trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m 2009-05-10 07:23:43 UTC (rev 5794) +++ trunk/octave-forge/extra/bim/inst/BIM3Cmeshproperties.m 2009-05-10 07:26:34 UTC (rev 5795) @@ -29,8 +29,8 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {[@var{omesh}]} = BIM3Cmeshproperties(@var{imesh}) ## -## Compute mesh properties needed by the operator assenmbly routines and -## add the as fields to the mesh structure. +## Compute mesh properties needed by the operator assembly routines and +## add them as fields to the mesh structure. ## ## Input: ## @itemize @minus Modified: trunk/octave-forge/extra/ocs/inst/TST/TSTbweuler.m =================================================================== --- trunk/octave-forge/extra/ocs/inst/TST/TSTbweuler.m 2009-05-10 07:23:43 UTC (rev 5794) +++ trunk/octave-forge/extra/ocs/inst/TST/TSTbweuler.m 2009-05-10 07:26:34 UTC (rev 5795) @@ -84,7 +84,7 @@ endif - [A0,B,C,outstruct] = ASMinitsystem(outstruct,x,t(1)); + [A0,B,C,outstruct] = ASMinitsystem(outstruct,x); if (nargin > 8) JAC = @(x) dae_fun{1}(outstruct,x,t(1),B); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2009-05-12 17:29:19
|
Revision: 5810 http://octave.svn.sourceforge.net/octave/?rev=5810&view=rev Author: hauberg Date: 2009-05-12 17:29:10 +0000 (Tue, 12 May 2009) Log Message: ----------- Add first revision of generate_html package Added Paths: ----------- trunk/octave-forge/extra/generate_html/ trunk/octave-forge/extra/generate_html/COPYING trunk/octave-forge/extra/generate_html/DESCRIPTION trunk/octave-forge/extra/generate_html/INDEX trunk/octave-forge/extra/generate_html/inst/ trunk/octave-forge/extra/generate_html/inst/generate_alphabet.m trunk/octave-forge/extra/generate_html/inst/generate_html_manual.m trunk/octave-forge/extra/generate_html/inst/generate_operators.m trunk/octave-forge/extra/generate_html/inst/generate_package_html.m trunk/octave-forge/extra/generate_html/inst/get_html_options.m trunk/octave-forge/extra/generate_html/inst/html_help_text.m trunk/octave-forge/extra/generate_html/inst/private/ trunk/octave-forge/extra/generate_html/inst/private/get_header_title_and_footer.m trunk/octave-forge/extra/generate_html/inst/private/get_overview_filename.m trunk/octave-forge/extra/generate_html/inst/private/get_overview_header_title_and_footer.m trunk/octave-forge/extra/generate_html/inst/private/get_root.m trunk/octave-forge/extra/generate_html/inst/private/get_texi_conf.m trunk/octave-forge/extra/generate_html/inst/private/get_txi_files.m trunk/octave-forge/extra/generate_html/inst/private/mk_chapter_dir.m trunk/octave-forge/extra/generate_html/inst/private/mk_function_dir.m trunk/octave-forge/extra/generate_html/inst/texi2html.m trunk/octave-forge/extra/generate_html/inst/txi2index.m trunk/octave-forge/extra/generate_html/inst/txi2reference.m Added: trunk/octave-forge/extra/generate_html/COPYING =================================================================== --- trunk/octave-forge/extra/generate_html/COPYING (rev 0) +++ trunk/octave-forge/extra/generate_html/COPYING 2009-05-12 17:29:10 UTC (rev 5810) @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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 3 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, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Added: trunk/octave-forge/extra/generate_html/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/generate_html/DESCRIPTION (rev 0) +++ trunk/octave-forge/extra/generate_html/DESCRIPTION 2009-05-12 17:29:10 UTC (rev 5810) @@ -0,0 +1,13 @@ +Name: generate_html +Version: 0.0.9 +Date: 2009-02-07 +Author: Søren Hauberg +Maintainer: Søren Hauberg +Title: Generate HTML web page from help texts +Description: This package provides functions for generating HTML pages that + contain the help texts for a set of functions. The package is designed to be + as general as possible, but also contains convenience functions for generating + a set of pages for entire packages. +SystemRequirements: makeinfo +License: GPL version 3 or later + Added: trunk/octave-forge/extra/generate_html/INDEX =================================================================== --- trunk/octave-forge/extra/generate_html/INDEX (rev 0) +++ trunk/octave-forge/extra/generate_html/INDEX 2009-05-12 17:29:10 UTC (rev 5810) @@ -0,0 +1,12 @@ +generate_html >> Generate HTML web page from help texts +Single function functions + html_help_text +Package functions + generate_package_html + get_html_options + generate_html_manual +Utility Functions + txi2index + txi2reference + texi2html + Added: trunk/octave-forge/extra/generate_html/inst/generate_alphabet.m =================================================================== --- trunk/octave-forge/extra/generate_html/inst/generate_alphabet.m (rev 0) +++ trunk/octave-forge/extra/generate_html/inst/generate_alphabet.m 2009-05-12 17:29:10 UTC (rev 5810) @@ -0,0 +1,105 @@ +## Copyright (C) 2008 Soren Hauberg +## +## 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 3 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; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} generate_alphabet (@var{directory}, @var{data_file}, @ +## @var{root}, @var{options}) +## @end deftypefn + +function generate_alphabet (directory, data_file, root, options = struct ()) + ## Check input + if (!ischar (directory)) + error ("generate_alphabet: first input argument must be a string"); + endif + + if (!ischar (data_file)) + error ("generate_alphabet: second input argument must be a string"); + endif + + if (!ischar (root)) + error ("generate_alphabet: third input argument must be a string"); + endif + + ## If options is a string, call get_html_options + if (ischar (options)) + options = get_html_options (options); + elseif (!isstruct (options)) + error ("generate_alphabet: fourth input argument must be a string or a structure"); + endif + + ## Load data + data = load (data_file); + data = data.functions; + + ## Sort data + data = sort (data); + + ## Convert data to lower case but also keep the original in memory + ldata = lower (data); + + ## Iterate over each function + ## First we find the first function that starts with 'a' + for a = 1:length (data) + if (ldata {a}(1) >= "a") + break; + endif + endfor + + ## Then we iterate over each function until we get something that doesn't start with 'z' + current = data {a}(1); + [fid, footer] = new_file (directory, current, options); + for idx = a:length (data) + ## Are we still working on the same file + if (ldata {idx}(1) != current) + fprintf (fid, "</div\n%s", footer); + fclose (fid); + current = ldata {idx}(1); + [fid, footer] = new_file (directory, current, options); + endif + + ## Write the actual function to the file + fun = data {idx}; + fprintf (fid, "<div class=\"func\"><b><a href=\"%s/function/%s.html\">%s</a></b></div>\n", + root, fun, fun); + try + sentence = get_first_help_sentence (fun, 200); + catch + warning ("Marking '%s' as not implemented", fun); + sentence = "Not implemented"; + end_try_catch + fprintf (fid, "<div class=\"ftext\">%s</div>\n", sentence); + endfor + + fprintf (fid, "</div\n%s", footer); + fclose (fid); +endfunction + +function [fid, footer] = new_file (directory, current, options) + current = upper (current); + filename = fullfile (directory, sprintf ("%s.html", current)); + fid = fopen (filename, "w"); + if (fid <= 0) + error ("generate_alphabet: could not open '%s' for writing", filename); + endif + + options.body_command = 'onload="javascript:fix_top_menu (); javascript:alphabetical_menu ();"'; + title = sprintf ("Alphabetical List of Functions: %s", current); + [header, title, footer] = get_overview_header_title_and_footer (options, title, "../"); + + fprintf (fid, "%s\n", header); + fprintf (fid, "<h2><a name=\"%s\">%s</a></h2>\n<div>\n", current, current); +endfunction + Added: trunk/octave-forge/extra/generate_html/inst/generate_html_manual.m =================================================================== --- trunk/octave-forge/extra/generate_html/inst/generate_html_manual.m (rev 0) +++ trunk/octave-forge/extra/generate_html/inst/generate_html_manual.m 2009-05-12 17:29:10 UTC (rev 5810) @@ -0,0 +1,130 @@ +## Copyright (C) 2008 Soren Hauberg +## +## 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 3 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; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} generate_html_manual (@var{srcdir}, @var{outdir}) +## @end deftypefn + +function generate_html_manual (srcdir, outdir = "manual", options = struct ()) + ## Check input + if (nargin == 0) + print_usage (); + endif + + if (!ischar (srcdir)) + error ("generate_html_manual: first input argument must be a string"); + endif + + if (!ischar (outdir)) + error ("generate_html_manual: second input argument must be a string"); + endif + + ## If options is a string, call get_html_options + if (ischar (options)) + options = get_html_options (options); + elseif (!isstruct (options)) + error ("generate_html_manual: third input argument must be a string or a structure"); + endif + + ## Create directories + if (!exist (outdir, "dir")) + mkdir (outdir); + endif + + chapter_dir = mk_chapter_dir (outdir, options); + [fun_dir, full_fun_dir] = mk_function_dir (outdir, options); + + ds_handler = @(fun) docstring_handler (fun, fun_dir); + + ## Get file list + file_list = get_txi_files (srcdir); + txi_dir = fileparts (file_list {1}); + + texi_header = sprintf ("%s\n", get_texi_conf (srcdir)); + + ## Copy images from Octave build + txi_dir = fullfile (srcdir, "doc", "interpreter"); + pngs = fullfile (txi_dir, "*.png"); + copyfile (pngs, "."); + + ## Set javascript startup + if (!isfield (options, "body_command")) + if (isfield (options, "manual_body_cmd")) + options.body_command = options.manual_body_cmd; + else + options.body_command = ""; # XXX: do we need this? + endif + endif + + ## Process each file + for k = 1:length (file_list) + file = file_list {k}; + [notused, name] = fileparts (file); + + text = txi2reference (file, ds_handler); + + text = strcat (texi_header, text); + + ## Remove numbers from headings as this has been broken since we handle + ## each chapter as a seperate file + text = strrep (text, "@chapter", "@unnumbered"); + text = strrep (text, "@appendix", "@unnumbered"); + text = strrep (text, "@section", "@unnumberedsec"); + text = strrep (text, "@subsection", "@unnumberedsubsec"); + text = strrep (text, "@subsubsection", "@unnumberedsubsubsec"); + + ## Make sure any @include's work + include = "@include "; + include_with_path = sprintf ("@include %s%s", txi_dir, filesep ()); + text = strrep (text, include, include_with_path); + + ## Add 'op' index + text = strcat ("@defindex op\n\n", text); + + ## Convert to HTML and write to disc + [header, body, footer] = texi2html (text, options, get_root (outdir, chapter_dir)); + + fid = fopen (fullfile (chapter_dir, sprintf ("%s.html", name)), "w"); + fprintf (fid, "%s\n%s\n%s\n", header, body, footer); + fclose (fid); + endfor + + ## Move images into the chapter dir + movefile ("*.png", chapter_dir); + + ################################################### + ## Generate reference for individual functions ## + ################################################### + + ## Get INDEX structure + index = txi2index (srcdir); + + ## Generate the documentation + root = get_root (outdir, full_fun_dir); + for k = 1:length (index) + if (!isempty (index {k})) + printf ("Chapter: %s\n", index {k}.name); fflush (stdout); + generate_package_html (index {k}, full_fun_dir, :, options, root); + %reference = txi2reference (index {k}.filename); + endif + endfor +endfunction + +function retval = docstring_handler (fun, fun_dir) + retval = sprintf ("@ifhtml\n@html\n<div class='seefun'>See <a href='../%s/%s.html'>%s</a></div>\n@end html\n@end ifhtml\n", + fun_dir, fun, fun); +endfunction + Added: trunk/octave-forge/extra/generate_html/inst/generate_operators.m =================================================================== --- trunk/octave-forge/extra/generate_html/inst/generate_operators.m (rev 0) +++ trunk/octave-forge/extra/generate_html/inst/generate_operators.m 2009-05-12 17:29:10 UTC (rev 5810) @@ -0,0 +1,114 @@ +## Copyright (C) 2008 Soren Hauberg +## +## 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 3 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; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} generate_operators (@var{name}, @var{options}) +## @end deftypefn + +function generate_operators (name, options = struct ()) + ## Check input + if (!ischar (name)) + error ("generate_operators: first input argument must be a string"); + endif + + ## If options is a string, call get_html_options + if (ischar (options)) + options = get_html_options (options); + elseif (!isstruct (options)) + error ("generate_operators: second input argument must be a string or a structure"); + endif + + ## Generate html + title = "Operators and Keywords"; + options.body_command = 'onload="javascript:fix_top_menu (); javascript:alphabetical_menu ();"'; + [header, title, footer] = get_overview_header_title_and_footer (options, title, "../"); + + fid = fopen (name, "w"); + if (fid < 0) + error ("generate_operators: couldn't open file for writing"); + endif + + fprintf (fid, "%s\n", header); + + fprintf (fid, "<h2 class=\"tbdesc\">Operators</h2>\n\n"); + write_list (__operators__, fid); + + fprintf (fid, "<h2 class=\"tbdesc\">Keywords</h2>\n\n"); + write_list (__keywords__, fid); + + fprintf (fid, "\n%s\n", footer); + fclose (fid); +endfunction + +function write_list (list, fid) + for k = 1:length (list) + elem = list {k}; + [text, format] = get_help_text (elem); + if (strcmp (format, "texinfo")) + text = strip_defs (text); + text = __makeinfo__ (text, "plain text"); + endif + fprintf (fid, "<div class=\"func\"><b>%s</b></div>\n", elem); + fprintf (fid, "<div class=\"ftext\">%s</div>\n", text); # XXX: don't use text + endfor +endfunction + +function text = strip_defs (text) + ## Lines ending with "@\n" are continuation lines, so they should be concatenated + ## with the following line. + text = strrep (text, "@\n", " "); + + ## Find, and remove, lines that start with @def. This should remove things + ## such as @deftypefn, @deftypefnx, @defvar, etc. + keep = true (size (text)); + def_idx = strfind (text, "@def"); + if (!isempty (def_idx)) + endl_idx = find (text == "\n"); + for k = 1:length (def_idx) + endl = endl_idx (find (endl_idx > def_idx (k), 1)); + if (isempty (endl)) + keep (def_idx (k):end) = false; + else + keep (def_idx (k):endl) = false; + endif + endfor + + ## Remove the @end ... that corresponds to the @def we removed above + def1 = def_idx (1); + space_idx = find (text == " "); + space_idx = space_idx (find (space_idx > def1, 1)); + bracket_idx = find (text == "{" | text == "}"); + bracket_idx = bracket_idx (find (bracket_idx > def1, 1)); + if (isempty (space_idx) && isempty (bracket_idx)) + error ("generate_operators: couldn't parse texinfo"); + endif + sep_idx = min (space_idx, bracket_idx); + def_type = text (def1+1:sep_idx-1); + + end_idx = strfind (text, sprintf ("@end %s", def_type)); + if (isempty (end_idx)) + error ("generate_operators: couldn't parse texinfo"); + endif + endl = endl_idx (find (endl_idx > end_idx, 1)); + if (isempty (endl)) + keep (end_idx:end) = false; + else + keep (end_idx:endl) = false; + endif + + text = text (keep); + endif +endfunction Added: trunk/octave-forge/extra/generate_html/inst/generate_package_html.m =================================================================== --- trunk/octave-forge/extra/generate_html/inst/generate_package_html.m (rev 0) +++ trunk/octave-forge/extra/generate_html/inst/generate_package_html.m 2009-05-12 17:29:10 UTC (rev 5810) @@ -0,0 +1,174 @@ +## Copyright (C) 2008 Soren Hauberg +## +## 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 3 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; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} generate_package_html (@var{name}, @var{outdir}, @var{options}) +## Generate @t{HTML} documentation for a package. +## +## The function reads information about package @var{name} using the +## package system. This is then used to generate bunch of +## @t{HTML} files; one for each function in the package, and one overview +## page. The files are all placed in the directory @var{outdir}, which defaults +## to the current directory. The @var{options} structure is used to control +## the design of the web pages. +## +## As an example, the following code generates the web pages for the @t{image} +## package, with a design suitable for the @t{Octave-Forge} project. +## +## @example +## options = get_html_options ("octave-forge"); +## generate_package_html ("image", "image_html", options); +## @end example +## +## The resulting files will be available in the @t{"image_html"} directory. The +## overview page will be called @t{"image_html/image_overview.html"}. +## +## As a convenience, if @var{options} is a string, a structure will +## be generated by calling @code{get_html_options}. This means the above +## example can be reduced to the following. +## +## @example +## generate_package_html ("image", "image_html", "octave-forge"); +## @end example +## +## It should be noted that the function only works for installed packages. +## @seealso{get_html_options} +## @end deftypefn + +function generate_package_html (name, outdir = ".", fundir = outdir, options = struct (), root = "") + ## Check input + if (ischar (name)) + pkg ("load", name); + desc = pkg ("describe", name){1}; + elseif (isstruct (name)) + desc = name; + else + error (["generate_package_html: first input must either be the name of a ", \ + "package, or a structure giving its description."]); + endif + + if (!ischar (outdir)) + error ("generate_package_html: second input argument must be a string"); + endif + + if (!ischar (fundir)) + error ("generate_package_html: third input argument must be a string"); + endif + + ## Create output directory if needed + if (!exist (outdir, "dir")) + mkdir (outdir); + endif + + if (!exist (fundir, "dir")) + mkdir (fundir); + endif + + ## If options is a string, call get_html_options + if (ischar (options)) + options = get_html_options (options); + elseif (!isstruct (options)) + error ("generate_package_html: fourth input argument must be a string or a structure"); + endif + + ################################################## + ## Generate html pages for individual functions ## + ################################################## + + ## Set javascript startup + if (!isfield (options, "body_command")) + if (isfield (options, "pack_body_cmd")) + options.body_command = options.pack_body_cmd; + else + options.body_command = ""; + endif + endif + + num_categories = length (desc.provides); + anchors = implemented = cell (1, num_categories); + for k = 1:num_categories + F = desc.provides {k}.functions; + category = desc.provides {k}.category; + anchors {k} = strrep (category, " ", ""); # anchor names + + ## For each function in category + num_functions = length (F); + implemented {k} = cell (1, num_functions); + for l = 1:num_functions + fun = F {l}; + outname = fullfile (fundir, sprintf ("%s.html", fun)); + try + html_help_text (fun, outname, options, root); + implemented {k}{l} = true; + catch + warning ("marking '%s' as not implemented", fun); + implemented {k}{l} = false; + end_try_catch + endfor + endfor + + ######################### + ## Write overview file ## + ######################### + overview_filename = get_overview_filename (options, desc.name); + + fid = fopen (fullfile (outdir, overview_filename), "w"); + if (fid < 0) + error ("generate_package_html: couldn't open overview file for writing"); + endif + + [header, title, footer] = get_overview_header_title_and_footer (options, desc.name, root); + + fprintf (fid, "%s\n", header); + fprintf (fid, "<h2 class=\"tbdesc\">%s</h2>\n\n", desc.name); + + fprintf (fid, " <div class=\"package_description\">\n"); + fprintf (fid, " %s\n", desc.description); + fprintf (fid, " </div>\n\n"); + + fprintf (fid, " <ul>\n"); + for k = 1:num_categories + category = desc.provides {k}.category; + fprintf (fid, " <li><a href=\"#%s\">%s</a></li>\n", anchors {k}, category); + endfor + fprintf (fid, " </ul>\n\n"); + + ## Generate function list by category + for k = 1:num_categories + F = desc.provides {k}.functions; + category = desc.provides {k}.category; + fprintf (fid, " <h3 class=\"category\"><a name=\"%s\">%s</a></h3>\n\n", + anchors {k}, category); + + ## For each function in category + for l = 1:length (F) + fun = F {l}; + if (implemented {k}{l}) + link = sprintf ("%s/%s/%s.html", root, fundir, fun); + fprintf (fid, " <div class=\"func\"><b><a href=\"%s\">%s</a></b></div>\n", + link, fun); + fprintf (fid, " <div class=\"ftext\">%s</div>\n\n", + get_first_help_sentence (fun, 200)); + else + fprintf (fid, " <div class=\"func\"><b>%s</b></div>\n", fun); + fprintf (fid, " <div class=\"ftext\">Not implemented.</div>\n\n"); + endif + endfor + endfor + + fprintf (fid, "\n%s\n", footer); + fclose (fid); +endfunction Added: trunk/octave-forge/extra/generate_html/inst/get_html_options.m =================================================================== --- trunk/octave-forge/extra/generate_html/inst/get_html_options.m (rev 0) +++ trunk/octave-forge/extra/generate_html/inst/get_html_options.m 2009-05-12 17:29:10 UTC (rev 5810) @@ -0,0 +1,166 @@ +## Copyright (C) 2008 Soren Hauberg +## +## 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 3 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; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{options} =} get_html_options (@var{project_name}) +## Returns a structure containing design options for various project web sites. +## +## Given a string @var{project_name}, the function returns a structure containing +## various types of information for generating web pages for the specified project. +## Currently, the accepted values of @var{project_name} are +## +## @table @t +## @item "octave-forge" +## Design corres... [truncated message content] |
From: <gof...@us...> - 2009-08-22 19:00:15
|
Revision: 6130 http://octave.svn.sourceforge.net/octave/?rev=6130&view=rev Author: goffioul Date: 2009-08-22 19:00:07 +0000 (Sat, 22 Aug 2009) Log Message: ----------- Fix compilation issues with MinGW. Modified Paths: -------------- trunk/octave-forge/extra/java/src/Makefile trunk/octave-forge/extra/java/src/configure.base trunk/octave-forge/extra/jhandles/src/Makefile trunk/octave-forge/extra/jhandles/src/configure.base Modified: trunk/octave-forge/extra/java/src/Makefile =================================================================== --- trunk/octave-forge/extra/java/src/Makefile 2009-08-22 18:56:04 UTC (rev 6129) +++ trunk/octave-forge/extra/java/src/Makefile 2009-08-22 19:00:07 UTC (rev 6130) @@ -1,7 +1,7 @@ sinclude ./Makeconf export LFLAGS -LIBS = __java__.lib +IMPORT_LIBS = __java__.lib PROGS = __java__.oct __java__.h octave.jar @@ -20,7 +20,7 @@ for _f in $(PROGS); do \ echo $$_f >> FILES; \ done; \ - for _f in $(LIBS); do \ + for _f in $(IMPORT_LIBS); do \ if [ -e $$_f ]; then \ echo $$_f >> FILES; \ fi; \ Modified: trunk/octave-forge/extra/java/src/configure.base =================================================================== --- trunk/octave-forge/extra/java/src/configure.base 2009-08-22 18:56:04 UTC (rev 6129) +++ trunk/octave-forge/extra/java/src/configure.base 2009-08-22 19:00:07 UTC (rev 6130) @@ -310,9 +310,15 @@ AC_SUBST(JAVA_LIBS) AC_SUBST(HAVE_JAVA) -AC_CHECK_PROG(JAVA, java, java) -AC_CHECK_PROG(JAVAC, javac, javac) -AC_CHECK_PROG(JAR, jar, jar) +if test -z "$JAVA_HOME"; then + AC_CHECK_PROG(JAVA, java, java) + AC_CHECK_PROG(JAVAC, javac, javac) + AC_CHECK_PROG(JAR, jar, jar) +else + AC_PATH_PROG(JAVA, java, [], [$JAVA_HOME/bin$PATH_SEPARATOR$PATH]) + AC_PATH_PROG(JAVAC, javac, [], [$JAVA_HOME/bin$PATH_SEPARATOR$PATH]) + AC_PATH_PROG(JAR, jar, [], [$JAVA_HOME/bin$PATH_SEPARATOR$PATH]) +fi HAVE_JAVA="Java Development Kit not found" if test -n "$JAVAC" -a -n "$JAR"; then AC_MSG_CHECKING([for Java version]) @@ -322,7 +328,7 @@ java_minor=[`echo -n $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\2/'`] if test $java_major -ge 1 -a $java_minor -ge 5; then case "$canonical_host_type" in - *-cygwin* | *-mingw* | *-msdosmsvc*) + *-msdosmsvc*) HAVE_JAVA=yes JAVA_LIBS=-ladvapi32 ;; @@ -364,7 +370,15 @@ fi if test -n "$JAVA_ARCH"; then HAVE_JAVA=yes - JAVA_INCS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux" + case "$canonical_host_type" in + *-mingw* | *-cygwin*) + JAVA_LIBS=-ladvapi32 + JAVA_INCS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/win32" + ;; + *) + JAVA_INCS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux" + ;; + esac fi fi ;; Modified: trunk/octave-forge/extra/jhandles/src/Makefile =================================================================== --- trunk/octave-forge/extra/jhandles/src/Makefile 2009-08-22 18:56:04 UTC (rev 6129) +++ trunk/octave-forge/extra/jhandles/src/Makefile 2009-08-22 19:00:07 UTC (rev 6130) @@ -23,7 +23,7 @@ test: @echo $(JAVA_SOURCES) -%.jar: $(JAVA_SOURCES) +jhandles.jar: $(JAVA_SOURCES) -rm -f $@ $(JAVAC) -cp '$(CLASSPATH)' -source 1.3 -target 1.3 $(JAVA_SOURCES) $(JAR) cf $@ $(JAVA_DIR)/*.class $(JAVA_DIR)/images/* @@ -37,5 +37,17 @@ %.o: %.c $(MKOCTFILE) -v -I. $(JAVA_INCS) -c $< +JH_DIR = org/octave/jhandles +JH_SOURCES = $(wildcard $(addprefix $(JH_DIR)/, *.java)) +JH_OBJECTS = graphics-renderer.o gl-graphics-renderer.o glaxescanvas.o + +jh.jar: $(JH_SOURCES) jh.dll + -rm -f $@ + $(JAVAC) -cp '$(CLASSPATH)' -source 1.3 -target 1.3 $(JH_SOURCES) + $(JAR) cf $@ $(JH_DIR)/*.class + +jh.dll: $(JH_OBJECTS) + $(MKOCTFILE) -o $@ $(JH_OBJECTS) $(OPENGL_LIBS) + __jhandles__.oct: __jhandles__.cc $(MKOCTFILE) '-I$(OCTAVE_JAVA_DIR)' $^ '-L$(OCTAVE_JAVAOCT_DIR)' -l__java__ Modified: trunk/octave-forge/extra/jhandles/src/configure.base =================================================================== --- trunk/octave-forge/extra/jhandles/src/configure.base 2009-08-22 18:56:04 UTC (rev 6129) +++ trunk/octave-forge/extra/jhandles/src/configure.base 2009-08-22 19:00:07 UTC (rev 6130) @@ -321,9 +321,15 @@ AC_SUBST(OPENGL_LIBS) AC_SUBST(OPENGL_INCS) -AC_CHECK_PROG(JAVA, java, java) -AC_CHECK_PROG(JAVAC, javac, javac) -AC_CHECK_PROG(JAR, jar, jar) +if test -z "$JAVA_HOME"; then + AC_CHECK_PROG(JAVA, java, java) + AC_CHECK_PROG(JAVAC, javac, javac) + AC_CHECK_PROG(JAR, jar, jar) +else + AC_PATH_PROG(JAVA, java, [], [$JAVA_HOME/bin$PATH_SEPARATOR$PATH]) + AC_PATH_PROG(JAVAC, javac, [], [$JAVA_HOME/bin$PATH_SEPARATOR$PATH]) + AC_PATH_PROG(JAR, jar, [], [$JAVA_HOME/bin$PATH_SEPARATOR$PATH]) +fi HAVE_JAVA="Java Development Kit not found" if test -n "$JAVAC" -a -n "$JAR"; then AC_MSG_CHECKING([for Java version]) @@ -333,12 +339,19 @@ java_minor=[`echo -n $java_version | sed -e 's/^\([0-9]\+\)\.\([0-9]\+\)\..\+$/\2/'`] if test $java_major -ge 1 -a $java_minor -ge 5; then case "$canonical_host_type" in - *-cygwin* | *-mingw* | *-msdosmsvc*) + *-cygwin* | *-mingw*) HAVE_JAVA=yes JAVA_LIBS=-ladvapi32 OPENGL_LIBS=-lopengl32 - LIBPRE= + LIBPRE= + JAVA_INCS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/win32" ;; + *-msdosmsvc*) + HAVE_JAVA=yes + JAVA_LIBS=-ladvapi32 + OPENGL_LIBS=-lopengl32 + LIBPRE= + ;; *) if test -z "$JAVA_HOME"; then JAVA_HOME=/usr/lib/jvm This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rik...@us...> - 2009-11-16 15:40:02
|
Revision: 6476 http://octave.svn.sourceforge.net/octave/?rev=6476&view=rev Author: rikcorradini Date: 2009-11-16 15:39:52 +0000 (Mon, 16 Nov 2009) Log Message: ----------- Added Paths: ----------- trunk/octave-forge/extra/openmpi_ext/ trunk/octave-forge/extra/openmpi_ext/COPYING trunk/octave-forge/extra/openmpi_ext/DESCRIPTION trunk/octave-forge/extra/openmpi_ext/INDEX trunk/octave-forge/extra/openmpi_ext/doc/ trunk/octave-forge/extra/openmpi_ext/doc/README trunk/octave-forge/extra/openmpi_ext/inst/ trunk/octave-forge/extra/openmpi_ext/inst/hello2dimmat.m trunk/octave-forge/extra/openmpi_ext/inst/hellosparsemat.m trunk/octave-forge/extra/openmpi_ext/inst/helloworld.m trunk/octave-forge/extra/openmpi_ext/src/ trunk/octave-forge/extra/openmpi_ext/src/MPI_Comm_rank.cc trunk/octave-forge/extra/openmpi_ext/src/MPI_Comm_size.cc trunk/octave-forge/extra/openmpi_ext/src/MPI_Finalize.cc trunk/octave-forge/extra/openmpi_ext/src/MPI_Finalized.cc trunk/octave-forge/extra/openmpi_ext/src/MPI_Init.cc trunk/octave-forge/extra/openmpi_ext/src/MPI_Initialized.cc trunk/octave-forge/extra/openmpi_ext/src/MPI_Recv.cc trunk/octave-forge/extra/openmpi_ext/src/MPI_Send.cc trunk/octave-forge/extra/openmpi_ext/src/Makefile Added: trunk/octave-forge/extra/openmpi_ext/COPYING =================================================================== --- trunk/octave-forge/extra/openmpi_ext/COPYING (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/COPYING 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,337 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. Added: trunk/octave-forge/extra/openmpi_ext/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/openmpi_ext/DESCRIPTION (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/DESCRIPTION 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,11 @@ +Name: openmpi_ext +Version: 1.0.0 +Date: 2009-11-16 +Author: Riccardo Corradini <ric...@ya...> +Maintainer: Riccardo Corradini <ric...@ya...> +Title: openmpi_ext +Description: MPI functions for parallel computing using simple MPI Derived Datatypes. +Depends: octave (>= 3.2.3), openmpi1.3.3 +Autoload: ? +License: GPL version 2 or later +Url: http://octave.sf.net Added: trunk/octave-forge/extra/openmpi_ext/INDEX =================================================================== --- trunk/octave-forge/extra/openmpi_ext/INDEX (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/INDEX 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1 @@ +TO be filled Added: trunk/octave-forge/extra/openmpi_ext/doc/README =================================================================== --- trunk/octave-forge/extra/openmpi_ext/doc/README (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/doc/README 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,44 @@ +The code is general-purpose, but I would like to use it for econometrics. +So the first step will be to install the following tarball from +http://www.open-mpi.org/software/ompi/v1.3/downloads/openmpi-1.3.3.tar.bz2 +possibly in a multi-core computer to run my simple examples +and configure it for instance in the following way (/home/user is your $HOME) +./configure --enable-mpirun-prefix-by-default --enable-heterogeneous --prefix=/home/user/openmpi-1.3.3/ --enable-static + +and modify .bashrc in your home + OMPIBIN=`$ompi_info -path bindir -parsable | cut -d: -f3` + OMPILIB=`$ompi_info -path libdir -parsable | cut -d: -f3` + OMPISCD=`$ompi_info -path sysconfdir -parsable | cut -d: -f3` + + + +export PATH=$OMPIBIN:$PATH + +export LD_LIBRARY_PATH=:$OMPILIB:$LD_LIBRARY_PATH + +unset ompi_info OMPIBIN OMPILIB OMPISCD + +If you want to install it on a simple toy network, just assign a static ip address on every linux computer and set up +an ssh connection with no password (see for instance http://linuxproblem.org/art_9.html ) and then install openmpi and octave always with the same versions and with the same info on .bashrc for the same user. + +After this type in a terminal mpiCC --showme +In my case I will have something like + +g++ -I/home/user/openmpi-1.3.3/include -pthread -L/home/user/openmpi-1.3.3/lib -lmpi_cxx -lmpi -lopen-rte -lopen-pal -ldl -Wl,--export-dynamic -lnsl -lutil -lm -ldl + +This will be useful for mkoctfile +for instance for MPI_Init.cc we shall have +mkoctfile -I/home/user/openmpi-1.3.3/include -lpthread -L/home/user/openmpi-1.3.3/lib -lmpi_cxx -lmpi -lopen-rte -lopen-pal -ldl -lnsl -lutil -lm -ldl MPI_Init.cc + + + +The m files just contain some very simple examples +More complex examples will be provided in the next future. +See also +http://static.msi.umn.edu/tutorial/scicomp/general/MPI/content6.html +to understand the logic of MPI Derived Datatypes and how could they be easily handled by openmpi_ext package. +Bests regards +Riccardo Corradini + + + Added: trunk/octave-forge/extra/openmpi_ext/inst/hello2dimmat.m =================================================================== --- trunk/octave-forge/extra/openmpi_ext/inst/hello2dimmat.m (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/inst/hello2dimmat.m 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,33 @@ +if not(MPI_Initialized) + info = MPI_Init(); +end + + [info my_rank] = MPI_Comm_rank(); + [info p ] = MPI_Comm_size(); + mytag = 48; + + + + if (my_rank != 0) +# Generate a random matrix + message=rand(90,90); +# load message +# rankvect is the vector containing the list of rank destination process + rankvect = 0; + [info] = MPI_Send(message,rankvect,mytag); + else + for source = 1:p-1 + disp("We are at rank 0 that is master etc.."); + [info messager] = MPI_Recv(source,mytag); +# You could also save each result and make comparisons if you don't trust MPI + disp("Rank 0 is the master receiving ... :"); + if (info == true) + disp('OK!'); + endif + endfor + end + + + if not(MPI_Finalized) + info = MPI_Finalize(); + end Added: trunk/octave-forge/extra/openmpi_ext/inst/hellosparsemat.m =================================================================== --- trunk/octave-forge/extra/openmpi_ext/inst/hellosparsemat.m (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/inst/hellosparsemat.m 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,46 @@ +if not(MPI_Initialized) + info = MPI_Init(); +end + + [info my_rank] = MPI_Comm_rank(); + [info p ] = MPI_Comm_size(); +# tag[0] ----> type of octave_value +# tag[1] ----> array of three elements 1) num of rows 2) number of columns 3) number of non zero elements +# tag[2] ----> vector of rowindex +# tag[3] ----> vector of columnindex +# tag[4] ----> vector of non zero elements +# These tags will be generated after mytag by the MPI_Send and MPI_Recv (see source code) + + mytag = 48; + + + + +# This is just to fill the sparse matrix + M=5; + N=5; + D=0.9; + message = sprand (M, N, D); +# load message + + + + if (my_rank != 0) + dest = 0; +# rankvect is the vector containing the list of rank destination process + rankvect(1,1) = 0; + [info] = MPI_Send(message,rankvect,mytag); + disp("This is flag for sending the message --") + info + else + for source = 1:p-1 + messager=''; + disp("We are at rank 0 that is master etc.."); + [info messager] = MPI_Recv(source,mytag); + disp("Rank 0 is the master receiving ... :"); + if (messager/message) + disp('OK!'); + endif + messager + endfor + end Added: trunk/octave-forge/extra/openmpi_ext/inst/helloworld.m =================================================================== --- trunk/octave-forge/extra/openmpi_ext/inst/helloworld.m (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/inst/helloworld.m 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,56 @@ +## Copyright (C) 2009 Riccardo Corradini <ric...@ya...> +## under the terms of the GNU General Public License. +## +## 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, see <http://www.gnu.org/licenses/>. + + +# Please add the oct files openmpi_ext folder +# For instance +#h = genpath("/home/user/octave/openmpi_ext/"); +#addpath(h); +#clear h; +# if you have 4 cores or a network of 4 computers with a ssh connection with no password and same openmpi 1.3.3 installation +# type at the terminal mpirun -np 4 octave --eval helloworld + + +if not(MPI_Initialized) + info = MPI_Init(); +end + + [info my_rank] = MPI_Comm_rank(); + [info p ] = MPI_Comm_size(); + # Could be any number + mytag = 48; + + + message=""; + if (my_rank != 0) + message = sprintf('Greetings from process: %d!',my_rank); + dest = 0; +# rankvect is the vector containing the list of rank destination process + rankvect = 0; + [info] = MPI_Send(message,rankvect,mytag); + info + else + for source = 1:p-1 + disp("We are at rank 0 that is master etc.."); + [info message] = MPI_Recv(source,mytag); + printf('%s\n', message); + endfor + end + + + if not(MPI_Finalized) + info = MPI_Finalize(); + end \ No newline at end of file Added: trunk/octave-forge/extra/openmpi_ext/src/MPI_Comm_rank.cc =================================================================== --- trunk/octave-forge/extra/openmpi_ext/src/MPI_Comm_rank.cc (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/src/MPI_Comm_rank.cc 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,59 @@ +// Copyright (C) 2004-2007 Javier Fernández Baldomero, Mancia Anguita López +// This code has been adjusted for octave3.2.3 and more in +// 2009 by Riccardo Corradini <ric...@ya...> + +// +// 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, see <http://www.gnu.org/licenses/>. + + +#define NAME MPI_Comm_rank +/* + * ---------------------------------------------------- + * Determines the rank of the calling process in the communicator + * [info rank] = MPI_Comm_rank (comm) + * ---------------------------------------------------- + */ + +#include <octave/oct.h> +#include "mpi.h" + +DEFUN_DLD(NAME, args, nargout, +"MPI_Comm_rank Determines rank of calling process in communicator\n\ +\n\ + [info rank] = MPI_Comm_rank (comm)\n\ +\n\ + comm (int) communicator handle. MPI_COMM_NULL not valid\n\ + rank (int) rank of the calling process in group of comm\n\ +\n\ + info (int) return code\n\ + 0 MPI_SUCCESS No error\n\ + 5 MPI_ERR_COMM Invalid communicator (NULL?)\n\ + 13 MPI_ERR_ARG Invalid argument (typically a NULL pointer?)\n\ +\n\ + SEE ALSO: MPI_Comm_size\n\ + comms\n\ +\n\ +") + +{ + octave_value_list results; + int my_rank; + int info = MPI_Comm_rank(MPI_COMM_WORLD,&my_rank); + results(0) = info; + results(1) = my_rank; + + /* [info rank] = MPI_Comm_rank (comm) */ + + return results; +} \ No newline at end of file Added: trunk/octave-forge/extra/openmpi_ext/src/MPI_Comm_size.cc =================================================================== --- trunk/octave-forge/extra/openmpi_ext/src/MPI_Comm_size.cc (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/src/MPI_Comm_size.cc 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,59 @@ +// Copyright (C) 2004-2007 Javier Fernández Baldomero, Mancia Anguita López +// This code has been adjusted for octave3.2.3 and more in +// 2009 by Riccardo Corradini <ric...@ya...> + +// +// 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, see <http://www.gnu.org/licenses/>. + +#define NAME MPI_Comm_size +/* + * ---------------------------------------------------- + * Determines the size of the calling process in the communicator + * [info rank] = MPI_Comm_size (comm) + * ---------------------------------------------------- + */ + +#include <octave/oct.h> +#include "mpi.h" + +DEFUN_DLD(NAME, args, nargout, +"MPI_Comm_size Determines rank of calling process in communicator\n\ +\n\ + [info rank] = MPI_Comm_size (comm)\n\ +\n\ + comm (int) communicator handle. MPI_COMM_NULL not valid\n\ + size (int) size of the calling process in group of comm\n\ +\n\ + info (int) return code\n\ + 0 MPI_SUCCESS No error\n\ + 5 MPI_ERR_COMM Invalid communicator (NULL?)\n\ + 13 MPI_ERR_ARG Invalid argument (typically a NULL pointer?)\n\ +\n\ + SEE ALSO: MPI_Comm_rank\n\ + comms\n\ +\n\ +") + +{ + octave_value_list results; + int my_size; + int info = MPI_Comm_size(MPI_COMM_WORLD,&my_size); + results(0) = info; + results(1) = my_size; + + /* [info rank] = MPI_Comm_size (comm) */ + + return results; +} + Added: trunk/octave-forge/extra/openmpi_ext/src/MPI_Finalize.cc =================================================================== --- trunk/octave-forge/extra/openmpi_ext/src/MPI_Finalize.cc (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/src/MPI_Finalize.cc 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,49 @@ +// Copyright (C) 2004-2007 Javier Fernández Baldomero, Mancia Anguita López +// This code has been adjusted for octave3.2.3 and more in +// 2009 by Riccardo Corradini <ric...@ya...> + +// +// 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, see <http://www.gnu.org/licenses/>. + +#define NAME MPI_Finalize +/* + * ---------------------------------------------------- + * Terminates MPI execution environment + * info = MPI_Finalize + * ---------------------------------------------------- + */ +#include "mpi.h" +#include <octave/oct.h> + +DEFUN_DLD(NAME, args, nargout, +"MPI_Finalize Terminates MPI execution environment\n\ +\n\ + info = MPI_Finalize\n\ +\n\ + info(int) return code\n\ + 0 MPI_SUCCESS No error\n\ + 17 MPI_ERR_INTERN This is fatal. Please send bug report to OPENMPI\n\ + 16 MPI_ERR_OTHER A different thread attempts to finalize MPI than\n\ + the thread that initialized MPI\n\ +\n\ + SEE ALSO: MPI_Init, MPI_Initialized, MPI_Finalized\n\ + misc\n\ +\n\ +") +{ + + int info = MPI_Finalize(); + + return octave_value(info); +} Added: trunk/octave-forge/extra/openmpi_ext/src/MPI_Finalized.cc =================================================================== --- trunk/octave-forge/extra/openmpi_ext/src/MPI_Finalized.cc (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/src/MPI_Finalized.cc 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,57 @@ +// Copyright (C) 2004-2007 Javier Fernández Baldomero, Mancia Anguita López +// This code has been adjusted for octave3.2.3 and more in +// 2009 by Riccardo Corradini <ric...@ya...> + +// under the terms of the GNU General Public License. +// +// 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, see <http://www.gnu.org/licenses/>. + +#define NAME MPI_Finalized +/* + * ---------------------------------------------------- + * Indicates whether MPI_Finalize has completed + * [info flag] = MPI_Finalized + * ---------------------------------------------------- + */ +#include "mpi.h" +#include <octave/oct.h> + +DEFUN_DLD(NAME, args, nargout, +"MPI_Finalized Indicates whether MPI_Finalize has completed\n\ +\n\ + [info flag] = MPI_Finalized\n\ +\n\ + flag(int) 0 false\n\ + 1 true\n\ +\n\ + info(int) return code\n\ + 0 MPI_SUCCESS This function always returns MPI_SUCCESS\n\ +\n\ + SEE ALSO: MPI_Init, MPI_Finalize, MPI_Initialized\n\ + misc\n\ +\n\ +") +{ + octave_value_list results; + int flag; + + + + int info = MPI_Finalized(&flag); + results(0) = info; + results(1) = flag; + return results; + + /* [info flag] = MPI_Finalized */ +} Added: trunk/octave-forge/extra/openmpi_ext/src/MPI_Init.cc =================================================================== --- trunk/octave-forge/extra/openmpi_ext/src/MPI_Init.cc (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/src/MPI_Init.cc 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,71 @@ +// Copyright (C) 2004-2007 Javier Fernández Baldomero, Mancia Anguita López +// This code has been adjusted for octave3.2.3 and more in +// 2009 by Riccardo Corradini <ric...@ya...> + +// 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, see <http://www.gnu.org/licenses/>. + + + + + + +/* + * ---------------------------------------------------- + * Initialize the MPI execution environment + * info = MPI_Init [ ( 'arg' [, 'arg']... ) ] + * ---------------------------------------------------- + */ + +#define NAME MPI_Init + +#include "mpi.h" // mpi.h, oct.h +#include <octave/oct.h> + +DEFUN_DLD(NAME, args, nargout, +"MPI_Init Initialize the MPI execution environment\n\ +\n\ + info = MPI_Init [ ( 'arg' [, 'arg']... ) ]\n\ +\n\ + arg (str) arguments to pass\n\ + info(int) return code\n\ + 0 MPI_SUCCESS No error\n\ + 16 MPI_ERR_OTHER Attempt was made to call MPI_INIT a second time\n\ + MPI_INIT may only be called once in a program\n\ + \n\ +\n\ + SEE ALSO: MPI_Finalize, MPI_Initialized, MPI_Finalized\n\ + misc\n\ +\n\ +") +{ + int nargin = args.length(); + for (int i=0; i<nargin; i++){ + if( ! args(i).is_string() ) { + error("MPI_Init: args must be strings"); + return octave_value (MPI_ERR_ARG); // error returns nothing + } + } + + string_vector argvec = args.make_argv("MPI_Init"); + char **argve= argvec.c_str_vec(); + char **argv =&argve[1]; + +// printf("args: "); for (int i=0; i<nargin; i++) printf("%s ",argv[i]); +// printf("\n"); + + int info = MPI_Init(&nargin, &argv); + free(argve); + return octave_value (info); +} + \ No newline at end of file Added: trunk/octave-forge/extra/openmpi_ext/src/MPI_Recv.cc =================================================================== --- trunk/octave-forge/extra/openmpi_ext/src/MPI_Recv.cc (rev 0) +++ trunk/octave-forge/extra/openmpi_ext/src/MPI_Recv.cc 2009-11-16 15:39:52 UTC (rev 6476) @@ -0,0 +1,1432 @@ +// Copyright (C) 2009 Riccardo Corradini <ric...@ya...> +// under the terms of the GNU General Public License. +// +// 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, see <http://www.gnu.org/licenses/>. +/* + * Receives most Octave datatypes into contiguous memory + * using derived datatypes + * info = MPI_Send(var,rank) + */ +#include "mpi.h" +#include <octave/oct.h> +#include <ov-cell.h> // avoid errmsg "cell -- incomplete datatype" +#include <oct-map.h> // avoid errmsg "Oct.map -- invalid use undef type" + +// tested on Octave 3.2.3 +// Octave 3.2.X + +enum ov_t_id +{ + +ov_unknown=0, // t_id=0 +ov_cell, // t_id=1 +ov_scalar, // t_id=2 +ov_complex_scalar, // t_id=3 +ov_matrix, // t_id=4 +ov_diagonal_matrix, // t_id=5 +ov_complex_matrix, // t_id=6 +ov_complex_diagonal_matrix, // t_id=7 +ov_range, // t_id=8 +ov_bool, // t_id=9 +ov_bool_matrix, // t_id=10 +ov_char_matrix, // t_id=11 +ov_string, // t_id=12 +ov_sq_string, // t_id=13 +ov_int8_scalar, // t_id=14 +ov_int16_scalar, // t_id=15 +ov_int32_scalar, // t_id=16 +ov_int64_scalar, // t_id=17 +ov_uint8_scalar, // t_id=18 +ov_uint16_scalar, // t_id=19 +ov_uint32_scalar, // t_id=20 +ov_uint64_scalar, // t_id=21 +ov_int8_matrix, // t_id=22 +ov_int16_matrix, // t_id=23 +ov_int32_matrix, // t_id=24 +ov_int64_matrix, // t_id=25 +ov_uint8_matrix, // t_id=26 +ov_uint16_matrix, // t_id=27 +ov_uint32_matrix, // t_id=28 +ov_uint64_matrix, // t_id=29 +ov_sparse_bool_matrix, // t_id=30 + +ov_sparse_matrix, // t_id=31 +ov_sparse_complex_matrix, +ov_struct, +ov_class, +ov_list, +ov_cs_list, +ov_magic_colon, +ov_built_in_function, +ov_user_defined_function, +ov_dynamically_linked_function, +ov_function_handle, +ov_inline_function, +ov_float_scalar, +ov_float_complex_scalar, +ov_float_matrix, +ov_float_diagonal_matrix, +ov_float_complex_matrix, +ov_float_complex_diagonal_matrix, +ov_permutation_matrix, +ov_null_matrix, +ov_null_string, +ov_null_sq_string, +}; + + + +/*----------------------------------*/ /* forward declaration */ + + + +int recv_class( octave_value &ov, int source, int mytag); /* along the datatype */ +/*----------------------------------*/ /* to send any octave_value */ + + +int recv_string( octave_value &ov, int source, int mytag){ /* directly MPI_Send it, */ +/*-----------------------------*/ /* it's just a string value */ + +OCTAVE_LOCAL_BUFFER(int, tanktag, 2); +tanktag[0]=mytag; +tanktag[1]=mytag+1; +tanktag[2]=mytag+2; + + int info,nitem; + MPI_Status stat; + info = MPI_Recv((&nitem), 1,MPI_INT, source, tanktag[1] , MPI_COMM_WORLD,&stat); +// printf("I have received number of elements %i \n",nitem); + OCTAVE_LOCAL_BUFFER(char,mess,nitem+1); + if (info !=MPI_SUCCESS) return info; + MPI_Datatype fortvec; + MPI_Type_contiguous(nitem,MPI_CHAR, &fortvec); + MPI_Type_commit(&fortvec); + + + info = MPI_Recv(mess, 1,fortvec, source, tanktag[2] , MPI_COMM_WORLD,&stat); +// printf("Flag for string received %i \n",info); + std::string cpp_string; + cpp_string = mess; + ov = cpp_string; + if (info !=MPI_SUCCESS) return info; + return(MPI_SUCCESS); +} + +int recv_matrix(octave_value &ov,int source, int mytag){ + +OCTAVE_LOCAL_BUFFER(int, tanktag, 5); +tanktag[0] = mytag; +tanktag[1] = mytag+1; +tanktag[2] = mytag+2; +tanktag[3] = mytag+3; +tanktag[4] = mytag+4; + + int info; + int nitem,nd; + MPI_Status stat; + dim_vector dv; + +// nitem is the total number of elements + info = MPI_Recv((&nitem), 1,MPI_INT, source, tanktag[1] , MPI_COMM_WORLD,&stat); +// printf("I have received number of elements %i \n",nitem); + if (info !=MPI_SUCCESS) return info; +// ndims is number of dimensions + info = MPI_Recv((&nd), 1,MPI_INT, source, tanktag[2] , MPI_COMM_WORLD,&stat); +// printf("I have received number of dimensions %i \n",nd); + if (info !=MPI_SUCCESS) return info; +// Now create contiguos datatype for dim vector + dv.resize(nd); + OCTAVE_LOCAL_BUFFER(int,dimV,nd); + MPI_Datatype dimvec; + MPI_Type_contiguous(nd,MPI_INT, &dimvec); + MPI_Type_commit(&dimvec); + + info = MPI_Recv((dimV), 1,dimvec, source, tanktag[3] , MPI_COMM_WORLD,&stat); + if (info !=MPI_SUCCESS) return info; + +// Now reverse the content of int vector into dim vector + for (octave_idx_type i=0; i<nd; i++) + { + + dv(i) = dimV[i] ; +// printf("I am printing dimvector %i \n",dimV[i]); + } + NDArray myNDA(dv); +// double *p = myNDA.fortran_vec(); + OCTAVE_LOCAL_BUFFER(double,LBNDA,nitem); +// printf("BUFFER CREATED \n"); + // Now create the contiguous derived datatype + MPI_Datatype fortvec; + MPI_Type_contiguous(nitem,MPI_DOUBLE, &fortvec); + MPI_Type_commit(&fortvec); +// printf("I am printing dimvector %i \n",tanktag[4]); + info = MPI_Recv((LBNDA), 1,fortvec, source, tanktag[4] , MPI_COMM_WORLD,&stat); +// printf("info for receiving data is = %i \n",info); + if (info !=MPI_SUCCESS) return info; + for (octave_idx_type i=0; i<nitem; i++) + { +// *LBNDA = *p; +// LBNDA++; +// p++; + myNDA(i)=LBNDA[i]; + } + ov = myNDA; +// printf("info for receiving scalar matrix is = %i \n",info); + +} + +int recv_float_matrix(octave_value &ov,int source, int mytag){ + +OCTAVE_LOCAL_BUFFER(int, tanktag, 5); +tanktag[0] = mytag; +tanktag[1] = mytag+1; +tanktag[2] = mytag+2; +tanktag[3] = mytag+3; +tanktag[4] = mytag+4; + int info; + int nitem,nd; + MPI_Status stat; + dim_vector dv; + +// nitem is the total number of elements + info = MPI_Recv((&nitem), 1,MPI_INT, source, tanktag[1] , MPI_COMM_WORLD,&stat); +// printf("I have received number of elements %i \n",nitem); + if (info !=MPI_SUCCESS) return info; +// ndims is number of dimensions + info = MPI_Recv((&nd), 1,MPI_INT, source, tanktag[2] , MPI_COMM_WORLD,&stat); +// printf("I have received number of dimensions %i \n",nd); + if (info !=MPI_SUCCESS) return info; +// Now create contiguos datatype for dim vector + dv.resize(nd); + OCTAVE_LOCAL_BUFFER(int,dimV,nd); + MPI_Datatype dimvec; + MPI_Type_contiguous(nd,MPI_INT, &dimvec); + MPI_Type_commit(&dimvec); + + info = MPI_Recv((dimV), 1,dimvec, source, tanktag[3] , MPI_COMM_WORLD,&stat); + if (info !=MPI_SUCCESS) return info; + +// Now reverse the content of int vector into dim vector + for (octave_idx_type i=0; i<nd; i++) + { +// printf("I am printing dimvector %i \n",dimV[i]); + dv(i) = dimV[i] ; + } + FloatNDArray myNDA(dv); + float *p = myNDA.fortran_vec(); + OCTAVE_LOCAL_BUFFER(float,LBNDA,nitem); +// printf("BUFFER CREATED \n"); + // Now create the contiguous derived datatype + MPI_Datatype fortvec; + MPI_Type_contiguous(nitem,MPI_FLOAT, &fortvec); + MPI_Type_commit(&fortvec); + + info = MPI_Recv((LBNDA), 1,fortvec, source, tanktag[4] , MPI_COMM_WORLD,&stat); +// printf("info for receiving data is = %i \n",info); + if (info !=MPI_SUCCESS) return info; + for (octave_idx_type i=0; i<nitem; i++) + { +// *LBNDA = *p; +// LBNDA++; +// p++; + myNDA(i)=LBNDA[i]; + } + ov = myNDA; +// printf("info for receiving scalar matrix is = %i \n",info); + +} + + + +int recv_complex_matrix(octave_value &ov,int source, int mytag){ + +OCTAVE_LOCAL_BUFFER(int, tanktag, 6); +tanktag[0] = mytag; +tanktag[1] = mytag+1; +tanktag[2] = mytag+2; +tanktag[3] = mytag+3; +tanktag[4] = mytag+4; +tanktag[5] = mytag+5; + + int info; + int nitem,nd; + MPI_Status stat; + dim_vector dv; + +// nitem is the total number of elements + info = MPI_Recv((&nitem), 1,MPI_INT, source, tanktag[1] , MPI_COMM_WORLD,&stat); +// printf("I have received number of elements %i \n",nitem); + if (info !=MPI_SUCCESS) return info; +// ndims is number of dimensions + info = MPI_Recv((&nd), 1,MPI_INT, source, tanktag[2] , MPI_COMM_WORLD,&stat); +// printf("I have received number of dimensions %i \n",nd); + if (info !=MPI_SUCCESS) return info; +// Now create contiguos datatype for dim vector + dv.resize(nd); + OCTAVE_LOCAL_BUFFER(int,dimV,nd); + MPI_Datatype dimvec; + MPI_Type_contiguous(nd,MPI_INT, &dimvec); + MPI_Type_commit(&dimvec); + + info = MPI_Recv((dimV), 1,dimvec, source, tanktag[3] , MPI_COMM_WORLD,&stat); + if (info !=MPI_SUCCESS) return info; + +// Now reverse the content of int vector into dim vector + for (octave_idx_type i=0; i<nd; i++) + { +// printf("I am printing dimvector %i \n",i); + dv(i) = dimV[i] ; + } + NDArray rmyNDA(dv); // for the real part + NDArray imyNDA(dv); // for the img part + + ComplexNDArray oa (dv); /* Create->Delete on ret?!? */ + + double *p = rmyNDA.fortran_vec(); + double *ip = imyNDA.fortran_vec(); + OCTAVE_LOCAL_BUFFER(double,LBNDA,nitem); + OCTAVE_LOCAL_BUFFER(double,CLBNDA,nitem); + +// printf("BUFFER CREATED \n"); + // Now create the contiguous derived datatype + MPI_Datatype fortvec; + MPI_Type_contiguous(nitem,MPI_DOUBLE, &fortvec); + MPI_Type_commit(&fortvec); + + info = MPI_Recv((LBNDA), 1,fortvec, source, tanktag[4] , MPI_COMM_WORLD,&stat); +// printf("info for receiving data is = %i \n",info); + if (info !=MPI_SUCCESS) return info; + + info = MPI_Recv((CLBNDA), 1,fortvec, source, tanktag[5] , MPI_COMM_WORLD,&stat); +// printf("info for receiving data is = %i \n",info); + if (info !=MPI_SUCCESS) return info; + + + for (octave_idx_type i=0; i<nitem; i++) + { +// *LBNDA = *p; +// LBNDA++; +// p++; + rmyNDA(i)=LBNDA[i]; + imyNDA(i)=CLBNDA[i]; + oa(i) = Complex (rmyNDA (i), imyNDA (i)); + } + ov = oa; + +return(MPI_SUCCESS); +} + + +int recv_float_complex_matrix(octave_value &ov,int source, int mytag){ + +OCTAVE_LOCAL_BUFFER(int, tanktag, 6); +tanktag[0] = mytag; +tanktag[1] = mytag+1; +tanktag[2] = mytag+2; +tanktag[3] = mytag+3; +tanktag[4] = mytag+4; +tanktag[5] = mytag+5; + + int info; + int nitem,nd; + MPI_Status stat; + dim_vector dv; + +// nitem is the total number of elements + info = MPI_Recv((&nitem), 1,MPI_INT, source, tanktag[1] , MPI_COMM_WORLD,&stat); +// printf("I have received number of elements %i \n",nitem); + if (info !=MPI_SUCCESS) return info; +// ndims is number of dimensions + info = MPI_Recv((&nd), 1,MPI_INT, source, tanktag[2] , MPI_COMM_WORLD,&stat); +// printf("I have received number of dimensions %i \n",nd); + if (info !=MPI_SUCCESS) return info; +// Now create contiguos datatype for dim vector + dv.resize(nd); + OCTAVE_LOCAL_BUFFER(int,dimV,nd); + MPI_Datatype dimvec; + MPI_Type_contiguous(nd,MPI_INT, &dimvec); + MPI_Type_commit(&dimvec); + + info = MPI_Recv((dimV), 1,dimvec, source, tanktag[3] , MPI_COMM_WORLD,&stat); + if (info !=MPI_SUCCESS) return info; + +// Now reverse the content of int vector into dim vector + for (octave_idx_type i=0; i<nd; i++) + { +// printf("I am printing dimvector %i \n",i); + dv(i) = dimV[i] ; + } + FloatNDArray rmyNDA(dv); // for the real part + FloatNDArray imyNDA(dv); // for the img part + + FloatComplexNDArray oa (dv); /* Create->Delete on ret?!? */ + + float *p = rmyNDA.fortran_vec(); + float *ip = imyNDA.fortran_vec(); + OCTAVE_LOCAL_BUFFER(float,LBNDA,nitem); + OCTAVE_LOCAL_BUFFER(float,CLBNDA,nitem); + +// printf("BUFFER CREATED \n"); + // Now create the contiguous derived datatype + MPI_Datatype fortvec; + MPI_Type_contiguous(nitem,MPI_DOUBLE, &fortvec); + MPI_Type_commit(&fortvec); + + info = MPI_Recv((LBNDA), 1,fortvec, source, tanktag[4] , MPI_COMM_WORLD,&stat); +// printf("info for receiving data is = %i \n",info); + if (info !=MPI_SUCCESS) return info; + + info = MPI_Recv((CLBNDA), 1,fortvec, source, tanktag[5] , MPI_COMM_WORLD,&stat); +// printf("info for receiving data is = %i \n",info); + if (info !=MPI_SUCCESS) return info; + + + for (octave_idx_type i=0; i<nitem; i++) + { +// *LBNDA = *p; +// LBNDA++; +// p++; + rmyNDA(i)=LBNDA[i]; + imyNDA(i)=CLBNDA[i]; + std::complex<float> c = real(rmyNDA(i))+imag(imyNDA(i)); + oa(i) = c; + } + ov = oa; + +return(MPI_SUCCESS); +} + + + + + + +int recv_sp_mat(octave_value &ov,int source, int mytag){ +int info; +/* int nr = m.rows(); + int nc = m.cols (); + int nnzm = m.nzmax ();*/ +// tag[0] ----> type of octave_value +// tag[1] ----> array of three elements 1) num of rows 2) number of columns 3) number of non zero elements +// tag[2] ----> vector of rowindex +// tag[3] ----> vector of columnindex +// tag[5] ----> vector of number of non zero elements +OCTAVE_LOCAL_BUFFER(int, tanktag,6); +tanktag[0] = mytag; +tanktag[1] = mytag+1; +tanktag[2] = mytag+2; +tanktag[3] = mytag+3; +tanktag[4] = mytag+4; +tanktag[5] = mytag+5; + +MPI_Status stat; + +OCTAVE_LOCAL_BUFFER(int,s,3); + +// Create a contiguous derived datatype +MPI_Datatype sintsparse; +MPI_Type_contiguous(3,MPI_INT, &sintsparse); +MPI_Type_commit(&sintsparse); + +// receive the sintsparse vector named s +info = MPI_Recv(s, 1, sintsparse, source, tanktag[1], MPI_COMM_WORLD, &stat); +if (info !=MPI_SUCCESS) return info; + +// int appo1, appo2, appo3; +// appo1 = s[0]; +// appo2 = s[1]; +// appo3 = s[2]; +// +// printf("appo 1 is %i \n",appo1); +// printf("appo 2 is %i \n",appo2); +// printf("appo 3 is %i \n",appo3); + + + +SparseMatrix m(s[0],s[1],s[2]); + +// Create a contiguous derived datatype for row index +OCTAVE_LOCAL_BUFFER(int,sridx,s[2]); +OCTAVE_LOCAL_BUFFER(double,sdata,s[2]); +// Create a contiguous derived datatype for column index +OCTAVE_LOCAL_BUFFER(int,scidx,s[1]+1); +MPI_Datatype rowindex; +MPI_Type_contiguous(s[2],MPI_INT, &rowindex); +MPI_Type_commit(&rowindex); +MPI_Datatype datavect; +MPI_Type_contiguous(s[2],MPI_DOUBLE, &datavect); +MPI_Type_commit(&datavect); +MPI_Datatype columnindex; +MPI_Type_contiguous(s[1]+1,MPI_INT, &columnindex); +MPI_Type_commit(&columnindex); + +// Now receive the two vectors + +// receive the vector with row indexes + info = MPI_Recv(sridx,1,rowindex,source,tanktag[2],MPI_COMM_WORLD,&stat); +// printf("Hope everything is fine here with ridx %i =\n",info); + if (info !=MPI_SUCCESS) return info; + +// receive the vector with column indexes + info = MPI_Recv(scidx,1,columnindex,source,tanktag[3],MPI_COMM_WORLD, &stat); +// printf("Hope everything is fine here with scidx %i =\n",info); + if (info !=MPI_SUCCESS) return info; + + info = MPI_Recv(sdata,1,datavect,source,tanktag[4],MPI_COMM_WORLD,&stat); +// printf("Hope everything is fine here with data vect %i =\n",info); + +// int appoc; +NDArray buf (dim_vector (m.capacity(), 1)); +for (octave_idx_type i = 0; i < s[2]; i++) +{ + m.ridx(i) = sridx[i]; + m.data(i) = sdata[i]; + buf(i) = sdata[i]; +// appoc = m.ridx(i); +// printf("apporow is %i \n",appoc); +// printf("appodata is %d \n",sdata[i]); +} +for (octave_idx_type i = 0; i < s[1]+1; i++) +{ + m.cidx(i) = scidx[i]; +// appoc=m.cidx(i); +// printf("appocol is %i \n",appoc); +} + + +ov = m; +return(info); + + +} + + +//here ! int matrixes +int recv_int8_matrix(octave_value &ov,int source, int mytag){ + +OCTAVE_LOCAL_BUFFER(int, tanktag, 5); +tanktag[0] = mytag; +tanktag[1] = mytag+1; +tanktag[2] = mytag+2; +tanktag[3] = mytag+3; +tanktag[4] = mytag+4; + int info; + int nitem,nd; + MPI_Status stat; + dim_vector dv; + +// nitem is the total number of elements + info = MPI_Recv((&nitem), 1,MPI_INT, source, tanktag[1] , MPI_COMM_WORLD,&stat); +// printf("I have received number of elements %i \n",nitem); + if (info !=MPI_SUCCESS) return info; +// ndims is number of dimensions + info = MPI_Recv((&nd), 1,MPI_INT, source, tanktag[2] , MPI_COMM_WORLD,&stat); +// printf("I have received number of dimensions %i \n",nd); + if (info !=MPI_SUCCESS) return info; +// Now create contiguos datatype for dim vector + dv.resize(nd); + OCTAVE_LOCAL_BUFFER(int,dimV,nd); + MPI_Datatype dimvec; + MPI_Type_contiguous(nd,MPI_INT, &dimvec); + MPI_Type_commit(&dimvec); + + info = MPI_Recv((dimV), 1,dimvec, source, tanktag[3] , MPI_COMM_WORLD,&stat); + if (info !=MPI_SUCCESS) return info; + +// Now reverse the content of int vector into dim vector + for (octave_idx_type i=0; i<nd; i++) + { +// printf("I am printing dimvector %i \n",i); + dv(i) = dimV[i] ; + } + int8NDArray myNDA(dv); +// double *p = myNDA.fortran_vec(); + OCTAVE_LOCAL_BUFFER(octave_int8,LBNDA,nitem); +// printf("BUFFER CREATED \n"); + // Now create the contiguous derived datatype + MPI_Datatype fortvec; + MPI_Type_contiguous(nitem,MPI_BYTE, &fortvec); + MPI_Type_commit(&fortvec); + + info = MPI_Recv((LBNDA), 1,fortvec, source, tanktag[4] , MPI_COMM_WORLD,&stat); +// printf("info for receiving data is = %i \n",info); + if (info !=MPI_SUCCESS) return info; + for (octave_idx_type i=0; i<nitem; i++) + { +// *LBNDA = *p; +// LBNDA++; +// p++; + myNDA(i)=LBNDA[i]; + } + ov = myNDA; +// printf("info for receiving scalar matrix is = %i \n",info); + +} + +int recv_int16_matrix(octave_value &ov,int source, int mytag){ + +OCTAVE_LOCAL_BUFFER(int, tanktag, 5); +tanktag[0] = mytag; +tanktag[1] = mytag+1; +tanktag[2] = mytag+2; +tanktag[3] = mytag+3; +tanktag[3] = mytag+4; + int info; + int nitem,nd; + MPI_Status stat; + dim_vector dv; + +// nitem is the total number of elements + info = MPI_Recv((&nitem), 1,MPI_INT, source, tanktag[1] , MPI_COMM_WORLD,&stat); +// printf("I have received number of elements %i \n",nitem); + if (info !=MPI_SUCCESS) return info; +// ndims is number of dimensions + info = MPI_Recv((&nd), 1,MPI_INT, source, tanktag[2] , MPI_COMM_WORLD,&stat); +// printf("I have received number of dimensions %i \n",nd); + if (info !=MPI_SUCCESS) return info; +// Now create contiguos datatype for dim vector + dv.resize(nd); + OCTAVE_LOCAL_BUFFER(int,dimV,nd); + MPI_Datatype dimvec; + MPI_Type_contiguous(nd,MPI_INT, &dimvec); + MPI_Type_commit(&dimvec); + + info = MPI_Recv((dimV), 1,dimvec, source, tanktag[3] , MPI_COMM_WORLD,&stat); + if (info !=MPI_SUCCESS) return info; + +// Now reverse the content of int vector into dim vector + for (octave_idx_type i=0; i<nd; i++) + { +// printf("I am printing dimvector %i \n",i); + dv(i) = dimV[i] ; + } + int16NDArray myNDA(dv); +// double *p = myNDA.fortran_vec(); + OCTAVE_LOCAL_BUFFER(octave_int16,LBNDA,nitem); +// printf("BUFFER CREATED \n"); + // Now create the contiguous derived datatype + MPI_Datatype fortvec; + MPI_Type_contiguous(nitem,MPI_SHORT, &fortvec); + MPI_Type_commit(&fortvec); + + info = MPI_Recv((LBNDA), 1,fortvec, source, tanktag[4] , MPI_COMM_WORLD,&stat); +// printf("info for receiving data is = %i \n",info); + if (info !=MPI_SUCCESS) return info; + for (octave_idx_type i=0; i<nitem; i++) + { +// *LBNDA = *p; +// LBNDA++; +// p++; + myNDA(i)=LBNDA[i]; + } + ov = myNDA; +// printf("info for receiving scalar matrix is = %i \n",info); + return(info); +} + + +int recv_int32_matrix(octave_value &ov,int source, int mytag){ + +OCTA... [truncated message content] |
From: <et...@us...> - 2010-01-22 05:30:06
|
Revision: 6792 http://octave.svn.sourceforge.net/octave/?rev=6792&view=rev Author: etienne Date: 2010-01-22 05:29:58 +0000 (Fri, 22 Jan 2010) Log Message: ----------- Initial import of gnuplot wrappers Added Paths: ----------- trunk/octave-forge/extra/gnuplot/ trunk/octave-forge/extra/gnuplot/COPYING trunk/octave-forge/extra/gnuplot/COPYRIGHT trunk/octave-forge/extra/gnuplot/DESCRIPTION trunk/octave-forge/extra/gnuplot/inst/ trunk/octave-forge/extra/gnuplot/inst/COPYRIGHT trunk/octave-forge/extra/gnuplot/inst/Changelog trunk/octave-forge/extra/gnuplot/inst/LICENSE.txt trunk/octave-forge/extra/gnuplot/inst/_g_check.m trunk/octave-forge/extra/gnuplot/inst/_g_default_tics.m trunk/octave-forge/extra/gnuplot/inst/_g_image_cmd.m trunk/octave-forge/extra/gnuplot/inst/_g_instantiate.m trunk/octave-forge/extra/gnuplot/inst/_g_istoken.m trunk/octave-forge/extra/gnuplot/inst/_g_map.m trunk/octave-forge/extra/gnuplot/inst/_g_parse_oct_fmt.m trunk/octave-forge/extra/gnuplot/inst/_g_parse_oct_fmt.m.merge trunk/octave-forge/extra/gnuplot/inst/_g_save_data.m trunk/octave-forge/extra/gnuplot/inst/_g_stringify.m trunk/octave-forge/extra/gnuplot/inst/_g_tics.m trunk/octave-forge/extra/gnuplot/inst/boxplot_data.m trunk/octave-forge/extra/gnuplot/inst/csplice.m trunk/octave-forge/extra/gnuplot/inst/g_cmd.m trunk/octave-forge/extra/gnuplot/inst/g_config.m trunk/octave-forge/extra/gnuplot/inst/g_data.m trunk/octave-forge/extra/gnuplot/inst/g_delete.m trunk/octave-forge/extra/gnuplot/inst/g_demo.m trunk/octave-forge/extra/gnuplot/inst/g_ez.m trunk/octave-forge/extra/gnuplot/inst/g_locate.m trunk/octave-forge/extra/gnuplot/inst/g_new.m trunk/octave-forge/extra/gnuplot/inst/g_plot.m trunk/octave-forge/extra/gnuplot/inst/g_set.m trunk/octave-forge/extra/gnuplot/inst/isuint.m trunk/octave-forge/extra/gnuplot/inst/myimage.m Added: trunk/octave-forge/extra/gnuplot/COPYING =================================================================== --- trunk/octave-forge/extra/gnuplot/COPYING (rev 0) +++ trunk/octave-forge/extra/gnuplot/COPYING 2010-01-22 05:29:58 UTC (rev 6792) @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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 3 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, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Added: trunk/octave-forge/extra/gnuplot/COPYRIGHT =================================================================== --- trunk/octave-forge/extra/gnuplot/COPYRIGHT (rev 0) +++ trunk/octave-forge/extra/gnuplot/COPYRIGHT 2010-01-22 05:29:58 UTC (rev 6792) @@ -0,0 +1,15 @@ +## Copyright (C) 2010 Tyzx, Inc <et...@ty...> +## +## 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 3 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, see +## http://www.gnu.org/licenses/gpl-3.0.html . Added: trunk/octave-forge/extra/gnuplot/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/gnuplot/DESCRIPTION (rev 0) +++ trunk/octave-forge/extra/gnuplot/DESCRIPTION 2010-01-22 05:29:58 UTC (rev 6792) @@ -0,0 +1,15 @@ +Name: Gnuplot +Version: 1.0.0 +Date: 2010-01-17 +Author: Etienne Grossmann +Maintainer: Etienne Grossmann +Title: Gnuplot wrappers for octave +Description: Scripts to save data in gnuplot-readable formats, +specify gnuplot commands that will be used to produce graphics, and +call gnuplot. See help g_ez quickly produce the most common plots. +Categories: graphics +Depends: octave (>= 3.0.0) +SystemRequirements: gnuplot (>= 4.0) +BuildRequires: gnuplot (>= 4.0) +License: GPL version 2 or later +Url: http://octave.sf.net Added: trunk/octave-forge/extra/gnuplot/inst/COPYRIGHT =================================================================== --- trunk/octave-forge/extra/gnuplot/inst/COPYRIGHT (rev 0) +++ trunk/octave-forge/extra/gnuplot/inst/COPYRIGHT 2010-01-22 05:29:58 UTC (rev 6792) @@ -0,0 +1 @@ +Copyright (c) 2007, Tyzx Corporation. All rights reserved. Added: trunk/octave-forge/extra/gnuplot/inst/Changelog =================================================================== --- trunk/octave-forge/extra/gnuplot/inst/Changelog (rev 0) +++ trunk/octave-forge/extra/gnuplot/inst/Changelog 2010-01-22 05:29:58 UTC (rev 6792) @@ -0,0 +1,8 @@ + +2008/05: Possibility of plotting a label with each data point in g_ez, either w/ + e.g. g_ez ("plot", rand(5,2), {"Label 1","Label 2", "3", "X", "Y"}) or w/ + g_ez ("plot", rand(10,2), "#") or + g_ez (plot", rand(10,2), "-o#4;Random Points;") + + g = g_plot (g) saves the locations of double-clicks and middle button + clicks in g.double_clicks and g.middle_clicks. \ No newline at end of file Added: trunk/octave-forge/extra/gnuplot/inst/LICENSE.txt =================================================================== --- trunk/octave-forge/extra/gnuplot/inst/LICENSE.txt (rev 0) +++ trunk/octave-forge/extra/gnuplot/inst/LICENSE.txt 2010-01-22 05:29:58 UTC (rev 6792) @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Discl... [truncated message content] |
From: <cu...@us...> - 2010-02-09 19:12:43
|
Revision: 6865 http://octave.svn.sourceforge.net/octave/?rev=6865&view=rev Author: culpo Date: 2010-02-09 19:12:37 +0000 (Tue, 09 Feb 2010) Log Message: ----------- Moved release date of about one week. Added SVNRelease. Modified Paths: -------------- trunk/octave-forge/extra/bim/DESCRIPTION trunk/octave-forge/extra/fpl/DESCRIPTION trunk/octave-forge/extra/msh/DESCRIPTION trunk/octave-forge/extra/ocs/DESCRIPTION Modified: trunk/octave-forge/extra/bim/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/bim/DESCRIPTION 2010-02-09 15:42:18 UTC (rev 6864) +++ trunk/octave-forge/extra/bim/DESCRIPTION 2010-02-09 19:12:37 UTC (rev 6865) @@ -1,6 +1,6 @@ Name: bim Version: 1.0.0 -Date: 2010-01-31 +Date: 2010-02-09 Author: Carlo de Falco, Culpo Massimiliano Maintainer: Culpo Massimiliano Title: PDE Solver using a Finite Element/Finite Volume approach @@ -8,3 +8,4 @@ Depends: octave (>= 3.0.0), fpl, msh Autoload: no License: GPL version 2 or later +SVNRelease: 6866 \ No newline at end of file Modified: trunk/octave-forge/extra/fpl/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/fpl/DESCRIPTION 2010-02-09 15:42:18 UTC (rev 6864) +++ trunk/octave-forge/extra/fpl/DESCRIPTION 2010-02-09 19:12:37 UTC (rev 6865) @@ -1,6 +1,6 @@ Name: fpl Version: 1.0.0 -Date: 2010-02-01 +Date: 2010-02-09 Author: Carlo de Falco, Massimiliano Culpo Maintainer: Massimiliano Culpo Title: Fem PLotting @@ -9,3 +9,4 @@ Depends: octave ( >= 3.0.0 ) License: GNU/GPL SystemRequirements: dx ( >= 4.3.2), sed, bash +SVNRelease: 6866 \ No newline at end of file Modified: trunk/octave-forge/extra/msh/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/msh/DESCRIPTION 2010-02-09 15:42:18 UTC (rev 6864) +++ trunk/octave-forge/extra/msh/DESCRIPTION 2010-02-09 19:12:37 UTC (rev 6865) @@ -1,6 +1,6 @@ Name: msh Version: 1.0.0 -Date: 2010-01-31 +Date: 2010-02-09 Author: Carlo de Falco, Massimiliano Culpo Maintainer: Carlo de Falco, Massimiliano Culpo Title: MeSHing software package for octave @@ -10,4 +10,4 @@ Autoload: no License: GPL version 2 or later Url: http://www.geuz.org/gmsh - +SVNRelease: 6866 \ No newline at end of file Modified: trunk/octave-forge/extra/ocs/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/ocs/DESCRIPTION 2010-02-09 15:42:18 UTC (rev 6864) +++ trunk/octave-forge/extra/ocs/DESCRIPTION 2010-02-09 19:12:37 UTC (rev 6865) @@ -1,6 +1,6 @@ Name: OCS Version: 0.1.0 -Date: 2009-02-25 +Date: 2010-02-09 Author: Carlo de Falco, Culpo Massimiliano Maintainer: Culpo Massimiliano Title: Octave Circuit Simulator @@ -8,3 +8,4 @@ Depends: octave (>= 3.0.0), odepkg Autoload: no License: GPL version 2 or later +SVNRelease: 6866 \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <blo...@us...> - 2010-07-04 19:39:52
|
Revision: 7466 http://octave.svn.sourceforge.net/octave/?rev=7466&view=rev Author: blondandy Date: 2010-07-04 19:39:45 +0000 (Sun, 04 Jul 2010) Log Message: ----------- * first commit of dicom support (digital communications in medicine) * implementation of dicominfo (compatibility with matlab not tested, though it is intended to be, eventually)) Added Paths: ----------- trunk/octave-forge/extra/dicom/ trunk/octave-forge/extra/dicom/COPYING trunk/octave-forge/extra/dicom/DESCRIPTION trunk/octave-forge/extra/dicom/inst/ trunk/octave-forge/extra/dicom/src/ trunk/octave-forge/extra/dicom/src/dicominfo.cpp Added: trunk/octave-forge/extra/dicom/COPYING =================================================================== --- trunk/octave-forge/extra/dicom/COPYING (rev 0) +++ trunk/octave-forge/extra/dicom/COPYING 2010-07-04 19:39:45 UTC (rev 7466) @@ -0,0 +1,635 @@ +The GNU Octave dicom package is Copyright Andy Buckle 2010 +Contact: blondandy using the sf.net system, +<https://sourceforge.net/sendmessage.php?touser=1760416> + + The GNU Octave dicom package 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 3 of the License, or (at your option) any later version. + + The GNU Octave dicom packag 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. + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + \ No newline at end of file Added: trunk/octave-forge/extra/dicom/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/dicom/DESCRIPTION (rev 0) +++ trunk/octave-forge/extra/dicom/DESCRIPTION 2010-07-04 19:39:45 UTC (rev 7466) @@ -0,0 +1,8 @@ +Name: dicom +Version: 0.1 +Date: 2010-06 +Author: Andy Buckle +Maintainer: Andy Buckle +Description: Digital communications in medicine file io. +License: GPL version 3 or later +Dependencies: Grassroots Dicom (GDCM) Added: trunk/octave-forge/extra/dicom/src/dicominfo.cpp =================================================================== --- trunk/octave-forge/extra/dicom/src/dicominfo.cpp (rev 0) +++ trunk/octave-forge/extra/dicom/src/dicominfo.cpp 2010-07-04 19:39:45 UTC (rev 7466) @@ -0,0 +1,402 @@ +/* + * The GNU Octave dicom package is Copyright Andy Buckle 2010 + * Contact: blondandy using the sf.net system, + * <https://sourceforge.net/sendmessage.php?touser=1760416> + * + * The GNU Octave dicom package 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 3 of the License, or (at your option) any later version. + * + * The GNU Octave dicom packag 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. + * + * Please see the file, "COPYING" for further details of GNU General + * Public License version 3. + * + */ + +# include <stdlib.h> //for calloc, free +# include <stdio.h> //for printf + +#include <sys/stat.h> +#include <unistd.h> +#include <time.h> + +#include <iostream> +#include <string> +#include <map> + +#include "octave/oct.h" +#include "octave/ov-struct.h" + +#include "gdcmSystem.h" +#include "gdcmReader.h" +#include "gdcmWriter.h" +#include "gdcmAttribute.h" +#include "gdcmDataSet.h" +#include "gdcmGlobal.h" +#include "gdcmDicts.h" +#include "gdcmDict.h" +#include "gdcmCSAHeader.h" +#include "gdcmPrivateTag.h" +#include "gdcmVR.h" +#include "gdcmSequenceOfItems.h" + +#define DICOM_ERR -1 +#define DICOM_OK 0 +#define DICOM_NOTHING_ASSIGNED 1 + +#define TIME_STR_LEN 31 + +#define OCT_FN_NAME dicominfo +#define QUOTED_(x) #x +#define QUOTED(x) QUOTED_(x) + +/** value represention that make sense going straight to strings. + * contrast with some VRASCII types that hold numbers. + * may take some dates and times out of this and handle differently */ +#define VRSTRING (gdcm::VR::AE|gdcm::VR::AS|gdcm::VR::CS|gdcm::VR::DA\ + |gdcm::VR::DT|gdcm::VR::LO|gdcm::VR::LT|gdcm::VR::PN|gdcm::VR::SH\ + |gdcm::VR::ST|gdcm::VR::TM|gdcm::VR::UI|gdcm::VR::UT) + +#ifdef NOT_OCT +# define octave_stdout std::cout +# define error printf +#endif + +char* byteval2string(char * d, int d_len_p, const gdcm::ByteValue *bv); +char* name2Keyword(char *d, int *d_len_p, const char* s); +Matrix str2DoubleVec(const char*); +Octave_map dump(const char filename[], int chatty); +void dumpDataSet(Octave_map *om, const gdcm::DataSet *ds, int chatty, int sequenceDepth); +void getFileModTime(char *timeStr, const char *filename); +void dumpElement(Octave_map *om, const gdcm::DataElement * elem, int chatty, int sequenceDepth); +void dumpSequence(octave_value *ov, gdcm::SequenceOfItems *seq, int chatty, int sequenceDepth); +int element2value(std::string *varname, octave_value *ov, const gdcm::DataElement * elem, int chatty, int sequenceDepth) ; + +int dicom_truncate_numchar=40; + +#ifdef NOT_OCT +int main( int argc, const char* argv[] ) { + dump(argv[1], 1 /* chatty on */ ); // 1 cmd line arg: dicom filename + return 0; +} +#else +DEFUN_DLD (OCT_FN_NAME, args, nargout, + "return some info from a dicom file: 1 arg: dicom filename") { + octave_value_list retval; // create object to store return values + int chatty = !nargout; // dump output to stdout if not assigning to var + charMatrix ch = args(0).char_matrix_value (); + if (ch.rows()!=1) { + error(QUOTED(OCT_FN_NAME)": arg should be a filename, 1 row of chars"); + return retval; + } + std::string filename = ch.row_as_string (0); + + int i; // parse any additional args + for (i=1; i<args.length(); i++) { + charMatrix chex = args(i).char_matrix_value(); + if (chex.rows()!=1) { + error(QUOTED(OCT_FN_NAME)": arg should be a string, 1 row of chars"); + return retval; + } + std::string argex = chex.row_as_string (0); + if (!argex.compare(0,9,"truncate=")) { + dicom_truncate_numchar=atoi(argex.substr(9).c_str()); + } else { + warning(QUOTED(OCT_FN_NAME)": arg not understood: %s", argex.c_str()); + } + } + + Octave_map om=dump(filename.c_str(),chatty); + retval(0)=om; + return retval; +} +#endif + + +Octave_map dump(const char filename[], int chatty) { + // output struct + Octave_map om; + // Instantiate the reader: + gdcm::Reader reader; + reader.SetFileName( filename ); + if( !reader.Read() ) { + error("Could not read: %s",filename); + return om; //TODO: set error state somehow so the main DEFUN_DLD function knows + } + gdcm::File &file = reader.GetFile(); + gdcm::DataSet &ds = file.GetDataSet(); + gdcm::FileMetaInformation &hds=file.GetHeader(); + + om.assign("Filename",filename); + char dateStr[TIME_STR_LEN+1]; + getFileModTime(dateStr, filename); + om.assign("FileModDate", dateStr); + if(chatty) octave_stdout << "# file info\nFilename:" + << filename << "\nFileModDate:" << dateStr << '\n'; + + if(chatty) octave_stdout << "# header\n" ; + dumpDataSet(&om, &hds, chatty, 0); + if(chatty) octave_stdout << "# metadata\n" ; + dumpDataSet(&om, &ds, chatty, 0); + + return om; +} + +void dumpDataSet(Octave_map *om, const gdcm::DataSet *ds, int chatty, int sequenceDepth) { + + const gdcm::DataSet::DataElementSet DES=ds->GetDES(); // gdcm::DataSet::DataElementSet is a std::set + gdcm::DataSet::Iterator it; + + for ( it=DES.begin() ; it != DES.end(); it++ ) { + dumpElement(om, &(*it), chatty, sequenceDepth); + } +} + +void dumpElement(Octave_map *om, const gdcm::DataElement * elem, + int chatty, int sequenceDepth) { + std::string varname(""); + octave_value ov; + if(DICOM_OK==element2value(&varname, &ov, elem, chatty, sequenceDepth)) { + om->assign(varname.c_str(), ov); + } else { + if (0==varname.length()) return ; + om->assign(varname.c_str(), "not assigned"); + } +} + +int element2value(std::string *varname, octave_value *ov, const gdcm::DataElement * elem, + int chatty, int sequenceDepth) { + // get dicom dictionary + static const gdcm::Global& g = gdcm::Global::GetInstance(); + static const gdcm::Dicts &dicts = g.GetDicts(); + + const gdcm::Tag tag = elem->GetTag(); + // skip "Group Length" tags. note: these are deprecated in DICOM 2008 + if(tag.GetElement() == (uint16_t)0) return DICOM_NOTHING_ASSIGNED; + const gdcm::DictEntry dictEntry = dicts.GetDictEntry(tag,(const char*)0); + const gdcm::VR vr= dictEntry.GetVR(); // value representation. ie DICOM type. + const char *tagName=dictEntry.GetName(); + + int tagVarNameBufLen=127; + char *keyword=(char *)malloc((tagVarNameBufLen+1)*sizeof(char)); + keyword=name2Keyword(keyword,&tagVarNameBufLen,tagName); + *varname=std::string(keyword); + + if(chatty) { + int i; //TODO: probably a better way to do this than using a loop + for(i=0;i<sequenceDepth;i++) octave_stdout << " " ; + octave_stdout << tag << ":" << vr << ":" << keyword << ":" ; + // TODO: error if var name repeated. + } +#define strValBufLen 511 + char strValBuf[strValBufLen+1]; + char* strVal=strValBuf; + + if ( vr & gdcm::VR::VRASCII) { + strVal=byteval2string(strValBuf,strValBufLen,elem->GetByteValue()); + if(chatty) { + if (dicom_truncate_numchar>0) { + octave_stdout << '[' << std::string(strVal).substr(0,dicom_truncate_numchar) + << ( ((int)strlen(strVal)>dicom_truncate_numchar) ? "..." : "") << "]\n"; + } else { + octave_stdout << '[' << strVal << "]\n"; + } + } + if (vr & VRSTRING) { //all straight to string types + *ov=std::string(strVal); // TODO: error if om already has member with this name + } else if (vr & gdcm::VR::IS) { // Integer String. spec tallies with signed 32 bit int + *ov=(int32_t)atoi(strVal); + } else if (vr & gdcm::VR::DS) { // Double String. vector separated by '/' + Matrix vec=str2DoubleVec(strVal); + *ov=vec; + } else { + if(chatty) octave_stdout << " ### string type not handled ###\n"; + return DICOM_NOTHING_ASSIGNED; + } + if (strVal != strValBuf) free(strVal); // long string. malloc'd instead of using buf, now needs free'ng + } else if (vr & gdcm::VR::UL) { + uint32_t ulval ; + memcpy(&ulval, elem->GetByteValue()->GetPointer(), 4); + *ov=ulval; + if(chatty) octave_stdout << '[' << ulval << ']' << "\n"; + } else if (vr & gdcm::VR::SQ) { + if(chatty) octave_stdout << " reading sequence. "; // \n provided in dumpSequence fn + gdcm::SmartPointer<gdcm::SequenceOfItems> sqi = elem->GetValueAsSQ(); + dumpSequence(ov, sqi, chatty, sequenceDepth+1); + } else if (vr & gdcm::VR::AT) { // attribute tag + intNDArray<octave_uint16> uint16pair(dim_vector(1,2)); + octave_uint16 *fv=uint16pair.fortran_vec(); + uint16_t *p=(uint16_t *)elem->GetByteValue()->GetPointer(); + memcpy(fv,p,4); + *ov=uint16pair; + if (chatty) { + char buf[16]; + snprintf(buf,15,"[(%04X,%04X)]\n",p[0],p[1]); + octave_stdout << buf ; + } + } else if (vr & gdcm::VR::US) {// unsigned short + uint16_t usval ; + memcpy(&usval, elem->GetByteValue()->GetPointer(), 2); + *ov=usval; + if(chatty) octave_stdout << '[' << usval << "]\n"; + } else if (vr & gdcm::VR::OB) {// other byte + if (!strcmp(keyword,"PixelData")) { + if(chatty) octave_stdout << "skipping, leave for dicomread\n"; + return DICOM_NOTHING_ASSIGNED; + } + const uint32_t len=elem->GetByteValue()->GetLength(); + intNDArray<octave_uint8> bytearr(dim_vector(1,len)); + octave_uint8 *fv=bytearr.fortran_vec(); + const char *p=elem->GetByteValue()->GetPointer(); + memcpy(fv,p , len); + *ov=bytearr; + if (chatty) { + uint32_t i; + char buf[8]; + octave_stdout << '[' ; + for (i=0; i<len; i++) { + snprintf(buf,7,"%02X ",(const uint8_t)p[i]); + octave_stdout << buf << " " ; + } + octave_stdout << "]\n"; + } + } else { + if(chatty) octave_stdout << " ### type not handled ###\n"; + return DICOM_NOTHING_ASSIGNED; + } + free(keyword); + return DICOM_OK; +} + +void dumpSequence(octave_value *ov, gdcm::SequenceOfItems *seq, int chatty, int sequenceDepth) { + const octave_idx_type nSeq=seq->GetNumberOfItems(); // objects in sequence + const octave_idx_type nElem=seq->GetItem(1).GetNestedDataSet().GetDES().size(); // values in object + if (chatty) octave_stdout << nSeq << " object" << ((nSeq==1)?"":"s, each ") << " with " + << nElem << " element" << ((nElem==1)?"":"s") << ".\n"; + std::vector<std::string> sv; + std::vector<gdcm::DataSet::Iterator> iv; + std::vector<Cell> cv; + for (octave_idx_type i=1; i<=nSeq ;i++) { + iv.push_back(seq->GetItem(i).GetNestedDataSet().GetDES().begin()); + } + for (octave_idx_type i=1; i<=nElem ;i++) { + cv.push_back(Cell(nSeq,1)); + } + for (octave_idx_type i=0; i<nElem ;i++) { + std::string key, lastKey; + for (octave_idx_type j=0; j<nSeq; iv.at(j)++, j++ ) { + octave_value subov; + element2value(&key, &subov, &(*iv.at(j)), chatty, sequenceDepth); + cv.at(i)(j)=subov; + if (0==j) { + sv.push_back(key); + } else if (key!=lastKey) { + warning(QUOTED(OCT_FN_NAME)":objects in sequence are not all the same"); + } + lastKey=key; + } + } + Octave_map om; + for (octave_idx_type i=0; i<nElem ;i++) { + om.assign(sv.at(i).c_str(), cv.at(i)); + } + *ov=om; + + // vectors goes out of scope here. i think destructor is called on all content. +} + +void getFileModTime(char *timeStr, const char *filename) { + struct tm* clock; // create a time structure + struct stat attrib; // create a file attribute structure + stat(filename, &attrib); // get the attributes of afile.txt + clock = gmtime(&(attrib.st_mtime)); // Get the last modified time and put it into the time structure + char monthStr[4]; + switch(clock->tm_mon) { + case 0: strcpy(monthStr,"Jan"); break; + case 1: strcpy(monthStr,"Feb"); break; + case 2: strcpy(monthStr,"Mar"); break; + case 3: strcpy(monthStr,"Apr"); break; + case 4: strcpy(monthStr,"May"); break; + case 5: strcpy(monthStr,"Jun"); break; + case 6: strcpy(monthStr,"Jul"); break; + case 7: strcpy(monthStr,"Aug"); break; + case 8: strcpy(monthStr,"Sep"); break; + case 9: strcpy(monthStr,"Oct"); break; + case 10: strcpy(monthStr,"Nov"); break; + case 11: strcpy(monthStr,"Dec"); break; + } + snprintf(timeStr, TIME_STR_LEN, "%02i-%s-%i %02i:%02i:%02i", + clock->tm_mday,monthStr,1900+clock->tm_year, + clock->tm_hour, clock->tm_min, clock->tm_sec); + //clock->tm_year returns the year (since 1900) + // clock->tm_mon returns the month (January = 0) + // clock->tm_mday returns the day of the month + // 18-Dec-2000 11:06:43 +} + +Matrix str2DoubleVec(const char* s){ + // count separators, hence elements + int n=1; + char *sl=(char *)s; + for (; *sl != '\0'; sl++) n = (*sl == '\\') ? n+1 : n; + // create output args + Matrix dv(n, 1); + double *fv=dv.fortran_vec(); + // parse into output + int i=0; + for (sl=(char *)s; i<n ; i++, sl++) { + fv[i]=strtod(sl,&sl); + } + return dv; +} + + +// this fn will malloc new space if the length of the supplied destination +// string is not sufficient. so, if the returned pointer is not to the same +// place as the supplied, the returned pointer should be freed. +// returned pointer, as the supplied one may be invalid. +// d_len: length of d. +char* byteval2string(char * d, int d_len, const gdcm::ByteValue *bv) { + if(bv==NULL) { // make a null string, "" + *d='\0'; + return d; + } + int len = bv->GetLength(); + if ( len > d_len ) { + d=(char *)malloc((len+1)*sizeof(char)); + } + memcpy(d, bv->GetPointer(), len); + d[len]='\0'; + return d; +} + +// remove non-alphabet characters from a string. +// remove s following quote +// the destination string, d, must be malloc'd space. +// this fn will realloc if it is not big enough. so use +// returned pointer, as the supplied one may be invalid. +// d_len_p: pointer to length of d. is updated if required. +char* name2Keyword(char *d, int *d_len_p, const char* s) { + char *f=(char*)s; //from (loop through source) + int len=strlen(s); + if ( len > *d_len_p ) { + d=(char *)realloc(d,(len+1)*sizeof(char)); + } + char *tl=(char*)d; // pointer to loop through the destination + for (; *f != '\0' ; f++ ) { + if ( (*f >= 'A' && *f <= 'Z') || (*f >= 'a' && *f <= 'z') ) { + *tl++ = *f; + } else if (*f=='\'' && *(f+1)=='s') { + f++; // if quote followed by s, skip both chars + } else if (*f==' ' && *(f+1) >= 'a' && *(f+1) <= 'z') { + *tl++ = *++f - ('a'-'A') ; // space folowed by lower case char, cap char + } + } + *tl = '\0'; + return d; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cde...@us...> - 2010-08-05 16:23:41
|
Revision: 7498 http://octave.svn.sourceforge.net/octave/?rev=7498&view=rev Author: cdemills Date: 2010-08-05 16:23:32 +0000 (Thu, 05 Aug 2010) Log Message: ----------- Adding package dataframe Added Paths: ----------- trunk/octave-forge/extra/dataframe/ trunk/octave-forge/extra/dataframe/@dataframe/ trunk/octave-forge/extra/dataframe/@dataframe/cat.m trunk/octave-forge/extra/dataframe/@dataframe/dataframe.m trunk/octave-forge/extra/dataframe/@dataframe/display.m trunk/octave-forge/extra/dataframe/@dataframe/end.m trunk/octave-forge/extra/dataframe/@dataframe/fold.m trunk/octave-forge/extra/dataframe/@dataframe/minus.m trunk/octave-forge/extra/dataframe/@dataframe/numel.m trunk/octave-forge/extra/dataframe/@dataframe/plus.m trunk/octave-forge/extra/dataframe/@dataframe/private/ trunk/octave-forge/extra/dataframe/@dataframe/private/df_basecomp.m trunk/octave-forge/extra/dataframe/@dataframe/private/df_check_char_array.m trunk/octave-forge/extra/dataframe/@dataframe/private/df_name2idx.m trunk/octave-forge/extra/dataframe/@dataframe/private/df_pad.m trunk/octave-forge/extra/dataframe/@dataframe/private/df_strjust.m trunk/octave-forge/extra/dataframe/@dataframe/private/df_strset.m trunk/octave-forge/extra/dataframe/@dataframe/rationale.txt trunk/octave-forge/extra/dataframe/@dataframe/size.m trunk/octave-forge/extra/dataframe/@dataframe/subsasgn.m trunk/octave-forge/extra/dataframe/@dataframe/subsref.m trunk/octave-forge/extra/dataframe/@dataframe/summary.m trunk/octave-forge/extra/dataframe/data_test.csv trunk/octave-forge/extra/dataframe/dataframe trunk/octave-forge/extra/dataframe/octave_frame.zip Added: trunk/octave-forge/extra/dataframe/@dataframe/cat.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/cat.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/cat.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,116 @@ +function resu = cat(dim, A, varargin) + %# function resu = cat(dim, A, varargin) + %# This is the concatenation operator for a dataframe object. "Dim" + %# has the same meaning as ordinary cat. Next arguments may be + %# dataframe, vector/matrix, or two elements cells. First one is taken + %# as row/column name, second as data. + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: cat.m 1025 2010-08-02 08:55:55Z dupuis $ + %# + + switch dim + case 1 + resu = A; + + for indi=1:length(varargin), + B = varargin{indi}; + if !isa(B, 'dataframe'), + if iscell(B) && 2 == length(B), + B = dataframe(B{2}, 'rownames', B{1}); + else + B = dataframe(B, 'colnames', inputname(2+indi)); + endif + endif + if resu._cnt(2) != B._cnt(2), + error('Different number of columns in dataframes'); + endif + %# do not duplicate empty names + if !isempty(resu._name{1}) || !isempty(B._name{1}), + if length(resu._name{1}) < resu._cnt(1), + resu._name{1}(end+1:resu._cnt(1), 1) = {''}; + endif + if length(B._name{1}) < B._cnt(1), + B._name{1}(end+1:B._cnt(1), 1) = {''}; + endif + resu._name{1} = vertcat(resu._name{1}(:), B._name{1}(:)); + resu._over{1} = [resu._over{1} B._over{1}]; + endif + resu._cnt(1) = resu._cnt(1) + B._cnt(1); + resu._ridx = [resu._ridx(:); B._ridx(:)]; + %# find data with same column names + indr = logical(ones(1, resu._cnt(2))); + indb = logical(ones(1, resu._cnt(2))); + indi = 1; + while indi <= resu._cnt(2), + indj = strmatch(resu._name{2}(indi), B. _name{2}); + if ~isempty(indj), + indj = indj(1); + if ~strcmp(resu._type{indi}, B._type{indj}), + error("Trying to mix columns of different types"); + endif + resu._data{indi} = [resu._data{indi}; B._data{indj}]; + indr(indi) = false; indb(indj) = false; + endif + indi = indi + 1; + endwhile + if any(indr) || any(indb) + error('Different number/names of columns in dataframe'); + endif + endfor + + case 2 + resu = A; + for indi=1:length(varargin), + B = varargin{indi}; + if !isa(B, 'dataframe'), + if iscell(B) && 2 == length(B), + B = dataframe(B{2}, 'colnames', B{1}); + else + B = dataframe(B, 'colnames', inputname(2+indi)); + endif + B._ridx = resu._ridx; %# make them compatibles + endif + if resu._cnt(1) != B._cnt(1), + error('Different number of rows in dataframes'); + endif + if any(resu._ridx(:) - B._ridx(:)) + error('dataframes row indexes not matched'); + endif + resu._name{2} = vertcat(resu._name{2}, B._name{2}); + resu._over{2} = [resu._over{2} B._over{2}]; + indj = resu._cnt(2) + 1; + for indi = 1:B._cnt(2), + resu._data{indj} = B._data{indi}; + resu._type{indj} = B._type{indi}; + indj = indj + 1; + endfor + resu._cnt(2) = resu._cnt(2) + B._cnt(2); + endfor + + otherwise + error('Incorrect call to cat'); + endswitch + + %# disp('End of cat'); keyboard +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/dataframe.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/dataframe.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/dataframe.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,269 @@ +function df = dataframe(x = [], varargin) + + %# -*- texinfo -*- + %# @deftypefn {Function File} @var{df} = dataframe(@var{x = []}, ...) + %# This is the default constructor for a dataframe object, which is + %# similar to R 'data.frame'. It's a way to group tabular data, then + %# accessing them either as matrix or by column name. + %# Input argument x may be: @itemize + %# @item a dataframe => use @var{varargin} to pad it with suplemental + %# columns + %# @item a matrix => create column names from input name; each column + %# is used as an entry + %# @item a cell matrix => try to infer column names from the first row, + %# and row indexes and names from the two first columns; + %# @item a file name => import data into a dataframe; + %# @item a matrix of char => initialise colnames from them. + %# @item a two-element cell: use the first as column as column to + %# append to, and the second as initialiser for the column(s) + %# @end itemize + %# If called with an empty value, or with the default argument, it + %# returns an empty dataframe which can be further populated by + %# assignement, cat, ... If called without any argument, it should + %# return a dataframe from the whole workspace. + %# @*Variable input arguments are first parsed as pairs (options, values). + %# Recognised options are: @itemize + %# @item rownames : take the values as initialiser for row names + %# @item colnames : take the values as initialiser for column names + %# @item seeked : a filed value which triggers start of processing. + %# Each preceeding line is silently skipped. Default: none + %# @item unquot: a logical switch telling wheter or not strings should + %# be unquoted before storage, default = true; + %# @end itemize + %# The remaining data are concatenanted (right-appended) to the existing ones. + %# @end deftypefn + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: dataframe.m 1036 2010-08-03 16:24:01Z dupuis $ + %# + +if 0 == nargin + disp('FIXME -- should create a dataframe from the whole workspace') + return +endif + +if isempty(x), + %# default constructor: initialise the fields in the right order + df._cnt = [0 0]; + df._name = {cell(0, 1), cell(1, 0)}; %# rows - cols + df._over = cell(1, 2); + df._ridx = []; + df._data = cell(0, 0); + df._type = cell(0, 0); + df = class(df, 'dataframe'); + return +endif + +if isa(x, 'dataframe') + df = x; +elseif isa(x, 'struct'), + df = class(x, 'dataframe'); return +else + df = dataframe([]); %# get the right fields +endif + +seeked = []; unquot = true; + +if length(varargin) > 0, + indi = 1; + %# loop over possible arguments + while indi <= size(varargin, 2), + switch(varargin{indi}) + case 'rownames' + if !iscell(varargin{indi+1}), + df._name{1} = cellstr(varargin{indi+1}); + else + df._name{1} = varargin{indi+1}; + endif + df._over{1}(1, 1:length(df._name{1})) = false; + df._cnt(1) = size(df._name{1}, 1); + varargin(indi:indi+1) = []; + case 'colnames' + if !iscell(varargin{indi+1}), + df._name{2} = cellstr(varargin{indi+1}); + else + df._name{2} = varargin{indi+1}; + endif + dummy = cellfun(@(x) strsplit(x, '='), df._name{2}, ... + "UniformOutput", false); + disp('line 89 '); keyboard + df._over{2}(1, 1:length(df._name{2})) = false; + varargin(indi:indi+1) = []; + case 'seeked', + seeked = varargin{indi + 1}; + varargin(indi:indi+1) = []; + case 'unquot', + unquot = varargin{indi + 1}; + varargin(indi:indi+1) = []; + otherwise %# FIXME: just skip it for now + indi = indi + 1; + endswitch + endwhile +endif + +indi = 0; +while indi <= size(varargin, 2), + indi = indi + 1; + if ~isa(x, 'dataframe') + if isa(x, 'char') && size(x, 1) < 2, + %# read the data frame from a file + try + x = load(tilde_expand(x)); + catch + UTF8_BOM = char([0xEF 0xBB 0xBF]); + unwind_protect + fid = fopen(tilde_expand(x)); + dummy = fgetl(fid); + if !strcmp(dummy, UTF8_BOM), + frewind(fid); + endif + in = fscanf(fid, "%c"); %# slurps everything + unwind_protect_cleanup + fclose(fid); + end_unwind_protect + lines = regexp(in,'(^|\n)([^\n]+)', 'match'); %# cut into lines + content = cellfun(@(x) regexp(x, '(\b|'')[^,]+(''|\b)', 'match'), ... + lines, 'UniformOutput', false); %# extract fields + indl = 1; indj = 1; %# disp('line 151 '); keyboard + if ~isempty(seeked), + while indl <= length(lines), + dummy = content{indl}; + if strcmp(dummy{1}, seeked) + break; + endif + indl = indl + 1; + endwhile + else + dummy = content{indl}; + endif + x = cell(1+length(lines)-indl, size(dummy, 2)); + while indl <= length(lines), + dummy = content{indl}; + %# try to convert to float + the_line = cellfun(@(x) sscanf(x, "%f"), dummy, ... + 'UniformOutput', false); + for indk = 1: size(the_line, 2), + if isempty(the_line{indk}) || any(size(the_line{indk}) > 1), + %#if indi > 1 && indk > 1, disp('line 117 '); keyboard; endif + if unquot, + try + x(indj, indk) = regexp(dummy{indk}, '[^''].*[^'']', 'match'){1}; + catch + %# if the previous test fails, try a simpler one + in = regexp(dummy{indk}, '[^'']+', 'match'); + if !isempty(in), + x(indj, indk) = in{1}; + else + x(indj, indk) = []; + endif + end_try_catch + else + x(indj, indk) = dummy{indk}; %# no conversion possible + endif + else + x(indj, indk) = the_line{indk}; + endif + endfor + indl = indl + 1; indj = indj + 1; + endwhile + clear UTF8_BOM fid in lines indl the_line content + end_try_catch + endif + + %# fallback, avoiding a recursive call + idx.type = '()'; + + if iscell(x), + if 2 == length(x), + %# use the intermediate value as destination column + [indc, ncol] = df_name2idx(df._name{2}, x{1}, df._cnt(2), "column"); + if ncol != 1, + error(["With two-elements cell, the first should resolve " ... + "to a single column"]); + endif + try + dummy = cellfun('class', x{2}(2, :), 'UniformOutput', false); + catch + dummy = cellfun('class', x{2}(1, :), 'UniformOutput', false); + end_try_catch + df = df_pad(df, 2, [length(dummy) indc], dummy); + x = x{2}; + indj = indc + (1:size(x, 2)); + else + indj = df._cnt(2)+(1:size(x, 2)); + endif + if length(df._name{2}) < indj(1) || isempty(df._name{2}(indj)), + [df._name{2}(indj, 1), df._over{2}(1, indj)] ... + = df_colnames(inputname(indi), indj); + endif + %# allow overwriting of column names + df._over{2}(1, indj) = true; + else + if length(df._name{2}) < indj(1) || isempty(df._name{2}(indj)), + [df._name{2}(indj, 1), df._over{2}(1, indj)] ... + = df_colnames(inputname(indi), indj); + endif + endif + idx.subs = {'', indj}; + %# use direct assignement + df = subsasgn(df, idx, x); + elseif indi > 1, + error('Concatenating dataframes: use cat instead'); + endif + + try + %# loop over next variable argument + x = varargin{1, indi}; + catch + %# disp('line 197 ???'); + end_try_catch + +endwhile + +endfunction + +function [x, y] = df_colnames(base, num) + %# small auxiliary function to generate column names. This is required + %# here, as only the constructor can use inputname() + if any([index(base, "=")]), + %# takes the left part as base + x = strsplit(base, "="); + x = deblank(x{1}); y = false; + elseif any([index(base, '''')]), + %# base is most probably a filename + x = regexp(base, '[^''].*[^'']', 'match'){1}; y = true; + elseif any([index(base, "(") index(base, ":")]), + x = 'X'; y = true; %# this is a default value, may be changed + else + x = base; y = false; + endif + + if numel(num) > 1, + x = repmat(x, numel(num), 1); + x = cstrcat(x, strjust(num2str(num(:)), 'left')); + y = repmat(y, 1, numel(num)); + endif + + x = cellstr(x); + +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/display.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/display.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/display.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,162 @@ +function resu = display(df) + + %# function resu = display(df) + %# Tries to produce a nicely formatted output of a dataframe. + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: display.m 1027 2010-08-02 08:59:39Z dupuis $ + %# + +%# generate header name +if 2 == length(df._cnt), + head = sprintf("Dataframe with %d rows and %d columns", df._cnt); +else + head = sprintf("Dataframe with %d rows and %d columns (%d unfolded)", ... + df._cnt); +endif +if all(df._cnt > 0), %# stop for empty df + vspace = repmat(' ', df._cnt(1), 1); + indi = 1; %# the real, unfolded index + for indc = 1:df._cnt(2), %# loop over columns + %# emit column names and type + if 1 == size(df._data{indc}, 2), + dummy{1, 2+indi} = deblank(disp(df._name{2}{indc})); + dummy{2, 2+indi} = deblank(df._type{indc}); + else + %# append a dot and the third-dimension index to column name + tmp_str = [deblank(disp(df._name{2}{indc})) "."]; + tmp_str = arrayfun(@(x) horzcat(tmp_str, num2str(x)), ... + (1:size(df._data{indc}, 2)), 'UniformOutput', false); + dummy{1, 2+indi} = tmp_str{1}; + dummy{2, 2+indi} = deblank(df._type{indc}); + indk = 1; while indk < size(df._data{indc}, 2), + dummy{1, 2+indi+indk} = tmp_str{1+indk}; + dummy{2, 2+indi+indk} = dummy{2, 2+indi}; + indk = indk + 1; + endwhile + endif + %# "print" each column + switch df._type{indc} + case {'char'} + indk = 1; while indk <= size(df._data{indc}, 2), + tmp_str = df._data{indc}(:, indk); %#get the whole column + indj = cellfun('isprint', tmp_str, 'UniformOutput', false); + indj = ~cellfun('all', indj); + for indr = 1:length(indj), + if indj(indr), + if isna(tmp_str{indr}), + tmp_str{indr} = "NA"; + else + tmp_str{indr} = undo_string_escapes(tmp_str{indr}); + endif + endif + endfor + %# keep the whole thing, and add a vertical space + dummy{3, 2+indi} = disp(char(tmp_str)); + dummy{3, 2+indi} = horzcat... + (vspace, char(regexp(dummy{3, 2+indi}, '.*', ... + 'match', 'dotexceptnewline'))); + indi = indi + 1; indk = indk + 1; + endwhile + otherwise + %# keep only one horizontal space per line + indk = 1; while indk <= size(df._data{indc}, 2), + dummy{3, 2+indi} = disp(df._data{indc}(:, indk)); + tmp_str = char(regexp(dummy{3, 2+indi}, ' \S.*', ... + 'match', 'dotexceptnewline')); + if size(tmp_str, 1) < df._cnt(1), + tmp_str = horzcat... + (vspace, char(regexp(dummy{3, 2+indi}, '\S.*', ... + 'match', 'dotexceptnewline'))); + endif + dummy{3, 2+indi} = tmp_str; + indi = indi + 1; indk = indk + 1; + endwhile + endswitch + endfor + + vspace = [' '; ' '; vspace]; + %# second line content + if 1 == size(df._ridx, 2), + dummy{2, 1} = ["_"; "Nr"]; + dummy{3, 1} = disp(df._ridx(:)); + indi = regexp(dummy{3, 1}, '\b.*\b', 'match', 'dotexceptnewline'); + resu = strjust(char(dummy{2, 1}, indi), 'right'); + else + resu = []; + for indi = 1:size(df._ridx, 2)-1, + dummy{2, 1} = [["_." num2str(indi)]; "Nr"]; + dummy{3, 1} = disp(df._ridx(:, indi)); + indj = regexp(dummy{3, 1}, '\b.*\b', 'match', 'dotexceptnewline'); + resu = horzcat(resu, strjust(char(dummy{2, 1}, indj), 'right'), vspace); + endfor + dummy{2, 1} = [["_." num2str(indi+1)]; "Nr"]; + dummy{3, 1} = disp(df._ridx(:, end)); + indj = regexp(dummy{3, 1}, '\b.*\b', 'match', 'dotexceptnewline'); + resu = horzcat(resu, strjust(char(dummy{2, 1}, indj), 'right')); + endif + %# emit row names + if isempty(df._name{1}), + dummy{2, 2} = []; dummy{3, 2} = []; + else + dummy{2, 2} = [" ";" "]; + dummy{3, 2} = df._name{1}; + endif + + if size(dummy, 2) > 1, + %# resu contains the ridx + + %# insert a vertical space + if !isempty(dummy{3, 2}), + indi = ~cellfun('isempty', dummy{3, 2}); + if any(indi), + resu = horzcat(resu, vspace); + resu = horzcat(resu, strjust(char(dummy{2, 2}, dummy{3,2}), 'right')); + endif + endif + + %# emit each colum + for indi = 1:max(df._cnt(2:end)), + try + %# avoid this column touching the previous one + if any(cellfun('size', dummy(1:2, 2+indi), 2) >= ... + size(dummy{3, 2+indi}, 2)), + resu = horzcat(resu, vspace); + endif + resu = horzcat(resu, strjust(char(dummy{:, 2+indi}), 'right')); + catch + tmp_str = sprintf("Emitting %d lines, expecting %d", ... + size(dummy{3, 2+indi}, 1), df._cnt(1)); + error(tmp_str); + end_try_catch + endfor + else + resu = ''; + endif +else + resu = ''; +endif + +resu = char(head, resu); disp(resu) + + Added: trunk/octave-forge/extra/dataframe/@dataframe/end.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/end.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/end.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,36 @@ +function resu = end(df, k, n) + %# function resu = end(df, k, n) + %# This is the end operator for a dataframe object, returning the + %# maximum number of rows or columns + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: end.m 852 2010-07-22 10:47:55Z dupuis $ + %# + + try + resu = df._cnt(k); + catch + error("incorrect call to end, index greater than number of dimensions"); + end_try_catch + +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/fold.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/fold.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/fold.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,95 @@ +function resu = fold(df, dim, indr, indc) + + %# function resu = subasgn(df, S, RHS) + %# The purpose is to fold a dataframe. Part from (1:indr-1) doesn't + %# move, then content starting at indr is moved into the second, + %# third, ... sheet. To be moved, there must be equality of rownames, + %# if any, and of fields contained in indc. + + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: fold.m 1016 2010-07-30 13:49:35Z dupuis $ + %# +switch dim + case 1 + [indr, nrow] = df_name2idx(df._name{1}, indr, df._cnt(1), 'row'); + [indc, ncol] = df_name2idx(df._name{2}, indc, df._cnt(2), 'column'); + + if indr(1) > 1, + slice_size = indr(1) - 1; + %# we can't use directly resu = df(1:slice_size, :, :) + S.type = '()'; + S.subs = { 1:slice_size, ':', ':', 'dataframe'}; + resu = subsref(df, S); + + %# how many columns for each slice + targets = cellfun('size', df._data, 2); + %# a test function to determine if the location is free + for indj = 1:df._cnt(2), + if any(indj == indc), + continue; + endif + switch df._type{indj} + case { 'char' } + testfunc{indj} = @(x, indr, indc) ... + !isna(x{indr, indc}); + otherwise + testfunc{indj} = @(x, indr, indc) ... + !isna(x(indr, indc)); + endswitch + endfor + + for indi = indr, + %# where does this line go ? + where = find(df._data{indc}(1:slice_size, 1) ... + == df._data{indc}(indi, 1)); + if !isempty(where), + %# transfering one line -- loop over columns + for indj = 1:df._cnt(2), + if any(indj == indc), + continue; + endif + + if testfunc{indj}(resu._data{indj}, where, targets(indj)) + %# add one more sheet + resu = df_pad(resu, 3, 1, indj); + targets(indj) = targets(indj) + 1; + endif + %# transfer field + resu._data{indj}(where, targets(indj)) = ... + df._data{indj}(indi, 1); + endfor + %# update row index + resu._ridx(where, max(targets)) = df._ridx(indi); + else + disp('line 65: FIXME'); keyboard; + endif + endfor + + else + + disp('line 70: FIXME '); keyboard + endif + + +endswitch Added: trunk/octave-forge/extra/dataframe/@dataframe/minus.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/minus.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/minus.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,66 @@ +function resu = minus(A, B); + + %# function resu = minus(A, B) + %# Implements the '-' operator when at least one one argument is a dataframe. + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: minus.m 852 2010-07-22 10:47:55Z dupuis $ + %# + + [A, B] = df_basecomp(A, B); + + if isscalar(A) + %# B is a dataframe + resu = B; + for indi = 1:B._cnt(2), + resu._data{indi} = A-B._data{indi}; + endfor + return + elseif ismatrix(A), + resu = B; + for indi = 1:B._cnt(2), + resu._data{indi} = A(indi, :) - B._data{indi}; + endfor + return + endif + + if isscalar(B), + resu = A; + for indi = 1:A._cnt(2), + resu._data{indi} = A._data{indi} -B; + endfor + return + elseif ismatrix(B), + resu = A; + for indi = 1:A._cnt(2), + resu._data{indi} = A._data{indi} -B(:, indi); + endfor + return + endif + + resu = A; + for indi = 1:A._cnt(2), + resu._data{indi} = A._data{indi} -B._data{indi}; + endfor + +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/numel.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/numel.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/numel.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,41 @@ +function n = numel(df, varargin) + %# function resu = end(df, varargin) + %# This is the numel operator for a dataframe object, returning the + %# product of the number of rows by the number of columns + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: numel.m 981 2010-07-26 16:23:08Z dupuis $ + %# + +if 1 == nargin, + n = prod(df._cnt([1 end])); +else + error(print_usage()); +endif + +endfunction + +function usage = print_usage() + usage = strcat('Invalid call to numel. Correct usage is: ', ' ', ... + '-- Overloaded Function: numel (A)'); +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/plus.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/plus.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/plus.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,54 @@ +function resu = minus(A, B); + + %# function resu = minus(A, B) + %# Implements the '-' operator when at least one one argument is a dataframe. + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: plus.m 852 2010-07-22 10:47:55Z dupuis $ + %# + + [A, B] = df_basecomp(A, B); + + if isscalar(A) + %# B is a dataframe + resu = B; + for indi = 1:B._cnt(2), + resu._data{indi} = A+B._data{indi}; + endfor + return + endif + + if isscalar(B), + resu = A; + for indi = 1:A._cnt(2), + resu._data{indi} = A._data{indi}+B; + endfor + return + endif + + resu = A; + for indi = 1:A._cnt(2), + resu._data{indi} = A._data{indi} + B._data{indi}; + endfor + +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/private/df_basecomp.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/private/df_basecomp.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/private/df_basecomp.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,62 @@ +function [A, B] = df_basecomp(A, B); + + %# function [A, B] = df_basecomp(A, B) + %# Basic size verifcation for binary operations on dataframe. Returns + %# a scalar, a matrix, or a dataframe. Cell arrays are converted to df. + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: df_basecomp.m 852 2010-07-22 10:47:55Z dupuis $ + %# + + if isscalar(A) || isscalar(B) + return + endif + + if iscell(A), + A = dataframe(A); + elseif iscell(B), + B = dataframe(B); + endif + + if any(size(A) - size(B)), + error("Non compatible sizes"); + endif + if !isa(A, 'dataframe') || !isa(B, 'dataframe'), + return; %# don't go further with names/indexes comparisons + endif + + if any(A._ridx-B._ridx), + error("Non compatible indexes"); + endif + if !isempty(A._name{1}) && !isempty(B._name{1}) + if !any(strcmp(cellstr(A._name{1}), cellstr(B._name{1}))), + error("Incompatible row names"); + endif + endif + if !isempty(A._name{2}) && !isempty(B._name{2}) + if !any(strcmp(cellstr(A._name{2}), cellstr(B._name{2}))), + error("Incompatible column names"); + endif + endif + +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/private/df_check_char_array.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/private/df_check_char_array.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/private/df_check_char_array.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,52 @@ +function resu = df_check_char_array(x, nelem, required) + + %# auxiliary function: pad a char array to some width + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: df_check_char_array.m 852 2010-07-22 10:47:55Z dupuis $ + %# + + if 2 == nargin, required = [nelem 1]; endif + + if nelem < required(1), + error("Too many elements to assign"); + endif + + %# a zero-length element is still considered as a space by char + if isempty(x), x = ' '; endif + + if size(x, 1) < max(required(1), nelem) + %# pad vertically + dummy = repmat(' ', nelem-size(x, 1), 1); + resu = char(x, dummy); + else + resu = x; + endif + + if size(resu, 2) < required(2), + %# pad horizontally + dummy = repmat(' ', nelem, required(2)-size(resu, 2)); + resu = horzcat(resu, dummy); + endif + +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/private/df_name2idx.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/private/df_name2idx.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/private/df_name2idx.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,121 @@ +function [idx, nelem, subs] = df_name2idx(names, subs, count, dimname); + + %# This is a helper routine to translate rownames or columnames into + %# real index. Input: names, a char array, and subs, a cell array as + %# produced by subsref and similar. This routine can also detect + %# ranges, two values separated by ':'. On output, subs is + %# 'sanitised' from names, and is either a vector, either a single ':' + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: df_name2idx.m 1037 2010-08-03 16:25:05Z dupuis $ + %# + + if isempty(subs), + %# not caring about rownames ? Avoid generating an error. + idx = []; nelem = 0; return + endif + + if isa(subs, 'char'), + orig_name = subs; + if 1 == size(subs, 1), + if strcmp(subs, ':') %# range operator + idx = 1:count; nelem = count; + return + endif + endif + subs = cellstr(subs); + else + if !isvector(subs), + error("Trying to access column as a matrix"); + endif + switch class(subs) + case {"cell" } + orig_name = char(subs); + otherwise + orig_name = num2str(subs); + endswitch + endif + + if isa(subs, 'cell'), + subs = subs(:); idx = []; + %# translate list of variables to list of indices + for indi= 1:size(subs, 1), + %# regexp doesn't like empty patterns + if isempty(subs{indi}), continue, endif + %# convert from standard pattern to regexp pattern + subs{indi} = regexprep(subs{indi}, '([^\.])\*', "$1.*"); + if 0 == index(subs{indi}, ':'), + for indj = 1:min(length(names), count), %# sanity check + if ~isempty(regexp(names{indj}, subs{indi})), + idx = [idx indj]; + endif + endfor + else + dummy = strsplit( subs{indi}, ':'); + ind_start = 1; + if !isempty(dummy{1}), + ind_start = sscanf(dummy{1}, "%d"); + if isempty(ind_start), + ind_start = 1; + for indj = 1:min(length(names), count), %# sanity check + if ~isempty(regexp(names{indj}, subs{indi})), + ind_start = indj; break; %# stop at the first match + endif + endfor + endif + endif + + if isempty(dummy{2}) || strcmp(dummy{2}, 'end'), + ind_stop = count; + else + ind_stop = sscanf(dummy{2}, "%d"); + if isempty(ind_stop), + ind_stop = 1; + for indj = min(length(names), count):-1:1, %# sanity check + if ~isempty(regexp(names{indj}, subs{indi})), + ind_stop = indj; break; %# stop at the last match + endif + endfor + endif + endif + idx = [idx ind_start:ind_stop]; + endif + endfor + elseif isa(subs, 'logical'), + idx = 1:length(subs); + idx(~subs) = []; + else + idx = subs; + endif + + if isempty(idx), + keyboard + dummy = sprintf("Unknown %s name while searching for %s", ... + dimname, orig_name); + error(dummy); + endif + + subs = idx; + nelem = length(idx); + +endfunction Property changes on: trunk/octave-forge/extra/dataframe/@dataframe/private/df_name2idx.m ___________________________________________________________________ Added: svn:executable + * Added: trunk/octave-forge/extra/dataframe/@dataframe/private/df_pad.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/private/df_pad.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/private/df_pad.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,143 @@ +function df = df_pad(df, dim, n, coltype=[]) + %# function resu = df_pad(df, dim, n, coltype = []) + %# given a dataframe, insert n rows or columns, and adjust everything + %# accordingly. Coltype is a supplemental argument: + %# dim = 1 => not used + %# dim = 2 => type of the added column(s) + %# dim = 3 => index of columns receiving a new sheet (default: all) + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: df_pad.m 1028 2010-08-03 10:10:26Z dupuis $ + %# + + switch dim + case 1 + if !isempty(df._name{1}), + if length(df._name{1}) < df._cnt(1)+n, + %# generate a name for the new row(s) + df._name{1}(df._cnt(1)+(1:n), 1) = {'_'}; + df._over{1}(1, df._cnt(1)+(1:n), 1) = true; + endif + endif + %# complete row indexes + if isempty(df._ridx), + dummy = (1:n).'; + else + dummy = vertcat(df._ridx, repmat(NA, n, size(df._ridx, 2))); + endif + df._ridx = dummy; + %# pad every line + if !isempty(df._data), + for indi = 1:df._cnt(2), + m = size(df._data{indi}, 2); + switch df._type{indi} + case {'char'} + dummy = {}; dummy(1:n,1:m) = NA; + dummy = vertcat(df._data{indi}, dummy); + case { 'double' } + dummy = vertcat(df._data{indi}, repmat(NA, n, m)); + otherwise + dummy = cast(vertcat(df._data{indi}, repmat(NA, n, m)), ... + df._type{indi}); + endswitch + df._data{indi} = dummy; + endfor + endif + df._cnt(1) = df._cnt(1) + n; + + case 2 + %# create new columns + if isempty(coltype) + error("df_pad: dim equals 2, and coltype undefined"); + endif + if length(n) > 1, %#second value is an offset + indc = n(2); n = n(1); + if indc < df._cnt(2), + %# shift to the right + df._name{2}(n + (indc+1:end)) = df._name{2}(indc+1:end); + dummy = cstrcat(repmat('_', n, 1), ... + strjust(num2str(indc + (1:n).'), 'left')); + df._name{2}(indc + (1:n)) = cellstr(dummy); + df._over{2}(indc + (1:n)) = true; + df._type(n+(indc+1:end)) = df._type(indc+1:end); + df._type(indc + (1:n)) = NA; + df._data(n + (indc+1:end)) = df._data(indc+1:end); + df._data(indc + (1:n)) = NA; + endif + else + indc = df._cnt(2); %# add new values after the last column + endif + if !isa(coltype, 'cell'), coltype = {coltype}; endif + for indi = (1:n), + switch coltype{indi} + case {'char'} + dummy = {repmat(NA, df._cnt(1), 1) }; + dummy(:, 1) = '_'; + case { 'double' } + dummy = repmat(NA, df._cnt(1), 1); + otherwise + dummy = cast(repmat(NA, df._cnt(1), 1), coltype{indi}); + endswitch + df._data{indc+indi} = dummy; + df._type{indc+indi} = coltype{indi}; + endfor + + if length(df._name{2}) < df._cnt(2)+n, + %# generate a name for the new column(s) + dummy = cstrcat(repmat('_', n, 1), ... + strjust(num2str(indc + (1:n).'), 'left')); + df._name{2}(indc + (1:n)) = cellstr(dummy) + df._over{2}(1, indc + (1:n)) = true; + endif + df._cnt(2) = df._cnt(2) + n; + + case 3 + if isempty(coltype), + coltype = 1:df._cnt(2); + endif + dummy = max(n+cellfun('size', df._data(coltype), 2)); + if size(df._ridx, 2) < dummy, + df._ridx(:, end+1:dummy) = NA; + endif + for indi = coltype, + switch df._type{indi} + case {'char'} + if isa(df._data{indi}, 'char'), + dummy = horzcat(df._data{indi}, {repmat(NA, df._cnt(1), n)}); + else + dummy = df._data{indi}; + endif + case { 'double' } + dummy = horzcat(df._data{indi}, repmat(NA, df._cnt(1), n)); + otherwise + dummy = cast(horzcat(df._data{indi}, repmat(NA, df._cnt(1), n)), ... + df._type{indi}); + endswitch + df._data{indi} = dummy; + endfor + df._cnt(3) = sum(cellfun('size', df._data, 2)); + otherwise + error('Invalid dimension in df_pad'); + endswitch + +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/private/df_strjust.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/private/df_strjust.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/private/df_strjust.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,36 @@ +function [a, b] = df_strjust(a, b) + + %# small auxiliary function: make two char arrays the same width + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: df_strjust.m 852 2010-07-22 10:47:55Z dupuis $ + %# + + indi = size(a, 2) - size(b, 2); + if indi < 0 + a = horzcat(repmat(' ', size(a, 1), -indi), a); + elseif indi > 0, + b = horzcat(repmat(' ', size(b, 1), indi), b); + endif + +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/private/df_strset.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/private/df_strset.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/private/df_strset.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,80 @@ +function [x, over] = df_strset(x, over, S, RHS, pad = ' ') + %# x = df_strset(x, over, S, RHS, pad = " ") + %# replaces the strings in cellstr x at indr by strings at y. Adapt + %# the width of x if required. Use x 'over' attribute to display a + %# message in case strings are overwritten. + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: df_strset.m 1020 2010-07-30 15:21:23Z dupuis $ + %# + + %# adjust x size, if required + if isnull(RHS), + %# clearing + if isempty(S), + x = cell(0, 1); over = zeros(1, 0); + return + endif + dummy = S; dummy(1).subs(2:end) = []; + over = builtin('subsasgn', over, dummy, true); + else + if isempty(S), %# complete overwrite + if ischar(RHS), RHS = cellstr(RHS); endif + nrow = length(RHS); + if any(~over(nrow)), + warning('going to overwrite names'); + endif + x(1:nrow) = RHS; + over(1:nrow) = false; + if nrow < length(x), + x(nrow+1:end) = {pad}; + endif + return + else + dummy = S(1); dummy.subs(2:end) = []; % keep first dim only + if any(~(builtin('subsref', over, dummy))); + warning('going to overwrite names'); + endif + over = builtin('subsasgn', over, dummy, false); + endif + endif + + %# common part + if ischar(RHS) && length(S(1).subs) > 1, + %# partial accesses to a char array + dummy = char(x); + dummy = builtin('subsasgn', dummy, S, RHS); + if isempty(dummy), + x = cell(0, 1); over = zeros(1, 0); + return + endif + if size(dummy, 1) == length(x), + x = cellstr(dummy); + return + endif + %# partial clearing gone wrong ? retry + RHS = { RHS }; + endif + x = builtin('subsasgn', x, S, RHS); + +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/rationale.txt =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/rationale.txt (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/rationale.txt 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,113 @@ +1) Context + +I was recently performing I-V measurements of a MOS +(Metal-Oxide-Semiconductor) structure. A full set of measurements +contained a DC biaising voltage, a AC frequency, a small signal +capacitance and conductance. I had to change a few times the +measurement device configuration, so sometimes the sweeping occured +first on frequency, then on voltage, sometimes in the reverse +order. To make it short, I had to deal with many input files with +inconsistent columns order. The code to identify this order quickly +became clumsy. + +The idea of a dataframe is to implement a mix between matrix and +cells. Its' like a matrix, where each column contains elements of the +same type. Unlike a matrix, columns type may be dissimilar. Also, +each colum MUST have a name, and rows MAY have a name. Moreover, to +make it easy to interface with databases, each row must have an unique +identifier. The goal is to make possible to use constructs like +y(:, ["Fr*"; "VB*"; "C";"G"]) +where y is the dataframe, and column selection is based on +regexp. This way, the translation between names and indexes uses all +the power of regexpes. + +2) Implementation +a dataframe is a class containing the following members: +_cnt = [0 0] : row count, column count, ... nth dimension count +_name = cell(1, 2) : row names, column names, ... +_ridx = [] : a unique Id for each row +_data = cell(0, 0) : a container for each column +_type = cell(0, 0) : the type of each column + +The constructor can be used as +- no argument: convert the whole workspace to a dataframe (TBD) +- one null argument: return an empty dataframe +- one numeric or cell argument: transform it to a dataframe; tries to +infer column names from the name of the input argument. +- one char array with more than one line: uses it as rownames +- one single line char array: take it as the name of a file to read +data from. Expected format is csv, try to be carefull with +quoted/unquoted strings, also tries to remove trailing and leading +spaces from string entries. Do not try to cope with things such as +separator INSIDE quoted strings. + +-supplemental arguments may occur either as pairs (string, value), + either as vectors. In the first case, the string contains an optional + parameter whose value is contained in the next argument. In the + second case, the argument is right-appended to the dataframe. Valid + optional parameters are + - rownames: a character array with the row names + - unquot: a logical to indicate if strings must be unquoted, default=true + - seeked: a string which must occur in the first row to start + considering values. Previous lines are skipped. + +3) Access (reading) +- like a single matrix: df(:, 3); df(3, :). If all the results are of +the same type, returns a matrix, otherwise a dataframe. This behavior +can be inhibited by having the last argument set to 'dataframe': + df(3, 3, 'dataframe') will return a one-by-one dataframe +- by columnames: + df(:, ["Fr*"; "VB*"; "C";]) + will try to match a columname beginning by "F" followed by an + optional 'r', thus 'F', 'Fréquence' and 'Freqs'; then a columname + starting by "V" with an optional "B", like f.i. "VBias", then a + columname with is the exact string 'C'. +- by rownames: same principle +- either member selector may also be logical: + df(df.OK=='A', ['C';'G']) +- as a struct: either use one of the column name (df.C), either use + one of the allowed accessor for internal fields: "rownames", + "colnames", "rowcnt", "colcnt", "rowidx", "types". Direct access to + the members like y._type is allowed, but should be restricted to + class members and friends. "types" accept both numeric and strings + arguments, the latter being converter to column order based upon + columns name. +- as a cell: TODO: define how to fill the cell array with all the + fields. + +4) Modifying +- as a matrix, using '()': use the same syntax as reading: + df(3, 'Fr*') = 200 + df(df.OK=='?', ['C'; 'G']) = NaN; + Note that removing elements may only occur on a full row of colum + basis. Removing a single element is not allowed. +- as a struct: either access a columname, as + df.C = []; + either accessing the internal fields through entry points 'rownames' + and 'colnames', where care is taken to adapt the strings width in + order to make them compatibles. The entry point "types", with + arguments numeric or strings, has the effect to cast whole column(s) + to a new type: + df.types{[3 5]} = 'uint16' + df.type{"Freq"} = "uint32" +- as a cell: TBD + +5) other overloaded functions: display, size, numel, cat. The latter +has to be thoroughfully tested. In particular, I've put the +restriction that horizontal cat requires that the row indexes are the +same for both elems. For vertical cat, how should we proceed ? Require +uniqueness of row indexes, and sorting ? Other ? + +6) to be done: +- the 'load' function is in fact contained inside the constructor; +maybe we should have a specific load function ? +- be able to load a dataframe from a URI specification +- write a simple 'save' function +- adding data to a dataframe: R doesn't seems to allow adding rows +to a data.frame, should we follow it ? +- add test cases +- implement a 'factor' class for categorised data +- make all functions below statistics/ dataframe compatible + +Pascal Dupuis +Louvain-la-Neuve, July First, 2010. Added: trunk/octave-forge/extra/dataframe/@dataframe/size.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/size.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/size.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,60 @@ +function [nrow, ncol] = size(df, varargin) + %# function resu = end(df, varargin) + %# This is size operator for a dataframe object. + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: size.m 852 2010-07-22 10:47:55Z dupuis $ + %# + + switch nargin + case 1 + switch nargout + case {0 1} + nrow = df._cnt; + case {2} + nrow = df._cnt(1); ncol = df._cnt(2); + otherwise + error(print_usage()); + endswitch + case 2 + switch nargout + case {0 1} + nrow = df._cnt; + try + nrow = nrow(varargin{1}); + catch + error(print_usage()); + end_try_catch + otherwise + error(print_usage()); + endswitch + otherwise + error(print_usage()); + endswitch + +endfunction + +function usage = print_usage() + usage = strcat('Invalid call to size. Correct usage is: ', ' ', ... + '-- Overloaded Function: size (A, N)'); +endfunction Added: trunk/octave-forge/extra/dataframe/@dataframe/subsasgn.m =================================================================== --- trunk/octave-forge/extra/dataframe/@dataframe/subsasgn.m (rev 0) +++ trunk/octave-forge/extra/dataframe/@dataframe/subsasgn.m 2010-08-05 16:23:32 UTC (rev 7498) @@ -0,0 +1,500 @@ +function resu = subasgn(df, S, RHS) + %# function resu = subasgn(df, S, RHS) + %# This is the assignement operator for a dataframe object, taking + %# care of all the housekeeping of meta-info. + + %% Copyright (C) 2009-2010 Pascal Dupuis <Pas...@uc...> + %% + %% This file is part of Octave. + %% + %% Octave 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, or (at your option) any later version. + %% + %% Octave 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 Octave; see the file COPYING. If not, + %% write to the Free Software Foundation, 59 Temple Place - + %% Suite 330, Boston, MA 02111-1307, USA. + + %# + %# $Id: subsasgn.m 1035 2010-08-03 16:22:58Z dupuis $ + %# + + switch(S(1).type) + case '{}' + error('Invalid dataframe as cell assignement'); + case '.' + resu = df; + %# translate the external to internal name + switch S(1).subs + case "rownames" + if !isnull(RHS) && isempty(df._name{1}), + df._name{1}(1:df._cnt(1), 1) = {''}; + df._over{1}(1, 1:df._cnt(1)) = true; + endif + [resu._name{1}, resu._over{1}] = df_strset... + (df._name{1}, df._over{1}, S(2:end), RHS); + return + + case "colnames" + if isnull(RHS), error("Colnames can't be nulled"); endif + [resu._name{2}, resu._over{2}] = df_strset... + (df._name{2}, df._over{2}, S(2:end), RHS, '_'); + return + + case "types" + if isnull(RHS), error("Types can't be nulled"); endif + if 1 == length(S), + for indi = 1:df_cnt(2), + %# perform explicit cast on each column + resu._data{indi} = cast(resu._data{indi}, RHS); + resu._type{indi} = RHS; + endfor + else + if !strcmp(S(2).type, '{}'), + error("Invalid cell access"); + endif + if length(S) > 2 || length(S(2).subs) > 1, + error("Types can only be changed as a whole"); + endif + if !isnumeric(S(2).subs{1}), + [indj, ncol, S(2).subs{1}] = df_name2idx... + (df._name{2}, S(2).subs{1}, df._cnt(2), 'column'); + endif + for indi = 1:length(indj), + %# perform explicit cast on selected columns + resu._data{indj(indi)} = cast(resu._data{indj(indi)}, RHS); + resu._type{indj(indi)} = RHS; + endfor + endif + return + + otherwise + if !ischar(S(1).subs), + error("Congratulations. I didn't see how to ... [truncated message content] |
From: <i7...@us...> - 2010-10-25 13:33:14
|
Revision: 7871 http://octave.svn.sourceforge.net/octave/?rev=7871&view=rev Author: i7tiol Date: 2010-10-25 13:33:06 +0000 (Mon, 25 Oct 2010) Log Message: ----------- Fixed optimset functions for Octave 3.2.4 Added Paths: ----------- trunk/octave-forge/extra/optimset-fix/ trunk/octave-forge/extra/optimset-fix/COPYING trunk/octave-forge/extra/optimset-fix/DESCRIPTION trunk/octave-forge/extra/optimset-fix/INDEX trunk/octave-forge/extra/optimset-fix/inst/ trunk/octave-forge/extra/optimset-fix/inst/__all_opts__.m trunk/octave-forge/extra/optimset-fix/inst/optimget.m trunk/octave-forge/extra/optimset-fix/inst/optimset.m Added: trunk/octave-forge/extra/optimset-fix/COPYING =================================================================== --- trunk/octave-forge/extra/optimset-fix/COPYING (rev 0) +++ trunk/octave-forge/extra/optimset-fix/COPYING 2010-10-25 13:33:06 UTC (rev 7871) @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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 3 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, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Added: trunk/octave-forge/extra/optimset-fix/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/optimset-fix/DESCRIPTION (rev 0) +++ trunk/octave-forge/extra/optimset-fix/DESCRIPTION 2010-10-25 13:33:06 UTC (rev 7871) @@ -0,0 +1,10 @@ +Name: optimset-fix +Version: 0.1 +Date: 2010-10-25 +Author: See files +Maintainer: Olaf Till <ola...@un...> +Title: optimset fix +Description: Fixed versions of optimset, optimget, __all_opts__ for use with Octave 3.2.4 +Depends: octave (<= 3.2.4) +Autoload: yes +License: GPL 3 or later Added: trunk/octave-forge/extra/optimset-fix/INDEX =================================================================== --- trunk/octave-forge/extra/optimset-fix/INDEX (rev 0) +++ trunk/octave-forge/extra/optimset-fix/INDEX 2010-10-25 13:33:06 UTC (rev 7871) @@ -0,0 +1,5 @@ +optimset-fix >> Optimset-fix +optimset-fix + optimset + optimget + __all_opts__ Added: trunk/octave-forge/extra/optimset-fix/inst/__all_opts__.m =================================================================== --- trunk/octave-forge/extra/optimset-fix/inst/__all_opts__.m (rev 0) +++ trunk/octave-forge/extra/optimset-fix/inst/__all_opts__.m 2010-10-25 13:33:06 UTC (rev 7871) @@ -0,0 +1,75 @@ +## Copyright (C) 2009 VZLU Prague +## +## This file is part of Octave. +## +## Octave 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 3 of the License, or (at +## your option) any later version. +## +## Octave 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 Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{names} =} __all_opts__ (@dots{}) +## Undocumented internal function. +## @end deftypefn + +## Query all options from all known optimization functions and return a +## list of possible values. + +## optimset/optimget/__all_opts__ in Octave-3.2.4 don't work +## correctly; a patch was submitted to development branch >3.3.53 + +function [lnames, names] = __all_opts__ (varargin) + + persistent saved_lnames = {}; + persistent saved_names = {}; + + ## do not clear this function + mlock (); + + ## guard against recursive calls. + persistent recursive = false; + + if (recursive) + lnames = names = {}; + elseif (nargin == 0) + lnames = saved_lnames; + names = saved_names; + else + ## query all options from all known functions. These will call optimset, + ## which will in turn call us, but we won't answer. + recursive = true; + lnames = saved_lnames; + names = saved_names; + for i = 1:nargin + try + opts = optimset (varargin{i}); + fn = fieldnames (opts).'; + lnames = [lnames, tolower(fn)]; + names = [names, fn]; + catch + # throw the error as a warning. + warning (lasterr ()); + end_try_catch + endfor + [lnames, idx] = unique (lnames); + if (length (lnames) < length (unique (names))) + ## This is bad. + error ("__all_opts__: duplicate options with inconsistent case"); + endif + names = names(idx); + saved_lnames = lnames; + saved_names = names; + recursive = false; + endif + +endfunction + Added: trunk/octave-forge/extra/optimset-fix/inst/optimget.m =================================================================== --- trunk/octave-forge/extra/optimset-fix/inst/optimget.m (rev 0) +++ trunk/octave-forge/extra/optimset-fix/inst/optimget.m 2010-10-25 13:33:06 UTC (rev 7871) @@ -0,0 +1,55 @@ +## Copyright (C) 2008 Jaroslav Hajek +## Copyright (C) 2009 VZLU Prague +## +## This file is part of Octave. +## +## Octave 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 3 of the License, or (at +## your option) any later version. +## +## Octave 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 Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} optimget (@var{options}, @var{parname}) +## @deftypefnx {Function File} {} optimget (@var{options}, @var{parname}, @var{default}) +## Return a specific option from a structure created by +## @code{optimset}. If @var{parname} is not a field of the @var{options} +## structure, return @var{default} if supplied, otherwise return an +## empty matrix. +## @end deftypefn + +## optimset/optimget/__all_opts__ in Octave-3.2.4 don't work +## correctly; a patch was submitted to development branch >3.3.53 + +function retval = optimget (options, parname, default) + + if (nargin < 2 || nargin > 4 || ! isstruct (options) || ! ischar (parname)) + print_usage (); + endif + + [lopts, opts] = __all_opts__ (); + idx = lookup (lopts, tp = tolower (parname)); + + if (idx && strcmp (tp, lopts(idx))) + parname = opts{idx}; + else + warning ("unrecognized option: %s", parname); + endif + if (isfield (options, parname)) + retval = options.(parname); + elseif (nargin > 2) + retval = default; + else + retval = []; + endif + +endfunction + Added: trunk/octave-forge/extra/optimset-fix/inst/optimset.m =================================================================== --- trunk/octave-forge/extra/optimset-fix/inst/optimset.m (rev 0) +++ trunk/octave-forge/extra/optimset-fix/inst/optimset.m 2010-10-25 13:33:06 UTC (rev 7871) @@ -0,0 +1,96 @@ +## Copyright (C) 2007, 2008 John W. Eaton +## Copyright (C) 2009 VZLU Prague +## +## This file is part of Octave. +## +## Octave 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 3 of the License, or (at +## your option) any later version. +## +## Octave 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 Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} optimset () +## @deftypefnx {Function File} {} optimset (@var{par}, @var{val}, @dots{}) +## @deftypefnx {Function File} {} optimset (@var{old}, @var{par}, @var{val}, @dots{}) +## @deftypefnx {Function File} {} optimset (@var{old}, @var{new}) +## Create options struct for optimization functions. +## @end deftypefn + +## optimset/optimget/__all_opts__ in Octave-3.2.4 don't work +## correctly; a patch was submitted to development branch >3.3.53 + +function retval = optimset (varargin) + + nargs = nargin (); + + ## Add more as needed. + [lopts, opts] = __all_opts__ (); + + if (nargs == 0) + if (nargout == 0) + ## Display possibilities. + puts ("\nAll possible optimization options:\n\n"); + printf (" %s\n", opts{:}); + puts ("\n"); + else + ## Return empty structure. + ## We're incompatible with Matlab at this point. + retval = struct (); + endif + elseif (nargs == 1 && ischar (varargin{1})) + ## Return defaults for named function. + fcn = varargin{1}; + try + retval = feval (fcn, 'defaults'); + catch + error ("optimset: no defaults for function `%s'", fcn); + end_try_catch + elseif (nargs == 2 && isstruct (varargin{1}) && isstruct (varargin{2})) + ## Set slots in old from nonempties in new. Should we be checking + ## to ensure that the field names are expected? + old = varargin{1}; + new = varargin{2}; + fnames = fieldnames (old); + ## skip validation if we're in the internal query + validation = ! isempty (opts); + for [val, key] = new + if (validation) + ## Case insensitive lookup in all options. + i = lookup (lopts, tolower (key)); + ## Validate option. + if (i > 0 && strcmpi (lopts{i}, key)) + ## Use correct case. + key = opts{i}; + else + warning ("unrecognized option: %s", key); + endif + endif + old.(key) = val; + endfor + retval = old; + elseif (rem (nargs, 2) && isstruct (varargin{1})) + ## Set values in old from name/value pairs. + pairs = reshape (varargin(2:end), 2, []); + retval = optimset (varargin{1}, cell2struct (pairs(2, :), pairs(1, :), 2)); + elseif (rem (nargs, 2) == 0) + ## Create struct. Default values are replaced by those specified by + ## name/value pairs. + pairs = reshape (varargin, 2, []); + retval = optimset (struct (), cell2struct (pairs(2, :), pairs(1, :), 2)); + else + print_usage (); + endif + +endfunction + +%!assert (optimget (optimset ('tolx', 1e-2), 'tOLx'), 1e-2) +%!assert (isfield (optimset ('tolFun', 1e-3), 'TolFun')) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2010-12-06 12:16:24
|
Revision: 7985 http://octave.svn.sourceforge.net/octave/?rev=7985&view=rev Author: cdf Date: 2010-12-06 12:16:15 +0000 (Mon, 06 Dec 2010) Log Message: ----------- fix in help string Modified Paths: -------------- trunk/octave-forge/extra/jhandles/src/configure.base trunk/octave-forge/extra/nurbs/src/Makefile trunk/octave-forge/extra/nurbs/src/curvederivcpts.cc Modified: trunk/octave-forge/extra/jhandles/src/configure.base =================================================================== --- trunk/octave-forge/extra/jhandles/src/configure.base 2010-12-05 20:38:03 UTC (rev 7984) +++ trunk/octave-forge/extra/jhandles/src/configure.base 2010-12-06 12:16:15 UTC (rev 7985) @@ -374,7 +374,7 @@ HAVE_JAVA=yes JAVA_INCS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux" fi - AC_CHECK_HEADER(GL/gl.h, [], AC_MSG_ERROR(Could not find OpenGL headers)) + AC_CHECK_HEADER(gl.h, [], AC_MSG_ERROR(Could not find OpenGL headers)) OF_CHECK_LIB(GL, glEnable, OPENGL_LIBS=-lGL, [ ## Invalidate the cache. $as_unset ac_cv_lib_GL_glEnable Modified: trunk/octave-forge/extra/nurbs/src/Makefile =================================================================== --- trunk/octave-forge/extra/nurbs/src/Makefile 2010-12-05 20:38:03 UTC (rev 7984) +++ trunk/octave-forge/extra/nurbs/src/Makefile 2010-12-06 12:16:15 UTC (rev 7985) @@ -12,3 +12,4 @@ clean: -rm -f *.o core octave-core *.oct *~ +# DO NOT DELETE Modified: trunk/octave-forge/extra/nurbs/src/curvederivcpts.cc =================================================================== --- trunk/octave-forge/extra/nurbs/src/curvederivcpts.cc 2010-12-05 20:38:03 UTC (rev 7984) +++ trunk/octave-forge/extra/nurbs/src/curvederivcpts.cc 2010-12-06 12:16:15 UTC (rev 7985) @@ -32,8 +32,8 @@ \n d = maximum derivative order (d<=p) \ \n U = knots \ \n P = control points \ -\n r1 = first control point to compute -\n r2 = auxiliary index for the last control point to compute +\n r1 = first control point to compute \ +\n r2 = auxiliary index for the last control point to compute \ \n\ \n OUTPUT: \ \n pk(k,i) = i-th control point (k-1)-th derivative, r1 <= i <= r2-k \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2011-09-09 01:37:32
|
Revision: 8514 http://octave.svn.sourceforge.net/octave/?rev=8514&view=rev Author: cdf Date: 2011-09-09 01:37:13 +0000 (Fri, 09 Sep 2011) Log Message: ----------- added secs3d Added Paths: ----------- trunk/octave-forge/extra/secs3d/ trunk/octave-forge/extra/secs3d/COPYING trunk/octave-forge/extra/secs3d/DESCRIPTION trunk/octave-forge/extra/secs3d/INDEX trunk/octave-forge/extra/secs3d/README trunk/octave-forge/extra/secs3d/inst/ trunk/octave-forge/extra/secs3d/inst/DDG/ trunk/octave-forge/extra/secs3d/inst/DDG/DDGelectron_driftdiffusion.m trunk/octave-forge/extra/secs3d/inst/DDG/DDGgummelmap.m trunk/octave-forge/extra/secs3d/inst/DDG/DDGhole_driftdiffusion.m trunk/octave-forge/extra/secs3d/inst/DDG/DDGnlpoisson.m trunk/octave-forge/extra/secs3d/inst/DDGOX/ trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXddcurrent.m trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXgummelmap.m trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXnlpoisson.m trunk/octave-forge/extra/secs3d/inst/DDGt/ trunk/octave-forge/extra/secs3d/inst/DDGt/DDGtelectron_driftdiffusion.m trunk/octave-forge/extra/secs3d/inst/DDGt/DDGtgummelmap.m trunk/octave-forge/extra/secs3d/inst/DDGt/DDGthole_driftdiffusion.m trunk/octave-forge/extra/secs3d/inst/QDDGOX/ trunk/octave-forge/extra/secs3d/inst/QDDGOX/QDDGOXcompdens.m trunk/octave-forge/extra/secs3d/inst/QDDGOX/QDDGOXddcurrent.m trunk/octave-forge/extra/secs3d/inst/QDDGOX/QDDGOXelectron_driftdiffusion.m trunk/octave-forge/extra/secs3d/inst/QDDGOX/QDDGOXgummelmap.m trunk/octave-forge/extra/secs3d/inst/QDDGOX/QDDGOXnlpoisson.m trunk/octave-forge/extra/secs3d/inst/Utilities/ trunk/octave-forge/extra/secs3d/inst/Utilities/Ubern.m trunk/octave-forge/extra/secs3d/inst/Utilities/Ucompconst.m trunk/octave-forge/extra/secs3d/inst/Utilities/Ucomplap.m trunk/octave-forge/extra/secs3d/inst/Utilities/Ucompmass.m trunk/octave-forge/extra/secs3d/inst/Utilities/Ucompmass2.m trunk/octave-forge/extra/secs3d/inst/Utilities/Udescaling.m trunk/octave-forge/extra/secs3d/inst/Utilities/Udrawfaces.m trunk/octave-forge/extra/secs3d/inst/Utilities/Udrawregions.m trunk/octave-forge/extra/secs3d/inst/Utilities/Udriftdiffusion.m trunk/octave-forge/extra/secs3d/inst/Utilities/Ufielddepmob.m trunk/octave-forge/extra/secs3d/inst/Utilities/Ugetnodesonface.m trunk/octave-forge/extra/secs3d/inst/Utilities/Ujoinmeshes.m trunk/octave-forge/extra/secs3d/inst/Utilities/Umeshproperties.m trunk/octave-forge/extra/secs3d/inst/Utilities/Updegrad.m trunk/octave-forge/extra/secs3d/inst/Utilities/Urrextrapolation.m trunk/octave-forge/extra/secs3d/inst/Utilities/Uscaling.m trunk/octave-forge/extra/secs3d/inst/Utilities/Uscharfettergummel.m trunk/octave-forge/extra/secs3d/inst/Utilities/Ustructmesh.m trunk/octave-forge/extra/secs3d/inst/Utilities/Usubmesh.m trunk/octave-forge/extra/secs3d/inst/Utilities/constants.m trunk/octave-forge/extra/secs3d/inst/Utilities/constants.mat trunk/octave-forge/extra/secs3d/inst/data/ trunk/octave-forge/extra/secs3d/inst/data/CMOS/ trunk/octave-forge/extra/secs3d/inst/data/CMOS/SGMOS.m trunk/octave-forge/extra/secs3d/inst/data/CMOS/SGMOS_data.m trunk/octave-forge/extra/secs3d/inst/data/CMOS/SGMOS_run.m trunk/octave-forge/extra/secs3d/inst/secs3d.m Added: trunk/octave-forge/extra/secs3d/COPYING =================================================================== --- trunk/octave-forge/extra/secs3d/COPYING (rev 0) +++ trunk/octave-forge/extra/secs3d/COPYING 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,337 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. Added: trunk/octave-forge/extra/secs3d/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/secs3d/DESCRIPTION (rev 0) +++ trunk/octave-forge/extra/secs3d/DESCRIPTION 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,12 @@ +Name: secs3d +Version: 0.0.1 +Date: 2011-09-08 +Author: Carlo de Falco +Maintainer: Carlo de Falco +Title: SEmi Conductor Simulator in 3D +Description: A Drift-Diffusion simulator for 3d semiconductor devices +Categories: Electrical Engineering +Depends: octave (>= 3.2.4), bim, fpl +Autoload: no +License: GPL version 2 or later + Added: trunk/octave-forge/extra/secs3d/INDEX =================================================================== --- trunk/octave-forge/extra/secs3d/INDEX (rev 0) +++ trunk/octave-forge/extra/secs3d/INDEX 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,27 @@ +secs3d >> SEmiConductor Simulator in 3D +DDG: DD solver for semiconductor only devices + DDGgummelmap + DDGnlpoisson +DDGOX: DD solver for semiconductor devices with insuating oxide layers + DDGOXddcurrent + DDGOXgummelmap + DDGOXnlpoisson +QDDGOX: DD solver for semiconductor devices with insuating oxide layers + QDDGOXddcurrent + QDDGOXgummelmap.m + QDDGOXnlpoisson.m +DDGt: Transient DD solver + DDGtgummelmap +Utilities + constants + Udescaling + Ujoinmeshes.m + Uscaling.m + Ustructmesh.m + Usubmesh.m + + + + + + Added: trunk/octave-forge/extra/secs3d/README =================================================================== --- trunk/octave-forge/extra/secs3d/README (rev 0) +++ trunk/octave-forge/extra/secs3d/README 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,18 @@ + + SECS3D - A 3-D Drift--Diffusion Semiconductor Device Simulator +------------------------------------------------------------------- + Copyright (C) 2004-2011 Carlo de Falco + +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. + +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 (see the file COPYING); if not, see +<http://www.gnu.org/licenses/>. + Added: trunk/octave-forge/extra/secs3d/inst/DDG/DDGelectron_driftdiffusion.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/DDG/DDGelectron_driftdiffusion.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/DDG/DDGelectron_driftdiffusion.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,53 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is part of: +%% secs3d - A 3-D Drift--Diffusion Semiconductor Device Simulator +%% +%% secs3d 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. +%% +%% secs3d 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 secs3d; If not, see <http://www.gnu.org/licenses/>. +%% +%% author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + +% n=DDGelectron_driftdiffusion(mesh,Dsides,nin,pin,V,un,tn,tp,n0,p0) +% IN: +% v = electric potential +% mesh = integration domain +% ng = initial guess and BCs for electron density +% p = hole density (to compute SRH recombination) +% OUT: +% n = updated electron density + +function n=DDGelectron_driftdiffusion(mesh,Dsides,nin,pin,V,un,tn,tp,n0,p0) + +if (columns(nin)>rows(nin)) + nin=nin'; +end + +if (columns(V)>rows(V)) + V=V'; +end + +if (columns(pin)>rows(pin)) + pin=pin'; +end + +Nnodes = max(size(mesh.p)); +Nelements = max(size(mesh.t)); + +denom = (tp*(nin+sqrt(n0.*p0))+tn*(pin+sqrt(n0.*p0))); +u = un; +U = p0.*n0./denom; +M = pin./denom; +guess = nin; + +n = Udriftdiffusion(mesh,Dsides,guess,M,U,V,u); Added: trunk/octave-forge/extra/secs3d/inst/DDG/DDGgummelmap.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/DDG/DDGgummelmap.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/DDG/DDGgummelmap.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,120 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is part of: +%% secs3d - A 3-D Drift--Diffusion Semiconductor Device Simulator +%% +%% secs3d 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. +%% +%% secs3d 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 secs3d; If not, see <http://www.gnu.org/licenses/>. +%% +%% author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + +% +% [odata,it,res] =... +% DDGgummelmap (imesh,Dsides,idata,toll,maxit,ptoll,pmaxit,verbose) +% + +function [odata,it,res] =... + DDGgummelmap (imesh,Dsides,idata,toll,maxit,ptoll,pmaxit,verbose) + + +clear global +global DDGNLPOISSON_LAP DDGNLPOISSON_MASS DDG_RHS DDG_MASS + +V (:,1) = idata.V; +p (:,1) = idata.p; +n (:,1) = idata.n; +Fn(:,1) = idata.Fn; +Fp(:,1) = idata.Fp; +D = idata.D; + +Nnodes = max(size(imesh.p)); +Nelements = max(size(imesh.t)); + +for i=1:1:maxit + if (verbose>1) + fprintf(1,'*****************************************************************\n'); + fprintf(1,'**** start of gummel iteration number: %d\n',i); + fprintf(1,'*****************************************************************\n'); + + end + + if (verbose>1) + fprintf(1,'solving non linear poisson equation\n\n'); + end + [V(:,2),n(:,2),p(:,2)] =... + DDGnlpoisson (imesh,Dsides,V(:,1),n(:,1),p(:,1),Fn(:,1),Fp(:,1),D,... + idata.l2,ptoll,pmaxit,verbose-1); + + + if (verbose>1) + fprintf (1,'\n\nupdating electron qfl\n\n'); + end + n(:,3) =DDGelectron_driftdiffusion(imesh,Dsides,n(:,2),p(:,2),V(:,2),... + idata.un*ones(Nelements,1),... + idata.tn,idata.tp,idata.ni,idata.ni); + Fn(:,2)=V(:,2) - log(n(:,3)); + + if (verbose>1) + fprintf(1,'updating hole qfl\n\n'); + end + p(:,3) =DDGhole_driftdiffusion(imesh,Dsides,n(:,3),p(:,2),V(:,2),... + idata.up*ones(Nelements,1),... + idata.tn,idata.tp,idata.ni,idata.ni); + + Fp(:,2)=V(:,2) + log(p(:,3)); + + if (verbose>1) + fprintf(1,'checking for convergence\n\n'); + end + + nrfn= norm(Fn(:,2)-Fn(:,1),inf); + nrfp= norm (Fp(:,2)-Fp(:,1),inf); + nrv = norm (V(:,2)-V(:,1),inf); + nrm(i) = max([nrfn;nrfp;nrv]); + + if (verbose>1) + fprintf (1,' max(|phin_(k+1)-phinn_(k)| , |phip_(k+1)-phip_(k)| , |v_(k+1)- v_(k)| )= %d\n',nrm(i)); + end + if (nrm(i)<toll) + break + end + + V(:,1) = V(:,end); + n(:,1) = n(:,end); + p(:,1) = p(:,end); + Fn(:,1)= Fn(:,end); + Fp(:,1)= Fp(:,end); + + +end + +it = i; +res = nrm + +if (verbose>0) + fprintf(1,'\n\nDD: # of Gummel iterations = %d\n\n',it); +end + +odata = idata; + +odata.n = n(:,end); +odata.p = p(:,end); +odata.V = V(:,end); +odata.Fn = Fn(:,end); +odata.Fp = Fp(:,end); + +clear global + +% Last Revision: +% $Author: carlo $ +% $Date: 2005/05/27 15:29:23 $ Added: trunk/octave-forge/extra/secs3d/inst/DDG/DDGhole_driftdiffusion.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/DDG/DDGhole_driftdiffusion.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/DDG/DDGhole_driftdiffusion.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,56 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is part of: +%% secs3d - A 3-D Drift--Diffusion Semiconductor Device Simulator +%% +%% secs3d 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. +%% +%% secs3d 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 secs3d; If not, see <http://www.gnu.org/licenses/>. +%% +%% author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + +% p=DDGhole_driftdiffusion(mesh,Dsides,nin,pin,V,up,tn,tp,n0,p0) +% IN: +% v = electric potential +% mesh = integration domain +% nin = initial guess and BCs for electron density +% pin = hole density (to compute SRH recombination) +% OUT: +% p = updated hole density + + +function p=DDGhole_driftdiffusion(mesh,Dsides,nin,pin,V,up,tn,tp,n0,p0) + +if (columns(nin)>rows(nin)) + nin=nin'; +end + +if (columns(V)>rows(V)) + V=V'; +end + +if (columns(pin)>rows(pin)) + pin=pin'; +end + +Nnodes = max(size(mesh.p)); +Nelements = max(size(mesh.t)); + +denom = (tp*(nin+sqrt(n0.*p0))+tn*(pin+sqrt(n0.*p0))); +u = up; +U = n0.*p0./denom; +M = nin./denom; +guess = pin; +V = -V; + +p = Udriftdiffusion(mesh,Dsides,guess,M,U,V,u); + Added: trunk/octave-forge/extra/secs3d/inst/DDG/DDGnlpoisson.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/DDG/DDGnlpoisson.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/DDG/DDGnlpoisson.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,233 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is part of: +%% secs3d - A 3-D Drift--Diffusion Semiconductor Device Simulator +%% +%% secs3d 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. +%% +%% secs3d 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 secs3d; If not, see <http://www.gnu.org/licenses/>. +%% +%% author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + +% +% [V,n,p,res,niter] = DDGnlpoisson (mesh,Dsides,Vin,nin,pin,Fnin,Fpin,D,l2,toll,maxit,verbose) +% solves $$ -\lambda^2 V'' + (n(V,Fn) - p(V,Fp) -D)$$ +% + +function [V,n,p,res,niter] = DDGnlpoisson (mesh,Dsides,Vin,nin,pin,Fnin,Fpin,D,l2,toll,maxit,verbose) + +global DDGNLPOISSON_LAP DDGNLPOISSON_MASS DDG_RHS + +%% Set some useful constants +dampit = 3; +dampcoeff = 2; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% convert input vectors to columns +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +if columns(D)>rows(D) + D=D'; +end + + +if columns(nin)>rows(nin) + nin=nin'; +end + +if columns(pin)>rows(pin) + pin=pin'; +end + +if columns(Vin)>rows(Vin) + Vin=Vin'; +end + +if columns(Fnin)>rows(Fnin) + Fnin=Fnin'; +end + +if columns(Fpin)>rows(Fpin) + Fpin=Fpin'; +end + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% setup FEM data structures +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +nodes=mesh.p; +elements=mesh.t; +Nnodes = length(nodes); +Nelements = length(elements); + + + + +% Set values of Dirichelet BCs +Dnodes = Ugetnodesonface(mesh,Dsides); +Bc = zeros(length(Dnodes),1); +% Set list of nodes without Dirichelet BCs +Varnodes = setdiff([1:Nnodes],Dnodes); + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% initialization: +%% we're going to solve +%% $$ - \lambda^2 (\delta V)'' + (\frac{\partial n}{\partial V} - \frac{\partial p}{\partial V})= -R $$ +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% set $$ n_1 = nin $$ and $$ V = Vin $$ +V = Vin; +Fn = Fnin; +Fp = Fpin; +n = exp(V-Fn); +p = exp(-V+Fp); +n(Dnodes) = nin(Dnodes); +p(Dnodes) = pin(Dnodes); + + +%%% +%%% Compute LHS matrices +%%% + +%% let's compute FEM approximation of $$ L = - \frac{d^2}{x^2} $$ +if (isempty(DDGNLPOISSON_LAP)) + DDGNLPOISSON_LAP = Ucomplap (mesh,l2*ones(Nelements,1)); +end + +%% compute $$ Mv = ( n + p) $$ +%% and the (lumped) mass matrix M +if (isempty(DDGNLPOISSON_MASS)) + DDGNLPOISSON_MASS=Ucompmass2 (mesh,ones(Nnodes,1),ones(Nelements,1)); +end +Mv = (n + p); +M = DDGNLPOISSON_MASS*sparse(diag(Mv));%Ucompmass (mesh,Mv); + +%%% +%%% Compute RHS vector (-residual) +%%% + +%% now compute $$ T0 = \frac{q}{\epsilon} (n - p - D) $$ +if (isempty(DDG_RHS)) + DDG_RHS= Ucompconst (mesh,ones(Nnodes,1),ones(Nelements,1)); +end +Tv0 = (n - p - D); +T0 = DDG_RHS.*Tv0;%Ucompconst (mesh,Tv0,ones(Nelements,1)); + +%% now we're ready to build LHS matrix and RHS of the linear system for 1st Newton step +A = DDGNLPOISSON_LAP + M; +R = DDGNLPOISSON_LAP * V + T0; + +%% Apply boundary conditions +A (Dnodes,:) = []; +A (:,Dnodes) = []; +R(Dnodes) = []; + +%% we need $$ \norm{R_1} $$ and $$ \norm{R_k} $$ for the convergence test +normr(1) = norm(R,inf); +relresnorm = 1; +reldVnorm = 1; +normrnew = normr(1); +dV = V*0; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% START OF THE NEWTON CYCLE +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +for newtit=1:maxit + if verbose + fprintf(1,'\n newton iteration: %d, reldVnorm = %e\n',newtit,reldVnorm); + end + + dV(Varnodes) =(A)\(-R); + + + + %%%%%%%%%%%%%%%%%% + %% Start of th damping procedure + %%%%%%%%%%%%%%%%%% + tk = 1; + for dit = 1:dampit + if verbose + fprintf(1,'\n damping iteration: %d, residual norm = %e\n',dit,normrnew); + end + Vnew = V + tk * dV; + + n = exp(Vnew-Fn); + p = exp(-Vnew+Fp); + n(Dnodes) = nin(Dnodes); + p(Dnodes) = pin(Dnodes); + + + %%% + %%% Compute LHS matrices + %%% + + %% let's compute FEM approximation of $$ L = - \frac{d^2}{x^2} $$ + %L = Ucomplap (mesh,ones(Nelements,1)); + + %% compute $$ Mv = ( n + p) $$ + %% and the (lumped) mass matrix M + Mv = (n + p); + M = DDGNLPOISSON_MASS*sparse(diag(Mv));%Ucompmass (mesh,Mv); + + %%% + %%% Compute RHS vector (-residual) + %%% + + %% now compute $$ T0 = \frac{q}{\epsilon} (n - p - D) $$ + Tv0 = (n - p - D); + T0 = DDG_RHS.*Tv0;%Ucompconst (mesh,Tv0,ones(Nelements,1)); + + %% now we're ready to build LHS matrix and RHS of the linear system for 1st Newton step + A = DDGNLPOISSON_LAP + M; + R = DDGNLPOISSON_LAP * Vnew + T0; + + %% Apply boundary conditions + A (Dnodes,:) = []; + A (:,Dnodes) = []; + R(Dnodes) = []; + + %% compute $$ | R_{k+1} | $$ for the convergence test + normrnew= norm(R,inf); + + % check if more damping is needed + if (normrnew > normr(newtit)) + tk = tk/dampcoeff; + else + if verbose + fprintf(1,'\nexiting damping cycle because residual norm = %e \n',normrnew); + end + break + end + end + + V = Vnew; + normr(newtit+1) = normrnew; + dVnorm = norm(tk*dV,inf); + % check if convergence has been reached + reldVnorm = dVnorm / norm(V,inf); + if (reldVnorm <= toll) + if(verbose) + fprintf(1,'\nexiting newton cycle because reldVnorm= %e \n',reldVnorm); + end + break + end + +end + +res = normr; +niter = newtit; + Added: trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXddcurrent.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXddcurrent.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXddcurrent.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,42 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is part of: +%% secs3d - A 3-D Drift--Diffusion Semiconductor Device Simulator +%% +%% secs3d 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. +%% +%% secs3d 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 secs3d; If not, see <http://www.gnu.org/licenses/>. +%% +%% author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + +% [current,divrg]=DDGOXddcurrent(mesh,Sinodes,data,contacts); + +function [current,divrg]=DDGOXddcurrent(mesh,Sinodes,data,contacts); + +load constants +Nelements = size(mesh.t,2); +mob = data.un*ones(Nelements,1);%Ufielddepmob(mesh,data.un,data.Fn,data.vsatn,data.mubn); +An = Uscharfettergummel(mesh,data.V(Sinodes),mob); +mob = data.up*ones(Nelements,1);%Ufielddepmob(mesh,data.up,-data.V(Sinodes),data.vsatp,data.mubp); +Ap = Uscharfettergummel(mesh,-data.V(Sinodes),mob); +divrg = An * data.n - Ap * data.p; + +for con = 1:length(contacts) + + cnodes = Ugetnodesonface(mesh,contacts(con)); + current(con) = sum(divrg(cnodes)); + +end + +Is = q*data.us*data.Vs*data.ns; +current = current * Is; + Added: trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXgummelmap.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXgummelmap.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXgummelmap.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,145 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is part of: +%% secs3d - A 3-D Drift--Diffusion Semiconductor Device Simulator +%% +%% secs3d 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. +%% +%% secs3d 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 secs3d; If not, see <http://www.gnu.org/licenses/>. +%% +%% author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + +% [odata,it,res] = DDGOXgummelmap (imesh,Dsides,... +% Simesh,Sinodes,Sielements,SiDsides,... +% idata,toll,maxit,ptoll,pmaxit,verbose) +% + +function [odata,it,res] = DDGOXgummelmap (imesh,Dsides,... + Simesh,Sinodes,Sielements,SiDsides,... + idata,toll,maxit,ptoll,pmaxit,verbose) + + +clear global +global LOGFILENAME DDGOXNLPOISSON_LAP DDGOXNLPOISSON_MASS DDGOXNLPOISSON_RHS DDG_RHS DDG_MASS + +Nnodes = max(size(imesh.p)); +Nelements = max(size(imesh.t)); +SiNnodes = max(size(Simesh.p)); +SiNelements = max(size(Simesh.t)); + +V (:,1) = idata.V; + +p (:,1) = idata.p; +n (:,1) = idata.n; + +Fn(:,1) = idata.Fn; +Fp(:,1) = idata.Fp; + +D = idata.D; + +Dnodes = Ugetnodesonface(imesh,Dsides); +SiDnodes = Ugetnodesonface(Simesh,SiDsides); + +nrm = 1; + +for i=1:1:maxit + if (verbose>1) + fprintf(1,'*****************************************************************\n'); + fprintf(1,'**** start of gummel iteration number: %d\n',i); + fprintf(1,'*****************************************************************\n'); + + end + + if (verbose>1) + fprintf(1,'solving non linear poisson equation\n\n'); + end + + + [V(:,2),n(:,2),p(:,2)] =DDGOXnlpoisson (imesh,Dsides,Sinodes,SiDnodes,Sielements,... + V(:,1),n(:,1),p(:,1),Fn(:,1),Fp(:,1),D,... + idata.l2,idata.l2ox,ptoll,pmaxit,verbose-1); + V(Dnodes,2) = idata.V(Dnodes); + + if (verbose>1) + fprintf (1,'\n\nupdating electron qfl\n\n'); + end + + mob = Ufielddepmob(Simesh,idata.un,Fn(:,1),idata.vsatn,idata.mubn); + + n(:,3) =DDGelectron_driftdiffusion(Simesh,SiDsides,n(:,2),p(:,2),... + V(Sinodes,2),mob,... + idata.tn,idata.tp,idata.ni,idata.ni); + + Fn(:,2)=V(Sinodes,2) - log(n(:,3)); + n(SiDnodes,3) = idata.n(SiDnodes); + Fn(SiDnodes,2) = idata.Fn(SiDnodes); + + if (verbose>1) + fprintf(1,'updating hole qfl\n\n'); + end + + mob = Ufielddepmob(Simesh,idata.up,Fp(:,1),idata.vsatp,idata.mubp); + + p(:,3) =DDGhole_driftdiffusion(Simesh,SiDsides,n(:,3),p(:,2),... + V(Sinodes,2),mob,... + idata.tn,idata.tp,idata.ni,idata.ni); + + + Fp(:,2)= V(Sinodes,2) + log(p(:,3)); + p(SiDnodes,3) = idata.p(SiDnodes); + Fp(SiDnodes,2) = idata.Fp(SiDnodes); + + if (verbose>1) + fprintf(1,'checking for convergence\n\n'); + end + + nrfn= norm(Fn(:,2)-Fn(:,1),inf); + nrfp= norm (Fp(:,2)-Fp(:,1),inf); + nrv = norm (V(:,2)-V(:,1),inf); + nrm(i) = max([nrfn;nrfp;nrv]); + + figure(2) + semilogy(nrm) + pause(.1) + + + if (verbose>1) + fprintf (1,' max(|phin_(k+1)-phinn_(k)| , |phip_(k+1)-phip_(k)| , |v_(k+1)- v_(k)| )= %d\n',nrm(i)); + end + if (nrm(i)<toll) + break + end + + V(:,1) = V(:,end); + n(:,1) = n(:,end); + p(:,1) = p(:,end); + Fn(:,1)= Fn(:,end); + Fp(:,1)= Fp(:,end); + + +end + +it = i; +res = nrm; + +if (verbose>0) + fprintf(1,'\n\nDD: # of Gummel iterations = %d\n\n',it); +end + +odata = idata; + +odata.n = n(:,end); +odata.p = p(:,end); +odata.V = V(:,end); +odata.Fn = Fn(:,end); +odata.Fp = Fp(:,end); + Added: trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXnlpoisson.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXnlpoisson.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/DDGOX/DDGOXnlpoisson.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,250 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is part of: +%% secs3d - A 3-D Drift--Diffusion Semiconductor Device Simulator +%% +%% secs3d 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. +%% +%% secs3d 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 secs3d; If not, see <http://www.gnu.org/licenses/>. +%% +%% author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + +% +% [V,n,p,res,niter] = DDGOXnlpoisson (mesh,Dsides,Sinodes,Vin,nin,pin,... +% Fnin,Fpin,D,l2,l2ox,toll,maxit,verbose) +% +% solves $$ -\lambda^2 V'' + (n(V,Fn) - p(V,Fp) -D)$$ +% + +function [V,n,p,res,niter] = DDGOXnlpoisson (mesh,Dsides,Sinodes,SiDnodes,... + Sielements,Vin,nin,pin,... + Fnin,Fpin,D,l2,l2ox,... + toll,maxit,verbose) + + +global DDGOXNLPOISSON_LAP DDGOXNLPOISSON_MASS DDGOXNLPOISSON_RHS LOGFILENAME + +%% Set some useful constants +dampit = 3; +dampcoeff = 2; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% convert input vectors to columns +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +if columns(D)>rows(D) + D=D'; +end + + +if columns(nin)>rows(nin) + nin=nin'; +end + +if columns(pin)>rows(pin) + pin=pin'; +end + +if columns(Vin)>rows(Vin) + Vin=Vin'; +end + +if columns(Fnin)>rows(Fnin) + Fnin=Fnin'; +end + +if columns(Fpin)>rows(Fpin) + Fpin=Fpin'; +end +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% setup FEM data structures +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +nodes=mesh.p; +elements=mesh.t; +Nnodes = length(nodes); +Nelements = length(elements); + +Dnodes = Ugetnodesonface(mesh,Dsides); + +% Set values of Dirichelet BCs +Bc = zeros(length(Dnodes),1); +% Set list of nodes without Dirichelet BCs +Varnodes = setdiff([1:Nnodes],Dnodes); + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% initialization: +%% we're going to solve +%% $$ - \lambda^2 (\delta V)'' + (\frac{\partial n}{\partial V} - \frac{\partial p}{\partial V})= -R $$ +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% set $$ n_1 = nin $$ and $$ V = Vin $$ +V = Vin; +Fn = Fnin; +Fp = Fpin; +n = exp(V(Sinodes)-Fn); +p = exp(-V(Sinodes)+Fp); +n(SiDnodes) = nin(SiDnodes); +p(SiDnodes) = pin(SiDnodes); + + +%%% +%%% Compute LHS matrices +%%% + +%% let's compute FEM approximation of $$ L = - \frac{d^2}{x^2} $$ +if (isempty(DDGOXNLPOISSON_LAP)) + coeff = l2ox * ones(Nelements,1); + coeff(Sielements)=l2; + DDGOXNLPOISSON_LAP = Ucomplap (mesh,coeff); +end + +%% compute $$ Mv = ( n + p) $$ +%% and the (lumped) mass matrix M +if (isempty(DDGOXNLPOISSON_MASS)) + coeffe = zeros(Nelements,1); + coeffe(Sielements)=1; + DDGOXNLPOISSON_MASS = Ucompmass2(mesh,ones(Nnodes,1),coeffe); +end +freecarr=zeros(Nnodes,1); +freecarr(Sinodes)=(n + p); +Mv = freecarr; +M = DDGOXNLPOISSON_MASS*spdiags(Mv,0,Nnodes,Nnodes); + +%%% +%%% Compute RHS vector (-residual) +%%% + +%% now compute $$ T0 = \frac{q}{\epsilon} (n - p - D) $$ +if (isempty(DDGOXNLPOISSON_RHS)) + coeffe = zeros(Nelements,1); + coeffe(Sielements)=1; + DDGOXNLPOISSON_RHS = Ucompconst (mesh,ones(Nnodes,1),coeffe); +end +totcharge = zeros(Nnodes,1); +totcharge(Sinodes)=(n - p - D); +Tv0 = totcharge; +T0 = Tv0 .* DDGOXNLPOISSON_RHS; + +%% now we're ready to build LHS matrix and RHS of the linear system for 1st Newton step +A = DDGOXNLPOISSON_LAP + M; +R = DDGOXNLPOISSON_LAP * V + T0; + +%% Apply boundary conditions +A (Dnodes,:) = []; +A (:,Dnodes) = []; +R(Dnodes) = []; + +%% we need $$ \norm{R_1} $$ and $$ \norm{R_k} $$ for the convergence test +normr(1) = norm(R,inf); +relresnorm = 1; +reldVnorm = 1; +normrnew = normr(1); +dV = V*0; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% START OF THE NEWTON CYCLE +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +for newtit=1:maxit + if (verbose>0) + fprintf(1,'\n***\nNewton iteration: %d, reldVnorm = %e\n***\n',newtit,reldVnorm); + end + + dV(Varnodes) =(A)\(-R); + dV(Dnodes)=0; + + + %%%%%%%%%%%%%%%%%% + %% Start of th damping procedure + %%%%%%%%%%%%%%%%%% + tk = 1; + for dit = 1:dampit + if (verbose>0) + fprintf(1,'\ndamping iteration: %d, residual norm = %e\n',dit,normrnew); + end + Vnew = V + tk * dV; + + n = exp(Vnew(Sinodes)-Fn); + p = exp(-Vnew(Sinodes)+Fp); + n(SiDnodes) = nin(SiDnodes); + p(SiDnodes) = pin(SiDnodes); + + + %%% + %%% Compute LHS matrices + %%% + + %% let's compute FEM approximation of $$ L = - \frac{d^2}{x^2} $$ + %L = Ucomplap (mesh,ones(Nelements,1)); + + %% compute $$ Mv = ( n + p) $$ + %% and the (lumped) mass matrix M + freecarr=zeros(Nnodes,1); + freecarr(Sinodes)=(n + p); + Mv = freecarr; + M = DDGOXNLPOISSON_MASS*spdiags(Mv,0,Nnodes,Nnodes); + + %%% + %%% Compute RHS vector (-residual) + %%% + + %% now compute $$ T0 = \frac{q}{\epsilon} (n - p - D) $$ + totcharge( Sinodes)=(n - p - D); + Tv0 = totcharge; + T0 = Tv0 .* DDGOXNLPOISSON_RHS;%T0 = Ucompconst (mesh,Tv0,ones(Nelements,1)); + + %% now we're ready to build LHS matrix and RHS of the linear system for 1st Newton step + A = DDGOXNLPOISSON_LAP + M; + R = DDGOXNLPOISSON_LAP * Vnew + T0; + + %% Apply boundary conditions + A (Dnodes,:) = []; + A (:,Dnodes) = []; + R(Dnodes) = []; + + %% compute $$ | R_{k+1} | $$ for the convergence test + normrnew= norm(R,inf); + + % check if more damping is needed + if (normrnew > normr(newtit)) + tk = tk/dampcoeff; + else + if (verbose>0) + fprintf(1,'\nexiting damping cycle because residual norm = %e \n-----------\n',normrnew); + end + break + end + end + + V = Vnew; + normr(newtit+1) = normrnew; + dVnorm = norm(tk*dV,inf); + pause(.1); + % check if convergence has been reached + reldVnorm = dVnorm / norm(V,inf); + if (reldVnorm <= toll) + if(verbose>0) + fprintf(1,'\nexiting newton cycle because reldVnorm= %e \n',reldVnorm); + end + break + end + +end + +res = normr; +niter = newtit; + Added: trunk/octave-forge/extra/secs3d/inst/DDGt/DDGtelectron_driftdiffusion.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/DDGt/DDGtelectron_driftdiffusion.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/DDGt/DDGtelectron_driftdiffusion.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,58 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is part of: +%% secs3d - A 3-D Drift--Diffusion Semiconductor Device Simulator +%% +%% secs3d 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. +%% +%% secs3d 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 secs3d; If not, see <http://www.gnu.org/licenses/>. +%% +%% author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + +% +% n=DDGtelectron_driftdiffusion(mesh,Dsides,nin,pin,V,un,tn,tp,n0,p0) +% IN: +% v = electric potential +% mesh = integration domain +% ng = initial guess and BCs for electron density +% p = hole density (to compute SRH recombination) +% dt = timestep +% OUT: +% n = updated electron density +% + +function n=DDGtelectron_driftdiffusion(mesh,Dsides,nin,pin,V,un,tn,tp,n0,p0,nold,dt) + + +if (columns(nin)>rows(nin)) + nin=nin'; +end + +if (columns(V)>rows(V)) + V=V'; +end + +if (columns(pin)>rows(pin)) + pin=pin'; +end + +Nnodes = max(size(mesh.p)); +Nelements = max(size(mesh.t)); + +denom = (tp*(nin+sqrt(n0.*p0))+tn*(pin+sqrt(n0.*p0))); +u = un; +U = p0.*n0./denom + nold/dt; +M = pin./denom + ones(size(nin))/dt; +guess = nin; + +n = Udriftdiffusion(mesh,Dsides,guess,M,U,V,u); + Added: trunk/octave-forge/extra/secs3d/inst/DDGt/DDGtgummelmap.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/DDGt/DDGtgummelmap.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/DDGt/DDGtgummelmap.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,121 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is part of: +%% secs3d - A 3-D Drift--Diffusion Semiconductor Device Simulator +%% +%% secs3d 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. +%% +%% secs3d 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 secs3d; If not, see <http://www.gnu.org/licenses/>. +%% +%% author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + +% +% [odata,it,res] =... +% DDGtgummelmap (imesh,Dsides,idata,toll,maxit,ptoll,pmaxit,verbose) +% + +function [odata,it,res] =... + DDGtgummelmap (imesh,Dsides,idata,toll,maxit,ptoll,pmaxit,verbose) + +clear global +global DDGNLPOISSON_LAP DDGNLPOISSON_MASS DDG_RHS DDG_MASS + +V (:,1) = idata.V; +p (:,1) = idata.p; +n (:,1) = idata.n; +Fn(:,1) = idata.Fn; +Fp(:,1) = idata.Fp; +D = idata.D; + +Nnodes = max(size(imesh.p)); +Nelements = max(size(imesh.t)); + +for i=1:1:maxit + if (verbose>1) + fprintf(1,'*****************************************************************\n'); + fprintf(1,'**** start of gummel iteration number: %d\n',i); + fprintf(1,'*****************************************************************\n'); + + end + + if (verbose>1) + fprintf(1,'solving non linear poisson equation\n\n'); + end + [V(:,2),n(:,2),p(:,2)] =... + DDGnlpoisson (imesh,Dsides,V(:,1),n(:,1),p(:,1),Fn(:,1),Fp(:,1),D,... + idata.l2,ptoll,pmaxit,verbose-1); + + + if (verbose>1) + fprintf (1,'\n\nupdating electron qfl\n\n'); + end + n(:,3) =DDGtelectron_driftdiffusion(imesh,Dsides,idata.n,idata.p,V(:,2),... + idata.un*ones(Nelements,1),... + idata.tn,idata.tp,idata.ni,idata.ni,idata.n,idata.dt); + Fn(:,2)=V(:,2) - log(n(:,3)); + + if (verbose>1) + fprintf(1,'updating hole qfl\n\n'); + end + p(:,3) =DDGthole_driftdiffusion(imesh,Dsides,idata.n,idata.p,V(:,2),... + idata.up*ones(Nelements,1),... + idata.tn,idata.tp,idata.ni,idata.ni,idata.p,idata.dt); + + Fp(:,2)=V(:,2) + log(p(:,3)); + + if (verbose>1) + fprintf(1,'checking for convergence\n\n'); + end + + nrfn= norm(Fn(:,2)-Fn(:,1),inf); + nrfp= norm (Fp(:,2)-Fp(:,1),inf); + nrv = norm (V(:,2)-V(:,1),inf); + nrm(i) = max([nrfn;nrfp;nrv]); + + if (verbose>1) + fprintf (1,' max(|phin_(k+1)-phinn_(k)| , |phip_(k+1)-phip_(k)| , |v_(k+1)- v_(k)| )= %d\n',nrm(i)); + end + if (nrm(i)<toll) + break + end + + V(:,1) = V(:,end); + n(:,1) = n(:,end); + p(:,1) = p(:,end); + Fn(:,1)= Fn(:,end); + Fp(:,1)= Fp(:,end); + + +end + +it = i; +res = nrm; + +if (verbose>0) + fprintf(1,'\n\nDD: # of Gummel iterations = %d\n\n',it); +end + +odata = idata; + +odata.n = n(:,end); +odata.p = p(:,end); +odata.V = V(:,end); +odata.Fn = Fn(:,end); +odata.Fp = Fp(:,end); + +clear global + +% Last Revision: +% $Author: carlo $ +% $Date: 2005/05/27 15:29:23 $ + + Added: trunk/octave-forge/extra/secs3d/inst/DDGt/DDGthole_driftdiffusion.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/DDGt/DDGthole_driftdiffusion.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/DDGt/DDGthole_driftdiffusion.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,57 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is part of: +%% secs3d - A 3-D Drift--Diffusion Semiconductor Device Simulator +%% +%% secs3d 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. +%% +%% secs3d 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 secs3d; If not, see <http://www.gnu.org/licenses/>. +%% +%% author: Carlo de Falco <cdf _AT_ users.sourceforge.net> + + +% p=DDGthole_driftdiffusion(mesh,Dsides,nin,pin,V,up,tn,tp,n0,p0) +% IN: +% v = electric potential +% mesh = integration domain +% nin = initial guess and BCs for electron density +% pin = hole density (to compute SRH recombination) +% pold = hole density at previous timestep +% dt = timestep +% OUT: +% p = updated hole density + +function p=DDGthole_driftdiffusion(mesh,Dsides,nin,pin,V,up,tn,tp,n0,p0,pold,dt) + +if (columns(nin)>rows(nin)) + nin=nin'; +end + +if (columns(V)>rows(V)) + V=V'; +end + +if (columns(pin)>rows(pin)) + pin=pin'; +end + +Nnodes = max(size(mesh.p)); +Nelements = max(size(mesh.t)); + +denom = (tp*(nin+sqrt(n0.*p0))+tn*(pin+sqrt(n0.*p0))); +u = up; +U = n0.*p0./denom + pold/dt; +M = nin./denom + ones(size(pin))/dt ; +guess = pin; +V = -V; + +p = Udriftdiffusion(mesh,Dsides,guess,M,U,V,u); Added: trunk/octave-forge/extra/secs3d/inst/QDDGOX/QDDGOXcompdens.m =================================================================== --- trunk/octave-forge/extra/secs3d/inst/QDDGOX/QDDGOXcompdens.m (rev 0) +++ trunk/octave-forge/extra/secs3d/inst/QDDGOX/QDDGOXcompdens.m 2011-09-09 01:37:13 UTC (rev 8514) @@ -0,0 +1,198 @@ +%% Copyright (C) 2004,2007,2008,2009,2010,2011 Carlo de Falco +%% +%% This file is pa... [truncated message content] |
From: <jpi...@us...> - 2011-11-07 21:01:38
|
Revision: 9023 http://octave.svn.sourceforge.net/octave/?rev=9023&view=rev Author: jpicarbajal Date: 2011-11-07 21:01:32 +0000 (Mon, 07 Nov 2011) Log Message: ----------- robotics. First coomit. Adding wrapper class Quaternion. Modified Paths: -------------- trunk/octave-forge/extra/quaternion_oo/devel/RV9_Quaternions.txt Added Paths: ----------- trunk/octave-forge/extra/robotics/ Modified: trunk/octave-forge/extra/quaternion_oo/devel/RV9_Quaternions.txt =================================================================== --- trunk/octave-forge/extra/quaternion_oo/devel/RV9_Quaternions.txt 2011-11-07 20:43:39 UTC (rev 9022) +++ trunk/octave-forge/extra/quaternion_oo/devel/RV9_Quaternions.txt 2011-11-07 21:01:32 UTC (rev 9023) @@ -97,12 +97,11 @@ = methods = -[c] inv return inverse of quaterion +DONE [c] inv return inverse of quaterion By Monday, November 07 2011 this function is equivalent to the conj function of quaternions_oo not to inv of that package. -[e] norm return norm of quaternion -We will wrap abs from quaternions_oo +DONE [e] norm: We will wrap abs from quaternions_oo [] unit return unit quaternion [] unitize unitize this quaternion This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2011-11-07 21:16:16
|
Revision: 9025 http://octave.svn.sourceforge.net/octave/?rev=9025&view=rev Author: jpicarbajal Date: 2011-11-07 21:16:09 +0000 (Mon, 07 Nov 2011) Log Message: ----------- robotics. adding subfolders Added Paths: ----------- trunk/octave-forge/extra/robotics/ trunk/octave-forge/extra/robotics/DESCRIPTION trunk/octave-forge/extra/robotics/INDEX trunk/octave-forge/extra/robotics/PKG_DEL trunk/octave-forge/extra/robotics/devel/ trunk/octave-forge/extra/robotics/inst/ trunk/octave-forge/extra/robotics/inst/@Quaternion/ trunk/octave-forge/extra/robotics/inst/@Quaternion/Quaternion.m trunk/octave-forge/extra/robotics/inst/@Quaternion/private/ trunk/octave-forge/extra/robotics/inst/@Quaternion/private/q2Q.m trunk/octave-forge/extra/robotics/inst/@Quaternion/private/wrapperfield.m trunk/octave-forge/extra/robotics/inst/@Quaternion/subsref.m Removed Paths: ------------- trunk/octave-forge/extra/robotics/ Added: trunk/octave-forge/extra/robotics/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/robotics/DESCRIPTION (rev 0) +++ trunk/octave-forge/extra/robotics/DESCRIPTION 2011-11-07 21:16:09 UTC (rev 9025) @@ -0,0 +1,11 @@ +Name: Robotics +Version: 0.0.1 +Date: 2011-11-7 +Author: Peter Corke <pet...@gm...>, Juan Pablo Carbajal <car...@if...> +Maintainer: Juan Pablo Carbajal <car...@if...> +Title: Robotics Toolbox +Description: Toolbox for simulation in robotics and control. +Depends: octave (>= 3.4.0), quaternions_oo +Autoload: no +License: GPL version 3 or later and LGPL +Url: http://octave.sf.net, http://petercorke.com/Robotics_Toolbox.html Added: trunk/octave-forge/extra/robotics/INDEX =================================================================== --- trunk/octave-forge/extra/robotics/INDEX (rev 0) +++ trunk/octave-forge/extra/robotics/INDEX 2011-11-07 21:16:09 UTC (rev 9025) @@ -0,0 +1,3 @@ +robotics >> Robotics Toolbox +Quaternions + @Quaternions/Quaternions Added: trunk/octave-forge/extra/robotics/PKG_DEL =================================================================== --- trunk/octave-forge/extra/robotics/PKG_DEL (rev 0) +++ trunk/octave-forge/extra/robotics/PKG_DEL 2011-11-07 21:16:09 UTC (rev 9025) @@ -0,0 +1,17 @@ +%1 +dirlist = {}; +dirname = fileparts (canonicalize_file_name (mfilename ("fullpath"))); + +if (! exist (fullfile (dirname, "inst"), "dir")) + for ii=1:length (dirlist) + ## Run this if the package is installed + rmpath ( [ dirname filesep dirlist{ii}]) + end +else + warning("robotics:Devel","Removing path for testing."); + for ii=1:length(dirlist) + rmpath ([ dirname "/inst/" dirlist{ii}]) + endfor +endif + +clear dirlist dirname Added: trunk/octave-forge/extra/robotics/inst/@Quaternion/Quaternion.m =================================================================== --- trunk/octave-forge/extra/robotics/inst/@Quaternion/Quaternion.m (rev 0) +++ trunk/octave-forge/extra/robotics/inst/@Quaternion/Quaternion.m 2011-11-07 21:16:09 UTC (rev 9025) @@ -0,0 +1,71 @@ +## Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> +## +## 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 3 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, see <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{Q} =} Quaternion () +## @deftypefnx {Function File} {@var{Q} =} Quaternion (@var{q1}) +## @deftypefnx {Function File} {@var{Q} =} Quaternion ([@var{s} @var{x} @var{y} @var{z}]) +## @deftypefnx {Function File} {@var{Q} =} Quaternion (@var{s}) +## @deftypefnx {Function File} {@var{Q} =} Quaternion (@var{v}) +## @deftypefnx {Function File} {@var{Q} =} Quaternion (@var{th},@var{v}) +## @deftypefnx {Function File} {@var{Q} =} Quaternion (@var{r}) +## @deftypefnx {Function File} {@var{Q} =} Quaternion (@var{t}) +## Create an object of the Quaternion class. +## +## This is a wrapper class of the quaterion class of the quaternions_oo package. +## +## Quaternion() is the identitity quaternion 1<0,0,0> representing a null +## rotation. +## +## Quaternion (@var{q1}) is a copy of the quaternion Q1 +## +## Quaternion ([@var{s} @var{x} @var{y} @var{z}]) is a quaternion formed by +## specifying directly its 4 elements +## +## Quaternion (@var{s}) is a quaternion formed from the scalar S and zero vector +## part: S<0,0,0> +## +## Quaternion (@var{v}) is a pure quaternion with the specified vector part: 0<V> +## +## Quaternion (@var{th},@var{v}) is a unit quaternion corresponding to rotation +## of TH about the vector V. +## +## Quaternion (@var{r}) is a unit quaternion corresponding to the orthonormal +## rotation matrix R. +## +## Quaternion (@var{t}) is a unit quaternion equivalent to the rotational part +## of the homogeneous transform T. +## +## @seealso{quaternion} +## @end deftypefn + +function Q = Quaternions(varargin) + + switch nargin + case 0 + Q = struct("q_wrap",quaternion(1,0,0,0), "R",eye(3),"T",[eye(3) zeros(3,1); 0 0 0 1],... + "s",1,"v",[0 0 0]); + otherwise + error("robotics:Devel","multiple constructors not implemented"); + end + + Q = class (Q, 'Quaternion'); + +endfunction + +%!test +%! Q = Quaternion(); + +%!error Quaternion([1 0 0 0]) Added: trunk/octave-forge/extra/robotics/inst/@Quaternion/private/q2Q.m =================================================================== --- trunk/octave-forge/extra/robotics/inst/@Quaternion/private/q2Q.m (rev 0) +++ trunk/octave-forge/extra/robotics/inst/@Quaternion/private/q2Q.m 2011-11-07 21:16:09 UTC (rev 9025) @@ -0,0 +1,33 @@ +## Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> +## +## 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 3 of the License, or +## 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, see <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} q2Q (@var{obj}) +## Convertas a quaterion in to a Quaternion. +## +## @end deftypefn + +function Q = q2Q (Q,q) + + Q.s = q(0); + Q.v(1) = q(1); + Q.v(2) = q(2); + Q.v(3) = q(3); + + ## TODO Rest of the fields + + warning("robotics:Devel","Conversion from quaternion to Quaterninon not finished."); + +endfunction Added: trunk/octave-forge/extra/robotics/inst/@Quaternion/private/wrapperfield.m =================================================================== --- trunk/octave-forge/extra/robotics/inst/@Quaternion/private/wrapperfield.m (rev 0) +++ trunk/octave-forge/extra/robotics/inst/@Quaternion/private/wrapperfield.m 2011-11-07 21:16:09 UTC (rev 9025) @@ -0,0 +1,24 @@ +## Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> +## +## 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 3 of the License, or +## 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, see <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} warapperfield (@var{obj}) +## Returns the wrapped quaternion. +## +## @end deftypefn + +function q = wrapperfield (obj) + q = obj.q_wrap; +endfunction Added: trunk/octave-forge/extra/robotics/inst/@Quaternion/subsref.m =================================================================== --- trunk/octave-forge/extra/robotics/inst/@Quaternion/subsref.m (rev 0) +++ trunk/octave-forge/extra/robotics/inst/@Quaternion/subsref.m 2011-11-07 21:16:09 UTC (rev 9025) @@ -0,0 +1,87 @@ +## Copyright (C) 2011 Carnë Draug <car...@gm...> +## Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> +## Improvement based on John W. Eaton's idea. +## +## 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 3 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, see <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} subsrefs () +## @end deftypefn + +function varargout = subsref (obj, idx) + + persistent __method__ method4field typeNotImplemented + if isempty(__method__) + + __method__ = struct(); + + __method__.inv = @(o,a) q2Q(obj, conj(wrapperfield(obj))); + + __method__.norm = @(o,a) abs(wrapperfield(obj)); + + __method__.unit = @(o,a) error(typeNotImplemented,'unit',o); + + __method__.unitize = @(o,a) error(typeNotImplemented,'unitize',o); + + __method__.plot = @(o,a) error(typeNotImplemented,'plot',o); + + __method__.interp = @(o,a) error(typeNotImplemented,'interp',o); + + __method__.scale = @(o,a) error(typeNotImplemented,'scale',o); + + __method__.dot = @(o,a) error(typeNotImplemented,'dot',o); + + # Error strings + method4field = "Class %s has no field %s. Use %s() for the method."; + typeNotImplemented = "%s no implemented for class %s."; + + end + + if ( !strcmp (class (obj), 'Quaternion') ) + error ("Object must be of the Quaternion class but '%s' was used", class (obj) ); + elseif ( idx(1).type != '.' ) + error ("Invalid index for class %s", class (obj) ); + endif + + method = idx(1).subs; + if ~isfield(__method__, method) + error('Unknown method %s.',method); + else + fhandle = __method__.(method); + end + + if numel (idx) == 1 % can't access properties, only methods + + error (method4field, class (obj), method, method); + + end + + if strcmp (idx(2).type, '()') + + args = idx(2).subs; + if isempty(args) + out = fhandle (obj); + else + out = fhandle (obj, args{:}); + end + + varargout{1} = out; + + else + + error (typeNotImplemented,[method idx(2).type], class (obj)); + + end + +endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cd...@us...> - 2012-03-25 22:57:27
|
Revision: 10060 http://octave.svn.sourceforge.net/octave/?rev=10060&view=rev Author: cdf Date: 2012-03-25 22:57:18 +0000 (Sun, 25 Mar 2012) Log Message: ----------- new package generate_latex Modified Paths: -------------- trunk/octave-forge/extra/generate_latex/DESCRIPTION trunk/octave-forge/extra/generate_latex/INDEX trunk/octave-forge/extra/generate_latex/inst/private/get_header_title_and_footer.m Added Paths: ----------- trunk/octave-forge/extra/generate_latex/ trunk/octave-forge/extra/generate_latex/inst/generate_package_latex.m trunk/octave-forge/extra/generate_latex/inst/get_latex_options.m trunk/octave-forge/extra/generate_latex/inst/latex_help_text.m trunk/octave-forge/extra/generate_latex/inst/private/get_main_filename.m trunk/octave-forge/extra/generate_latex/inst/private/get_main_header_title_and_footer.m Removed Paths: ------------- trunk/octave-forge/extra/generate_latex/inst/generate_alphabet.m trunk/octave-forge/extra/generate_latex/inst/generate_html_manual.m trunk/octave-forge/extra/generate_latex/inst/generate_operators.m trunk/octave-forge/extra/generate_latex/inst/generate_package_html.m trunk/octave-forge/extra/generate_latex/inst/get_html_options.m trunk/octave-forge/extra/generate_latex/inst/html_help_text.m trunk/octave-forge/extra/generate_latex/inst/private/find_package.m trunk/octave-forge/extra/generate_latex/inst/private/get_alpha_database.m trunk/octave-forge/extra/generate_latex/inst/private/get_index_header_title_and_footer.m trunk/octave-forge/extra/generate_latex/inst/private/get_overview_filename.m trunk/octave-forge/extra/generate_latex/inst/private/get_overview_header_title_and_footer.m trunk/octave-forge/extra/generate_latex/inst/private/get_pkg_list_item_filename.m trunk/octave-forge/extra/generate_latex/inst/private/get_root.m trunk/octave-forge/extra/generate_latex/inst/private/get_texi_conf.m trunk/octave-forge/extra/generate_latex/inst/private/get_txi_files.m trunk/octave-forge/extra/generate_latex/inst/private/mk_chapter_dir.m trunk/octave-forge/extra/generate_latex/inst/private/mk_various_dir.m trunk/octave-forge/extra/generate_latex/inst/private/octave_forge_seealso.m trunk/octave-forge/extra/generate_latex/inst/texi2html.m trunk/octave-forge/extra/generate_latex/inst/txi2index.m trunk/octave-forge/extra/generate_latex/inst/txi2reference.m Modified: trunk/octave-forge/extra/generate_latex/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/generate_html/DESCRIPTION 2012-03-08 16:23:48 UTC (rev 9788) +++ trunk/octave-forge/extra/generate_latex/DESCRIPTION 2012-03-25 22:57:18 UTC (rev 10060) @@ -1,14 +1,12 @@ -Name: generate_html -Version: 0.1.3 -Date: 2010-02-25 -Author: Søren Hauberg -Maintainer: Søren Hauberg -Title: Generate HTML web page from help texts -Description: This package provides functions for generating HTML pages that - contain the help texts for a set of functions. The package is designed to be - as general as possible, but also contains convenience functions for generating - a set of pages for entire packages. -Depends: octave (>= 3.2.0) +Name: generate_latex +Version: 0.0.1 +Date: 2012-03-26 +Author: Soeren Hauberg, Carlo de Falco +Maintainer: Carlo de Falco +Title: Generate LaTeX docs from help texts +Description: This package provides functions for generating a LaTeX document + containing the help texts for a set of functions. +Depends: octave (>= 3.6.0) SystemRequirements: makeinfo License: GPL version 3 or later Modified: trunk/octave-forge/extra/generate_latex/INDEX =================================================================== --- trunk/octave-forge/extra/generate_html/INDEX 2012-03-08 16:23:48 UTC (rev 9788) +++ trunk/octave-forge/extra/generate_latex/INDEX 2012-03-25 22:57:18 UTC (rev 10060) @@ -1,12 +1,7 @@ -generate_html >> Generate HTML web page from help texts +generate_latex >> Generate LaTeX documents from help texts Single function functions - html_help_text + latex_help_text Package functions - generate_package_html - get_html_options - generate_html_manual -Utility Functions - txi2index - txi2reference - texi2html + generate_package_latex + get_latex_options Deleted: trunk/octave-forge/extra/generate_latex/inst/generate_alphabet.m =================================================================== --- trunk/octave-forge/extra/generate_html/inst/generate_alphabet.m 2012-03-08 16:23:48 UTC (rev 9788) +++ trunk/octave-forge/extra/generate_latex/inst/generate_alphabet.m 2012-03-25 22:57:18 UTC (rev 10060) @@ -1,105 +0,0 @@ -## Copyright (C) 2008 Soren Hauberg -## -## 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 3 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; see the file COPYING. If not, see -## <http://www.gnu.org/licenses/>. - -## -*- texinfo -*- -## @deftypefn {Function File} generate_alphabet (@var{directory}, @var{data_file}, @ -## @var{root}, @var{options}) -## @end deftypefn - -function generate_alphabet (directory, data_file, root, options = struct ()) - ## Check input - if (!ischar (directory)) - error ("generate_alphabet: first input argument must be a string"); - endif - - if (!ischar (data_file)) - error ("generate_alphabet: second input argument must be a string"); - endif - - if (!ischar (root)) - error ("generate_alphabet: third input argument must be a string"); - endif - - ## If options is a string, call get_html_options - if (ischar (options)) - options = get_html_options (options); - elseif (!isstruct (options)) - error ("generate_alphabet: fourth input argument must be a string or a structure"); - endif - - ## Load data - data = load (data_file); - data = data.functions; - - ## Sort data - data = sort (data); - - ## Convert data to lower case but also keep the original in memory - ldata = lower (data); - - ## Iterate over each function - ## First we find the first function that starts with 'a' - for a = 1:length (data) - if (ldata {a}(1) >= "a") - break; - endif - endfor - - ## Then we iterate over each function until we get something that doesn't start with 'z' - current = data {a}(1); - [fid, footer] = new_file (directory, current, options); - for idx = a:length (data) - ## Are we still working on the same file - if (ldata {idx}(1) != current) - fprintf (fid, "</div\n%s", footer); - fclose (fid); - current = ldata {idx}(1); - [fid, footer] = new_file (directory, current, options); - endif - - ## Write the actual function to the file - fun = data {idx}; - fprintf (fid, "<div class=\"func\"><b><a href=\"%s/function/%s.html\">%s</a></b></div>\n", - root, fun, fun); - try - sentence = get_first_help_sentence (fun, 200); - catch - warning ("Marking '%s' as not implemented", fun); - sentence = "Not implemented"; - end_try_catch - fprintf (fid, "<div class=\"ftext\">%s</div>\n", sentence); - endfor - - fprintf (fid, "</div\n%s", footer); - fclose (fid); -endfunction - -function [fid, footer] = new_file (directory, current, options) - current = upper (current); - filename = fullfile (directory, sprintf ("%s.html", current)); - fid = fopen (filename, "w"); - if (fid <= 0) - error ("generate_alphabet: could not open '%s' for writing", filename); - endif - - options.body_command = 'onload="javascript:fix_top_menu (); javascript:alphabetical_menu ();"'; - title = sprintf ("Alphabetical List of Functions: %s", current); - [header, title, footer] = get_overview_header_title_and_footer (options, title, "../"); - - fprintf (fid, "%s\n", header); - fprintf (fid, "<h2><a name=\"%s\">%s</a></h2>\n<div>\n", current, current); -endfunction - Deleted: trunk/octave-forge/extra/generate_latex/inst/generate_html_manual.m =================================================================== --- trunk/octave-forge/extra/generate_html/inst/generate_html_manual.m 2012-03-08 16:23:48 UTC (rev 9788) +++ trunk/octave-forge/extra/generate_latex/inst/generate_html_manual.m 2012-03-25 22:57:18 UTC (rev 10060) @@ -1,148 +0,0 @@ -## Copyright (C) 2008 Soren Hauberg -## -## 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 3 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; see the file COPYING. If not, see -## <http://www.gnu.org/licenses/>. - -## -*- texinfo -*- -## @deftypefn {Function File} generate_html_manual (@var{srcdir}, @var{outdir}) -## @end deftypefn - -function generate_html_manual (srcdir, outdir = "htdocs", options = struct ()) - ## Check input - if (nargin == 0) - print_usage (); - endif - - if (!ischar (srcdir)) - error ("generate_html_manual: first input argument must be a string"); - endif - - if (!ischar (outdir)) - error ("generate_html_manual: second input argument must be a string"); - endif - - ## If options is a string, call get_html_options - if (ischar (options)) - options = get_html_options (options); - elseif (!isstruct (options)) - error ("generate_html_manual: third input argument must be a string or a structure"); - endif - - ## Create directories - if (!exist (outdir, "dir")) - mkdir (outdir); - endif - %outdir = fullfile (outdir, "octave"); - %if (!exist (outdir, "dir")) - % mkdir (outdir); - %endif - - %chapter_dir = mk_chapter_dir (outdir, options); - %mk_function_dir (outdir, options); - % - %ds_handler = @(fun) docstring_handler (fun); - - ## Get file list - %file_list = get_txi_files (srcdir); - %txi_dir = fileparts (file_list {1}); - % - %texi_header = sprintf ("%s\n", get_texi_conf (srcdir)); - - ## Copy images from Octave build - %txi_dir = fullfile (srcdir, "doc", "interpreter"); - %pngs = fullfile (txi_dir, "*.png"); - %copyfile (pngs, "."); - - ## Set javascript startup - %if (!isfield (options, "body_command")) - % if (isfield (options, "manual_body_cmd")) - % options.body_command = options.manual_body_cmd; - % else - % options.body_command = ""; # XXX: do we need this? - % endif - %endif - - ## Process each file - %for k = 1:length (file_list) - % file = file_list {k}; - % [notused, name] = fileparts (file); - % - % text = txi2reference (file, ds_handler); - % - % text = strcat (texi_header, text); - % - % ## Remove numbers from headings as this has been broken since we handle - % ## each chapter as a seperate file - % text = strrep (text, "@chapter", "@unnumbered"); - % text = strrep (text, "@appendix", "@unnumbered"); - % text = strrep (text, "@section", "@unnumberedsec"); - % text = strrep (text, "@subsection", "@unnumberedsubsec"); - % text = strrep (text, "@subsubsection", "@unnumberedsubsubsec"); - % - % ## Make sure any @include's work - % include = "@include "; - % include_with_path = sprintf ("@include %s%s", txi_dir, filesep ()); - % text = strrep (text, include, include_with_path); - % - % ## Add 'op' index - % text = strcat ("@defindex op\n\n", text); - % - % ## Convert to HTML and write to disc - % [header, body, footer] = texi2html (text, options, "../../"); - % - % fid = fopen (fullfile (chapter_dir, sprintf ("%s.html", name)), "w"); - % fprintf (fid, "%s\n%s\n%s\n", header, body, footer); - % fclose (fid); - %endfor - - ## Move images into the chapter dir - %movefile ("*.png", chapter_dir); - - ################################################### - ## Generate reference for individual functions ## - ################################################### - - ## Get INDEX structure - indices = txi2index (srcdir); - index = struct (); - index.provides = {}; - index.name = "octave"; - index.description = "GNU Octave comes with a large set of general-prupose functions that are listed below. This is the core set of functions that is available without any packages installed."; - for k = 1:length (indices) - if (!isempty (indices {k})) - ikp = indices {k}.provides; - index.provides (end+1:end+length (ikp)) = ikp; - endif - endfor - - ## Generate the documentation - options.include_package_list_item = false; - options.include_package_page = false; - options.include_package_license = false; - - generate_package_html (index, outdir, options); - %for k = 1:length (index) - % if (!isempty (index {k})) - % printf ("Chapter: %s\n", index {k}.name); fflush (stdout); - % index {k}.name = ""; # remove the name to avoid each chapter having its own dir - % generate_package_html (index {k}, outdir, options); - % endif - %endfor -endfunction - -function retval = docstring_handler (fun) - retval = sprintf ("@ifhtml\n@html\n<div class='seefun'>See <a href='../function/%s.html'>%s</a></div>\n@end html\n@end ifhtml\n", - fun, fun); -endfunction - Deleted: trunk/octave-forge/extra/generate_latex/inst/generate_operators.m =================================================================== --- trunk/octave-forge/extra/generate_html/inst/generate_operators.m 2012-03-08 16:23:48 UTC (rev 9788) +++ trunk/octave-forge/extra/generate_latex/inst/generate_operators.m 2012-03-25 22:57:18 UTC (rev 10060) @@ -1,127 +0,0 @@ -## Copyright (C) 2008 Soren Hauberg -## -## 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 3 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; see the file COPYING. If not, see -## <http://www.gnu.org/licenses/>. - -## -*- texinfo -*- -## @deftypefn {Function File} generate_operators (@var{outdir}, @var{options}) -## Generate a HTML page with a list of operators available in GNU Octave. -## @end deftypefn - -function generate_operators (outdir = "htdocs", options = struct ()) - ## Check input - if (!ischar (outdir)) - error ("generate_operators: first input argument must be a string"); - endif - - ## If options is a string, call get_html_options - if (ischar (options)) - options = get_html_options (options); - elseif (!isstruct (options)) - error ("generate_operators: second input argument must be a string or a structure"); - endif - - ## Create directories if needed - if (!exist (outdir, "dir")) - mkdir (outdir); - endif - name = fullfile (outdir, "operators.html"); - - ## Generate html - title = "Operators and Keywords"; - options.body_command = 'onload="javascript:fix_top_menu ();"'; - [header, title, footer] = get_overview_header_title_and_footer (options, title); - - fid = fopen (name, "w"); - if (fid < 0) - error ("generate_operators: couldn't open file for writing"); - endif - - fprintf (fid, "%s\n", header); - - fprintf (fid, "<h2 class=\"tbdesc\">Operators</h2>\n\n"); - write_list (__operators__, fid, false); - - fprintf (fid, "<h2 class=\"tbdesc\">Keywords</h2>\n\n"); - write_list (__keywords__, fid, true); - - fprintf (fid, "\n%s\n", footer); - fclose (fid); -endfunction - -function write_list (list, fid, write_anchors) - for k = 1:length (list) - elem = list {k}; - [text, format] = get_help_text (elem); - if (strcmp (format, "texinfo")) - text = strip_defs (text); - text = __makeinfo__ (text, "plain text"); - endif - if (write_anchors) - fprintf (fid, "<a name=\"%s\">\n", elem); - endif - fprintf (fid, "<div class=\"func\"><b>%s</b></div>\n", elem); - fprintf (fid, "<div class=\"ftext\">%s</div>\n", text); # XXX: don't use text - if (write_anchors) - fprintf (fid, "</a>\n\n"); - endif - endfor -endfunction - -function text = strip_defs (text) - ## Lines ending with "@\n" are continuation lines, so they should be concatenated - ## with the following line. - text = strrep (text, "@\n", " "); - - ## Find, and remove, lines that start with @def. This should remove things - ## such as @deftypefn, @deftypefnx, @defvar, etc. - keep = true (size (text)); - def_idx = strfind (text, "@def"); - if (!isempty (def_idx)) - endl_idx = find (text == "\n"); - for k = 1:length (def_idx) - endl = endl_idx (find (endl_idx > def_idx (k), 1)); - if (isempty (endl)) - keep (def_idx (k):end) = false; - else - keep (def_idx (k):endl) = false; - endif - endfor - - ## Remove the @end ... that corresponds to the @def we removed above - def1 = def_idx (1); - space_idx = find (text == " "); - space_idx = space_idx (find (space_idx > def1, 1)); - bracket_idx = find (text == "{" | text == "}"); - bracket_idx = bracket_idx (find (bracket_idx > def1, 1)); - if (isempty (space_idx) && isempty (bracket_idx)) - error ("generate_operators: couldn't parse texinfo"); - endif - sep_idx = min (space_idx, bracket_idx); - def_type = text (def1+1:sep_idx-1); - - end_idx = strfind (text, sprintf ("@end %s", def_type)); - if (isempty (end_idx)) - error ("generate_operators: couldn't parse texinfo"); - endif - endl = endl_idx (find (endl_idx > end_idx, 1)); - if (isempty (endl)) - keep (end_idx:end) = false; - else - keep (end_idx:endl) = false; - endif - - text = text (keep); - endif -endfunction Deleted: trunk/octave-forge/extra/generate_latex/inst/generate_package_html.m =================================================================== --- trunk/octave-forge/extra/generate_html/inst/generate_package_html.m 2012-03-08 16:23:48 UTC (rev 9788) +++ trunk/octave-forge/extra/generate_latex/inst/generate_package_html.m 2012-03-25 22:57:18 UTC (rev 10060) @@ -1,436 +0,0 @@ -## Copyright (C) 2008 Soren Hauberg -## -## 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 3 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; see the file COPYING. If not, see -## <http://www.gnu.org/licenses/>. - -## -*- texinfo -*- -## @deftypefn {Function File} generate_package_html (@var{name}, @var{outdir}, @var{options}) -## Generate @t{HTML} documentation for a package. -## -## The function reads information about package @var{name} using the -## package system. This is then used to generate bunch of -## @t{HTML} files; one for each function in the package, and one overview -## page. The files are all placed in the directory @var{outdir}, which defaults -## to the current directory. The @var{options} structure is used to control -## the design of the web pages. -## -## As an example, the following code generates the web pages for the @t{image} -## package, with a design suitable for the @t{Octave-Forge} project. -## -## @example -## options = get_html_options ("octave-forge"); -## generate_package_html ("image", "image_html", options); -## @end example -## -## The resulting files will be available in the @t{"image_html"} directory. The -## overview page will be called @t{"image_html/overview.html"}. -## -## As a convenience, if @var{options} is a string, a structure will -## be generated by calling @code{get_html_options}. This means the above -## example can be reduced to the following. -## -## @example -## generate_package_html ("image", "image_html", "octave-forge"); -## @end example -## -## It should be noted that the function only works for installed packages. -## @seealso{get_html_options} -## @end deftypefn - -function generate_package_html (name = [], outdir = "htdocs", options = struct ()) - ## Check input - if (isempty (name)) - list = pkg ("list"); - for k = 1:length (list) - generate_package_html (list {k}.name, outdir, options); - endfor - return; - elseif (isstruct (name)) - desc = name; - if (isfield (name, "name")) - packname = desc.name; - else - packname = ""; - endif - elseif (ischar (name)) - packname = name; - pkg ("load", name); - desc = pkg ("describe", name) {1}; - else - error (["generate_package_html: first input must either be the name of a ", ... - "package, or a structure giving its description."]); - endif - - if (isempty (outdir)) - outdir = packname; - elseif (!ischar (outdir)) - error ("generate_package_html: second input argument must be a string"); - endif - - ## Create output directory if needed - if (!exist (outdir, "dir")) - mkdir (outdir); - endif - - packdir = fullfile (outdir, packname); - if (!exist (packdir, "dir")) - mkdir (packdir); - endif - - [local_fundir, fundir] = mk_function_dir (packdir, packname, options); - - ## If options is a string, call get_html_options - if (ischar (options)) - options = get_html_options (options); - elseif (!isstruct (options)) - error ("generate_package_html: third input argument must be a string or a structure"); - endif - - ################################################## - ## Generate html pages for individual functions ## - ################################################## - - ## Set javascript startup - if (!isfield (options, "body_command")) - if (isfield (options, "pack_body_cmd")) - options.body_command = options.pack_body_cmd; - else - options.body_command = ""; - endif - endif - - options.footer = strrep (options.footer, "%package", packname); - - num_categories = length (desc.provides); - anchors = implemented = cell (1, num_categories); - for k = 1:num_categories - F = desc.provides {k}.functions; - category = desc.provides {k}.category; - anchors {k} = strrep (category, " ", ""); # anchor names - - ## For each function in category - num_functions = length (F); - implemented {k} = cell (1, num_functions); - for l = 1:num_functions - fun = F {l}; - if (any (fun == filesep ())) - at_dir = fileparts (fun); - mkdir (fullfile (fundir, at_dir)); - r = "../../../"; - else - r = "../../"; - endif - outname = fullfile (fundir, sprintf ("%s.html", fun)); - try - html_help_text (fun, outname, options, r); - implemented {k}{l} = true; - catch - warning ("marking '%s' as not implemented", fun); - implemented {k}{l} = false; - end_try_catch - endfor - endfor - - ######################### - ## Write overview file ## - ######################### - first_sentences = cell (1, num_categories); - if (isfield (options, "include_overview") && options.include_overview) - overview_filename = get_overview_filename (options, desc.name); - - fid = fopen (fullfile (packdir, overview_filename), "w"); - if (fid < 0) - error ("generate_package_html: couldn't open overview file for writing"); - endif - - [header, title, footer] = get_overview_header_title_and_footer (options, desc.name, "../"); - - fprintf (fid, "%s\n", header); - fprintf (fid, "<h2 class=\"tbdesc\">%s</h2>\n\n", desc.name); - - fprintf (fid, " <div class=\"package_description\">\n"); - fprintf (fid, " %s\n", desc.description); - fprintf (fid, " </div>\n\n"); - - fprintf (fid, "<p>Select category: <select name=\"cat\" onchange=\"location = this.options[this.selectedIndex].value;\">\n"); - for k = 1:num_categories - category = desc.provides {k}.category; - fprintf (fid, " <option value=\"#%s\">%s</option>\n", anchors {k}, category); - endfor - fprintf (fid, " </select></p>\n\n"); - - ## Generate function list by category - for k = 1:num_categories - F = desc.provides {k}.functions; - category = desc.provides {k}.category; - fprintf (fid, " <h3 class=\"category\"><a name=\"%s\">%s</a></h3>\n\n", - anchors {k}, category); - - first_sentences {k} = cell (1, length (F)); - - ## For each function in category - for l = 1:length (F) - fun = F {l}; - if (implemented {k}{l}) - first_sentences {k}{l} = get_first_help_sentence (fun, 200); - first_sentences {k}{l} = strrep (first_sentences {k}{l}, "\n", " "); - - link = sprintf ("%s/%s.html", local_fundir, fun); - fprintf (fid, " <div class=\"func\"><b><a href=\"%s\">%s</a></b></div>\n", - link, fun); - fprintf (fid, " <div class=\"ftext\">%s</div>\n\n", first_sentences {k}{l}); - else - fprintf (fid, " <div class=\"func\"><b>%s</b></div>\n", fun); - fprintf (fid, " <div class=\"ftext\">Not implemented.</div>\n\n"); - endif - endfor - endfor - - fprintf (fid, "\n%s\n", footer); - fclose (fid); - endif - - ################################################ - ## Write function data for alphabetical lists ## - ################################################ - if (isfield (options, "include_alpha") && options.include_alpha) - for letter = "a":"z" - [name_filename, desc_filename] = get_alpha_database (outdir, desc.name, letter); - name_fid = fopen (name_filename, "w"); - desc_fid = fopen (desc_filename, "w"); - if (name_fid == -1 || desc_fid == -1) - error ("generate_package_html: could not open alphabet database for writing"); - endif - - for k = 1:num_categories - F = desc.provides {k}.functions; - for l = 1:length (F) - fun = F {l}; - if (implemented {k}{l} && lower (fun (1)) == letter) - fs = first_sentences {k}{l}; - - fprintf (name_fid, "%s\n", fun); - fprintf (desc_fid, "%s\n", fs); - endif - endfor - endfor - - fclose (name_fid); - fclose (desc_fid); - endfor - endif - - ##################################################### - ## Write short description for forge overview page ## - ##################################################### - - if (isfield (options, "include_package_list_item") && options.include_package_list_item) - pkg_list_item_filename = get_pkg_list_item_filename (desc.name, outdir); - - text = strrep (options.package_list_item, "%name", desc.name); - text = strrep (text, "%version", desc.version); - text = strrep (text, "%extension", "tar.gz"); - text = strrep (text, "%shortdescription", desc.description); - - fid = fopen (pkg_list_item_filename, "w"); - if (fid > 0) - fprintf (fid, text); - fclose (fid); - else - error ("generate_package_html: unable to open file %s.", pkg_list_item_filename); - endif - endif - - ###################### - ## Write index file ## - ###################### - if (isfield (options, "include_package_page") && options.include_package_page) - ## Get detailed information about the package - all_list = pkg ("list"); - list = []; - for k = 1:length (all_list) - if (strcmp (all_list {k}.name, packname)) - list = all_list {k}; - endif - endfor - if (isempty (list)) - error ("generate_package_html: couldn't locate package '%s'", packname); - endif - - ## Open output file - index_filename = "index.html"; - - fid = fopen (fullfile (packdir, index_filename), "w"); - if (fid < 0) - error ("generate_package_html: couldn't open index file for writing"); - endif - - ## Write output - [header, title, footer] = get_index_header_title_and_footer (options, desc.name, "../"); - - fprintf (fid, "%s\n", header); - fprintf (fid, "<h2 class=\"tbdesc\">%s</h2>\n\n", desc.name); - - fprintf (fid, "<table>\n"); - fprintf (fid, "<tr><td rowspan=\"2\" class=\"box_table\">\n"); - fprintf (fid, "<div class=\"package_box\">\n"); - fprintf (fid, " <div class=\"package_box_header\"></div>\n"); - fprintf (fid, " <div class=\"package_box_contents\">\n"); - fprintf (fid, " <table>\n"); - fprintf (fid, " <tr><td class=\"package_table\">Package Version:</td><td>%s</td></tr>\n", - list.version); - fprintf (fid, " <tr><td class=\"package_table\">Last Release Date:</td><td>%s</td></tr>\n", - list.date); - fprintf (fid, " <tr><td class=\"package_table\">Package Author:</td><td>%s</td></tr>\n", - list.author); - fprintf (fid, " <tr><td class=\"package_table\">Package Maintainer:</td><td>%s</td></tr>\n", - list.maintainer); - fprintf (fid, " <tr><td class=\"package_table\">License:</td><td><a href=\"COPYING.html\">"); - if (isfield (list, "license")) - fprintf (fid, "%s</a></td></tr>\n", list.license); - else - fprintf (fid, "Read license</a></td></tr>\n"); - endif - fprintf (fid, " </table>\n"); - fprintf (fid, " </div>\n"); - fprintf (fid, "</div>\n"); - fprintf (fid, "</td>\n\n"); - - fprintf (fid, "<td>\n"); - if (isfield (options, "download_link")) - fprintf (fid, "<div class=\"download_package\">\n"); - fprintf (fid, " <table><tr><td>\n"); - fprintf (fid, " <img src=\"../download.png\"/>\n"); - fprintf (fid, " </td><td>\n"); - link = strrep (options.download_link, "%name", desc.name); - link = strrep (link, "%version", desc.version); - fprintf (fid, " <a href=\"%s\"\n", link); - fprintf (fid, " class=\"download_link\">\n"); - fprintf (fid, " Download Package\n"); - fprintf (fid, " </a><br>\n"); - fprintf (fid, " <a href=\"http://sourceforge.net/projects/octave/files/\""); - fprintf (fid, " class=\"older_versions_download\">(older versions)</a>\n"); - fprintf (fid, " </td></tr></table>\n"); - fprintf (fid, "</div>\n"); - endif - fprintf (fid, "</td></tr>\n"); - fprintf (fid, "<tr><td>\n"); - fprintf (fid, "<div class=\"package_function_reference\">\n"); - fprintf (fid, " <table><tr><td>\n"); - fprintf (fid, " <img src=\"../doc.png\"/>\n"); - fprintf (fid, " </td><td>\n"); - fprintf (fid, " <a href=\"%s\" class=\"function_reference_link\">\n", overview_filename); - fprintf (fid, " Function Reference\n"); - fprintf (fid, " </a>\n"); - fprintf (fid, " </td></tr></table>\n"); - fprintf (fid, "</div>\n"); - fprintf (fid, "</td></tr>\n"); - fprintf (fid, "</table>\n\n"); - - fprintf (fid, "<h3>Description</h3>\n"); - fprintf (fid, " <div id=\"description_box\">\n") - fprintf (fid, list.description); - fprintf (fid, " </div>\n\n") - - fprintf (fid, "<h3>Details</h3>\n"); - fprintf (fid, " <table id=\"extra_package_table\">\n"); - - if (isfield (list, "depends")) - fprintf (fid, " <tr><td>Dependencies: </td><td>\n"); - for k = 1:length (list.depends) - p = list.depends {k}.package; - if (isfield (list.depends {k}, "operator") && isfield (list.depends {k}, "version")) - o = list.depends {k}.operator; - v = list.depends {k}.version; - vt = sprintf ("(%s %s) ", o, v); - else - vt = ""; - endif - - if (strcmpi (p, "octave")) - fprintf (fid, "<a href=\"http://www.octave.org\">Octave</a> "); - else - fprintf (fid, "<a href=\"../%s/index.html\">%s</a> ", p, p); - endif - fprintf (fid, vt); - endfor - fprintf (fid, "</td></tr>\n"); - endif - - if (isfield (list, "buildrequires")) - fprintf (fid, " <tr><td>Build Dependencies:</td><td>%s</td></tr>\n", list.buildrequires); - endif - - if (isfield (list, "autoload")) - if (list.autoload) - a = "Yes"; - else - a = "No"; - endif - fprintf (fid, " <tr><td>Autoload:</td><td>%s</td></tr>\n", a); - endif - - fprintf (fid, " </table>\n\n"); - - fprintf (fid, "\n%s\n", footer); - fclose (fid); - endif - - ###################### - ## Write COPYING file ## - ###################### - if (isfield (options, "include_package_license") && options.include_package_license) - ## Get detailed information about the package - all_list = pkg ("list"); - list = []; - for k = 1:length (all_list) - if (strcmp (all_list {k}.name, packname)) - list = all_list {k}; - endif - endfor - if (isempty (list)) - error ("generate_package_html: couldn't locate package '%s'", packname); - endif - - ## Read license - filename = fullfile (list.dir, "packinfo", "COPYING"); - fid = fopen (filename, "r"); - if (fid < 0) - error ("generate_package_html: couldn't open license for reading"); - endif - contents = char (fread (fid).'); - fclose (fid); - - ## Open output file - copying_filename = "COPYING.html"; - - fid = fopen (fullfile (packdir, copying_filename), "w"); - if (fid < 0) - error ("generate_package_html: couldn't open COPYING file for writing"); - endif - - ## Write output - [header, title, footer] = get_index_header_title_and_footer (options, desc.name, "../"); - - fprintf (fid, "%s\n", header); - fprintf (fid, "<h2 class=\"tbdesc\">License for '%s' Package</h2>\n\n", desc.name); - fprintf (fid, "<p><a href=\"index.html\">Return to the '%s' package</a></p>\n\n", desc.name); - - fprintf (fid, "<pre>%s</pre>\n\n", contents); - - fprintf (fid, "\n%s\n", footer); - fclose (fid); - endif -endfunction - Copied: trunk/octave-forge/extra/generate_latex/inst/generate_package_latex.m (from rev 9788, trunk/octave-forge/extra/generate_html/inst/generate_package_html.m) =================================================================== --- trunk/octave-forge/extra/generate_latex/inst/generate_package_latex.m (rev 0) +++ trunk/octave-forge/extra/generate_latex/inst/generate_package_latex.m 2012-03-25 22:57:18 UTC (rev 10060) @@ -0,0 +1,287 @@ +## Copyright (C) 2012 Carlo de Falco +## Copyright (C) 2008 Soren Hauberg +## +## 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 3 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; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} generate_package_latex (@var{name}, @var{outdir}, @var{options}) +## Generate @t{LaTeX} documentation for a package. +## +## The function reads information about package @var{name} using the +## package system. This is then used to generate a bunch of +## @t{LaTeX} files; one for each function in the package, and one file including them +## all. The files are all placed in the directory @var{outdir}, which defaults +## to the current directory. The @var{options} structure is used to control +## the design of the file. +## +## As an example, the following code generates the manual for the @t{image} +## package. +## +## @example +## options = get_latex_options ("default"); +## generate_package_latex ("image", "image_latex", options); +## @end example +## +## The resulting files will be available in the @t{"image_latex"} directory. The +## main fail will be called @t{"image_html/manual.tex"}. +## +## As a convenience, if @var{options} is a string, a structure will +## be generated by calling @code{get_html_options}. This means the above +## example can be reduced to the following. +## +## @example +## generate_package_latex ("image", "image_latex", "default"); +## @end example +## +## It should be noted that the function only works for installed packages. +## @seealso{get_latex_options} +## @end deftypefn + +function generate_package_latex (name = [], outdir = "latexdocs", options = "default") + + ## Check input + if (isempty (name)) + list = pkg ("list"); + for k = 1:length (list) + generate_package_latex (list {k}.name, outdir, options); + endfor + return; + elseif (isstruct (name)) + desc = name; + if (isfield (name, "name")) + packname = desc.name; + else + packname = ""; + endif + elseif (ischar (name)) + packname = name; + pkg ("load", name); + desc = pkg ("describe", name) {1}; + else + error (["generate_package_latex: first input must either be the name of a ", ... + "package, or a structure giving its description."]); + endif + + if (isempty (outdir)) + outdir = packname; + elseif (! ischar (outdir)) + error ("generate_package_latex: second input argument must be a string"); + endif + + ## Create output directory if needed + if (! exist (outdir, "dir")) + mkdir (outdir); + endif + + packdir = fullfile (outdir, packname); + if (! exist (packdir, "dir")) + mkdir (packdir); + endif + + [local_fundir, fundir] = mk_function_dir (packdir, packname, options); + + ## If options is a string, call get_latex_options + if (ischar (options)) + options = get_latex_options (options); + elseif (! isstruct (options)) + error ("generate_package_latex: third input argument must be a string or a structure"); + endif + + ################################################### + ## Generate latex pages for individual functions ## + ################################################### + options.footer = strrep (options.footer, "@package", packname); + num_categories = length (desc.provides); + anchors = implemented = cell (1, num_categories); + + for k = 1:num_categories + F = desc.provides {k}.functions; + category = desc.provides {k}.category; + anchors {k} = strrep (category, " ", ""); # anchor names + + ## For each function in category + num_functions = length (F); + implemented {k} = cell (1, num_functions); + for l = 1:num_functions + fun = F {l}; + if (any (fun == filesep ())) + at_dir = fileparts (fun); + mkdir (fullfile (fundir, at_dir)); + r = "../../../"; + else + r = "../../"; + endif + outname = fullfile (fundir, sprintf ("%s.tex", fun)); +% try + latex_help_text (fun, outname, options, r); + implemented {k}{l} = true; +% catch +% warning ("marking '%s' as not implemented", fun); +% implemented {k}{l} = false; +% end_try_catch + endfor + endfor + + ######################### + ## Write main file ## + ######################### + first_sentences = cell (1, num_categories); + main_filename = get_main_filename (options, desc.name); + + fid = fopen (fullfile (packdir, main_filename), "w"); + if (fid < 0) + error ("generate_package_latex: couldn't open main file for writing"); + endif + + [header, title, footer] = get_main_header_title_and_footer (options, desc.name, "../"); + + fprintf (fid, "%s\n", header); + fprintf (fid, "\\title{%s}\n", desc.name); + fprintf (fid, "\\begin{document}\n"); + fprintf (fid, "\\maketitle\n"); + if (options.include_toc) + fprintf (fid, "\\tableofcontents\n"); + endif + + + ###################### + ## Write file intro ## + ###################### + + ## Get detailed information about the package + all_list = pkg ("list"); + list = []; + for k = 1:length (all_list) + if (strcmp (all_list {k}.name, packname)) + list = all_list {k}; + endif + endfor + if (isempty (list)) + error ("generate_package_latex: couldn't locate package '%s'", packname); + endif + + ## Write output + fprintf (fid, "%s\n", options.intro_pre); + fprintf (fid, "%s%s%s\n", options.name_pre, __ec__ (desc.name), options.name_post); + fprintf (fid, "%s%s%s\n", options.desc_pre, __ec__ (desc.description), options.desc_post); + fprintf (fid, "%s%s%s\n", options.version_pre, __ec__ (list.version), options.version_post); + fprintf (fid, "%s%s%s\n", options.date_pre, __ec__ (list.date), options.date_post); + fprintf (fid, "%s%s%s\n", options.author_pre, __ec__ (list.author), options.author_post); + fprintf (fid, "%s%s%s\n", options.maintainer_pre, __ec__ (list.maintainer), options.maintainer_post); + fprintf (fid, "%s%s%s\n", options.license_pre, __ec__ (list.license), options.license_post); + if (isfield (list, "depends")) + fprintf (fid, "%s\n", options.deps_pre); + for k = 1:length (list.depends) + vt = __ec__ (list.depends {k}.package); + if (isfield (list.depends {k}, "operator") && isfield (list.depends {k}, "version")) + o = list.depends {k}.operator; + v = list.depends {k}.version; + vt = sprintf ("%s ($%s$ %s), ", vt, o, v); + else + vt = ""; + endif + + fprintf (fid, vt); + endfor + fprintf (fid, "%s\n", options.deps_sep); + endif + fprintf (fid, "%s\n", options.deps_post); + + if (isfield (list, "buildrequires")) + fprintf (fid, "%s%s%s\n", options.buildreq_pre, list.buildrequires, options.buildreq_post); + endif + + if (isfield (list, "autoload")) + if (list.autoload) + a = "Yes"; + else + a = "No"; + endif + fprintf (fid, "%s%s%s\n", options.autoload_pre, a, options.autoload_post); + endif + + fprintf (fid, "%s\n", options.intro_post); + + + ## Generate function list by category + for k = 1:num_categories + F = desc.provides {k}.functions; + category = desc.provides {k}.category; + first_sentences {k} = cell (1, length (F)); + + ## For each function in category + for l = 1:length (F) + fun = F {l}; + if (implemented {k}{l}) + first_sentences {k}{l} = get_first_help_sentence (fun, 200); + first_sentences {k}{l} = strrep (first_sentences {k}{l}, "\n", " "); + + link = sprintf ('%s%s%s.tex', local_fundir, filesep (), fun); + fprintf (fid, "%s%s%s\n", options.function_name_pre, options.function_name_mangle (fun), options.function_name_post); + fprintf (fid, "\\input{%s}\n", link); + else + fprintf (fid, "%s%s%s\n", options.function_name_pre, options.function_name_mangle (fun), options.function_name_post); + fprintf (fid, "Not Implemnted.\n", fun); + endif + endfor + endfor + + if (isfield (options, "include_package_license") && options.include_package_license) + copying_filename = "COPYING.tex"; + fprintf (fid, "\\input{%s}\n", copying_filename); + endif + + fprintf (fid, "\n%s\n\\end{document}", footer); + fclose (fid); + + ######################## + ## Write COPYING file ## + ######################## + + if (isfield (options, "include_package_license") && options.include_package_license) + ## Get detailed information about the package + all_list = pkg ("list"); + list = []; + for k = 1:length (all_list) + if (strcmp (all_list {k}.name, packname)) + list = all_list {k}; + endif + endfor + if (isempty (list)) + error ("generate_package_latex: couldn't locate package '%s'", packname); + endif + + ## Read license + filename = fullfile (list.dir, "packinfo", "COPYING"); + fid = fopen (filename, "r"); + if (fid < 0) + error ("generate_package_latex: couldn't open license for reading"); + endif + contents = char (fread (fid).'); + fclose (fid); + + ## Open output file + fid = fopen (fullfile (packdir, copying_filename), "w"); + if (fid < 0) + error ("generate_package_latex: couldn't open COPYING file for writing"); + endif + + fprintf (fid, "\n%s\n", options.license_file_pre); + fprintf (fid, "%s\n\n", contents); + fprintf (fid, "\n%s\n", options.license_file_post); + fclose (fid); + endif +endfunction + Deleted: trunk/octave-forge/extra/generate_latex/inst/get_html_options.m =================================================================== --- trunk/octave-forge/extra/generate_html/inst/get_html_options.m 2012-03-08 16:23:48 UTC (rev 9788) +++ trunk/octave-forge/extra/generate_latex/inst/get_html_options.m 2012-03-25 22:57:18 UTC (rev 10060) @@ -1,204 +0,0 @@ -## Copyright (C) 2008 Soren Hauberg -## -## 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 3 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; see the file COPYING. If not, see -## <http://www.gnu.org/licenses/>. - -## -*- texinfo -*- -## @deftypefn {Function File} {@var{options} =} get_html_options (@var{project_name}) -## Returns a structure containing design options for various project web sites. -## -## Given a string @var{project_name}, the function returns a structure containing -## various types of information for generating web pages for the specified project. -## Currently, the accepted values of @var{project_name} are -## -## @table @t -## @item "octave-forge" -## Design corresponding to the pages at @t{http://octave.sf.net}. -## -## @item "octave" -## Design corresponding to the pages at @t{http://octave.org}. The pages are -## meant to be processed with the @code{m4} preprocessor, using the macros for -## the site. -## -## @item "docbrowser" -## Design corresponding to the pages in the documentation browser. -## @end table -## @seealso{generate_package_html, html_help_text} -## @end deftypefn - -function options = get_html_options (project_name) - ## Check input - if (nargin == 0) - error ("get_html_options: not enough input arguments"); - endif - - if (!ischar (project_name)) - error ("get_html_options: first input argument must be a string"); - endif - - ## Generate options depending on project - switch (lower (project_name)) - case "octave-forge" - ## Basic HTML header - hh = "\ -<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\ - \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\ -<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">\n\ - <head>\n\ - <meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-1\" />\n\ - <meta name=\"date\" content=\"%date\"/>\n\ - <meta name=\"author\" content=\"The Octave-Forge Community\" />\n\ - <meta name=\"description\" content=\"Octave-Forge is a collection of packages\ - providing extra functionality for GNU Octave.\" />\n\ - <meta name=\"keywords\" lang=\"en\" content=\"Octave-Forge, Octave, extra packages\" />\n\ - <title>%title</title>\n\ - <link rel=\"stylesheet\" type=\"text/css\" href=\"%root%css\" />\n\ - <script src=\"%rootfixed.js\" type=\"text/javascript\"></script>\n\ - <script src=\"%rootjavascript.js\" type=\"text/javascript\"></script>\n\ - <link rel=\"shortcut icon\" href=\"%rootfavicon.ico\" />\n\ - </head>\n\ - <body %body_command>\n\ - <div id=\"top-menu\" class=\"menu\">\n\ - <table class=\"menu\">\n\ - <tr>\n\ - <td style=\"width: 90px;\" class=\"menu\" rowspan=\"2\">\n\ - <a name=\"top\">\n\ - <img src=\"%rootoct.png\" alt=\"Octave logo\" />\n\ - </a>\n\ - </td>\n\ - <td class=\"menu\" style=\"padding-top: 0.9em;\">\n\ - <big class=\"menu\">Octave-Forge</big><small class=\"menu\"> - Extra packages for GNU Octave</small>\n\ - </td>\n\ - </tr>\n\ - <tr>\n\ - <td class=\"menu\">\n\ -\n\ - <a href=\"%rootindex.html\" class=\"menu\">Home</a> ·\n\ - <a href=\"%rootpackages.php\" class=\"menu\">Packages</a> ·\n\ - <a href=\"%rootdevelopers.html\" class=\"menu\">Developers</a> ·\n\ - <a href=\"%rootdocs.html\" class=\"menu\">Documentation</a> ·\n\ - <a href=\"%rootFAQ.html\" class=\"menu\">FAQ</a> ·\n\ - <a href=\"%rootbugs.html\" class=\"menu\">Bugs</a> ·\n\ - <a href=\"%rootarchive.html\" class=\"menu\">Mailing Lists</a> ·\n\ - <a href=\"%rootlinks.html\" class=\"menu\">Links</a> ·\n\ - <a href=\"http://sourceforge.net/svn/?group_id=2888\" class=\"menu\">SVN</a>\n\ -\n\ - </td>\n\ - </tr>\n\ - </table>\n\ - </div>\n\ -<div id=\"left-menu\">\n\ - <h3>Navigation</h3>\n\ - <p class=\"left-menu\"><a class=\"left-menu-link\" href=\"%rootoperators.html\">Operators and Keywords</a></p>\n\ - <p class=\"left-menu\"><a class=\"left-menu-link\" href=\"%rootfunction_list.html\">Function List:</a>\n\ - <ul class=\"left-menu-list\">\n\ - <li class=\"left-menu-list\">\n\ - <a class=\"left-menu-link\" href=\"%rootoctave/overview.html\">» Octave core</a>\n\ - </li>\n\ - <li class=\"left-menu-list\">\n\ - <a class=\"left-menu-link\" href=\"%rootfunctions_by_package.php\">» by package</a>\n\ - </li>\n\ - <li class=\"left-menu-list\">\n\ - <a class=\"left-menu-link\" href=\"%rootfunctions_by_alpha.php\">» alphabetical</a>\n\ - </li>\n\ - </ul>\n\ - </p>\n\ - <p class=\"left-menu\"><a class=\"left-menu-link\" href=\"%rootdoxygen/html\">C++ API</a></p>\n\ -</div>\n\ -<div id=\"doccontent\">\n"; - - ## CSS - options.css = "octave-forge.css"; - - ## Options for alphabetical lists - options.include_alpha = true; - - ## Options for individual function pages - options.pack_body_cmd = 'onload="javascript:fix_top_menu (); javascript:show_left_menu ();"'; - options.header = strrep (hh, "%date", date ()); - options.footer = "<p>Package: <a href=\"../index.html\">%package</a></p>\n<div id=\"sf_logo\">\n\ - <a href=\"http://sourceforge.net\">\ - <img src=\"http://sourceforge.net/sflogo.php?group_id=2888&type=1\"\ - width=\"88\" height=\"31\" style=\"border: 0;\" alt=\"SourceForge.net Logo\"/>\ - </a>\n</div>\n</div>\n</body>\n</html>\n"; - options.title = "Function Reference: %name"; - options.include_demos = true; - options.seealso = @octave_forge_seealso; - - ## Options for overview page - options.include_overview = true; - #options.overview_header = strrep (strrep (hh, "%date", date ()), "%body_command", ""); - options.manual_body_cmd = 'onload="javascript:fix_top_menu (); javascript:manual_menu ();"'; - - ## Options for package list page - options.include_package_list_item = true; - options.package_list_item = ... -"<div class=\"package\" id=\"%name\">\n\ -<table class=\"package\"><tr>\n\ -<td><b><a href=\"javascript:unfold('%name');\" class=\"package_head_link\">\n\ -<img src=\"show.png\" id=\"%name_im\" alt=\"show/hide\" style=\"padding-right: 0.5em; border: none;\"/> %name </a></b></td>\n\ -<td style=\"text-align: right;\">» <a href=\"./%name/index.html\" class=\"package_link\">details</a> |\n\ -<a class=\"package_link\" href=\"http://downloads.sourceforge.net/octave/%name-%version.%extension?download\">download</a></td>\n\ -</tr></table>\n\ -<p id=\"%name_detailed\" style=\"display: none;\"> %shortdescription </p>\n\ -</div>\n"; - - ## Options for index package - options.index_title = "The '%name' Package"; - options.download_link = "http://downloads.sourceforge.net/octave/%name-%version.tar.gz?download"; - options.include_package_page = true; - options.include_package_license = true; - options.index_body_command = "onload=\"javascript:fix_top_menu ();\""; - - case "octave" - options.header = "__HEADER__(`%title')"; - options.footer = "__OCTAVE_TRAILER__"; - options.title = "Function Reference: %name"; - options.include_overview = true; - - case "docbrowser" - ## Basic HTML header - hh = "\ -<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\ - \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\ -<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">\n\ - <head>\n\ - <meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-1\" />\n\ - <meta name=\"date\" content=\"%date\"/>\n\ - <meta name=\"author\" content=\"The Octave Community\" />\n\ - <title>%title</title>\n\ - <link rel=\"stylesheet\" type=\"text/css\" href=\"%css\" />\n\ - </head>\n\ -<body>\n\ -<div id=\"top\">Function Reference</div>\n\ -<div id=\"doccontent\">\n"; - hh = strrep (hh, "%date", date ()); - - ## Options for individual function pages - css = "doc.css"; - options.header = strrep (hh, "%css", css); - options.footer = "</div>\n</body>\n</html>\n"; - options.title = "Function: %name"; - options.include_demos = true; - - ## Options for overview page - options.include_overview = true; - options.overview_header = strrep (hh, "%css", sprintf ("../%s", css)); - options.overview_title = "Overview: %name"; - - otherwise - error ("get_html_options: unknown project name: %s", project_name); - endswitch - -endfunction Copied: trunk/octave-forge/extra/generate_latex/inst/get_latex_options.m (from rev 9788, trunk/octave-forge/extra/generate_html/inst/get_html_options.m) =================================================================== --- trunk/octave-forge/extra/generate_latex/inst/get_latex_options.m (rev 0) +++ trunk/octave-forge/extra/generate_latex/inst/get_latex_options.m 2012-03-25 22:57:18 UTC (rev 10060) @@ -0,0 +1,186 @@ +## Copyright (C) 2012 Carlo de Falco +## Copyright (C) 2008 Soren Hauberg +## +## 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 3 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; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{options} =} get_latex_options (@var{document_type}) +## Returns a structure containing design options for a latex manual. +## +## Given a string @var{document_type}, the function returns a structure containing +## various types of information for generating latex manual for the specified document type. +## Currently, the accepted values of @var{document_type} are +## +## @table @minus +## @item "amsart_a5" +## amsart document class on a5 paper. +## @item "article_a4" +## amsart document class on a5 paper. +## @end table +## @seealso{generate_package_latex, latex_help_text} +## @end deftypefn + +function options = get_latex_options (project_name) + ## Check input + if (nargin == 0) + error ("get_latex_options: not enough input arguments"); + endif + + if (!ischar (project_name)) + error ("get_latex_options: first input argument must be a string"); + endif + + ## Generate options depending on project + switch (lower (project_name)) + case "amsart_a5" + options = amsart_a5_options (); + case "article_a4" + options = article_a4_options (); + otherwise + error ("get_latex_options: unknown project name: %s", project_name); + endswitch + +endfunction + + +function options = amsart_a5_options () + + ## Basic latex header + hh = "\ +\\documentclass{amsart} \n\ +\\usepackage{geometry} \n\ +\\geometry{a5paper} \n\ +\\usepackage{graphicx} \n\ +\\usepackage{amssymb} \n\ +\\usepackage{epstopdf} \n\ +\\usepackage{cprotect,fancyvrb} \n\ +\\usepackage{float} \n\ +\\floatstyle{ruled} \n\ +\\newfloat{demo}{thp}{dem} \n\ +\\floatname{demo}{Demo} \n\ +\\newfloat{demoout}{thp}{deo} \n\ +\\floatname{demoout}{Demo Output} \n\ +\n"; + + options.function_name_pre = "\\cprotect\\section{\\verb|"; + options.function_name_mangle = @(x) x; + options.function_name_post = "|}\n"; + + ## Options for alphabetical lists + options.intro_pre = "\\section{Package Description}\n"; + options.intro_post = "%end package description\n"; + options.name_pre = "{\\bf Name: } "; + options.name_post = "\\\\ \n"; + options.desc_pre = "{\\bf Description: } \\\\\n"; + options.desc_post = "\\\\\n"; + options.version_pre = "{\\bf Version: } "; + options.version_post = "\\\\ \n"; + options.date_pre = "{\\bf Release Date: } "; + options.date_post = "\\\\ \n"; + options.author_pre = "{\\bf Author: } "; + options.author_post = "\\\\ \n"; + options.maintainer_pre = "{\\bf Maintainer: } "; + options.maintainer_post = "\\\\ \n"; + options.license_pre = "{\\bf License: } "; + options.license_post = "\\\\ \n"; + options.deps_pre = "{\\bf Depends on: } \\\\ \n"; + options.deps_post = "\\null \n"; + options.deps_sep = "\\\\ \n"; + options.buildreq_pre = "{\\bf Build dependencies: } \\\\ \n"; + options.buildreq_post = "\\\\ \n"; + options.autoload_pre = "{\\bf Autoload: } \n"; + options.autoload_post = "\\\\ \n"; + + ## Options for individual function pages + options.header = "\\begin{SaveVerbatim}{VerbBox}\n"; + options.footer = "\\end{SaveVerbatim}\n\\resizebox{.9\\linewidth}{!}{\\BUseVerbatim{VerbBox}}"; + options.include_demos = true; + + ## Options for overview page + options.main_header = sprintf ("%s", hh); + options.main_footer = " "; + options.include_toc = true; + + ## Options for COPYING file + options.include_package_license = true; + options.license_file_pre = "\\begin{Verbatim}"; + options.license_file_post = "\\end{Verbatim}\n\\null\n"; + +endfunction + +function options = article_a4_options () + + ## Basic latex header + hh = "\ +\\documentclass[10pt]{article} \n\ +\\usepackage{geometry} \n\ +\\geometry{a4paper} \n\ +\\usepackage{graphicx} \n\ +\\usepackage{amssymb} \n\ +\\usepackage{epstopdf} \n\ +\\usepackage{cprotect} \n\ +\\usepackage{float} \n\ +\\floatstyle{plain} \n\ +\\newfloat{demo}{thp}{dem} \n\ +\\floatname{demo}{Demo} \n\ +\\newfloat{demoout}{thp}{deo} \n\ +\\floatname{demoout}{Demo Output} \n\ +\n"; + + options.function_name_pre = "\\section{"; + options.function_name_mangle = @(x) __ec__ (x); + options.function_name_post = "}\n"; + + ## Options for alphabetical lists + options.intro_pre = "\\section{Package Description}\n"; + options.intro_post = "%end package description\n"; + options.name_pre = "{\\bf Name: } "; + options.name_post = "\\\\ \n"; + options.desc_pre = "{\\bf Description: } \\\\\n"; + opti... [truncated message content] |
From: <be...@us...> - 2012-05-18 04:43:03
|
Revision: 10454 http://octave.svn.sourceforge.net/octave/?rev=10454&view=rev Author: benjf5 Date: 2012-05-18 04:42:55 +0000 (Fri, 18 May 2012) Log Message: ----------- Adding lssa folder to extra Added Paths: ----------- trunk/octave-forge/extra/lssa/ trunk/octave-forge/extra/lssa/COPYING Added: trunk/octave-forge/extra/lssa/COPYING =================================================================== --- trunk/octave-forge/extra/lssa/COPYING (rev 0) +++ trunk/octave-forge/extra/lssa/COPYING 2012-05-18 04:42:55 UTC (rev 10454) @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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 3 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, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aba...@us...> - 2012-06-22 15:04:20
|
Revision: 10663 http://octave.svn.sourceforge.net/octave/?rev=10663&view=rev Author: abarth93 Date: 2012-06-22 15:04:09 +0000 (Fri, 22 Jun 2012) Log Message: ----------- initial import of ncArray Added Paths: ----------- trunk/octave-forge/extra/ncArray/ trunk/octave-forge/extra/ncArray/DESCRIPTION trunk/octave-forge/extra/ncArray/inst/ trunk/octave-forge/extra/ncArray/inst/cached_decompress.m trunk/octave-forge/extra/ncArray/inst/ncCatArray.m trunk/octave-forge/extra/ncArray/inst/ncCatData.m trunk/octave-forge/extra/ncArray/inst/nccoord.m trunk/octave-forge/extra/ncArray/inst/test_ncarray.m Added: trunk/octave-forge/extra/ncArray/DESCRIPTION =================================================================== --- trunk/octave-forge/extra/ncArray/DESCRIPTION (rev 0) +++ trunk/octave-forge/extra/ncArray/DESCRIPTION 2012-06-22 15:04:09 UTC (rev 10663) @@ -0,0 +1,11 @@ +Name: ncArray +Version: 1.0.0 +Date: 2012-06-22 +Author: Alexander Barth <bar...@gm...> +Maintainer: Alexander Barth <bar...@gm...> +Title: ncArray +Description: Subsetting and concatenating of NetCDF files +Depends: octave (>= 3.4.0) +Autoload: yes +License: GPL version 2 or later +Url: http://octave.sf.net Added: trunk/octave-forge/extra/ncArray/inst/cached_decompress.m =================================================================== --- trunk/octave-forge/extra/ncArray/inst/cached_decompress.m (rev 0) +++ trunk/octave-forge/extra/ncArray/inst/cached_decompress.m 2012-06-22 15:04:09 UTC (rev 10663) @@ -0,0 +1,118 @@ +% [fname,success]=cached_decompress(filename) +% +% Decompress a file if it is not already in cache +% +% Input: +% filename: name of the file which is possibly compressed +% +% Output: +% fname: the filename of the uncompressed file +% +% Example: +% +% +% Alexander Barth, 2012-06-13 +% + + +function [fname]=cached_decompress(url) +global CASHED_GUNZIP_DIR +global CASHED_GUNZIP_LOG_FID + + +cache_dir = CASHED_GUNZIP_DIR; +if isempty(cache_dir) +% cache_dir = fullfile(getenv('HOME'),'tmp','Cache'); + cache_dir = fullfile(getenv('HOME'),'tmp','Cache'); +end + + +if endswith(url,'.gz') || endswith(url,'.bz2') + if exist(cache_dir,'dir') ~= 7 + error(['cache directory for compressed files does not exist. '... + 'Please create the directory %s or change le value of the '... + 'global variable CASHED_GUNZIP_DIR'],cache_dir); + end +else + fname = url; + return +end + +% where to print logs? default to screen + +fid=CASHED_GUNZIP_LOG_FID; + +if (isempty(fid)) + fid=1; +end + +% form filename for cache + +fname = url; +fname = strrep(fname,'/','_SLASH_'); +fname = strrep(fname,'*','_STAR_'); +fname = fullfile(cache_dir,fname); + +% test if in cache + +if exist(fname,'file') ~= 2 + if endswith(url,'.gz') + syscmd('gunzip --stdout "%s" > "%s"',url,fname); + else + syscmd('bunzip2 --stdout "%s" > "%s"',url,fname); + end +else +% fprintf(fid,'retrieve from cache %s\n',url); +end + +% check cache size + +d=dir(cache_dir); +cashe_size = sum([d.bytes]); +max_cache_size = 1e10; + +if (cashe_size > max_cache_size) + + % look for oldest files + fdate = zeros(1,length(d)); + for i=1:length(d); + fdate(i) = datenum(d(i).date); + end + + [fdate,index] = sort(fdate,'descend'); + d=d(index); + + cum_size = cumsum([d(:).bytes]); + todelete = find(cum_size > max_cache_size); + + for i=todelete + if (d(i).isdir == 0) + fprintf(fid,'clean cashe: delete %s\n', d(i).name); + delete(fullfile(cache_dir,d(i).name)); + end + end +end +end + +function t = endswith(s,ext) + +if length(ext) <= length(s) + t = strcmp(s(end-length(ext)+1:end),ext); +else + t = 0; +end +end + + +function syscmd(varargin) + +cmd = sprintf(varargin{:}); +%disp(cmd) +status = 0; +[status, output] = system(cmd); + +disp(output); +if status ~= 0 + error(['command "' cmd '" failed: ' output]); +end +end \ No newline at end of file Added: trunk/octave-forge/extra/ncArray/inst/ncCatArray.m =================================================================== --- trunk/octave-forge/extra/ncArray/inst/ncCatArray.m (rev 0) +++ trunk/octave-forge/extra/ncArray/inst/ncCatArray.m 2012-06-22 15:04:09 UTC (rev 10663) @@ -0,0 +1,81 @@ +% C = ncCatArray(dim,filenames,varname) +% C = ncCatArray(dim,pattern,varname) +% C = ncCatArray(dim,filenamefun,varname,range) +% +% create a concatenated array from variables (varname) in a list of +% netcdf files along dimension dim.Individual elements can be accessed by +% subscribs, e.g. C(2,3) and the corrsponding subset of the appropriate file is loaded +% +% This list of netcdf files can be specified as a cell array (filenames), +% shell wildcard pattern (e.g. file_*.nc) or a function handle +% filenamefun. In this later case, this i-th filename is +% filenamefun(range(i)). +% +% Example: +% +% data = ncCatArray(3,{'file-20120708.nc','file-20120709.nc'},'SST') +% +% data = ncCatArray(3,'file-*.nc','SST') +% +% data = ncCatArray(3,@(t) ['file-' datestr(t,'yyyymmdd') '.nc'],... +% datenum(2012,07,08):datenum(2012,07,09)); +% +% Note: in Octave the glob function is used to determine files matching the +% shell wildcard pattern, while in Matlab rdir is used. The function rdir +% is available from Matlab exchange under BSD license +% (http://www.mathworks.com/matlabcentral/fileexchange/19550). + +% Author: Alexander Barth (bar...@gm...) +% +function ncCA = ncCatArray(dim,pattern,varname,range) + +if iscell(pattern) + filenames = pattern; + +elseif ischar(pattern) + try + filenames = glob(pattern); + catch + try + d = rdir(pattern); + filenames = {d(:).name}; + catch + error(['The function rdir or glob (octave) is not available. '... + 'rdir can be installed from '... + 'http://www.mathworks.com/matlabcentral/fileexchange/19550']); + end + end +elseif isa(pattern, 'function_handle') + filenames = cell(1,length(range)); + + for i=1:length(range) + filenames{i} = pattern(range(i)); + end +end + +arrays = cell(1,length(filenames)); + +for i=1:length(filenames) + arrays{i} = ncArray(filenames{i},varname); +end + + +ncCA = CatArray(dim,arrays); + +% Copyright (C) 2012 Alexander Barth <bar...@gm...> +% +% 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, see <http://www.gnu.org/licenses/>. + + + Added: trunk/octave-forge/extra/ncArray/inst/ncCatData.m =================================================================== --- trunk/octave-forge/extra/ncArray/inst/ncCatData.m (rev 0) +++ trunk/octave-forge/extra/ncArray/inst/ncCatData.m 2012-06-22 15:04:09 UTC (rev 10663) @@ -0,0 +1,111 @@ +% C = ncCatArray(dim,filenames,varname) +% C = ncCatArray(dim,pattern,varname) +% C = ncCatArray(dim,filenamefun,varname,range) +% +% create a concatenated array from variables (varname) in a list of +% netcdf files along dimension dim.Individual elements can be accessed by +% subscribs, e.g. C(2,3) and the corrsponding subset of the appropriate file is loaded + +% This list of netcdf files can be specified as a cell array (filenames), +% shell wildcard pattern (e.g. file_*.nc) or a function handle +% filenamefun. In this later case, this i-th filename is +% filenamefun(range(i)). +% +% Example: +% +% data = ncCatArray(3,{'file-20120708.nc','file-20120709.nc'},'SST') +% +% data = ncCatArray(3,'file-*.nc','SST') +% +% data = ncCatArray(3,@(t) ['file-' datestr(t,'yyyymmdd') '.nc'],... +% datenum(2012,07,08):datenum(2012,07,09)); +% +% Note: in Octave the glob function is used to determine files matching the +% shell wildcard pattern, while in Matlab rdir is used. The function rdir +% is available from Matlab exchange under BSD license +% (http://www.mathworks.com/matlabcentral/fileexchange/19550). + +% Author: Alexander Barth (bar...@gm...) +% +function data = ncCatData(dim,pattern,varname,range) + +catdimname = '_cat_dim'; + +if iscell(pattern) + filenames = pattern; + +elseif ischar(pattern) + try + filenames = glob(pattern); + catch + try + d = rdir(pattern); + filenames = {d(:).name}; + catch + error(['The function rdir or glob (octave) is not available. '... + 'rdir can be installed from '... + 'http://www.mathworks.com/matlabcentral/fileexchange/19550']); + end + end +elseif isa(pattern, 'function_handle') + filenames = cell(1,length(range)); + + for i=1:length(range) + filenames{i} = pattern(range(i)); + end +end + +if nargin == 3 + range = 1:length(filenames); +end + +var = arr(dim,filenames,varname); + +[dims,coord] = nccoord(cached_decompress(filenames{1}),varname); + +if dim > length(dims) + % concatenate is new dimension + dims{dim} = catdimname; + coord(dim).dims = {catdimname}; + coord(dim).val = range; +end + + +for i=1:length(coord) + % coordinates do also depend on the dimension only which we concatenate + coord(i).val = arr(dim,filenames,coord(i).name); + if dim > length(coord(i).dims) + coord(i).dims{dim} = catdimname; + end +end + +data = ncData(var,dims,coord); + +end + + +function CA = arr(dim,filenames,varname) +arrays = cell(1,length(filenames)); +for i=1:length(filenames) + arrays{i} = ncArray(filenames{i},varname); +end + +CA = CatArray(dim,arrays); +end +% Copyright (C) 2012 Alexander Barth <bar...@gm...> +% +% 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, see <http://www.gnu.org/licenses/>. + + + Added: trunk/octave-forge/extra/ncArray/inst/nccoord.m =================================================================== --- trunk/octave-forge/extra/ncArray/inst/nccoord.m (rev 0) +++ trunk/octave-forge/extra/ncArray/inst/nccoord.m 2012-06-22 15:04:09 UTC (rev 10663) @@ -0,0 +1,54 @@ +% coord = nccoord(filename,varname) +% get coordinates of a variables using CF convention + +function [dims,coord] = nccoord(filename,varname) + +finfo = ncinfo(filename); +vinfo = ncinfo(filename,varname); + +% determine coordinates +% using CF convention + +dims = vinfo.Dimensions; + +% create empty coord array with the fields name and dims +coord = struct('name',{},'dims',{}); + +% check the coordinate attribute +index = strmatch('coordinates',{vinfo.Attributes(:).Name}); +if ~isempty(index) + tmp = strsplit(vinfo.Attributes(index).Value,' '); + + for i=1:length(tmp) + coord = addcoord(coord,tmp{i},finfo); + end +end + +% check for coordinate dimensions +for i=1:length(dims) + % check if variable with the same name than the dimension exist + index = strmatch(dims{i},{finfo.Variables(:).Name}); + if ~isempty(index) + coord = addcoord(coord,dims{i},finfo); + end +end + + +end + +function coord = addcoord(coord,name,finfo) + +% check if coordinate is aleady in the list +if isempty(strmatch(name,{coord(:).name})) + + % check if name is variable + index = strmatch(name,{finfo.Variables(:).Name}); + if ~isempty(index) + c.name = name; + c.dims = finfo.Variables(index).Dimensions; + + coord(end+1) = c; + end +end + +end \ No newline at end of file Added: trunk/octave-forge/extra/ncArray/inst/test_ncarray.m =================================================================== --- trunk/octave-forge/extra/ncArray/inst/test_ncarray.m (rev 0) +++ trunk/octave-forge/extra/ncArray/inst/test_ncarray.m 2012-06-22 15:04:09 UTC (rev 10663) @@ -0,0 +1,233 @@ +function test_ncarray() +% test ncArray, ncCatArray, ncData and ncCatData + +varname = 'SST'; + +tmpdir = tempname; +mkdir(tmpdir); + +tmpfname = tempname(tmpdir); +for i = 1:3 + files{i} = fullfile(tmpdir,sprintf('file%d.nc',i)); + ncarray_example_file(files{i},randn(220,144)); +end + + +filename = files{1}; + + +% test ncread/ncwrite + +copyfile(files{1},tmpfname); +SST_ref = ncread(files{1},'SST'); +ncwrite(tmpfname,'SST',zeros(size(SST_ref))); +test = ncread(tmpfname,'SST'); + +assert(all(test(:) == 0)) + +ncwrite(tmpfname,'SST',SST_ref); +test = ncread(tmpfname,'SST'); +assert(isequalwithequalnans(test,SST_ref)) + + +%%% test ncArray + +% reading + +copyfile(files{2},tmpfname); +SST = ncArray(tmpfname,varname); +test = SST(:,:,:); +SST_ref = ncread(tmpfname,varname); + +assert(isequalwithequalnans(test,SST_ref)) +assert(isempty(SST(:,:,:,[]))); +assert(isequalwithequalnans(SST_ref, SST(:,:,:,1))) + +ind = floor(numel(SST_ref) * rand(100,1))+1; +assert(isequalwithequalnans(SST(ind),SST_ref(ind))) + +% writing + +r = round(randn(size(SST))); +SST(:,:,:) = r; +SST_ref = ncread(tmpfname,varname); +assert(isequalwithequalnans(r,SST_ref)); + +SST(:,:,:) = 3 * r; +SST_ref = ncread(tmpfname,varname); +assert(isequalwithequalnans(3 * r,SST_ref)); + + +%%% CatArray + +% reading + +CA = CatArray(3,{... + ncArray(filename,varname),... + ncArray(files{2},varname),... + ncArray(files{3},varname)... + }); + +assert(isequalwithequalnans(size(CA),[220 144 3])) + +SST_ref = ncread(filename,'SST'); +tmp2 = CA(:,:,1); +assert(isequalwithequalnans(SST_ref,tmp2)) + + + +SST_test = CA(:,:,2); +SST_ref = ncread(files{2},'SST'); + + + +assert(isequalwithequalnans(SST_test,SST_ref)) + +CA2 = CatArray(4,{... + ncArray(files{1},varname),... + ncArray(files{2},varname),... + ncArray(files{3},varname)... + }); + +SST_test = CA2(:,:,:,2); + +assert(isequalwithequalnans(SST_test,SST_ref)) + +CA2 = ncCatArray(3,{... + files{1},... + files{2},... + files{3}},... + varname); + +SST_test = CA2(:,:,2); +assert(isequalwithequalnans(SST_test,SST_ref)) + +CA2 = ncCatArray(3,fullfile(tmpdir,'file*nc'),varname); +SST_test = CA2(:,:,2); +assert(isequalwithequalnans(SST_test,SST_ref)) + + +CA2 = ncCatArray(3,... + @(i) fullfile(tmpdir,sprintf('file%d.nc',i)),... + varname,... + 1:3); + +SST_test = CA2(:,:,2); +assert(isequalwithequalnans(SST_test,SST_ref)) + +SST_ref = cat(3,... + ncread(files{1},'SST'),... + ncread(files{2},'SST'),... + ncread(files{3},'SST')); + + +assert(isequalwithequalnans(CA2(:,:,:),SST_ref)) + +assert(isequalwithequalnans(CA2(:,:,1),SST_ref(:,:,1))) +assert(isequalwithequalnans(CA2(3:5:50,3:5:100,1),SST_ref(3:5:50,3:5:100,1))) +assert(isequalwithequalnans(CA2(3:5:50,3:5:100,2),SST_ref(3:5:50,3:5:100,2))) +assert(isequalwithequalnans(CA2(3:5:50,3:5:100,3),SST_ref(3:5:50,3:5:100,3))) +assert(isequalwithequalnans(CA2(3:5:50,3:5:100,end),SST_ref(3:5:50,3:5:100,end))) +assert(isequalwithequalnans(CA2(50,100,1:3),SST_ref(50,100,1:3))) +assert(isequalwithequalnans(CA2(3:5:50,3:5:100,1:2:3),SST_ref(3:5:50,3:5:100,1:2:3))) +assert(isequalwithequalnans(CA2(3:5:50,3:5:end,1:2:3),SST_ref(3:5:50,3:5:end,1:2:3))) +assert(isequalwithequalnans(CA2(3:5:50,3:5:end,:),SST_ref(3:5:50,3:5:end,:))) +ind = floor(numel(SST_ref) * rand(100,1))+1; +assert(isequalwithequalnans(CA2(ind),SST_ref(ind))) + +% writing + +for i=1:3 + list{i} = tempname; + copyfile(filename,list{i}); +end + +CA2 = ncCatArray(3,list,varname); +r = round(randn(size(CA2))); +CA2(:,:,:) = r; + +check = ncread(list{2},varname); +assert(isequalwithequalnans(check,r(:,:,2))) + +r2 = round(randn(size(CA2))); +r(3:5:50,3:5:end,:) = r2(3:5:50,3:5:end,:); +CA2(3:5:50,3:5:end,:) = r2(3:5:50,3:5:end,:); +assert(isequalwithequalnans(CA2(:,:,:),r)) + +r(end-1,3:5:end,1:2:3) = 2*r2(end-1,3:5:end,1:2:3); +CA2(end-1,3:5:end,1:2:3) = 2*r2(end-1,3:5:end,1:2:3); +assert(isequalwithequalnans(CA2(:,:,:),r)) + + + + +if 1 + % test ncData (constructor: ncData(var,dims,coord) + + SST = ncArray(filename,varname); + SST_ref = ncread(filename,varname); + lon_ref = ncread(filename,'lon'); + + coord(1).val = ncArray(filename,'lon'); + coord(1).dims = {'x','y'}; + + coord(2).val = ncArray(filename,'lat'); + coord(2).dims = {'x','y'}; + + coord(3).val = ncArray(filename,'time'); + coord(3).dims = {'time'}; + + data = ncData(SST,{'x','y','time'},coord); + + [x,y,t] = data(:,:,:).coord; + + assert(isequalwithequalnans(data(:,:,:),SST_ref)) + assert(isequalwithequalnans(x,lon_ref)) + + assert(isequalwithequalnans(data(),SST_ref)) + [x,y,t] = data().coord; + assert(isequalwithequalnans(x,lon_ref)) + + assert(isequalwithequalnans(data(1:3:end,:,:),SST_ref(1:3:end,:,:))) + [x,y,t] = data(1:3:end,:,:).coord; + assert(isequalwithequalnans(x,lon_ref(1:3:end,:))) + + % test ncData (constructor: ncData(filename,varname) + SST = ncData(filename,varname); + [x,y,t] = data(:,:,:).coord; + + assert(isequalwithequalnans(data(:,:,:),SST_ref)) + assert(isequalwithequalnans(x,lon_ref)) + + assert(isequalwithequalnans(data(),SST_ref)) + [x,y,t] = data().coord; + assert(isequalwithequalnans(x,lon_ref)) + + assert(isequalwithequalnans(data(1:3:end,:,:),SST_ref(1:3:end,:,:))) + [x,y,t] = data(1:3:end,:,:).coord; + assert(isequalwithequalnans(x,lon_ref(1:3:end,:))) + + + assert(strcmp(SST.units,'degC')) + assert(strcmp(SST.('units'),'degC')) + +end + + +% read compressed data +zname = [tmpfname '.gz']; +system(['gzip --stdout ' tmpfname ' > ' zname]); + +SST = ncData(zname,'SST'); +SST_ref = ncread(tmpfname,'SST'); +assert(isequalwithequalnans(SST(),SST_ref)) + + + +CA2 = ncCatData(3,fullfile(tmpdir,'file*nc'),varname); +SST_test = CA2(:,:,2); +SST_ref = ncread(files{2},'SST'); +assert(isequalwithequalnans(SST_test,SST_ref)) + +disp('All tests passed.') + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sch...@us...> - 2012-08-03 19:49:18
|
Revision: 10807 http://octave.svn.sourceforge.net/octave/?rev=10807&view=rev Author: schloegl Date: 2012-08-03 19:49:11 +0000 (Fri, 03 Aug 2012) Log Message: ----------- fix message on missing mexext Modified Paths: -------------- trunk/octave-forge/extra/NaN/src/Makefile trunk/octave-forge/extra/tsa/src/Makefile Modified: trunk/octave-forge/extra/NaN/src/Makefile =================================================================== --- trunk/octave-forge/extra/NaN/src/Makefile 2012-08-03 15:56:49 UTC (rev 10806) +++ trunk/octave-forge/extra/NaN/src/Makefile 2012-08-03 19:49:11 UTC (rev 10807) @@ -41,7 +41,7 @@ mex4o octave: $(PROGS) -ifneq ( , $(ls -1 $(MATLABDIR) ) ) +ifneq (,$(ls -1 $(MATLABDIR))) MEX_EXT = $(shell $(MATLABDIR)/bin/mexext) mex4m matlab: $(patsubst %.mex, %.$(MEX_EXT), $(PROGS)) endif @@ -52,7 +52,7 @@ clean: -$(RM) *.o *.obj *.o64 core octave-core *.oct *~ *.mex* -$(PROGS): Makefile +#$(PROGS): Makefile ######################################################### # Octave, MATLAB on Linux Modified: trunk/octave-forge/extra/tsa/src/Makefile =================================================================== --- trunk/octave-forge/extra/tsa/src/Makefile 2012-08-03 15:56:49 UTC (rev 10806) +++ trunk/octave-forge/extra/tsa/src/Makefile 2012-08-03 19:49:11 UTC (rev 10807) @@ -51,10 +51,11 @@ mex4o octave: $(PROGS) -ifneq ( , $(ls -1 $(MATLABDIR) ) ) +ifneq (,$(ls -1 $(MATLABDIR))) MEX_EXT = $(shell $(MATLABDIR)/bin/mexext) mex4m matlab: $(patsubst %.mex, %.$(MEX_EXT), $(PROGS)) endif + mexw32 win32: $(patsubst %.mex, %.mexw32, $(PROGS)) mexw64 win64: $(patsubst %.mex, %.mexw64, $(PROGS)) all: octave win32 win64 mex4m This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |