Better management of the output arguments
Pierre MARECHAL [Fri, 26 Jun 2009 14:19:47 +0000 (16:19 +0200)]
scilab/modules/atoms/macros/atomsIsLoaded.sci
scilab/modules/atoms/macros/atoms_internals/atomsDependencyTree.sci

index 98ee89f..0d5f3ab 100644 (file)
@@ -9,12 +9,24 @@
 
 // End user function
 
-// Return %T if a (or several) toolbox has been loaded in this scilab session
+// Output arguments :
 
-function res = atomsIsLoaded(name,version)
+//   res  :  .%T if the toolbox is loaded in this scilab session
+//           . Matrix of boolean ( n x 1 ) 
+//           . mandatory
+
+//   version_out : . If the toolbox is loaded, version_out is the version of the
+//                   loaded toolbox
+//                   otherwise, version_out = "-1"
+//                 . Matrix of string (n x 1)
+//                 . mandatory
+
+function [res,version_out] = atomsIsLoaded(name,version)
        
-       rhs = argn(2);
-       res = [];
+       rhs         = argn(2);
+       lhs         = argn(1);
+       res         = [];
+       version_out = [];
        
        // Check number of input arguments
        // =========================================================================
@@ -60,19 +72,33 @@ function res = atomsIsLoaded(name,version)
                if isempty(version) then
                        // Just check the name
                        res(i) = or(packages(:,1) == name(i));
-               
+                       
                else
                        // Filter on names
                        packages_version = packages( find(packages(:,1) == name(i)) , 2 );
                        
-                       // Check if the wnated version is present$
+                       // Check if the wanted version is present$
                        res(i) = or(packages_version == version(i) );
                end
                
+               if lhs>1 then
+                       if res(i) then
+                               version_out(i) = packages( find(packages(:,1) == name(i)) , 2 )
+                       else
+                               version_out(i) = "";
+                       end
+               end
+               
        end
        
-       // Reshape the matrix
+       // Reshape the matrix [res]
        // =========================================================================
        res = matrix(res,size(name) );
        
+       // Reshape the matrix [version_out]
+       // =========================================================================
+       if lhs > 1
+               version_out = matrix(version_out,size(name) );
+       end
+       
 endfunction
index b07332b..47fd909 100644 (file)
@@ -42,6 +42,7 @@
 
 function [tree_out,version_out] = atomsDependencyTree(name,version,tree_in)
        
+       lhs = argn(1);
        rhs = argn(2);
        
        // Check number of input arguments
@@ -112,7 +113,10 @@ function [tree_out,version_out] = atomsDependencyTree(name,version,tree_in)
                end
                
                tree_out(name+" - "+version(i)) = this_package_details;
-               version_out                     = version(i);
+               
+               if lhs>1 then
+                       version_out = version(i);
+               end
                
                // Now, loop on dependencies
                // =========================================================================