/* MathFunction.java
* =========================================================================
* This file is part of the Mirai Math TN - http://mirai.sourceforge.net
*
* Copyright (C) 2008-2009 Bea Petrovicova
*
* 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.
*
* A copy of the GNU General Public License can be found in the file
* LICENSE.txt provided with the source distribution of this program (see
* the META-INF directory in the source jar). This license can also be
* found on the GNU website at http://www.gnu.org/licenses/gpl.html.
*
* If you did not receive a copy of the GNU General Public License along
* with this program, contact the lead developer, or write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*
*/
package com.himamis.retex.editor.share.model;
import com.himamis.retex.editor.share.meta.MetaFunction;
/**
* Function. This class is part of model.
* <p/>
* function(arguments)
*
* @author Bea Petrovicova
*/
public class MathFunction extends MathContainer {
private MetaFunction meta;
/**
* Use MathFormula.newFunction(...)
*/
public MathFunction(MetaFunction meta) {
super(meta.size());
this.meta = meta;
}
/**
* Gets parent of this component.
*/
@Override
public MathSequence getParent() {
return (MathSequence) super.getParent();
}
@Override
public MathSequence getArgument(int i) {
return (MathSequence) super.getArgument(i);
}
public void setArgument(int i, MathSequence argument) {
super.setArgument(i, argument);
}
/**
* Uid name.
*/
public String getName() {
return meta.getName();
}
/**
* TeX name.
*/
public String getTexName() {
return meta.getTexName();
}
/**
* Insert Index
*/
@Override
public int getInsertIndex() {
return meta.getInsertIndex();
}
/**
* Initial Index
*/
@Override
public int getInitialIndex() {
return meta.getInitialIndex();
}
/**
* Up Index for n-th argument
*/
public int getUpIndex(int n) {
return meta.getUpIndex(n);
}
/**
* Down Index for n-th argument
*/
public int getDownIndex(int n) {
return meta.getDownIndex(n);
}
@Override
public MathFunction copy() {
MathFunction function = new MathFunction(meta);
for (int i = 0; i < arguments.size(); i++) {
MathContainer component = getArgument(i);
component = component.copy();
function.setArgument(i, component);
}
return function;
}
public static String getOpeningBracket() {
return MetaFunction.getOpeningBracket();
}
public static String getClosingBracket() {
return MetaFunction.getClosingBracket();
}
}