#!/usr/bin/perl # ######################################################################### # # # Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. # # All rights reserved. Email: russ@q12.org Web: www.q12.org # # # # This library is free software; you can redistribute it and/or # # modify it under the terms of EITHER: # # (1) The GNU Lesser General Public License as published by the Free # # Software Foundation; either version 2.1 of the License, or (at # # your option) any later version. The text of the GNU Lesser # # General Public License is included with this library in the # # file LICENSE.TXT. # # (2) The BSD-style license that is included with this library in # # the file LICENSE-BSD.TXT. # # # # This library 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 files # # LICENSE.TXT and LICENSE-BSD.TXT for more details. # # # ######################################################################### # extract the public functions from ode.doc and build a DLL exports list. @funcs = (); sub exportFunc { push (@funcs,$_[0]); } sub exportFuncList { my $f = $_[0]; $f =~ s/([A-Za-z0-9_]+)\s*\(/&exportFunc($1)/ge; } # read the documentation open (FILE,"ode.doc"); $a = join('',); close (FILE); # strip whitespace out of $a $a =~ s/\s+/ /g; # extract all function definitions $a =~ s/\@funcdef{([^}]*)}/&exportFuncList($1)/ge; # add in some functions and symbols that are not currently shown in # the documentation push (@funcs,"dSetZero"); push (@funcs,"dBoxBox"); push (@funcs,"dMultiply0"); push (@funcs,"dMultiply1"); push (@funcs,"dMultiply2"); push (@funcs,"dNormalize3"); push (@funcs,"dNormalize4"); push (@funcs,"dPlaneSpace"); push (@funcs,"dRandInt"); push (@funcs,"dRandReal"); push (@funcs,"dRandSetSeed"); push (@funcs,"dMakeRandomMatrix"); push (@funcs,"dMakeRandomVector"); push (@funcs,"dMaxDifference"); push (@funcs,"dClearUpperTriangle"); push (@funcs,"dError"); push (@funcs,"dDebug"); push (@funcs,"dMessage"); push (@funcs,"dSetMessageHandler"); push (@funcs,"dSetErrorHandler"); push (@funcs,"dSetDebugHandler"); push (@funcs,"dFactorCholesky"); push (@funcs,"dFactorLDLT"); push (@funcs,"dGeomRayGetClosestHit"); push (@funcs,"dGeomRaySetClosestHit"); push (@funcs,"dGeomTriMeshDataBuildDouble"); push (@funcs,"dGeomTriMeshDataBuildSingle"); push (@funcs,"dInvertPDMatrix"); push (@funcs,"dIsPositiveDefinite"); push (@funcs,"dLDLTAddTL"); push (@funcs,"dLDLTRemove"); push (@funcs,"dRemoveRowCol"); push (@funcs,"dRandGetSeed"); push (@funcs,"dRFromZAxis"); push (@funcs,"dSolveCholesky"); push (@funcs,"dSolveLDLT"); push (@funcs,"dSpaceClean"); # sort the functions and generate the exports file print "LIBRARY ODE\n"; print "EXPORTS\n"; foreach $f (sort @funcs) { print "$f\n"; }