Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  //----------------------------------------------------------------------------
  // Copyright (C) 2003  Rafael H. Bordini, Jomi F. Hubner, et al.
  // 
  // This library is free software; you can redistribute it and/or
  // modify it under the terms of 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.
  // 
  // 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 GNU
 // Lesser General Public License for more details.
 // 
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 // 
 // To contact the authors:
 // http://www.inf.ufrgs.br/~bordini
 // http://www.das.ufsc.br/~jomi
 //
 //----------------------------------------------------------------------------
 
 package jason.stdlib;
 

Internal action: .length.

Description: gets the length of strings or lists.

Parameters:

  • + argument (string or list): the term whose length is to be determined.
  • +/- length (number).

Examples:

  • .length("abc",X): X unifies with 3.
  • .length([a,b],X): X unifies with 2.
  • .length("a",2): false.

 
 public class length extends DefaultInternalAction {
 
     private static InternalAction singleton = null;
     public static InternalAction create() {
         if ( == null
              = new length();
         return ;
     }
     
     @Override public int getMinArgs() { return 2; }
     @Override public int getMaxArgs() { return 2; }
 
     @Override
     public Object execute(TransitionSystem tsUnifier unTerm[] argsthrows Exception {
         checkArguments(args);
         Term l1 = args[0];
         Term l2 = args[1];
 
         NumberTerm size = null;
         if (l1.isList()) {
             ListTerm lt = (ListTerml1;
             size = new NumberTermImpl(lt.size());
         } else if (l1.isString()) {
             StringTerm st = (StringTerml1;
             size = new NumberTermImpl(st.getString().length());
         }
         if (size != null) {
             return un.unifies(l2size);
         }
         return false;
    }
New to GrepCode? Check out our FAQ X