Reorganized File Structure
Added Documentation
This commit is contained in:
910
MathKit/MPExpression.h
Normal file
910
MathKit/MPExpression.h
Normal file
@@ -0,0 +1,910 @@
|
||||
//
|
||||
// MPExpression.h
|
||||
// MathPad
|
||||
//
|
||||
// Created by Kim Wittenburg on 10.08.14.
|
||||
// Copyright (c) 2014 Kim Wittenburg. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
/*!
|
||||
@header
|
||||
The <code>MPExpression</code> class is used to represent a mathematical
|
||||
expression. It is used in the storage layer of the MathKit Expression System. An
|
||||
instance of the <code>MPExpression</code> class stores all contents related to
|
||||
an expression and can manipulate them. However it is not able to evaluate the
|
||||
represented expression by itself.
|
||||
|
||||
<h2>Structure of an Expression</h2>
|
||||
|
||||
Expressions consist of two types of elements: string elements and function
|
||||
elements. String elements are represented by the <code>NSString</code> class.
|
||||
In a valid expression string elements can only contain ASCII valid characters.
|
||||
(and some other special characters) that make sense in a mathematical context.
|
||||
Functions are represented by the <code>MPFunction</code> class. Functions
|
||||
represent everything beyond simple text (such as powers, parenthesis and roots).
|
||||
|
||||
An expression should be pictured as a sequence of symbols that can either be
|
||||
characters or functions. For the purposes of easier processing of expressions
|
||||
it is possible to access complete string or function elements. Also there is a
|
||||
third way of accessing an expression's contents: You can query individual tokens
|
||||
of an expression. Tokens represent logical units inside an expression. For more
|
||||
information on tokens see the <code>MPToken</code> class.
|
||||
|
||||
<h2>The Expression Tree</h2>
|
||||
Like expressions functions can likewise have expressions as elements (also
|
||||
called <i>children</i> in this context). Both expressions and functions are
|
||||
mutable. Through this organization expression are organized in a tree-like
|
||||
structure called the <i>expression tree</i>. See <code>MPFunction</code> for
|
||||
details.
|
||||
|
||||
<h2>Terminology</h2>
|
||||
|
||||
When working with expressions note that there is a special terminology for an
|
||||
expression's contents:
|
||||
|
||||
<b>Element:</b><br />
|
||||
An element is either an instance of the <code>NSString</code> or <code>
|
||||
MPFunction</code> class. String elements can be multiple characters long. For
|
||||
example the expression <code>4+2²</code> consists of one string element
|
||||
(<code>"4+2"</code>) and one function element (the square function). All
|
||||
elements conform to the <code>MPExpressionElement</code> protocol.
|
||||
|
||||
<b>Token:</b><br />
|
||||
Tokens are logical units within an expression. For example the expression
|
||||
<code>4+2²</code> consists of 4 tokens: A number token (<code>4</code>), a plus
|
||||
sign token (<code>+</code>), another number (<code>2</code>) and a power token
|
||||
(the square function). All tokens conform to the <code>MPToken</code> protocol.
|
||||
|
||||
<b>Symbol:</b><br />
|
||||
Symbols are the smallest possible part of an expression. A symbol is either a
|
||||
single character or a single function. For example the expression
|
||||
<code>4+2²</code> consists of 4 symbols: The characters <code>"4"</code>,
|
||||
<code>"+"</code> and <code>"2"</code> and the square function.
|
||||
|
||||
<b>Item:</b></br />
|
||||
The term <i>item</i> is used to describe any of the previous. When the term
|
||||
<i>item</i> is used in the name of a function or method it necessary to specify
|
||||
what exactly an item is supposed to be. Usually this is done through reference
|
||||
frames.
|
||||
|
||||
<b>Reference Frame:</b><br />
|
||||
A reference frame is a way to specify what an <i>item</i> is supposed to mean in
|
||||
a specific context. It can either be an <i>element</i>, a <i>symbol</i> or a
|
||||
<i>token</i>. For more information about reference frames see
|
||||
<code>MPReferenceFrame</code>.
|
||||
|
||||
<b>Children:</b><br />
|
||||
Children are sub-elements of functions. The term <i>children</i> normally refers
|
||||
to any kind of elements in the context of the expression tree.
|
||||
|
||||
This terminology is consistent within the MathKit Expression System. Because
|
||||
symbols are the smalles possible unit of measurement elements and tokens both
|
||||
consist of one or more symbols. Similarly elements consist of one or more
|
||||
tokens. You can convert between different reference frames using one the
|
||||
following methods:
|
||||
<pre>
|
||||
@textblock
|
||||
- convertIndexFromReferenceFrame:toReferenceFrame:
|
||||
- convertIndexFromReferenceFrame:toReferenceFrame:offset:
|
||||
@/textblock
|
||||
</pre>
|
||||
|
||||
<h2>Evaluating Expressions</h2>
|
||||
A <code>MPExpression</code> instance can not evaluate itself. There are however
|
||||
the <code>-parse:</code> and
|
||||
<code>-parseExpectingVariableDefinition:errors:</code> methods. These parse and
|
||||
thereby convert a <code>MPExpression</code> instance into a
|
||||
<code>MPParsedExpression</code> instance that can be evaluated. For more
|
||||
information on evaluation see the <code>MPParsedExpression</code> and
|
||||
<code>MPTerm</code> class as well as the previously mentioned methods.
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@const MPIllegalElementException
|
||||
@brief Name for an exception that is raised if an invalid element is
|
||||
added to an expression.
|
||||
|
||||
@discussion This exception may be raised during initialization of an
|
||||
expression or when the expression is mutated. This exception
|
||||
contains the invalid element in its <code>userInfo</code>
|
||||
dictionary. You can query it using the
|
||||
<code>MPIllegalElementExceptionElementKey</code> key.
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString *const MPIllegalElementException;
|
||||
|
||||
|
||||
/*!
|
||||
@const MPIllegalElementExceptionElementKey
|
||||
@brief Predefined key for an invalid element that caused a
|
||||
<code>MPIllegalElementException</code> to be raised.
|
||||
|
||||
@discussion The invalid element can be of any type. Numbers and structs are
|
||||
wrapped in an <code>NSNumber</code> or <code>NSValue</code>
|
||||
instance respectively.
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString *const MPIllegalElementExceptionElementKey;
|
||||
|
||||
|
||||
/*!
|
||||
@typedef MPReferenceFrame
|
||||
@brief A reference frame specifies the way an <i>item</i> is to be
|
||||
interpreted.
|
||||
|
||||
@constant MPElementReferenceFrame
|
||||
Specifies that items should be interpreted as elements.
|
||||
|
||||
@constant MPSymbolReferenceFrame
|
||||
Specifies that items should be interpreted as symbols.
|
||||
|
||||
@constant MPTokenReferenceFrame
|
||||
Specifies that items should be interpreted as tokens.
|
||||
*/
|
||||
typedef enum {
|
||||
MPElementReferenceFrame,
|
||||
MPSymbolReferenceFrame,
|
||||
MPTokenReferenceFrame
|
||||
} MPReferenceFrame;
|
||||
|
||||
|
||||
|
||||
@class MPExpression, MPFunction, MPRangePath, MPParsedExpression;
|
||||
@protocol MPExpressionElement, MPToken;
|
||||
|
||||
|
||||
/*!
|
||||
@class MPExpression
|
||||
@brief A <code>MPExpression</code> instance represents a mathematical
|
||||
expression.
|
||||
|
||||
@discussion Every expression consists of string elements (represented by the
|
||||
<code>NSString</code> class) and function elements (represented
|
||||
by the <code>MPFunction</code> class). Functions and expressions
|
||||
make up the expression tree.
|
||||
*/
|
||||
@interface MPExpression : NSObject <NSCopying, NSCoding>
|
||||
|
||||
|
||||
#pragma mark Creation Methods
|
||||
/*!
|
||||
@methodgroup Creation Methods
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@method init
|
||||
@brief Initlializes a new expression.
|
||||
|
||||
@discussion This method is a convenience initializer to initialize an
|
||||
expression with <code>0</code> elements.
|
||||
|
||||
@return An empty expression.
|
||||
*/
|
||||
- (instancetype)init;
|
||||
|
||||
|
||||
/*!
|
||||
@method initWithElement:
|
||||
@brief Initializes a new expression with the specified
|
||||
<code>element</code>.
|
||||
|
||||
@discussion This method is a convenience initializer to initialize an
|
||||
expression with a single element.
|
||||
|
||||
@param element
|
||||
The element to be added to the expression. The
|
||||
<code>element</code> will be copied.
|
||||
|
||||
@return An expression initialized with <code>element</code>.
|
||||
*/
|
||||
- (instancetype)initWithElement:(id<MPExpressionElement>)element;
|
||||
|
||||
|
||||
/*!
|
||||
@method initWithElements:
|
||||
@brief Initializes a new expression with the specified
|
||||
<code>elements</code>.
|
||||
|
||||
@discussion All elements must conform to the <code>MPExpressionElement</code>
|
||||
protocol. If one or more objects do not conform to that protocol
|
||||
a <code>MPIllegalElementException</code> is raised.
|
||||
|
||||
This method is the designated initializer for the
|
||||
<code>MPExpression</code> class.
|
||||
|
||||
@param elements
|
||||
The elements that should be added to the expression. Every
|
||||
element must conform to the <code>MPExpressionElement</code>
|
||||
protocol. Each element is copied and the copy is then added to
|
||||
the expression. The object in the <code>elements</code> array is
|
||||
not modified.
|
||||
|
||||
@return An expression containing <code>elements</code>.
|
||||
*/
|
||||
- (instancetype)initWithElements:(NSArray *)elements; /* designated initializer */
|
||||
|
||||
|
||||
#pragma mark Querying Expressions
|
||||
/*!
|
||||
@methodgroup Querying Expressions
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@property parent
|
||||
@brief The receiver's parent.
|
||||
|
||||
@discussion The receiver's parent is the function in the expression tree that
|
||||
contains the receiver.
|
||||
@warning You should never set this property manually. If you are
|
||||
implementing a custom subclass of <code>MPFunction</code> use the
|
||||
<code>MPFunctionAccessorImplementation</code> macro.
|
||||
|
||||
@return The parent of the receiver or <code>nil</code> if the receiver is
|
||||
the root expression.
|
||||
*/
|
||||
@property (nonatomic, weak) MPFunction *parent;
|
||||
|
||||
|
||||
/*!
|
||||
@method rootExpression
|
||||
@brief Returns the root expression from the receiver's expression tree.
|
||||
|
||||
@discussion The root expression is the ultimate parent of all expressions and
|
||||
functions in the expression tree. A root expression does not have
|
||||
a parent.
|
||||
|
||||
@return The root expression from the receiver's expression tree.
|
||||
*/
|
||||
- (MPExpression *)rootExpression;
|
||||
|
||||
|
||||
/*!
|
||||
@method indexPath
|
||||
@brief Returns the index path of the receiver in the expression tree.
|
||||
|
||||
@discussion The index path contains the indexes (starting from the root
|
||||
expression of the receiver's expression tree) that lead to the
|
||||
receiver. The indexes are expressed in the element reference
|
||||
frame.
|
||||
|
||||
@return The index path of the receiver in the expression tree.
|
||||
*/
|
||||
- (NSIndexPath *)indexPath;
|
||||
|
||||
|
||||
/*!
|
||||
@method countItemsInReferenceFrame:
|
||||
@brief Returns the number of items in the receiver in the specified
|
||||
<code>referenceFrame</code>.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame that should be used to count the items.
|
||||
|
||||
@return The current number of items in the receiver counted in the
|
||||
specified <code>referenceFrame</code>.
|
||||
*/
|
||||
- (NSUInteger)countItemsInReferenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method itemAtIndex:referenceFrame:
|
||||
@brief Returns the item at <code>anIndex</code>.
|
||||
|
||||
@discussion The item is not copied before it is returned. So be aware that
|
||||
if you mutate a <code>MPFunction</code> instance returned from
|
||||
this function the receiver's expression tree will be updated to
|
||||
reflect the change.
|
||||
|
||||
@param anIndex
|
||||
The index of the item. If the index is greater than the number of
|
||||
items for the respective reference frame a
|
||||
<code>NSRangeException</code> is raised.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame that should be used to identify the item at
|
||||
<code>anIndex</code>.
|
||||
|
||||
@return The item at <code>anIndex</code>.
|
||||
*/
|
||||
- (id)itemAtIndex:(NSUInteger)anIndex
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method elementAtIndex:referenceFrame:
|
||||
@brief Returns the element at the specified index.
|
||||
|
||||
@discussion An element is either a string or a function. If
|
||||
<code>anIndex</code> identifies a position inside a string
|
||||
element the complete element is returned.
|
||||
|
||||
This method always returns elements. To query items in the
|
||||
specified reference frame use
|
||||
<code>-itemAtIndex:referenceFrame:</code>.
|
||||
|
||||
@param anIndex
|
||||
The index of the element.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame <code>anIndex</code> is specified in.
|
||||
|
||||
@return The element at <code>anIndex</code>.
|
||||
*/
|
||||
- (id<MPExpressionElement>)elementAtIndex:(NSUInteger)anIndex
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
/*!
|
||||
@method indexOfElement:
|
||||
@brief Returns the index of <code>element</code> or
|
||||
<code>NSNotFound</code> if it was not found.
|
||||
|
||||
@param element
|
||||
The element to find.
|
||||
|
||||
@return The index of <code>element</code> expressed in the element
|
||||
reference frame.
|
||||
*/
|
||||
- (NSUInteger)indexOfElement:(id<MPExpressionElement>)element;
|
||||
|
||||
|
||||
/*!
|
||||
@method itemsInRange:referenceFrame:
|
||||
@brief Returns an array of the items that are located in the specified
|
||||
range.
|
||||
|
||||
@discussion The objects in the returned array are copied before they are
|
||||
returned.
|
||||
|
||||
If the <code>range</code> exceeds the receiver's bounds a
|
||||
<code>NSRangeException</code> is raised.
|
||||
|
||||
@param aRange
|
||||
The requested range within the receiver's bounds.
|
||||
|
||||
@param referenceFrame
|
||||
The referenceFrame <code>aRange</code> is expressed in.
|
||||
|
||||
@return An array containing all elements in the specified range. The type
|
||||
of the objects depends on the specified
|
||||
<code>referenceFrame</code>.
|
||||
*/
|
||||
- (NSArray *)itemsInRange:(NSRange)aRange
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method allItemsInReferenceFrame:
|
||||
@brief Returns an array of all items in the receiver for the specified
|
||||
reference frame.
|
||||
|
||||
@discussion The elements in the returned array are not copied before they are
|
||||
returned so be aware that mutations to any of the returned
|
||||
objects will update the receiver's expression tree to reflect the
|
||||
change.
|
||||
|
||||
@return An array of all items in the receiver.
|
||||
*/
|
||||
- (NSArray *)allItemsInReferenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method elementAtIndexPath:
|
||||
@brief Returns the element at the specified index path.
|
||||
|
||||
@discussion This method finds the elements at the respective indexes starting
|
||||
at the root expression from the receiver's expression tree.
|
||||
The returned object can be a <code>NSString</code>, a
|
||||
<code>MPFunction</code> or an <code>MPExpression</code> instance
|
||||
depending on the specified <code>indexPath</code>. If any of the
|
||||
indexes exceed the bounds of the respective receiver a
|
||||
<code>NSRangeException</code> is raised.
|
||||
|
||||
If the index path does not contain any indexes the receiver
|
||||
itself is returned.
|
||||
|
||||
@param indexPath
|
||||
The index path the required object is located at. The indexes are
|
||||
expressed in the element reference frame.
|
||||
|
||||
@return The element located at <code>indexPath</code>. The element is not
|
||||
copied before it is returned. Be aware of the fact that any
|
||||
mutations made to the returned object will update the receiver's
|
||||
expression tree to reflect the change.
|
||||
*/
|
||||
- (id)elementAtIndexPath:(NSIndexPath *)indexPath;
|
||||
|
||||
|
||||
/*!
|
||||
@method convertIndex:fromReferenceFrame:toReferenceFrame:
|
||||
@brief Converts an index from one reference frame to another.
|
||||
|
||||
@discussion This method ignores any offsets into items the conversion between
|
||||
reference frames can cause. If you are interested in the offset
|
||||
use <code>-convertIndex:fromReferenceFrame:toReferenceFrame:offset:</code>
|
||||
instead.
|
||||
|
||||
@param anIndex
|
||||
The index to be converted.
|
||||
|
||||
@param fromReferenceFrame
|
||||
The reference frame <code>anIndex</code> is specified in.
|
||||
|
||||
@param toReferenceFrame
|
||||
The reference frame <code>anIndex</code> should be converted to.
|
||||
|
||||
@return An index specified in the <code>toReferenceFrame</code>. If
|
||||
<code>anIndex</code> identifies a location inside an item in the
|
||||
<code>toReferenceFrame</code> the index of the corresponding item
|
||||
is returned.
|
||||
*/
|
||||
- (NSUInteger)convertIndex:(NSUInteger)anIndex
|
||||
fromReferenceFrame:(MPReferenceFrame)fromReferenceFrame
|
||||
toReferenceFrame:(MPReferenceFrame)toReferenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method convertIndex:fromReferenceFrame:toReferenceFrame:offset:
|
||||
@brief Converts an index from one reference frame to another.
|
||||
|
||||
@discussion If <code>anIndex</code> identifies a location inside an item in
|
||||
the <code>toReferenceFrame</code> the index of the corresponding
|
||||
item is returned. In that case the <code>offset</code> parameter
|
||||
will be set to the number of symbols the offset goes into the
|
||||
item at the returned index.
|
||||
|
||||
@param anIndex
|
||||
The index to be converted.
|
||||
|
||||
@param fromReferenceFrame
|
||||
The reference frame <code>anIndex</code> is specified in.
|
||||
|
||||
@param toReferenceFrame
|
||||
The reference frame <code>anIndex</code> should be converted to.
|
||||
|
||||
@param offset
|
||||
This output parameter will be set to the number of symbols that
|
||||
are between the location identified by <code>anIndex</code> and
|
||||
the index that is actually returned. The offset is specified in
|
||||
the symbol reference frame. If you are not interested in the
|
||||
offset pass <code>NULL</code>.
|
||||
|
||||
@return An index specified in the <code>toReferenceFrame</code>
|
||||
corresponding to <code>anIndex</code>.
|
||||
*/
|
||||
- (NSUInteger)convertIndex:(NSUInteger)anIndex
|
||||
fromReferenceFrame:(MPReferenceFrame)fromReferenceFrame
|
||||
toReferenceFrame:(MPReferenceFrame)toReferenceFrame
|
||||
offset:(NSUInteger *)offset;
|
||||
|
||||
|
||||
/*!
|
||||
@method convertRange:fromReferenceFrame:toReferenceFrame:
|
||||
@brief Converts a range from one reference frame to another.
|
||||
|
||||
@discussion This method just converts the location and target of the range
|
||||
separately using
|
||||
<code>-convertIndex:fromReferenceFrame:toReferenceFrame:</code>.
|
||||
It ensures that the returned range definitely includes all items
|
||||
that were specified by <code>aRange</code>.
|
||||
|
||||
The possibility that the returned range may
|
||||
include more symbols than <code>aRange</code> is ignored. If you
|
||||
need that information use
|
||||
<code>-convertRange:fromReferenceFrame:toReferenceFrame:leadingOffset:trailingOffset:</code>.
|
||||
|
||||
@param aRange
|
||||
The range to be converted.
|
||||
|
||||
@param fromReferenceFrame
|
||||
The reference frame <code>aRange</code> is specified in.
|
||||
|
||||
@param toReferenceFrame
|
||||
The reference frame <code>aRange</code> is to be converted to.
|
||||
|
||||
@return A range in the <code>toReferenceFrame</code> that includes the
|
||||
the items identified by <code>aRange</code>.
|
||||
*/
|
||||
- (NSRange)convertRange:(NSRange)aRange
|
||||
fromReferenceFrame:(MPReferenceFrame)fromReferenceFrame
|
||||
toReferenceFrame:(MPReferenceFrame)toReferenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method convertRange:fromReferenceFrame:toReferenceFrame:leadingOffset:trailingOffset:
|
||||
@brief Converts a range from one reference frame to another.
|
||||
|
||||
@discussion This method just converts the location and target of the range
|
||||
separately using
|
||||
<code>-convertIndex:fromReferenceFrame:toReferenceFrame:</code>.
|
||||
It ensures that the returned range definitely includes all items
|
||||
that were specified by <code>aRange</code>.
|
||||
|
||||
@param aRange
|
||||
The range to be converted.
|
||||
|
||||
@param fromReferenceFrame
|
||||
The reference frame <code>aRange</code> is specified in.
|
||||
|
||||
@param toReferenceFrame
|
||||
The reference frame <code>aRange</code> is to be converted to.
|
||||
|
||||
@param leadingOffset
|
||||
The offset of the location of the returned range in respect to
|
||||
the location of <code>aRange</code>.
|
||||
|
||||
@param trailingOffset
|
||||
The offset of the last index in the range in respect to the last
|
||||
index of <code>aRange</code>.
|
||||
|
||||
@return A range in the <code>toReferenceFrame</code> that includes the the items
|
||||
specified by <code>aRange</code>.
|
||||
*/
|
||||
- (NSRange)convertRange:(NSRange)aRange
|
||||
fromReferenceFrame:(MPReferenceFrame)fromReferenceFrame
|
||||
toReferenceFrame:(MPReferenceFrame)toReferenceFrame
|
||||
leadingOffset:(NSUInteger *)leadingOffset
|
||||
trailingOffset:(NSUInteger *)trailingOffset;
|
||||
|
||||
|
||||
#pragma mark Mutating Expressions
|
||||
/*!
|
||||
@methodgroup Mutating Expressions
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@method replaceItemsInRange:referenceFrame:withElements:
|
||||
@brief Replaces the elements in the specified range with the contents of
|
||||
the <code>elements</code> array.
|
||||
|
||||
@discussion This is the most primitive mutation method of
|
||||
<code>MPExpression</code>. Every other mutating method must
|
||||
ultimately call this method.
|
||||
|
||||
After the receiver has been mutated the integrety of the receiver
|
||||
is restored. That basically means that subsequent strings are
|
||||
joined and empty strings removed. After restoring integrity the
|
||||
receiver sends a
|
||||
<code>-changedElementsInIndexedRangePath:replacementLength:</code>
|
||||
to itself. For more information see the documentation on that
|
||||
method.
|
||||
|
||||
@param aRange
|
||||
The range of symbols (including functions) to replace.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame <code>aRange</code> is specified in.
|
||||
|
||||
@param elements
|
||||
The elements that should replace the symbols specified by
|
||||
<code>range</code>.
|
||||
*/
|
||||
- (void)replaceItemsInRange:(NSRange)aRange
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame
|
||||
withElements:(NSArray *)elements;
|
||||
|
||||
|
||||
/*!
|
||||
@method changedElementsInRangePath:replacementLength:
|
||||
@brief This is a notification message that is sent from the receiver to
|
||||
itself after it has been mutated.
|
||||
|
||||
@discussion This method does nothing more than notify it's parent that it has
|
||||
been mutated at the respective range path. If you want to get
|
||||
notified about changes in an expression you should override this
|
||||
method instead of
|
||||
<code>-replaceSymbolsInRange:withElements:</code> because this
|
||||
method gives you information about the elements that changed
|
||||
during the mutation.
|
||||
|
||||
@param rangePath
|
||||
The range path at which the receiver was changed starting at the
|
||||
receiver. The range addressed by <code>rangePath</code> is
|
||||
expressed in the element reference frame.
|
||||
|
||||
@param replacementLength
|
||||
The number of elements replacing the elements specified by
|
||||
<code>rangePath</code> (also specified in the element reference
|
||||
frame).
|
||||
*/
|
||||
- (void)changedElementsInRangePath:(MPRangePath *)rangePath
|
||||
replacementLength:(NSUInteger)replacementLength;
|
||||
|
||||
|
||||
/*!
|
||||
@method subexpressionFromIndex:referenceFrame:
|
||||
@brief Creates an expression from the items in the receiver from the
|
||||
specified index to the end.
|
||||
|
||||
@discussion The items from the receiver are copied. Mutations to the returned
|
||||
expression will not change the receiver's expression tree.
|
||||
|
||||
@param from
|
||||
The index from which to start constructing the subexpression.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame <code>from</code> is specified in.
|
||||
|
||||
@return An expression containing the items from the specified index to
|
||||
the end of the receiver.
|
||||
*/
|
||||
- (MPExpression *)subexpressionFromIndex:(NSUInteger)from
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method subexpressionToIndex:referenceFrame:
|
||||
@brief Creates an expression from the items in the receiver from the
|
||||
first to the specified item.
|
||||
|
||||
@discussion The items from the receiver are copied. Mutations to the returned
|
||||
expression will not change the receiver's expression tree.
|
||||
|
||||
@param to
|
||||
The index of the first element not to include in the newly
|
||||
constructed subexpression.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame <code>to</code> is specified in.
|
||||
|
||||
@return An expression containing the items from the first item to the one
|
||||
at the specified index.
|
||||
*/
|
||||
- (MPExpression *)subexpressionToIndex:(NSUInteger)to
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method subexpressionWithRange:referenceFrame:
|
||||
@brief Creates an expression from the items in the receiver within the
|
||||
specified range.
|
||||
|
||||
@discussion The items from the receiver are copied. Mutations to the returned
|
||||
expression will not change the receiver's expression tree.
|
||||
|
||||
@param aRange
|
||||
Specifies the items to be included in the newly created
|
||||
subexpression.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame <code>aRange</code> is specified in.
|
||||
|
||||
@return An expression containing the items in <code>aRange</code>.
|
||||
*/
|
||||
- (MPExpression *)subexpressionWithRange:(NSRange)aRange
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
#pragma mark Evaluating Expressions
|
||||
/*!
|
||||
@methodgroup Evaluating Expressions
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@method parse:
|
||||
@brief Parses the receiver.
|
||||
|
||||
@discussion This is a convenience method that calls
|
||||
<code>-parseExpectingVariable:errors:</code> with <code>NO</code>
|
||||
as the first argument.
|
||||
|
||||
@param errors
|
||||
If the receiver (or any of its elements) contain syntax errors
|
||||
this parameter is set to an appropriate value. All items in the
|
||||
array are <code>NSError</code> instances. This parameter is never
|
||||
set to an empty array. Pass <code>NULL</code> if you are not
|
||||
interested in any errors that might occur.
|
||||
|
||||
@return A <code>MPParsedExpression</code> instance that represents the
|
||||
receiver and can be evaluated or <code>nil</code> if an error
|
||||
occurs. In that case the <code>errors</code> parameter is set to
|
||||
an array containing at least one <code>NSError</code> instance.
|
||||
*/
|
||||
- (MPParsedExpression *)parse:(NSArray *__autoreleasing *)errors;
|
||||
|
||||
|
||||
/*!
|
||||
@method parseExpectingVariable:errors:
|
||||
@brief Parses the receiver.
|
||||
|
||||
@param flag
|
||||
If <code>YES</code> the receiver must (exept for whitespaces)
|
||||
begin with a single letter followed by an equals sign. If it
|
||||
doesn't the expression is considered invalid. Specify
|
||||
<code>NO</code> If the expression should be evaluatable by itself.
|
||||
|
||||
@param errors
|
||||
If the receiver (or any of its elements) contain syntax errors
|
||||
this parameter is set to an appropriate value. All items in the
|
||||
array are <code>NSError</code> instances. This parameter is never
|
||||
set to an empty array. Pass <code>NULL</code> if you are not
|
||||
interested in any errors that might occur.
|
||||
|
||||
@return A <code>MPParsedExpression</code> instance that represents the
|
||||
receiver and can be evaluated or <code>nil</code> if an error
|
||||
occurs. In that case the <code>errors</code> parameter is set to
|
||||
an array containing at least one <code>NSError</code> instance.
|
||||
*/
|
||||
- (MPParsedExpression *)parseExpectingVariable:(BOOL)flag
|
||||
errors:(NSArray *__autoreleasing *)errors;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
@category MPExpression (MPExpressionConvenience)
|
||||
@brief This category defines convenience methods for the
|
||||
<code>MPExpression</code> class.
|
||||
|
||||
@discussion All convenience methods are completely defined in terms of other
|
||||
methods of the <code>MPExpression</code> class.
|
||||
*/
|
||||
@interface MPExpression (MPExpressionConvenience)
|
||||
|
||||
#pragma mark Querying Expressions
|
||||
/*!
|
||||
@methodgroup Querying Expressions
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@method countElements
|
||||
@brief Returns the number of elements in the receiver.
|
||||
|
||||
@return The number of elements in the receiver expressed in the element
|
||||
reference frame.
|
||||
*/
|
||||
- (NSUInteger)countElements;
|
||||
|
||||
|
||||
/*!
|
||||
@method countSymbols
|
||||
@brief Returns the number of symbols in the receiver.
|
||||
|
||||
@return The number of symbols in the receiver expressed in the symbol
|
||||
reference frame.
|
||||
*/
|
||||
- (NSUInteger)countSymbols;
|
||||
|
||||
|
||||
/*!
|
||||
@method countTokens
|
||||
@brief Returns the number of tokens in the receiver.
|
||||
|
||||
@return The number of tokens in the receiver expressed in the token
|
||||
reference frame.
|
||||
*/
|
||||
- (NSUInteger)countTokens;
|
||||
|
||||
|
||||
/*!
|
||||
@method elementAtIndex:
|
||||
@brief Returns the element at the specified index.
|
||||
|
||||
@param anIndex
|
||||
The index of the element specified in the element reference
|
||||
frame.
|
||||
|
||||
@return The element at <code>anIndex</code>.
|
||||
*/
|
||||
- (id<MPExpressionElement>)elementAtIndex:(NSUInteger)anIndex;
|
||||
|
||||
|
||||
/*!
|
||||
@method symbolAtIndex:
|
||||
@brief Returns the symbol at the specified index.
|
||||
|
||||
@param anIndex
|
||||
The index of the symbol specified in the symbol reference frame.
|
||||
|
||||
@return The symbol at <code>anIndex</code>.
|
||||
*/
|
||||
- (id<MPExpressionElement>)symbolAtIndex:(NSUInteger)anIndex;
|
||||
|
||||
|
||||
/*!
|
||||
@method tokenAtIndex:
|
||||
@brief Returns the token at the specified index.
|
||||
|
||||
@param anIndex
|
||||
The index of the token specified in the token reference frame.
|
||||
|
||||
@return The token at <code>anIndex</code>.
|
||||
*/
|
||||
- (id<MPToken>)tokenAtIndex:(NSUInteger)anIndex;
|
||||
|
||||
|
||||
#pragma mark Mutating Expressions
|
||||
/*!
|
||||
@methodgroup Mutating Expressions
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@method appendElement:
|
||||
@brief Appends <code>anElement</code> to the receiver.
|
||||
|
||||
@param anElement
|
||||
The element to append to the receiver.
|
||||
*/
|
||||
- (void)appendElement:(id<MPExpressionElement>)anElement;
|
||||
|
||||
|
||||
/*!
|
||||
@method appendElements:
|
||||
@brief Appends the objects from <code>elements</code> to the receiver.
|
||||
|
||||
@discussion All objects in the <code>elements</code> array must conform to
|
||||
the <code>MPExpressionElement</code> protocol. If at least one
|
||||
element does not conform to that protocol a
|
||||
<code>MPIllegalElementException</code> is raised.
|
||||
|
||||
@param elements
|
||||
The elements to append to the receiver.
|
||||
*/
|
||||
- (void)appendElements:(NSArray *)elements;
|
||||
|
||||
|
||||
/*!
|
||||
@method insertElement:atIndex:referenceFrame:
|
||||
@brief Inserts <code>anElement</code> at the specified index.
|
||||
|
||||
@param anElement
|
||||
The element to be inserted.
|
||||
|
||||
@param index
|
||||
The index where to insert <code>anElement</code>.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame <code>index</code> is specified in.
|
||||
*/
|
||||
- (void)insertElement:(id<MPExpressionElement>)anElement
|
||||
atIndex:(NSUInteger)index
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method insertElements:atIndex:referenceFrame:
|
||||
@brief Inserts <code>elements</code> at the specified index.
|
||||
|
||||
@discussion All objects in the <code>elements</code> array must conform to
|
||||
the <code>MPExpressionElement</code> protocol. If at least one
|
||||
element does not conform to that protocol a
|
||||
<code>MPIllegalElementException</code> is raised.
|
||||
|
||||
@param elements
|
||||
The elements to be inserted.
|
||||
|
||||
@param index
|
||||
The index where to insert <code>elements</code>.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame <code>index</code> is specified in.
|
||||
*/
|
||||
- (void)insertElements:(NSArray *)elements
|
||||
atIndex:(NSUInteger)index
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method deleteElementsInRange:
|
||||
@brief Removes the elements identified by <code>range</code> from the
|
||||
receiver.
|
||||
|
||||
@discussion If <code>range</code> exceeds the receiver's bounds a
|
||||
<code>NSRangeException</code> is raised.
|
||||
|
||||
@param range
|
||||
The range of items to remove from the receiver.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame <code>range</code> is specified in.
|
||||
*/
|
||||
- (void)deleteElementsInRange:(NSRange)range
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
@end
|
||||
@@ -35,7 +35,7 @@ NSString *const MPIllegalElementExceptionElementKey = @"MPIllegalElementExceptio
|
||||
@brief Private method. Returns an array containing all tokens from the
|
||||
receiver.
|
||||
|
||||
@return All items in the @c MPTokenReferenceFrame.
|
||||
@return All items in the <code>MPTokenReferenceFrame</code>.
|
||||
*/
|
||||
- (NSArray *)tokens;
|
||||
|
||||
@@ -45,8 +45,8 @@ NSString *const MPIllegalElementExceptionElementKey = @"MPIllegalElementExceptio
|
||||
@brief Private method. Checks whether all objects in the specified array
|
||||
are valid expression elements.
|
||||
|
||||
@discussion If an object is not valid a @c MPIllegalElementException is
|
||||
raised.
|
||||
@discussion If an object is not valid a
|
||||
<code>MPIllegalElementException</code> is raised.
|
||||
|
||||
@param elements
|
||||
The array of objects to be validated.
|
||||
@@ -65,7 +65,7 @@ NSString *const MPIllegalElementExceptionElementKey = @"MPIllegalElementExceptio
|
||||
/*!
|
||||
@method _replaceSymbolsInRange:withElements:
|
||||
@brief Private method. Replaces the symbols in the specified range with
|
||||
the elements from the @c elements array.
|
||||
the elements from the <code>elements</code> array.
|
||||
|
||||
@discussion This is the most primitive mutation method of the @c MPExpression
|
||||
class.
|
||||
@@ -73,7 +73,7 @@ NSString *const MPIllegalElementExceptionElementKey = @"MPIllegalElementExceptio
|
||||
@param range
|
||||
The range of symbols to be replaced. The range is specified in
|
||||
the symbol reference frame. If the range exceeds the receiver's
|
||||
bounds a @c NSRangeException is raised.
|
||||
bounds a <code>NSRangeException</code> is raised.
|
||||
|
||||
@param elements
|
||||
The elements that should replace the symbols in the specified
|
||||
@@ -85,14 +85,15 @@ NSString *const MPIllegalElementExceptionElementKey = @"MPIllegalElementExceptio
|
||||
|
||||
/*!
|
||||
@method _splitElementsAtLocation:insertionIndex:
|
||||
@brief Splits the receiver's elements at the specified @c location.
|
||||
@brief Splits the receiver's elements at the specified
|
||||
<code>location</code>.
|
||||
|
||||
@discussion The split location can be inside a string element. In that case
|
||||
the string is replaced with two other smaller strings.
|
||||
|
||||
Splitting the elements destroys the receiver's integrity. The
|
||||
receiver of this message must also receive a @c -fixElements
|
||||
message soon afterwards.
|
||||
receiver of this message must also receive a
|
||||
<code>-fixElements</code> message soon afterwards.
|
||||
|
||||
@param location
|
||||
The index where to split the elements. Specified in the symbol
|
||||
@@ -105,9 +106,9 @@ NSString *const MPIllegalElementExceptionElementKey = @"MPIllegalElementExceptio
|
||||
element at the location where the elements were previously
|
||||
splitted.
|
||||
|
||||
@return @c YES if a string element was split into two smaller strings, @c
|
||||
NO if the split @c location corresponds to a location between two
|
||||
elements.
|
||||
@return @c YES if a string element was split into two smaller strings,
|
||||
<code>NO</code> if the split <code>location</code> corresponds to
|
||||
a location between two elements.
|
||||
*/
|
||||
- (BOOL)_splitElementsAtLocation:(NSUInteger)location
|
||||
insertionIndex:(NSUInteger *)insertionIndex;
|
||||
@@ -635,26 +636,6 @@ NSString *const MPIllegalElementExceptionElementKey = @"MPIllegalElementExceptio
|
||||
#pragma mark Evaluating Expressions
|
||||
|
||||
|
||||
- (NSDecimalNumber *)evaluateWithErrors:(NSArray *__autoreleasing *)errors
|
||||
{
|
||||
NSArray *parsingErrors;
|
||||
MPParsedExpression *parsedExpression = [self parse:&parsingErrors];
|
||||
NSError *evaluationError;
|
||||
NSDecimalNumber *result = parsedExpression ? [parsedExpression evaluate:&evaluationError] : nil;
|
||||
if (errors && (parsedExpression || evaluationError)) {
|
||||
NSMutableArray *localErrors = [[NSMutableArray alloc] initWithCapacity:parsingErrors.count+1];
|
||||
if (parsingErrors) {
|
||||
[localErrors addObjectsFromArray:parsingErrors];
|
||||
}
|
||||
if (evaluationError) {
|
||||
[localErrors addObject:evaluationError];
|
||||
}
|
||||
*errors = localErrors;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
- (MPParsedExpression *)parse:(NSArray *__autoreleasing *)errors
|
||||
{
|
||||
return [self parseExpectingVariable:NO
|
||||
@@ -33,9 +33,11 @@
|
||||
return [NSIndexSet indexSetWithIndex:0];
|
||||
}
|
||||
|
||||
#warning Broken Power Layout
|
||||
- (NSPoint)offsetOfChildLayoutAtIndex:(NSUInteger)index
|
||||
{
|
||||
CGFloat y = (self.baseBounds.size.height + self.baseBounds.origin.y) / 2;
|
||||
NSRect exponentBounds = [self childLayoutAtIndex:0].bounds;
|
||||
CGFloat y = (self.baseBounds.size.height + self.baseBounds.origin.y) - ((exponentBounds.size.height + exponentBounds.origin.y) / 2);
|
||||
return NSMakePoint(kPowerFunctionExponentXOffset, y);
|
||||
}
|
||||
|
||||
@@ -52,13 +54,14 @@
|
||||
- (NSRect)generateBounds
|
||||
{
|
||||
NSRect exponentBounds = [self childLayoutAtIndex:0].bounds;
|
||||
CGFloat y = self.baseBounds.origin.y;
|
||||
CGFloat height = -y + [self offsetOfChildLayoutAtIndex:0].y + exponentBounds.size.height + exponentBounds.origin.y;
|
||||
CGFloat height = [self offsetOfChildLayoutAtIndex:0].y + exponentBounds.size.height + exponentBounds.origin.y;
|
||||
CGFloat width = kPowerFunctionExponentXOffset + exponentBounds.size.width + kPowerFunctionTrailingOffset;
|
||||
return NSMakeRect(0, y, width, height);
|
||||
return NSMakeRect(0, 0, width, height);
|
||||
}
|
||||
|
||||
- (void)draw
|
||||
{}
|
||||
{
|
||||
[[NSBezierPath bezierPathWithRect:self.bounds] stroke];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -8,105 +8,105 @@
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
3B52CEC119BB9FA900CEDCFC /* MathKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B85830D19BB5E5500D76A8D /* MathKit.framework */; };
|
||||
3B52CEDC19BEE63000CEDCFC /* NSRegularExpression+MPParsingAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B52CEDA19BEE63000CEDCFC /* NSRegularExpression+MPParsingAdditions.h */; };
|
||||
3B52CEDD19BEE63000CEDCFC /* NSRegularExpression+MPParsingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B52CEDB19BEE63000CEDCFC /* NSRegularExpression+MPParsingAdditions.m */; };
|
||||
3B591BBB19C58D000061D86B /* MPMathRules.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B591BB919C58D000061D86B /* MPMathRules.h */; };
|
||||
3B591BBC19C58D000061D86B /* MPMathRules.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B591BBA19C58D000061D86B /* MPMathRules.m */; };
|
||||
3B5FF73B19DB2FF500C8348A /* MPPowerFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B5FF73919DB2FF500C8348A /* MPPowerFunction.h */; };
|
||||
3B5FF73C19DB2FF500C8348A /* MPPowerFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B5FF73A19DB2FF500C8348A /* MPPowerFunction.m */; };
|
||||
3B69B66C19DB41B90028E608 /* MPPowerFunctionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B69B66A19DB41B90028E608 /* MPPowerFunctionLayout.h */; };
|
||||
3B69B66D19DB41B90028E608 /* MPPowerFunctionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B69B66B19DB41B90028E608 /* MPPowerFunctionLayout.m */; };
|
||||
3B69B67C19E4915E0028E608 /* MPFractionFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B69B67A19E4915E0028E608 /* MPFractionFunction.h */; };
|
||||
3B69B67D19E4915E0028E608 /* MPFractionFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B69B67B19E4915E0028E608 /* MPFractionFunction.m */; };
|
||||
3B69B68019E493630028E608 /* MPFractionFunctionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B69B67E19E493630028E608 /* MPFractionFunctionLayout.h */; };
|
||||
3B69B68119E493630028E608 /* MPFractionFunctionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B69B67F19E493630028E608 /* MPFractionFunctionLayout.m */; };
|
||||
3B69B69D19E6F2110028E608 /* MPNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B69B69B19E6F2110028E608 /* MPNumber.h */; };
|
||||
3B69B69E19E6F2110028E608 /* MPNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B69B69C19E6F2110028E608 /* MPNumber.m */; };
|
||||
3B69B6A119E6F2420028E608 /* MPVariable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B69B69F19E6F2420028E608 /* MPVariable.h */; };
|
||||
3B69B6A219E6F2420028E608 /* MPVariable.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B69B6A019E6F2420028E608 /* MPVariable.m */; };
|
||||
3B69B6BD19E948740028E608 /* MPElementaryFunctionTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B69B6BB19E948740028E608 /* MPElementaryFunctionTerm.h */; };
|
||||
3B69B6BE19E948740028E608 /* MPElementaryFunctionTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B69B6BC19E948740028E608 /* MPElementaryFunctionTerm.m */; };
|
||||
3B6338351A3A4B5800698BFB /* MPExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338321A3A4B5800698BFB /* MPExpression.h */; };
|
||||
3B6338361A3A4B5800698BFB /* MPExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338331A3A4B5800698BFB /* MPExpression.m */; };
|
||||
3B6338371A3A4B5800698BFB /* MPExpressionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338341A3A4B5800698BFB /* MPExpressionElement.h */; };
|
||||
3B63383A1A3A4B7600698BFB /* NSString+MPExpressionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338381A3A4B7600698BFB /* NSString+MPExpressionElement.h */; };
|
||||
3B63383B1A3A4B7600698BFB /* NSString+MPExpressionElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338391A3A4B7600698BFB /* NSString+MPExpressionElement.m */; };
|
||||
3B63383E1A3A4B8500698BFB /* MPToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63383C1A3A4B8500698BFB /* MPToken.h */; };
|
||||
3B63383F1A3A4B8500698BFB /* MPToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B63383D1A3A4B8500698BFB /* MPToken.m */; };
|
||||
3B6338421A3A4B9500698BFB /* MPFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338401A3A4B9500698BFB /* MPFunction.h */; };
|
||||
3B6338431A3A4B9500698BFB /* MPFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338411A3A4B9500698BFB /* MPFunction.m */; };
|
||||
3B6338461A3A4BA500698BFB /* MPExpressionTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338441A3A4BA500698BFB /* MPExpressionTokenizer.h */; };
|
||||
3B6338471A3A4BA500698BFB /* MPExpressionTokenizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338451A3A4BA500698BFB /* MPExpressionTokenizer.m */; };
|
||||
3B63384A1A3A4BB300698BFB /* MPFunction+MPToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338481A3A4BB300698BFB /* MPFunction+MPToken.h */; };
|
||||
3B63384B1A3A4BB300698BFB /* MPFunction+MPToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338491A3A4BB300698BFB /* MPFunction+MPToken.m */; };
|
||||
3B6338501A3A4BD100698BFB /* MPParenthesisFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63384C1A3A4BD100698BFB /* MPParenthesisFunction.h */; };
|
||||
3B6338511A3A4BD100698BFB /* MPParenthesisFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B63384D1A3A4BD100698BFB /* MPParenthesisFunction.m */; };
|
||||
3B6338521A3A4BD100698BFB /* MPSumFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63384E1A3A4BD100698BFB /* MPSumFunction.h */; };
|
||||
3B6338531A3A4BD100698BFB /* MPSumFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B63384F1A3A4BD100698BFB /* MPSumFunction.m */; };
|
||||
3B6338581A3A4BE800698BFB /* MPFractionFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338541A3A4BE800698BFB /* MPFractionFunction.h */; };
|
||||
3B6338591A3A4BE800698BFB /* MPFractionFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338551A3A4BE800698BFB /* MPFractionFunction.m */; };
|
||||
3B63385A1A3A4BE800698BFB /* MPPowerFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338561A3A4BE800698BFB /* MPPowerFunction.h */; };
|
||||
3B63385B1A3A4BE800698BFB /* MPPowerFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338571A3A4BE800698BFB /* MPPowerFunction.m */; };
|
||||
3B63385E1A3A4C0700698BFB /* MPExpressionParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63385C1A3A4C0700698BFB /* MPExpressionParser.h */; };
|
||||
3B63385F1A3A4C0700698BFB /* MPExpressionParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B63385D1A3A4C0700698BFB /* MPExpressionParser.m */; };
|
||||
3B63386C1A3A4C2B00698BFB /* MPNegatedTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338601A3A4C2B00698BFB /* MPNegatedTerm.h */; };
|
||||
3B63386D1A3A4C2B00698BFB /* MPNegatedTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338611A3A4C2B00698BFB /* MPNegatedTerm.m */; };
|
||||
3B63386E1A3A4C2B00698BFB /* MPNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338621A3A4C2B00698BFB /* MPNumber.h */; };
|
||||
3B63386F1A3A4C2B00698BFB /* MPNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338631A3A4C2B00698BFB /* MPNumber.m */; };
|
||||
3B6338701A3A4C2B00698BFB /* MPParenthesisTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338641A3A4C2B00698BFB /* MPParenthesisTerm.h */; };
|
||||
3B6338711A3A4C2B00698BFB /* MPParenthesisTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338651A3A4C2B00698BFB /* MPParenthesisTerm.m */; };
|
||||
3B6338721A3A4C2B00698BFB /* MPParsedExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338661A3A4C2B00698BFB /* MPParsedExpression.h */; };
|
||||
3B6338731A3A4C2B00698BFB /* MPParsedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338671A3A4C2B00698BFB /* MPParsedExpression.m */; };
|
||||
3B6338741A3A4C2B00698BFB /* MPPowerTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338681A3A4C2B00698BFB /* MPPowerTerm.h */; };
|
||||
3B6338751A3A4C2B00698BFB /* MPPowerTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338691A3A4C2B00698BFB /* MPPowerTerm.m */; };
|
||||
3B6338761A3A4C2B00698BFB /* MPProductTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63386A1A3A4C2B00698BFB /* MPProductTerm.h */; };
|
||||
3B6338771A3A4C2B00698BFB /* MPProductTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B63386B1A3A4C2B00698BFB /* MPProductTerm.m */; };
|
||||
3B63387E1A3A4C7E00698BFB /* MPSumTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338781A3A4C7E00698BFB /* MPSumTerm.h */; };
|
||||
3B63387F1A3A4C7E00698BFB /* MPSumTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338791A3A4C7E00698BFB /* MPSumTerm.m */; };
|
||||
3B6338801A3A4C7E00698BFB /* MPTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63387A1A3A4C7E00698BFB /* MPTerm.h */; };
|
||||
3B6338811A3A4C7E00698BFB /* MPTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B63387B1A3A4C7E00698BFB /* MPTerm.m */; };
|
||||
3B6338821A3A4C7E00698BFB /* MPVariable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63387C1A3A4C7E00698BFB /* MPVariable.h */; };
|
||||
3B6338831A3A4C7E00698BFB /* MPVariable.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B63387D1A3A4C7E00698BFB /* MPVariable.m */; };
|
||||
3B6338861A3A4CA500698BFB /* MPFactorialTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338841A3A4CA500698BFB /* MPFactorialTerm.h */; };
|
||||
3B6338871A3A4CA500698BFB /* MPFactorialTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338851A3A4CA500698BFB /* MPFactorialTerm.m */; };
|
||||
3B63388A1A3A4CAF00698BFB /* MPElementaryFunctionTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338881A3A4CAF00698BFB /* MPElementaryFunctionTerm.h */; };
|
||||
3B63388B1A3A4CAF00698BFB /* MPElementaryFunctionTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338891A3A4CAF00698BFB /* MPElementaryFunctionTerm.m */; };
|
||||
3B63388E1A3A4CBE00698BFB /* MPFunctionTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63388C1A3A4CBE00698BFB /* MPFunctionTerm.h */; };
|
||||
3B63388F1A3A4CBE00698BFB /* MPFunctionTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B63388D1A3A4CBE00698BFB /* MPFunctionTerm.m */; };
|
||||
3B6338921A3A4CCA00698BFB /* MPEvaluationContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338901A3A4CCA00698BFB /* MPEvaluationContext.h */; };
|
||||
3B6338931A3A4CCA00698BFB /* MPEvaluationContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338911A3A4CCA00698BFB /* MPEvaluationContext.m */; };
|
||||
3B6338961A3A4CD100698BFB /* MPMathRules.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338941A3A4CD100698BFB /* MPMathRules.h */; };
|
||||
3B6338971A3A4CD100698BFB /* MPMathRules.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338951A3A4CD100698BFB /* MPMathRules.m */; };
|
||||
3B63389A1A3A4CE100698BFB /* MPSumFunctionTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338981A3A4CE100698BFB /* MPSumFunctionTerm.h */; };
|
||||
3B63389B1A3A4CE100698BFB /* MPSumFunctionTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338991A3A4CE100698BFB /* MPSumFunctionTerm.m */; };
|
||||
3B63389E1A3A4CEF00698BFB /* MPFractionTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B63389C1A3A4CEF00698BFB /* MPFractionTerm.h */; };
|
||||
3B63389F1A3A4CEF00698BFB /* MPFractionTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B63389D1A3A4CEF00698BFB /* MPFractionTerm.m */; };
|
||||
3B6338A21A3A4CFC00698BFB /* MPRangePath.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338A01A3A4CFC00698BFB /* MPRangePath.h */; };
|
||||
3B6338A31A3A4CFC00698BFB /* MPRangePath.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338A11A3A4CFC00698BFB /* MPRangePath.m */; };
|
||||
3B6338A51A3A4D1200698BFB /* Fonts in Resources */ = {isa = PBXBuildFile; fileRef = 3B6338A41A3A4D1200698BFB /* Fonts */; };
|
||||
3B6338A81A3A4D2600698BFB /* NSIndexPath+MPAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338A61A3A4D2600698BFB /* NSIndexPath+MPAdditions.h */; };
|
||||
3B6338A91A3A4D2600698BFB /* NSIndexPath+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338A71A3A4D2600698BFB /* NSIndexPath+MPAdditions.m */; };
|
||||
3B6338AC1A3A4D3000698BFB /* NSRegularExpression+MPParsingAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338AA1A3A4D3000698BFB /* NSRegularExpression+MPParsingAdditions.h */; };
|
||||
3B6338AD1A3A4D3000698BFB /* NSRegularExpression+MPParsingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338AB1A3A4D3000698BFB /* NSRegularExpression+MPParsingAdditions.m */; };
|
||||
3B6338B01A3A4D6A00698BFB /* MPExpressionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338AE1A3A4D6A00698BFB /* MPExpressionView.h */; };
|
||||
3B6338B11A3A4D6A00698BFB /* MPExpressionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338AF1A3A4D6A00698BFB /* MPExpressionView.m */; };
|
||||
3B6338B41A3A4D7900698BFB /* MPExpressionStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338B21A3A4D7900698BFB /* MPExpressionStorage.h */; };
|
||||
3B6338B51A3A4D7900698BFB /* MPExpressionStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338B31A3A4D7900698BFB /* MPExpressionStorage.m */; };
|
||||
3B6338BB1A3A4D9400698BFB /* MPFunctionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338B61A3A4D9400698BFB /* MPFunctionsViewController.h */; };
|
||||
3B6338BC1A3A4D9400698BFB /* MPFunctionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338B71A3A4D9400698BFB /* MPFunctionsViewController.m */; };
|
||||
3B6338BD1A3A4D9400698BFB /* MPFunctionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3B6338B81A3A4D9400698BFB /* MPFunctionsViewController.xib */; };
|
||||
3B6338BE1A3A4D9400698BFB /* MPWhiteView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338B91A3A4D9400698BFB /* MPWhiteView.h */; };
|
||||
3B6338BF1A3A4D9400698BFB /* MPWhiteView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338BA1A3A4D9400698BFB /* MPWhiteView.m */; };
|
||||
3B6338C21A3A4DA500698BFB /* MPLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338C01A3A4DA500698BFB /* MPLayout.h */; };
|
||||
3B6338C31A3A4DA500698BFB /* MPLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338C11A3A4DA500698BFB /* MPLayout.m */; };
|
||||
3B6338C61A3A4DB600698BFB /* MPExpressionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338C41A3A4DB600698BFB /* MPExpressionLayout.h */; };
|
||||
3B6338C71A3A4DB600698BFB /* MPExpressionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338C51A3A4DB600698BFB /* MPExpressionLayout.m */; };
|
||||
3B6338CA1A3A4DC400698BFB /* MPFunctionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338C81A3A4DC400698BFB /* MPFunctionLayout.h */; };
|
||||
3B6338CB1A3A4DC400698BFB /* MPFunctionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338C91A3A4DC400698BFB /* MPFunctionLayout.m */; };
|
||||
3B6338D41A3A4DE100698BFB /* MPFractionFunctionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338CC1A3A4DE100698BFB /* MPFractionFunctionLayout.h */; };
|
||||
3B6338D51A3A4DE100698BFB /* MPFractionFunctionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338CD1A3A4DE100698BFB /* MPFractionFunctionLayout.m */; };
|
||||
3B6338D61A3A4DE100698BFB /* MPParenthesisFunctionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338CE1A3A4DE100698BFB /* MPParenthesisFunctionLayout.h */; };
|
||||
3B6338D71A3A4DE100698BFB /* MPParenthesisFunctionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338CF1A3A4DE100698BFB /* MPParenthesisFunctionLayout.m */; };
|
||||
3B6338D81A3A4DE100698BFB /* MPPowerFunctionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338D01A3A4DE100698BFB /* MPPowerFunctionLayout.h */; };
|
||||
3B6338D91A3A4DE100698BFB /* MPPowerFunctionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338D11A3A4DE100698BFB /* MPPowerFunctionLayout.m */; };
|
||||
3B6338DA1A3A4DE100698BFB /* MPSumFunctionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6338D21A3A4DE100698BFB /* MPSumFunctionLayout.h */; };
|
||||
3B6338DB1A3A4DE100698BFB /* MPSumFunctionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6338D31A3A4DE100698BFB /* MPSumFunctionLayout.m */; };
|
||||
3B7172EA19C7147000FEAA5B /* FunctionsButtonDisclosure@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3B7172E819C7147000FEAA5B /* FunctionsButtonDisclosure@2x.png */; };
|
||||
3B7172EB19C7147000FEAA5B /* FunctionsButtonDisclosure.png in Resources */ = {isa = PBXBuildFile; fileRef = 3B7172E919C7147000FEAA5B /* FunctionsButtonDisclosure.png */; };
|
||||
3B7172EE19C9FA8E00FEAA5B /* MPParenthesisFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7172EC19C9FA8E00FEAA5B /* MPParenthesisFunction.h */; };
|
||||
3B7172EF19C9FA8E00FEAA5B /* MPParenthesisFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B7172ED19C9FA8E00FEAA5B /* MPParenthesisFunction.m */; };
|
||||
3B7172F219C9FC6700FEAA5B /* MPParenthesisFunctionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7172F019C9FC6700FEAA5B /* MPParenthesisFunctionLayout.h */; };
|
||||
3B7172F319C9FC6700FEAA5B /* MPParenthesisFunctionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B7172F119C9FC6700FEAA5B /* MPParenthesisFunctionLayout.m */; };
|
||||
3B74BFB319A4C51800E5B5DE /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B74BFB219A4C51800E5B5DE /* CoreText.framework */; };
|
||||
3B78C85419C2DA5300516335 /* MPEvaluationContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B78C85219C2DA5300516335 /* MPEvaluationContext.h */; };
|
||||
3B78C85519C2DA5300516335 /* MPEvaluationContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B78C85319C2DA5300516335 /* MPEvaluationContext.m */; };
|
||||
3B7B3A1819CC44E4005849E5 /* MPExpressionTokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7B3A1619CC44E4005849E5 /* MPExpressionTokenizer.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
3B7B3A1919CC44E4005849E5 /* MPExpressionTokenizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B7B3A1719CC44E4005849E5 /* MPExpressionTokenizer.m */; };
|
||||
3B7B3A2C19CC467E005849E5 /* MPToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7B3A2A19CC467E005849E5 /* MPToken.h */; };
|
||||
3B7B3A2D19CC467E005849E5 /* MPToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B7B3A2B19CC467E005849E5 /* MPToken.m */; };
|
||||
3B7B3A5419CC50B1005849E5 /* MPFunction+MPToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7B3A5219CC50B1005849E5 /* MPFunction+MPToken.h */; };
|
||||
3B7B3A5519CC50B1005849E5 /* MPFunction+MPToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B7B3A5319CC50B1005849E5 /* MPFunction+MPToken.m */; };
|
||||
3B85830E19BB5E5500D76A8D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BF9976E18DE623E009CF6C4 /* Cocoa.framework */; };
|
||||
3B85831419BB5E5500D76A8D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3B85831219BB5E5500D76A8D /* InfoPlist.strings */; };
|
||||
3B85831E19BB5E5500D76A8D /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BF9979018DE623E009CF6C4 /* XCTest.framework */; };
|
||||
3B85831F19BB5E5500D76A8D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BF9976E18DE623E009CF6C4 /* Cocoa.framework */; };
|
||||
3B85832219BB5E5500D76A8D /* MathKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B85830D19BB5E5500D76A8D /* MathKit.framework */; };
|
||||
3B85832819BB5E5500D76A8D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3B85832619BB5E5500D76A8D /* InfoPlist.strings */; };
|
||||
3B85833819BB63BD00D76A8D /* MPExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BFAC38D1997B61300B3EF67 /* MPExpression.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3B85833919BB63C500D76A8D /* MPExpressionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BFAC3961997B67400B3EF67 /* MPExpressionElement.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3B85833A19BB63D400D76A8D /* MPFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B87E35E19009D5F00259938 /* MPFunction.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3B85834119BB651E00D76A8D /* MPRangePath.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B87E35B1900933200259938 /* MPRangePath.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3B85834319BB653700D76A8D /* MPSumFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BB09EC71906FD830080A5ED /* MPSumFunction.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3B85834419BB654D00D76A8D /* NSString+MPExpressionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BFAC39A1997BC7600B3EF67 /* NSString+MPExpressionElement.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3B85834519BB655200D76A8D /* NSIndexPath+MPAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BB09EDC190728220080A5ED /* NSIndexPath+MPAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3B85834619BB655C00D76A8D /* MPExpressionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B87E3541900856F00259938 /* MPExpressionView.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3B85834719BB655F00D76A8D /* MPExpressionStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BB09EB01905DE500080A5ED /* MPExpressionStorage.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3B85834819BB65B600D76A8D /* MPLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B528D0D199417740054DB5F /* MPLayout.h */; };
|
||||
3B85834919BB65B600D76A8D /* MPExpressionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B528D0E199417E10054DB5F /* MPExpressionLayout.h */; };
|
||||
3B85834A19BB65B600D76A8D /* MPFunctionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B528D11199417E90054DB5F /* MPFunctionLayout.h */; };
|
||||
3B85834B19BB65B600D76A8D /* MPSumFunctionLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BB09EDF190736160080A5ED /* MPSumFunctionLayout.h */; };
|
||||
3B85834C19BB661100D76A8D /* MathKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B85833219BB5F2D00D76A8D /* MathKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3B9265C71A2147DF00AD2809 /* MPNegatedTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B9265C51A2147DF00AD2809 /* MPNegatedTerm.h */; };
|
||||
3B9265C81A2147DF00AD2809 /* MPNegatedTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B9265C61A2147DF00AD2809 /* MPNegatedTerm.m */; };
|
||||
3BBEA92C19BB680B00133766 /* MathKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3B85830D19BB5E5500D76A8D /* MathKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
3BBEA93519BB79A700133766 /* MPExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BFAC38E1997B61300B3EF67 /* MPExpression.m */; };
|
||||
3BBEA93619BB79A700133766 /* MPFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B87E35F19009D5F00259938 /* MPFunction.m */; };
|
||||
3BBEA93A19BB79A700133766 /* MPSumFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BB09EC81906FD830080A5ED /* MPSumFunction.m */; };
|
||||
3BBEA93B19BB79A700133766 /* MPRangePath.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B87E35C1900933200259938 /* MPRangePath.m */; };
|
||||
3BBEA93D19BB79A700133766 /* NSString+MPExpressionElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BFAC39B1997BC7600B3EF67 /* NSString+MPExpressionElement.m */; };
|
||||
3BBEA93E19BB79A700133766 /* NSIndexPath+MPAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BB09EDD190728220080A5ED /* NSIndexPath+MPAdditions.m */; };
|
||||
3BBEA93F19BB79A700133766 /* MPExpressionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B87E3551900856F00259938 /* MPExpressionView.m */; };
|
||||
3BBEA94019BB79A700133766 /* MPExpressionStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BB09EB11905DE500080A5ED /* MPExpressionStorage.m */; };
|
||||
3BBEA94119BB79A700133766 /* MPLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B688D9819982DF50006B4AB /* MPLayout.m */; };
|
||||
3BBEA94219BB79A700133766 /* MPExpressionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B528D0F199417E10054DB5F /* MPExpressionLayout.m */; };
|
||||
3BBEA94319BB79A700133766 /* MPFunctionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B528D12199417E90054DB5F /* MPFunctionLayout.m */; };
|
||||
3BBEA94419BB79A700133766 /* MPSumFunctionLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BB09EE0190736160080A5ED /* MPSumFunctionLayout.m */; };
|
||||
3BBEA94F19BB79EF00133766 /* MPExpressionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B0F69AB1902A82C00817707 /* MPExpressionTests.m */; };
|
||||
3BBEA95019BB79EF00133766 /* MPRangeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BBBA3941905704200824E74 /* MPRangeTests.m */; };
|
||||
3BC4660B19B2425A0033F13A /* MPDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3BF9978318DE623E009CF6C4 /* MPDocument.xib */; };
|
||||
3BC4661419B245C60033F13A /* Fonts in Resources */ = {isa = PBXBuildFile; fileRef = 3BC4661319B245C60033F13A /* Fonts */; };
|
||||
3BCA0C801A12619500C9E3E0 /* MPTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BCA0C7E1A12619500C9E3E0 /* MPTerm.h */; };
|
||||
3BCA0C811A12619500C9E3E0 /* MPTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BCA0C7F1A12619500C9E3E0 /* MPTerm.m */; };
|
||||
3BCA0C851A1405C000C9E3E0 /* MPFunctionTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BCA0C831A1405C000C9E3E0 /* MPFunctionTerm.h */; };
|
||||
3BCA0C861A1405C000C9E3E0 /* MPFunctionTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BCA0C841A1405C000C9E3E0 /* MPFunctionTerm.m */; };
|
||||
3BEFF74D1A16A4DA00301C0C /* MPSumTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BEFF74B1A16A4DA00301C0C /* MPSumTerm.h */; };
|
||||
3BEFF74E1A16A4DA00301C0C /* MPSumTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BEFF74C1A16A4DA00301C0C /* MPSumTerm.m */; };
|
||||
3BEFF7511A16B06600301C0C /* MPParsedExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BEFF74F1A16B06600301C0C /* MPParsedExpression.h */; };
|
||||
3BEFF7521A16B06600301C0C /* MPParsedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BEFF7501A16B06600301C0C /* MPParsedExpression.m */; };
|
||||
3BEFF7551A17AA3200301C0C /* MPProductTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BEFF7531A17AA3200301C0C /* MPProductTerm.h */; };
|
||||
3BEFF7561A17AA3200301C0C /* MPProductTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BEFF7541A17AA3200301C0C /* MPProductTerm.m */; };
|
||||
3BEFF7621A1804AF00301C0C /* MPFactorialTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BEFF7601A1804AF00301C0C /* MPFactorialTerm.h */; };
|
||||
3BEFF7631A1804AF00301C0C /* MPFactorialTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BEFF7611A1804AF00301C0C /* MPFactorialTerm.m */; };
|
||||
3BEFF7661A18066300301C0C /* MPSumFunctionTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BEFF7641A18066300301C0C /* MPSumFunctionTerm.h */; };
|
||||
3BEFF7671A18066300301C0C /* MPSumFunctionTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BEFF7651A18066300301C0C /* MPSumFunctionTerm.m */; };
|
||||
3BEFF76A1A1807B000301C0C /* MPParenthesisTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BEFF7681A1807B000301C0C /* MPParenthesisTerm.h */; };
|
||||
3BEFF76B1A1807B000301C0C /* MPParenthesisTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BEFF7691A1807B000301C0C /* MPParenthesisTerm.m */; };
|
||||
3BEFF76E1A18083C00301C0C /* MPPowerTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BEFF76C1A18083C00301C0C /* MPPowerTerm.h */; };
|
||||
3BEFF76F1A18083C00301C0C /* MPPowerTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BEFF76D1A18083C00301C0C /* MPPowerTerm.m */; };
|
||||
3BEFF7721A180C8800301C0C /* MPFractionTerm.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BEFF7701A180C8800301C0C /* MPFractionTerm.h */; };
|
||||
3BEFF7731A180C8800301C0C /* MPFractionTerm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BEFF7711A180C8800301C0C /* MPFractionTerm.m */; };
|
||||
3BF54BB91A18D08400883BFA /* MPExpressionParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BF54BB71A18D08400883BFA /* MPExpressionParser.h */; };
|
||||
3BF54BBA1A18D08400883BFA /* MPExpressionParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF54BB81A18D08400883BFA /* MPExpressionParser.m */; };
|
||||
3BF59AFE19D80ECC00E54292 /* MPFunctionsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BF59AFB19D80ECC00E54292 /* MPFunctionsViewController.h */; };
|
||||
3BF59AFF19D80ECC00E54292 /* MPFunctionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF59AFC19D80ECC00E54292 /* MPFunctionsViewController.m */; };
|
||||
3BF59B0019D80ECC00E54292 /* MPFunctionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3BF59AFD19D80ECC00E54292 /* MPFunctionsViewController.xib */; };
|
||||
3BF59B0319D81EE600E54292 /* MPWhiteView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BF59B0119D81EE600E54292 /* MPWhiteView.h */; };
|
||||
3BF59B0419D81EE600E54292 /* MPWhiteView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF59B0219D81EE600E54292 /* MPWhiteView.m */; };
|
||||
3BF9976F18DE623E009CF6C4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BF9976E18DE623E009CF6C4 /* Cocoa.framework */; };
|
||||
3BF9977918DE623E009CF6C4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3BF9977718DE623E009CF6C4 /* InfoPlist.strings */; };
|
||||
3BF9977B18DE623E009CF6C4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF9977A18DE623E009CF6C4 /* main.m */; };
|
||||
@@ -158,45 +158,94 @@
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
3B0F69AB1902A82C00817707 /* MPExpressionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPExpressionTests.m; path = ../MathPadTests/MPExpressionTests.m; sourceTree = "<group>"; };
|
||||
3B528D0D199417740054DB5F /* MPLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPLayout.h; sourceTree = "<group>"; };
|
||||
3B528D0E199417E10054DB5F /* MPExpressionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPExpressionLayout.h; sourceTree = "<group>"; };
|
||||
3B528D0F199417E10054DB5F /* MPExpressionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPExpressionLayout.m; sourceTree = "<group>"; };
|
||||
3B528D11199417E90054DB5F /* MPFunctionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPFunctionLayout.h; sourceTree = "<group>"; };
|
||||
3B528D12199417E90054DB5F /* MPFunctionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFunctionLayout.m; sourceTree = "<group>"; };
|
||||
3B52CEDA19BEE63000CEDCFC /* NSRegularExpression+MPParsingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSRegularExpression+MPParsingAdditions.h"; sourceTree = "<group>"; };
|
||||
3B52CEDB19BEE63000CEDCFC /* NSRegularExpression+MPParsingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSRegularExpression+MPParsingAdditions.m"; sourceTree = "<group>"; };
|
||||
3B591BB919C58D000061D86B /* MPMathRules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPMathRules.h; sourceTree = "<group>"; };
|
||||
3B591BBA19C58D000061D86B /* MPMathRules.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPMathRules.m; sourceTree = "<group>"; };
|
||||
3B5FF73919DB2FF500C8348A /* MPPowerFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPowerFunction.h; sourceTree = "<group>"; };
|
||||
3B5FF73A19DB2FF500C8348A /* MPPowerFunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPowerFunction.m; sourceTree = "<group>"; };
|
||||
3B688D9819982DF50006B4AB /* MPLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPLayout.m; sourceTree = "<group>"; };
|
||||
3B69B66A19DB41B90028E608 /* MPPowerFunctionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPowerFunctionLayout.h; sourceTree = "<group>"; };
|
||||
3B69B66B19DB41B90028E608 /* MPPowerFunctionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPowerFunctionLayout.m; sourceTree = "<group>"; };
|
||||
3B69B67A19E4915E0028E608 /* MPFractionFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPFractionFunction.h; sourceTree = "<group>"; };
|
||||
3B69B67B19E4915E0028E608 /* MPFractionFunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFractionFunction.m; sourceTree = "<group>"; };
|
||||
3B69B67E19E493630028E608 /* MPFractionFunctionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPFractionFunctionLayout.h; sourceTree = "<group>"; };
|
||||
3B69B67F19E493630028E608 /* MPFractionFunctionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFractionFunctionLayout.m; sourceTree = "<group>"; };
|
||||
3B69B69B19E6F2110028E608 /* MPNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPNumber.h; sourceTree = "<group>"; };
|
||||
3B69B69C19E6F2110028E608 /* MPNumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPNumber.m; sourceTree = "<group>"; };
|
||||
3B69B69F19E6F2420028E608 /* MPVariable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPVariable.h; sourceTree = "<group>"; };
|
||||
3B69B6A019E6F2420028E608 /* MPVariable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPVariable.m; sourceTree = "<group>"; };
|
||||
3B69B6BB19E948740028E608 /* MPElementaryFunctionTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPElementaryFunctionTerm.h; sourceTree = "<group>"; };
|
||||
3B69B6BC19E948740028E608 /* MPElementaryFunctionTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPElementaryFunctionTerm.m; sourceTree = "<group>"; };
|
||||
3B6338321A3A4B5800698BFB /* MPExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPExpression.h; path = MathKit/MPExpression.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338331A3A4B5800698BFB /* MPExpression.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPExpression.m; path = MathKit/MPExpression.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338341A3A4B5800698BFB /* MPExpressionElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPExpressionElement.h; path = MathKit/MPExpressionElement.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338381A3A4B7600698BFB /* NSString+MPExpressionElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSString+MPExpressionElement.h"; path = "MathKit/NSString+MPExpressionElement.h"; sourceTree = SOURCE_ROOT; };
|
||||
3B6338391A3A4B7600698BFB /* NSString+MPExpressionElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSString+MPExpressionElement.m"; path = "MathKit/NSString+MPExpressionElement.m"; sourceTree = SOURCE_ROOT; };
|
||||
3B63383C1A3A4B8500698BFB /* MPToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPToken.h; path = MathKit/MPToken.h; sourceTree = SOURCE_ROOT; };
|
||||
3B63383D1A3A4B8500698BFB /* MPToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPToken.m; path = MathKit/MPToken.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338401A3A4B9500698BFB /* MPFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPFunction.h; path = MathKit/MPFunction.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338411A3A4B9500698BFB /* MPFunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPFunction.m; path = MathKit/MPFunction.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338441A3A4BA500698BFB /* MPExpressionTokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPExpressionTokenizer.h; path = MathKit/MPExpressionTokenizer.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338451A3A4BA500698BFB /* MPExpressionTokenizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPExpressionTokenizer.m; path = MathKit/MPExpressionTokenizer.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338481A3A4BB300698BFB /* MPFunction+MPToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "MPFunction+MPToken.h"; path = "MathKit/MPFunction+MPToken.h"; sourceTree = SOURCE_ROOT; };
|
||||
3B6338491A3A4BB300698BFB /* MPFunction+MPToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "MPFunction+MPToken.m"; path = "MathKit/MPFunction+MPToken.m"; sourceTree = SOURCE_ROOT; };
|
||||
3B63384C1A3A4BD100698BFB /* MPParenthesisFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPParenthesisFunction.h; path = MathKit/MPParenthesisFunction.h; sourceTree = SOURCE_ROOT; };
|
||||
3B63384D1A3A4BD100698BFB /* MPParenthesisFunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPParenthesisFunction.m; path = MathKit/MPParenthesisFunction.m; sourceTree = SOURCE_ROOT; };
|
||||
3B63384E1A3A4BD100698BFB /* MPSumFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPSumFunction.h; path = MathKit/MPSumFunction.h; sourceTree = SOURCE_ROOT; };
|
||||
3B63384F1A3A4BD100698BFB /* MPSumFunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPSumFunction.m; path = MathKit/MPSumFunction.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338541A3A4BE800698BFB /* MPFractionFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPFractionFunction.h; path = MathKit/MPFractionFunction.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338551A3A4BE800698BFB /* MPFractionFunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPFractionFunction.m; path = MathKit/MPFractionFunction.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338561A3A4BE800698BFB /* MPPowerFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPPowerFunction.h; path = MathKit/MPPowerFunction.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338571A3A4BE800698BFB /* MPPowerFunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPPowerFunction.m; path = MathKit/MPPowerFunction.m; sourceTree = SOURCE_ROOT; };
|
||||
3B63385C1A3A4C0700698BFB /* MPExpressionParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPExpressionParser.h; path = MathKit/MPExpressionParser.h; sourceTree = SOURCE_ROOT; };
|
||||
3B63385D1A3A4C0700698BFB /* MPExpressionParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPExpressionParser.m; path = MathKit/MPExpressionParser.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338601A3A4C2B00698BFB /* MPNegatedTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPNegatedTerm.h; path = MathKit/MPNegatedTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338611A3A4C2B00698BFB /* MPNegatedTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPNegatedTerm.m; path = MathKit/MPNegatedTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338621A3A4C2B00698BFB /* MPNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPNumber.h; path = MathKit/MPNumber.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338631A3A4C2B00698BFB /* MPNumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPNumber.m; path = MathKit/MPNumber.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338641A3A4C2B00698BFB /* MPParenthesisTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPParenthesisTerm.h; path = MathKit/MPParenthesisTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338651A3A4C2B00698BFB /* MPParenthesisTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPParenthesisTerm.m; path = MathKit/MPParenthesisTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338661A3A4C2B00698BFB /* MPParsedExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPParsedExpression.h; path = MathKit/MPParsedExpression.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338671A3A4C2B00698BFB /* MPParsedExpression.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPParsedExpression.m; path = MathKit/MPParsedExpression.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338681A3A4C2B00698BFB /* MPPowerTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPPowerTerm.h; path = MathKit/MPPowerTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338691A3A4C2B00698BFB /* MPPowerTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPPowerTerm.m; path = MathKit/MPPowerTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B63386A1A3A4C2B00698BFB /* MPProductTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPProductTerm.h; path = MathKit/MPProductTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B63386B1A3A4C2B00698BFB /* MPProductTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPProductTerm.m; path = MathKit/MPProductTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338781A3A4C7E00698BFB /* MPSumTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPSumTerm.h; path = MathKit/MPSumTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338791A3A4C7E00698BFB /* MPSumTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPSumTerm.m; path = MathKit/MPSumTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B63387A1A3A4C7E00698BFB /* MPTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPTerm.h; path = MathKit/MPTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B63387B1A3A4C7E00698BFB /* MPTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPTerm.m; path = MathKit/MPTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B63387C1A3A4C7E00698BFB /* MPVariable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPVariable.h; path = MathKit/MPVariable.h; sourceTree = SOURCE_ROOT; };
|
||||
3B63387D1A3A4C7E00698BFB /* MPVariable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPVariable.m; path = MathKit/MPVariable.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338841A3A4CA500698BFB /* MPFactorialTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPFactorialTerm.h; path = MathKit/MPFactorialTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338851A3A4CA500698BFB /* MPFactorialTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPFactorialTerm.m; path = MathKit/MPFactorialTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338881A3A4CAF00698BFB /* MPElementaryFunctionTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPElementaryFunctionTerm.h; path = MathKit/MPElementaryFunctionTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338891A3A4CAF00698BFB /* MPElementaryFunctionTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPElementaryFunctionTerm.m; path = MathKit/MPElementaryFunctionTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B63388C1A3A4CBE00698BFB /* MPFunctionTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPFunctionTerm.h; path = MathKit/MPFunctionTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B63388D1A3A4CBE00698BFB /* MPFunctionTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPFunctionTerm.m; path = MathKit/MPFunctionTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338901A3A4CCA00698BFB /* MPEvaluationContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPEvaluationContext.h; path = MathKit/MPEvaluationContext.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338911A3A4CCA00698BFB /* MPEvaluationContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPEvaluationContext.m; path = MathKit/MPEvaluationContext.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338941A3A4CD100698BFB /* MPMathRules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPMathRules.h; path = MathKit/MPMathRules.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338951A3A4CD100698BFB /* MPMathRules.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPMathRules.m; path = MathKit/MPMathRules.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338981A3A4CE100698BFB /* MPSumFunctionTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPSumFunctionTerm.h; path = MathKit/MPSumFunctionTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338991A3A4CE100698BFB /* MPSumFunctionTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPSumFunctionTerm.m; path = MathKit/MPSumFunctionTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B63389C1A3A4CEF00698BFB /* MPFractionTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPFractionTerm.h; path = MathKit/MPFractionTerm.h; sourceTree = SOURCE_ROOT; };
|
||||
3B63389D1A3A4CEF00698BFB /* MPFractionTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPFractionTerm.m; path = MathKit/MPFractionTerm.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338A01A3A4CFC00698BFB /* MPRangePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPRangePath.h; path = MathKit/MPRangePath.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338A11A3A4CFC00698BFB /* MPRangePath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPRangePath.m; path = MathKit/MPRangePath.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338A41A3A4D1200698BFB /* Fonts */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Fonts; sourceTree = "<group>"; };
|
||||
3B6338A61A3A4D2600698BFB /* NSIndexPath+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSIndexPath+MPAdditions.h"; path = "MathKit/NSIndexPath+MPAdditions.h"; sourceTree = SOURCE_ROOT; };
|
||||
3B6338A71A3A4D2600698BFB /* NSIndexPath+MPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSIndexPath+MPAdditions.m"; path = "MathKit/NSIndexPath+MPAdditions.m"; sourceTree = SOURCE_ROOT; };
|
||||
3B6338AA1A3A4D3000698BFB /* NSRegularExpression+MPParsingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSRegularExpression+MPParsingAdditions.h"; path = "MathKit/NSRegularExpression+MPParsingAdditions.h"; sourceTree = SOURCE_ROOT; };
|
||||
3B6338AB1A3A4D3000698BFB /* NSRegularExpression+MPParsingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSRegularExpression+MPParsingAdditions.m"; path = "MathKit/NSRegularExpression+MPParsingAdditions.m"; sourceTree = SOURCE_ROOT; };
|
||||
3B6338AE1A3A4D6A00698BFB /* MPExpressionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPExpressionView.h; sourceTree = "<group>"; };
|
||||
3B6338AF1A3A4D6A00698BFB /* MPExpressionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPExpressionView.m; sourceTree = "<group>"; };
|
||||
3B6338B21A3A4D7900698BFB /* MPExpressionStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPExpressionStorage.h; sourceTree = "<group>"; };
|
||||
3B6338B31A3A4D7900698BFB /* MPExpressionStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPExpressionStorage.m; sourceTree = "<group>"; };
|
||||
3B6338B61A3A4D9400698BFB /* MPFunctionsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPFunctionsViewController.h; path = MathKit/MPFunctionsViewController.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338B71A3A4D9400698BFB /* MPFunctionsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPFunctionsViewController.m; path = MathKit/MPFunctionsViewController.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338B81A3A4D9400698BFB /* MPFunctionsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MPFunctionsViewController.xib; path = MathKit/MPFunctionsViewController.xib; sourceTree = SOURCE_ROOT; };
|
||||
3B6338B91A3A4D9400698BFB /* MPWhiteView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPWhiteView.h; path = MathKit/MPWhiteView.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338BA1A3A4D9400698BFB /* MPWhiteView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPWhiteView.m; path = MathKit/MPWhiteView.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338C01A3A4DA500698BFB /* MPLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPLayout.h; path = MathKit/MPLayout.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338C11A3A4DA500698BFB /* MPLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPLayout.m; path = MathKit/MPLayout.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338C41A3A4DB600698BFB /* MPExpressionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPExpressionLayout.h; path = MathKit/MPExpressionLayout.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338C51A3A4DB600698BFB /* MPExpressionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPExpressionLayout.m; path = MathKit/MPExpressionLayout.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338C81A3A4DC400698BFB /* MPFunctionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPFunctionLayout.h; path = MathKit/MPFunctionLayout.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338C91A3A4DC400698BFB /* MPFunctionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPFunctionLayout.m; path = MathKit/MPFunctionLayout.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338CC1A3A4DE100698BFB /* MPFractionFunctionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPFractionFunctionLayout.h; path = MathKit/MPFractionFunctionLayout.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338CD1A3A4DE100698BFB /* MPFractionFunctionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPFractionFunctionLayout.m; path = MathKit/MPFractionFunctionLayout.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338CE1A3A4DE100698BFB /* MPParenthesisFunctionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPParenthesisFunctionLayout.h; path = MathKit/MPParenthesisFunctionLayout.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338CF1A3A4DE100698BFB /* MPParenthesisFunctionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPParenthesisFunctionLayout.m; path = MathKit/MPParenthesisFunctionLayout.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338D01A3A4DE100698BFB /* MPPowerFunctionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPPowerFunctionLayout.h; path = MathKit/MPPowerFunctionLayout.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338D11A3A4DE100698BFB /* MPPowerFunctionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPPowerFunctionLayout.m; path = MathKit/MPPowerFunctionLayout.m; sourceTree = SOURCE_ROOT; };
|
||||
3B6338D21A3A4DE100698BFB /* MPSumFunctionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPSumFunctionLayout.h; path = MathKit/MPSumFunctionLayout.h; sourceTree = SOURCE_ROOT; };
|
||||
3B6338D31A3A4DE100698BFB /* MPSumFunctionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPSumFunctionLayout.m; path = MathKit/MPSumFunctionLayout.m; sourceTree = SOURCE_ROOT; };
|
||||
3B7172E819C7147000FEAA5B /* FunctionsButtonDisclosure@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "FunctionsButtonDisclosure@2x.png"; sourceTree = "<group>"; };
|
||||
3B7172E919C7147000FEAA5B /* FunctionsButtonDisclosure.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = FunctionsButtonDisclosure.png; sourceTree = "<group>"; };
|
||||
3B7172EC19C9FA8E00FEAA5B /* MPParenthesisFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPParenthesisFunction.h; sourceTree = "<group>"; };
|
||||
3B7172ED19C9FA8E00FEAA5B /* MPParenthesisFunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPParenthesisFunction.m; sourceTree = "<group>"; };
|
||||
3B7172F019C9FC6700FEAA5B /* MPParenthesisFunctionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPParenthesisFunctionLayout.h; sourceTree = "<group>"; };
|
||||
3B7172F119C9FC6700FEAA5B /* MPParenthesisFunctionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPParenthesisFunctionLayout.m; sourceTree = "<group>"; };
|
||||
3B74BFB219A4C51800E5B5DE /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
|
||||
3B78C85219C2DA5300516335 /* MPEvaluationContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPEvaluationContext.h; sourceTree = "<group>"; };
|
||||
3B78C85319C2DA5300516335 /* MPEvaluationContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPEvaluationContext.m; sourceTree = "<group>"; };
|
||||
3B7B3A1619CC44E4005849E5 /* MPExpressionTokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPExpressionTokenizer.h; sourceTree = "<group>"; };
|
||||
3B7B3A1719CC44E4005849E5 /* MPExpressionTokenizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPExpressionTokenizer.m; sourceTree = "<group>"; };
|
||||
3B7B3A2A19CC467E005849E5 /* MPToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPToken.h; sourceTree = "<group>"; };
|
||||
3B7B3A2B19CC467E005849E5 /* MPToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPToken.m; sourceTree = "<group>"; };
|
||||
3B7B3A5219CC50B1005849E5 /* MPFunction+MPToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MPFunction+MPToken.h"; sourceTree = "<group>"; };
|
||||
3B7B3A5319CC50B1005849E5 /* MPFunction+MPToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MPFunction+MPToken.m"; sourceTree = "<group>"; };
|
||||
3B85830D19BB5E5500D76A8D /* MathKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MathKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3B85831119BB5E5500D76A8D /* MathKit-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MathKit-Info.plist"; sourceTree = "<group>"; };
|
||||
3B85831319BB5E5500D76A8D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
@@ -205,53 +254,9 @@
|
||||
3B85832519BB5E5500D76A8D /* MathKitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MathKitTests-Info.plist"; sourceTree = "<group>"; };
|
||||
3B85832719BB5E5500D76A8D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
3B85833219BB5F2D00D76A8D /* MathKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MathKit.h; sourceTree = "<group>"; };
|
||||
3B87E3541900856F00259938 /* MPExpressionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPExpressionView.h; path = ../MathPad/MPExpressionView.h; sourceTree = "<group>"; };
|
||||
3B87E3551900856F00259938 /* MPExpressionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPExpressionView.m; path = ../MathPad/MPExpressionView.m; sourceTree = "<group>"; };
|
||||
3B87E35B1900933200259938 /* MPRangePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPRangePath.h; sourceTree = "<group>"; };
|
||||
3B87E35C1900933200259938 /* MPRangePath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPRangePath.m; sourceTree = "<group>"; };
|
||||
3B87E35E19009D5F00259938 /* MPFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPFunction.h; sourceTree = "<group>"; };
|
||||
3B87E35F19009D5F00259938 /* MPFunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFunction.m; sourceTree = "<group>"; };
|
||||
3B9265C51A2147DF00AD2809 /* MPNegatedTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPNegatedTerm.h; sourceTree = "<group>"; };
|
||||
3B9265C61A2147DF00AD2809 /* MPNegatedTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPNegatedTerm.m; sourceTree = "<group>"; };
|
||||
3BB09EB01905DE500080A5ED /* MPExpressionStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPExpressionStorage.h; path = ../MathPad/MPExpressionStorage.h; sourceTree = "<group>"; };
|
||||
3BB09EB11905DE500080A5ED /* MPExpressionStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPExpressionStorage.m; path = ../MathPad/MPExpressionStorage.m; sourceTree = "<group>"; };
|
||||
3BB09EC71906FD830080A5ED /* MPSumFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSumFunction.h; sourceTree = "<group>"; };
|
||||
3BB09EC81906FD830080A5ED /* MPSumFunction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSumFunction.m; sourceTree = "<group>"; };
|
||||
3BB09EDC190728220080A5ED /* NSIndexPath+MPAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSIndexPath+MPAdditions.h"; sourceTree = "<group>"; };
|
||||
3BB09EDD190728220080A5ED /* NSIndexPath+MPAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSIndexPath+MPAdditions.m"; sourceTree = "<group>"; };
|
||||
3BB09EDF190736160080A5ED /* MPSumFunctionLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSumFunctionLayout.h; sourceTree = "<group>"; };
|
||||
3BB09EE0190736160080A5ED /* MPSumFunctionLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSumFunctionLayout.m; sourceTree = "<group>"; };
|
||||
3BBBA3941905704200824E74 /* MPRangeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPRangeTests.m; path = ../MathPadTests/MPRangeTests.m; sourceTree = "<group>"; };
|
||||
3BC4661319B245C60033F13A /* Fonts */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Fonts; sourceTree = "<group>"; };
|
||||
3BC4661519B365070033F13A /* MPArrayCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPArrayCache.h; sourceTree = "<group>"; };
|
||||
3BC4661619B365070033F13A /* MPArrayCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPArrayCache.m; sourceTree = "<group>"; };
|
||||
3BCA0C7E1A12619500C9E3E0 /* MPTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPTerm.h; sourceTree = "<group>"; };
|
||||
3BCA0C7F1A12619500C9E3E0 /* MPTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPTerm.m; sourceTree = "<group>"; };
|
||||
3BCA0C831A1405C000C9E3E0 /* MPFunctionTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPFunctionTerm.h; sourceTree = "<group>"; };
|
||||
3BCA0C841A1405C000C9E3E0 /* MPFunctionTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFunctionTerm.m; sourceTree = "<group>"; };
|
||||
3BEFF74B1A16A4DA00301C0C /* MPSumTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSumTerm.h; sourceTree = "<group>"; };
|
||||
3BEFF74C1A16A4DA00301C0C /* MPSumTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSumTerm.m; sourceTree = "<group>"; };
|
||||
3BEFF74F1A16B06600301C0C /* MPParsedExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPParsedExpression.h; sourceTree = "<group>"; };
|
||||
3BEFF7501A16B06600301C0C /* MPParsedExpression.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPParsedExpression.m; sourceTree = "<group>"; };
|
||||
3BEFF7531A17AA3200301C0C /* MPProductTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPProductTerm.h; sourceTree = "<group>"; };
|
||||
3BEFF7541A17AA3200301C0C /* MPProductTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPProductTerm.m; sourceTree = "<group>"; };
|
||||
3BEFF7601A1804AF00301C0C /* MPFactorialTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPFactorialTerm.h; sourceTree = "<group>"; };
|
||||
3BEFF7611A1804AF00301C0C /* MPFactorialTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFactorialTerm.m; sourceTree = "<group>"; };
|
||||
3BEFF7641A18066300301C0C /* MPSumFunctionTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSumFunctionTerm.h; sourceTree = "<group>"; };
|
||||
3BEFF7651A18066300301C0C /* MPSumFunctionTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSumFunctionTerm.m; sourceTree = "<group>"; };
|
||||
3BEFF7681A1807B000301C0C /* MPParenthesisTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPParenthesisTerm.h; sourceTree = "<group>"; };
|
||||
3BEFF7691A1807B000301C0C /* MPParenthesisTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPParenthesisTerm.m; sourceTree = "<group>"; };
|
||||
3BEFF76C1A18083C00301C0C /* MPPowerTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPowerTerm.h; sourceTree = "<group>"; };
|
||||
3BEFF76D1A18083C00301C0C /* MPPowerTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPowerTerm.m; sourceTree = "<group>"; };
|
||||
3BEFF7701A180C8800301C0C /* MPFractionTerm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPFractionTerm.h; sourceTree = "<group>"; };
|
||||
3BEFF7711A180C8800301C0C /* MPFractionTerm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFractionTerm.m; sourceTree = "<group>"; };
|
||||
3BF54BB71A18D08400883BFA /* MPExpressionParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPExpressionParser.h; sourceTree = "<group>"; };
|
||||
3BF54BB81A18D08400883BFA /* MPExpressionParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPExpressionParser.m; sourceTree = "<group>"; };
|
||||
3BF59AFB19D80ECC00E54292 /* MPFunctionsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPFunctionsViewController.h; sourceTree = "<group>"; };
|
||||
3BF59AFC19D80ECC00E54292 /* MPFunctionsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFunctionsViewController.m; sourceTree = "<group>"; };
|
||||
3BF59AFD19D80ECC00E54292 /* MPFunctionsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MPFunctionsViewController.xib; sourceTree = "<group>"; };
|
||||
3BF59B0119D81EE600E54292 /* MPWhiteView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPWhiteView.h; sourceTree = "<group>"; };
|
||||
3BF59B0219D81EE600E54292 /* MPWhiteView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPWhiteView.m; sourceTree = "<group>"; };
|
||||
3BF9976B18DE623E009CF6C4 /* MathPad.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MathPad.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3BF9976E18DE623E009CF6C4 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
|
||||
3BF9977118DE623E009CF6C4 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
|
||||
@@ -271,11 +276,6 @@
|
||||
3BF9979018DE623E009CF6C4 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
|
||||
3BF9979718DE623E009CF6C4 /* MathPadTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "MathPadTests-Info.plist"; sourceTree = "<group>"; };
|
||||
3BF9979918DE623E009CF6C4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
3BFAC38D1997B61300B3EF67 /* MPExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPExpression.h; sourceTree = "<group>"; };
|
||||
3BFAC38E1997B61300B3EF67 /* MPExpression.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPExpression.m; sourceTree = "<group>"; };
|
||||
3BFAC3961997B67400B3EF67 /* MPExpressionElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPExpressionElement.h; sourceTree = "<group>"; };
|
||||
3BFAC39A1997BC7600B3EF67 /* NSString+MPExpressionElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+MPExpressionElement.h"; sourceTree = "<group>"; };
|
||||
3BFAC39B1997BC7600B3EF67 /* NSString+MPExpressionElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+MPExpressionElement.m"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -322,6 +322,7 @@
|
||||
3B7172E519C7112C00FEAA5B /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3B6338A41A3A4D1200698BFB /* Fonts */,
|
||||
3B7172E819C7147000FEAA5B /* FunctionsButtonDisclosure@2x.png */,
|
||||
3B7172E919C7147000FEAA5B /* FunctionsButtonDisclosure.png */,
|
||||
);
|
||||
@@ -372,10 +373,10 @@
|
||||
3B85833119BB5EC800D76A8D /* View */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3B87E3541900856F00259938 /* MPExpressionView.h */,
|
||||
3B87E3551900856F00259938 /* MPExpressionView.m */,
|
||||
3BB09EB01905DE500080A5ED /* MPExpressionStorage.h */,
|
||||
3BB09EB11905DE500080A5ED /* MPExpressionStorage.m */,
|
||||
3B6338AE1A3A4D6A00698BFB /* MPExpressionView.h */,
|
||||
3B6338AF1A3A4D6A00698BFB /* MPExpressionView.m */,
|
||||
3B6338B21A3A4D7900698BFB /* MPExpressionStorage.h */,
|
||||
3B6338B31A3A4D7900698BFB /* MPExpressionStorage.m */,
|
||||
3BB09ED819071C270080A5ED /* Private */,
|
||||
);
|
||||
name = View;
|
||||
@@ -385,8 +386,8 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3BC46B4B19B38CB60033F13A /* Base Expression Classes */,
|
||||
3B87E35B1900933200259938 /* MPRangePath.h */,
|
||||
3B87E35C1900933200259938 /* MPRangePath.m */,
|
||||
3B6338A01A3A4CFC00698BFB /* MPRangePath.h */,
|
||||
3B6338A11A3A4CFC00698BFB /* MPRangePath.m */,
|
||||
3BC46B4D19B38CFB0033F13A /* Helpers */,
|
||||
);
|
||||
name = Model;
|
||||
@@ -399,7 +400,6 @@
|
||||
3BF9978318DE623E009CF6C4 /* MPDocument.xib */,
|
||||
3BF9978618DE623E009CF6C4 /* MainMenu.xib */,
|
||||
3BF9978918DE623E009CF6C4 /* Images.xcassets */,
|
||||
3BC4661319B245C60033F13A /* Fonts */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
@@ -407,14 +407,14 @@
|
||||
3BB09EBC1905EF210080A5ED /* Functions */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3BB09EC71906FD830080A5ED /* MPSumFunction.h */,
|
||||
3BB09EC81906FD830080A5ED /* MPSumFunction.m */,
|
||||
3B7172EC19C9FA8E00FEAA5B /* MPParenthesisFunction.h */,
|
||||
3B7172ED19C9FA8E00FEAA5B /* MPParenthesisFunction.m */,
|
||||
3B5FF73919DB2FF500C8348A /* MPPowerFunction.h */,
|
||||
3B5FF73A19DB2FF500C8348A /* MPPowerFunction.m */,
|
||||
3B69B67A19E4915E0028E608 /* MPFractionFunction.h */,
|
||||
3B69B67B19E4915E0028E608 /* MPFractionFunction.m */,
|
||||
3B6338541A3A4BE800698BFB /* MPFractionFunction.h */,
|
||||
3B6338551A3A4BE800698BFB /* MPFractionFunction.m */,
|
||||
3B63384C1A3A4BD100698BFB /* MPParenthesisFunction.h */,
|
||||
3B63384D1A3A4BD100698BFB /* MPParenthesisFunction.m */,
|
||||
3B6338561A3A4BE800698BFB /* MPPowerFunction.h */,
|
||||
3B6338571A3A4BE800698BFB /* MPPowerFunction.m */,
|
||||
3B63384E1A3A4BD100698BFB /* MPSumFunction.h */,
|
||||
3B63384F1A3A4BD100698BFB /* MPSumFunction.m */,
|
||||
);
|
||||
name = Functions;
|
||||
sourceTree = "<group>";
|
||||
@@ -422,17 +422,17 @@
|
||||
3BB09ED819071C270080A5ED /* Private */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3BF59AFB19D80ECC00E54292 /* MPFunctionsViewController.h */,
|
||||
3BF59AFC19D80ECC00E54292 /* MPFunctionsViewController.m */,
|
||||
3BF59AFD19D80ECC00E54292 /* MPFunctionsViewController.xib */,
|
||||
3BF59B0119D81EE600E54292 /* MPWhiteView.h */,
|
||||
3BF59B0219D81EE600E54292 /* MPWhiteView.m */,
|
||||
3B528D0D199417740054DB5F /* MPLayout.h */,
|
||||
3B688D9819982DF50006B4AB /* MPLayout.m */,
|
||||
3B528D0E199417E10054DB5F /* MPExpressionLayout.h */,
|
||||
3B528D0F199417E10054DB5F /* MPExpressionLayout.m */,
|
||||
3B528D11199417E90054DB5F /* MPFunctionLayout.h */,
|
||||
3B528D12199417E90054DB5F /* MPFunctionLayout.m */,
|
||||
3B6338B61A3A4D9400698BFB /* MPFunctionsViewController.h */,
|
||||
3B6338B71A3A4D9400698BFB /* MPFunctionsViewController.m */,
|
||||
3B6338B81A3A4D9400698BFB /* MPFunctionsViewController.xib */,
|
||||
3B6338B91A3A4D9400698BFB /* MPWhiteView.h */,
|
||||
3B6338BA1A3A4D9400698BFB /* MPWhiteView.m */,
|
||||
3B6338C01A3A4DA500698BFB /* MPLayout.h */,
|
||||
3B6338C11A3A4DA500698BFB /* MPLayout.m */,
|
||||
3B6338C41A3A4DB600698BFB /* MPExpressionLayout.h */,
|
||||
3B6338C51A3A4DB600698BFB /* MPExpressionLayout.m */,
|
||||
3B6338C81A3A4DC400698BFB /* MPFunctionLayout.h */,
|
||||
3B6338C91A3A4DC400698BFB /* MPFunctionLayout.m */,
|
||||
3BB09EE21907361C0080A5ED /* Function Layouts */,
|
||||
);
|
||||
name = Private;
|
||||
@@ -442,14 +442,14 @@
|
||||
3BB09EE21907361C0080A5ED /* Function Layouts */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3BB09EDF190736160080A5ED /* MPSumFunctionLayout.h */,
|
||||
3BB09EE0190736160080A5ED /* MPSumFunctionLayout.m */,
|
||||
3B7172F019C9FC6700FEAA5B /* MPParenthesisFunctionLayout.h */,
|
||||
3B7172F119C9FC6700FEAA5B /* MPParenthesisFunctionLayout.m */,
|
||||
3B69B66A19DB41B90028E608 /* MPPowerFunctionLayout.h */,
|
||||
3B69B66B19DB41B90028E608 /* MPPowerFunctionLayout.m */,
|
||||
3B69B67E19E493630028E608 /* MPFractionFunctionLayout.h */,
|
||||
3B69B67F19E493630028E608 /* MPFractionFunctionLayout.m */,
|
||||
3B6338CC1A3A4DE100698BFB /* MPFractionFunctionLayout.h */,
|
||||
3B6338CD1A3A4DE100698BFB /* MPFractionFunctionLayout.m */,
|
||||
3B6338CE1A3A4DE100698BFB /* MPParenthesisFunctionLayout.h */,
|
||||
3B6338CF1A3A4DE100698BFB /* MPParenthesisFunctionLayout.m */,
|
||||
3B6338D01A3A4DE100698BFB /* MPPowerFunctionLayout.h */,
|
||||
3B6338D11A3A4DE100698BFB /* MPPowerFunctionLayout.m */,
|
||||
3B6338D21A3A4DE100698BFB /* MPSumFunctionLayout.h */,
|
||||
3B6338D31A3A4DE100698BFB /* MPSumFunctionLayout.m */,
|
||||
);
|
||||
name = "Function Layouts";
|
||||
sourceTree = "<group>";
|
||||
@@ -466,19 +466,19 @@
|
||||
3BC46B4B19B38CB60033F13A /* Base Expression Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3BFAC38D1997B61300B3EF67 /* MPExpression.h */,
|
||||
3BFAC38E1997B61300B3EF67 /* MPExpression.m */,
|
||||
3BFAC3961997B67400B3EF67 /* MPExpressionElement.h */,
|
||||
3BFAC39A1997BC7600B3EF67 /* NSString+MPExpressionElement.h */,
|
||||
3BFAC39B1997BC7600B3EF67 /* NSString+MPExpressionElement.m */,
|
||||
3B87E35E19009D5F00259938 /* MPFunction.h */,
|
||||
3B87E35F19009D5F00259938 /* MPFunction.m */,
|
||||
3B7B3A1619CC44E4005849E5 /* MPExpressionTokenizer.h */,
|
||||
3B7B3A1719CC44E4005849E5 /* MPExpressionTokenizer.m */,
|
||||
3B7B3A2A19CC467E005849E5 /* MPToken.h */,
|
||||
3B7B3A2B19CC467E005849E5 /* MPToken.m */,
|
||||
3B7B3A5219CC50B1005849E5 /* MPFunction+MPToken.h */,
|
||||
3B7B3A5319CC50B1005849E5 /* MPFunction+MPToken.m */,
|
||||
3B6338321A3A4B5800698BFB /* MPExpression.h */,
|
||||
3B6338331A3A4B5800698BFB /* MPExpression.m */,
|
||||
3B6338341A3A4B5800698BFB /* MPExpressionElement.h */,
|
||||
3B6338381A3A4B7600698BFB /* NSString+MPExpressionElement.h */,
|
||||
3B6338391A3A4B7600698BFB /* NSString+MPExpressionElement.m */,
|
||||
3B6338401A3A4B9500698BFB /* MPFunction.h */,
|
||||
3B6338411A3A4B9500698BFB /* MPFunction.m */,
|
||||
3B6338441A3A4BA500698BFB /* MPExpressionTokenizer.h */,
|
||||
3B6338451A3A4BA500698BFB /* MPExpressionTokenizer.m */,
|
||||
3B63383C1A3A4B8500698BFB /* MPToken.h */,
|
||||
3B63383D1A3A4B8500698BFB /* MPToken.m */,
|
||||
3B6338481A3A4BB300698BFB /* MPFunction+MPToken.h */,
|
||||
3B6338491A3A4BB300698BFB /* MPFunction+MPToken.m */,
|
||||
3BB09EBC1905EF210080A5ED /* Functions */,
|
||||
3BC46B4F19B506F20033F13A /* Evaluation */,
|
||||
);
|
||||
@@ -488,10 +488,10 @@
|
||||
3BC46B4D19B38CFB0033F13A /* Helpers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3BB09EDC190728220080A5ED /* NSIndexPath+MPAdditions.h */,
|
||||
3BB09EDD190728220080A5ED /* NSIndexPath+MPAdditions.m */,
|
||||
3B52CEDA19BEE63000CEDCFC /* NSRegularExpression+MPParsingAdditions.h */,
|
||||
3B52CEDB19BEE63000CEDCFC /* NSRegularExpression+MPParsingAdditions.m */,
|
||||
3B6338A61A3A4D2600698BFB /* NSIndexPath+MPAdditions.h */,
|
||||
3B6338A71A3A4D2600698BFB /* NSIndexPath+MPAdditions.m */,
|
||||
3B6338AA1A3A4D3000698BFB /* NSRegularExpression+MPParsingAdditions.h */,
|
||||
3B6338AB1A3A4D3000698BFB /* NSRegularExpression+MPParsingAdditions.m */,
|
||||
);
|
||||
name = Helpers;
|
||||
sourceTree = "<group>";
|
||||
@@ -499,32 +499,32 @@
|
||||
3BC46B4F19B506F20033F13A /* Evaluation */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3BF54BB71A18D08400883BFA /* MPExpressionParser.h */,
|
||||
3BF54BB81A18D08400883BFA /* MPExpressionParser.m */,
|
||||
3BEFF74F1A16B06600301C0C /* MPParsedExpression.h */,
|
||||
3BEFF7501A16B06600301C0C /* MPParsedExpression.m */,
|
||||
3BCA0C7E1A12619500C9E3E0 /* MPTerm.h */,
|
||||
3BCA0C7F1A12619500C9E3E0 /* MPTerm.m */,
|
||||
3B9265C51A2147DF00AD2809 /* MPNegatedTerm.h */,
|
||||
3B9265C61A2147DF00AD2809 /* MPNegatedTerm.m */,
|
||||
3BEFF74B1A16A4DA00301C0C /* MPSumTerm.h */,
|
||||
3BEFF74C1A16A4DA00301C0C /* MPSumTerm.m */,
|
||||
3BEFF7531A17AA3200301C0C /* MPProductTerm.h */,
|
||||
3BEFF7541A17AA3200301C0C /* MPProductTerm.m */,
|
||||
3BEFF7601A1804AF00301C0C /* MPFactorialTerm.h */,
|
||||
3BEFF7611A1804AF00301C0C /* MPFactorialTerm.m */,
|
||||
3B69B6BB19E948740028E608 /* MPElementaryFunctionTerm.h */,
|
||||
3B69B6BC19E948740028E608 /* MPElementaryFunctionTerm.m */,
|
||||
3B69B69B19E6F2110028E608 /* MPNumber.h */,
|
||||
3B69B69C19E6F2110028E608 /* MPNumber.m */,
|
||||
3B69B69F19E6F2420028E608 /* MPVariable.h */,
|
||||
3B69B6A019E6F2420028E608 /* MPVariable.m */,
|
||||
3BCA0C831A1405C000C9E3E0 /* MPFunctionTerm.h */,
|
||||
3BCA0C841A1405C000C9E3E0 /* MPFunctionTerm.m */,
|
||||
3B78C85219C2DA5300516335 /* MPEvaluationContext.h */,
|
||||
3B78C85319C2DA5300516335 /* MPEvaluationContext.m */,
|
||||
3B591BB919C58D000061D86B /* MPMathRules.h */,
|
||||
3B591BBA19C58D000061D86B /* MPMathRules.m */,
|
||||
3B63385C1A3A4C0700698BFB /* MPExpressionParser.h */,
|
||||
3B63385D1A3A4C0700698BFB /* MPExpressionParser.m */,
|
||||
3B6338661A3A4C2B00698BFB /* MPParsedExpression.h */,
|
||||
3B6338671A3A4C2B00698BFB /* MPParsedExpression.m */,
|
||||
3B63387A1A3A4C7E00698BFB /* MPTerm.h */,
|
||||
3B63387B1A3A4C7E00698BFB /* MPTerm.m */,
|
||||
3B6338601A3A4C2B00698BFB /* MPNegatedTerm.h */,
|
||||
3B6338611A3A4C2B00698BFB /* MPNegatedTerm.m */,
|
||||
3B6338781A3A4C7E00698BFB /* MPSumTerm.h */,
|
||||
3B6338791A3A4C7E00698BFB /* MPSumTerm.m */,
|
||||
3B63386A1A3A4C2B00698BFB /* MPProductTerm.h */,
|
||||
3B63386B1A3A4C2B00698BFB /* MPProductTerm.m */,
|
||||
3B6338841A3A4CA500698BFB /* MPFactorialTerm.h */,
|
||||
3B6338851A3A4CA500698BFB /* MPFactorialTerm.m */,
|
||||
3B6338881A3A4CAF00698BFB /* MPElementaryFunctionTerm.h */,
|
||||
3B6338891A3A4CAF00698BFB /* MPElementaryFunctionTerm.m */,
|
||||
3B6338621A3A4C2B00698BFB /* MPNumber.h */,
|
||||
3B6338631A3A4C2B00698BFB /* MPNumber.m */,
|
||||
3B63387C1A3A4C7E00698BFB /* MPVariable.h */,
|
||||
3B63387D1A3A4C7E00698BFB /* MPVariable.m */,
|
||||
3B63388C1A3A4CBE00698BFB /* MPFunctionTerm.h */,
|
||||
3B63388D1A3A4CBE00698BFB /* MPFunctionTerm.m */,
|
||||
3B6338901A3A4CCA00698BFB /* MPEvaluationContext.h */,
|
||||
3B6338911A3A4CCA00698BFB /* MPEvaluationContext.m */,
|
||||
3B6338941A3A4CD100698BFB /* MPMathRules.h */,
|
||||
3B6338951A3A4CD100698BFB /* MPMathRules.m */,
|
||||
3BEFF75F1A17FF5C00301C0C /* Functions */,
|
||||
);
|
||||
name = Evaluation;
|
||||
@@ -533,14 +533,14 @@
|
||||
3BEFF75F1A17FF5C00301C0C /* Functions */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3BEFF7641A18066300301C0C /* MPSumFunctionTerm.h */,
|
||||
3BEFF7651A18066300301C0C /* MPSumFunctionTerm.m */,
|
||||
3BEFF7681A1807B000301C0C /* MPParenthesisTerm.h */,
|
||||
3BEFF7691A1807B000301C0C /* MPParenthesisTerm.m */,
|
||||
3BEFF76C1A18083C00301C0C /* MPPowerTerm.h */,
|
||||
3BEFF76D1A18083C00301C0C /* MPPowerTerm.m */,
|
||||
3BEFF7701A180C8800301C0C /* MPFractionTerm.h */,
|
||||
3BEFF7711A180C8800301C0C /* MPFractionTerm.m */,
|
||||
3B6338981A3A4CE100698BFB /* MPSumFunctionTerm.h */,
|
||||
3B6338991A3A4CE100698BFB /* MPSumFunctionTerm.m */,
|
||||
3B6338641A3A4C2B00698BFB /* MPParenthesisTerm.h */,
|
||||
3B6338651A3A4C2B00698BFB /* MPParenthesisTerm.m */,
|
||||
3B6338681A3A4C2B00698BFB /* MPPowerTerm.h */,
|
||||
3B6338691A3A4C2B00698BFB /* MPPowerTerm.m */,
|
||||
3B63389C1A3A4CEF00698BFB /* MPFractionTerm.h */,
|
||||
3B63389D1A3A4CEF00698BFB /* MPFractionTerm.m */,
|
||||
);
|
||||
name = Functions;
|
||||
sourceTree = "<group>";
|
||||
@@ -638,49 +638,49 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3B6338A81A3A4D2600698BFB /* NSIndexPath+MPAdditions.h in Headers */,
|
||||
3B85834C19BB661100D76A8D /* MathKit.h in Headers */,
|
||||
3BEFF76E1A18083C00301C0C /* MPPowerTerm.h in Headers */,
|
||||
3B85833819BB63BD00D76A8D /* MPExpression.h in Headers */,
|
||||
3B85833919BB63C500D76A8D /* MPExpressionElement.h in Headers */,
|
||||
3B69B67C19E4915E0028E608 /* MPFractionFunction.h in Headers */,
|
||||
3BEFF7551A17AA3200301C0C /* MPProductTerm.h in Headers */,
|
||||
3B78C85419C2DA5300516335 /* MPEvaluationContext.h in Headers */,
|
||||
3B85834419BB654D00D76A8D /* NSString+MPExpressionElement.h in Headers */,
|
||||
3BCA0C851A1405C000C9E3E0 /* MPFunctionTerm.h in Headers */,
|
||||
3B7172F219C9FC6700FEAA5B /* MPParenthesisFunctionLayout.h in Headers */,
|
||||
3B52CEDC19BEE63000CEDCFC /* NSRegularExpression+MPParsingAdditions.h in Headers */,
|
||||
3BEFF76A1A1807B000301C0C /* MPParenthesisTerm.h in Headers */,
|
||||
3B85833A19BB63D400D76A8D /* MPFunction.h in Headers */,
|
||||
3B69B66C19DB41B90028E608 /* MPPowerFunctionLayout.h in Headers */,
|
||||
3B85834319BB653700D76A8D /* MPSumFunction.h in Headers */,
|
||||
3BCA0C801A12619500C9E3E0 /* MPTerm.h in Headers */,
|
||||
3B85834119BB651E00D76A8D /* MPRangePath.h in Headers */,
|
||||
3B69B69D19E6F2110028E608 /* MPNumber.h in Headers */,
|
||||
3B85834519BB655200D76A8D /* NSIndexPath+MPAdditions.h in Headers */,
|
||||
3B5FF73B19DB2FF500C8348A /* MPPowerFunction.h in Headers */,
|
||||
3B7172EE19C9FA8E00FEAA5B /* MPParenthesisFunction.h in Headers */,
|
||||
3BF54BB91A18D08400883BFA /* MPExpressionParser.h in Headers */,
|
||||
3BEFF7511A16B06600301C0C /* MPParsedExpression.h in Headers */,
|
||||
3BEFF7721A180C8800301C0C /* MPFractionTerm.h in Headers */,
|
||||
3B85834619BB655C00D76A8D /* MPExpressionView.h in Headers */,
|
||||
3B85834719BB655F00D76A8D /* MPExpressionStorage.h in Headers */,
|
||||
3B9265C71A2147DF00AD2809 /* MPNegatedTerm.h in Headers */,
|
||||
3BF59AFE19D80ECC00E54292 /* MPFunctionsViewController.h in Headers */,
|
||||
3B7B3A2C19CC467E005849E5 /* MPToken.h in Headers */,
|
||||
3B7B3A1819CC44E4005849E5 /* MPExpressionTokenizer.h in Headers */,
|
||||
3BF59B0319D81EE600E54292 /* MPWhiteView.h in Headers */,
|
||||
3B85834819BB65B600D76A8D /* MPLayout.h in Headers */,
|
||||
3BEFF7661A18066300301C0C /* MPSumFunctionTerm.h in Headers */,
|
||||
3B85834919BB65B600D76A8D /* MPExpressionLayout.h in Headers */,
|
||||
3BEFF7621A1804AF00301C0C /* MPFactorialTerm.h in Headers */,
|
||||
3B7B3A5419CC50B1005849E5 /* MPFunction+MPToken.h in Headers */,
|
||||
3B69B6BD19E948740028E608 /* MPElementaryFunctionTerm.h in Headers */,
|
||||
3B591BBB19C58D000061D86B /* MPMathRules.h in Headers */,
|
||||
3BEFF74D1A16A4DA00301C0C /* MPSumTerm.h in Headers */,
|
||||
3B69B68019E493630028E608 /* MPFractionFunctionLayout.h in Headers */,
|
||||
3B69B6A119E6F2420028E608 /* MPVariable.h in Headers */,
|
||||
3B85834A19BB65B600D76A8D /* MPFunctionLayout.h in Headers */,
|
||||
3B85834B19BB65B600D76A8D /* MPSumFunctionLayout.h in Headers */,
|
||||
3B63383A1A3A4B7600698BFB /* NSString+MPExpressionElement.h in Headers */,
|
||||
3B6338C21A3A4DA500698BFB /* MPLayout.h in Headers */,
|
||||
3B6338721A3A4C2B00698BFB /* MPParsedExpression.h in Headers */,
|
||||
3B6338B01A3A4D6A00698BFB /* MPExpressionView.h in Headers */,
|
||||
3B6338DA1A3A4DE100698BFB /* MPSumFunctionLayout.h in Headers */,
|
||||
3B6338AC1A3A4D3000698BFB /* NSRegularExpression+MPParsingAdditions.h in Headers */,
|
||||
3B6338501A3A4BD100698BFB /* MPParenthesisFunction.h in Headers */,
|
||||
3B63387E1A3A4C7E00698BFB /* MPSumTerm.h in Headers */,
|
||||
3B6338D81A3A4DE100698BFB /* MPPowerFunctionLayout.h in Headers */,
|
||||
3B6338801A3A4C7E00698BFB /* MPTerm.h in Headers */,
|
||||
3B6338521A3A4BD100698BFB /* MPSumFunction.h in Headers */,
|
||||
3B6338CA1A3A4DC400698BFB /* MPFunctionLayout.h in Headers */,
|
||||
3B6338701A3A4C2B00698BFB /* MPParenthesisTerm.h in Headers */,
|
||||
3B63389E1A3A4CEF00698BFB /* MPFractionTerm.h in Headers */,
|
||||
3B6338961A3A4CD100698BFB /* MPMathRules.h in Headers */,
|
||||
3B6338421A3A4B9500698BFB /* MPFunction.h in Headers */,
|
||||
3B63388E1A3A4CBE00698BFB /* MPFunctionTerm.h in Headers */,
|
||||
3B6338D41A3A4DE100698BFB /* MPFractionFunctionLayout.h in Headers */,
|
||||
3B6338741A3A4C2B00698BFB /* MPPowerTerm.h in Headers */,
|
||||
3B6338371A3A4B5800698BFB /* MPExpressionElement.h in Headers */,
|
||||
3B6338BE1A3A4D9400698BFB /* MPWhiteView.h in Headers */,
|
||||
3B6338A21A3A4CFC00698BFB /* MPRangePath.h in Headers */,
|
||||
3B63386E1A3A4C2B00698BFB /* MPNumber.h in Headers */,
|
||||
3B6338C61A3A4DB600698BFB /* MPExpressionLayout.h in Headers */,
|
||||
3B63385A1A3A4BE800698BFB /* MPPowerFunction.h in Headers */,
|
||||
3B63389A1A3A4CE100698BFB /* MPSumFunctionTerm.h in Headers */,
|
||||
3B6338921A3A4CCA00698BFB /* MPEvaluationContext.h in Headers */,
|
||||
3B63386C1A3A4C2B00698BFB /* MPNegatedTerm.h in Headers */,
|
||||
3B63385E1A3A4C0700698BFB /* MPExpressionParser.h in Headers */,
|
||||
3B63384A1A3A4BB300698BFB /* MPFunction+MPToken.h in Headers */,
|
||||
3B63383E1A3A4B8500698BFB /* MPToken.h in Headers */,
|
||||
3B6338461A3A4BA500698BFB /* MPExpressionTokenizer.h in Headers */,
|
||||
3B63388A1A3A4CAF00698BFB /* MPElementaryFunctionTerm.h in Headers */,
|
||||
3B6338861A3A4CA500698BFB /* MPFactorialTerm.h in Headers */,
|
||||
3B6338581A3A4BE800698BFB /* MPFractionFunction.h in Headers */,
|
||||
3B6338761A3A4C2B00698BFB /* MPProductTerm.h in Headers */,
|
||||
3B6338351A3A4B5800698BFB /* MPExpression.h in Headers */,
|
||||
3B6338BB1A3A4D9400698BFB /* MPFunctionsViewController.h in Headers */,
|
||||
3B6338D61A3A4DE100698BFB /* MPParenthesisFunctionLayout.h in Headers */,
|
||||
3B6338821A3A4C7E00698BFB /* MPVariable.h in Headers */,
|
||||
3B6338B41A3A4D7900698BFB /* MPExpressionStorage.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -805,10 +805,11 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3BF59B0019D80ECC00E54292 /* MPFunctionsViewController.xib in Resources */,
|
||||
3B6338A51A3A4D1200698BFB /* Fonts in Resources */,
|
||||
3B7172EA19C7147000FEAA5B /* FunctionsButtonDisclosure@2x.png in Resources */,
|
||||
3B7172EB19C7147000FEAA5B /* FunctionsButtonDisclosure.png in Resources */,
|
||||
3B85831419BB5E5500D76A8D /* InfoPlist.strings in Resources */,
|
||||
3B6338BD1A3A4D9400698BFB /* MPFunctionsViewController.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -827,7 +828,6 @@
|
||||
3BF9977918DE623E009CF6C4 /* InfoPlist.strings in Resources */,
|
||||
3BF9978A18DE623E009CF6C4 /* Images.xcassets in Resources */,
|
||||
3BC4660B19B2425A0033F13A /* MPDocument.xib in Resources */,
|
||||
3BC4661419B245C60033F13A /* Fonts in Resources */,
|
||||
3BF9977F18DE623E009CF6C4 /* Credits.rtf in Resources */,
|
||||
3BF9978818DE623E009CF6C4 /* MainMenu.xib in Resources */,
|
||||
);
|
||||
@@ -848,47 +848,47 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3BEFF76F1A18083C00301C0C /* MPPowerTerm.m in Sources */,
|
||||
3B5FF73C19DB2FF500C8348A /* MPPowerFunction.m in Sources */,
|
||||
3BBEA94219BB79A700133766 /* MPExpressionLayout.m in Sources */,
|
||||
3BF54BBA1A18D08400883BFA /* MPExpressionParser.m in Sources */,
|
||||
3B7B3A1919CC44E4005849E5 /* MPExpressionTokenizer.m in Sources */,
|
||||
3B591BBC19C58D000061D86B /* MPMathRules.m in Sources */,
|
||||
3B69B6BE19E948740028E608 /* MPElementaryFunctionTerm.m in Sources */,
|
||||
3B7172EF19C9FA8E00FEAA5B /* MPParenthesisFunction.m in Sources */,
|
||||
3B7B3A5519CC50B1005849E5 /* MPFunction+MPToken.m in Sources */,
|
||||
3B9265C81A2147DF00AD2809 /* MPNegatedTerm.m in Sources */,
|
||||
3BBEA94119BB79A700133766 /* MPLayout.m in Sources */,
|
||||
3BBEA93D19BB79A700133766 /* NSString+MPExpressionElement.m in Sources */,
|
||||
3B69B68119E493630028E608 /* MPFractionFunctionLayout.m in Sources */,
|
||||
3BF59B0419D81EE600E54292 /* MPWhiteView.m in Sources */,
|
||||
3BBEA94019BB79A700133766 /* MPExpressionStorage.m in Sources */,
|
||||
3BBEA93F19BB79A700133766 /* MPExpressionView.m in Sources */,
|
||||
3B7B3A2D19CC467E005849E5 /* MPToken.m in Sources */,
|
||||
3B78C85519C2DA5300516335 /* MPEvaluationContext.m in Sources */,
|
||||
3B69B6A219E6F2420028E608 /* MPVariable.m in Sources */,
|
||||
3BBEA94419BB79A700133766 /* MPSumFunctionLayout.m in Sources */,
|
||||
3B69B69E19E6F2110028E608 /* MPNumber.m in Sources */,
|
||||
3BEFF7521A16B06600301C0C /* MPParsedExpression.m in Sources */,
|
||||
3B7172F319C9FC6700FEAA5B /* MPParenthesisFunctionLayout.m in Sources */,
|
||||
3BEFF76B1A1807B000301C0C /* MPParenthesisTerm.m in Sources */,
|
||||
3BEFF7631A1804AF00301C0C /* MPFactorialTerm.m in Sources */,
|
||||
3BEFF7731A180C8800301C0C /* MPFractionTerm.m in Sources */,
|
||||
3BEFF7671A18066300301C0C /* MPSumFunctionTerm.m in Sources */,
|
||||
3BBEA93A19BB79A700133766 /* MPSumFunction.m in Sources */,
|
||||
3BBEA93E19BB79A700133766 /* NSIndexPath+MPAdditions.m in Sources */,
|
||||
3B52CEDD19BEE63000CEDCFC /* NSRegularExpression+MPParsingAdditions.m in Sources */,
|
||||
3BEFF7561A17AA3200301C0C /* MPProductTerm.m in Sources */,
|
||||
3B69B67D19E4915E0028E608 /* MPFractionFunction.m in Sources */,
|
||||
3BEFF74E1A16A4DA00301C0C /* MPSumTerm.m in Sources */,
|
||||
3BF59AFF19D80ECC00E54292 /* MPFunctionsViewController.m in Sources */,
|
||||
3BCA0C861A1405C000C9E3E0 /* MPFunctionTerm.m in Sources */,
|
||||
3BCA0C811A12619500C9E3E0 /* MPTerm.m in Sources */,
|
||||
3B69B66D19DB41B90028E608 /* MPPowerFunctionLayout.m in Sources */,
|
||||
3BBEA93619BB79A700133766 /* MPFunction.m in Sources */,
|
||||
3BBEA93519BB79A700133766 /* MPExpression.m in Sources */,
|
||||
3BBEA93B19BB79A700133766 /* MPRangePath.m in Sources */,
|
||||
3BBEA94319BB79A700133766 /* MPFunctionLayout.m in Sources */,
|
||||
3B6338DB1A3A4DE100698BFB /* MPSumFunctionLayout.m in Sources */,
|
||||
3B63385F1A3A4C0700698BFB /* MPExpressionParser.m in Sources */,
|
||||
3B6338A91A3A4D2600698BFB /* NSIndexPath+MPAdditions.m in Sources */,
|
||||
3B6338591A3A4BE800698BFB /* MPFractionFunction.m in Sources */,
|
||||
3B6338471A3A4BA500698BFB /* MPExpressionTokenizer.m in Sources */,
|
||||
3B6338D91A3A4DE100698BFB /* MPPowerFunctionLayout.m in Sources */,
|
||||
3B6338D51A3A4DE100698BFB /* MPFractionFunctionLayout.m in Sources */,
|
||||
3B63389B1A3A4CE100698BFB /* MPSumFunctionTerm.m in Sources */,
|
||||
3B6338361A3A4B5800698BFB /* MPExpression.m in Sources */,
|
||||
3B6338BC1A3A4D9400698BFB /* MPFunctionsViewController.m in Sources */,
|
||||
3B63383B1A3A4B7600698BFB /* NSString+MPExpressionElement.m in Sources */,
|
||||
3B63386D1A3A4C2B00698BFB /* MPNegatedTerm.m in Sources */,
|
||||
3B6338531A3A4BD100698BFB /* MPSumFunction.m in Sources */,
|
||||
3B6338A31A3A4CFC00698BFB /* MPRangePath.m in Sources */,
|
||||
3B63383F1A3A4B8500698BFB /* MPToken.m in Sources */,
|
||||
3B63389F1A3A4CEF00698BFB /* MPFractionTerm.m in Sources */,
|
||||
3B6338D71A3A4DE100698BFB /* MPParenthesisFunctionLayout.m in Sources */,
|
||||
3B63388F1A3A4CBE00698BFB /* MPFunctionTerm.m in Sources */,
|
||||
3B6338971A3A4CD100698BFB /* MPMathRules.m in Sources */,
|
||||
3B6338C71A3A4DB600698BFB /* MPExpressionLayout.m in Sources */,
|
||||
3B6338831A3A4C7E00698BFB /* MPVariable.m in Sources */,
|
||||
3B63385B1A3A4BE800698BFB /* MPPowerFunction.m in Sources */,
|
||||
3B6338711A3A4C2B00698BFB /* MPParenthesisTerm.m in Sources */,
|
||||
3B6338731A3A4C2B00698BFB /* MPParsedExpression.m in Sources */,
|
||||
3B6338771A3A4C2B00698BFB /* MPProductTerm.m in Sources */,
|
||||
3B6338B51A3A4D7900698BFB /* MPExpressionStorage.m in Sources */,
|
||||
3B63386F1A3A4C2B00698BFB /* MPNumber.m in Sources */,
|
||||
3B6338CB1A3A4DC400698BFB /* MPFunctionLayout.m in Sources */,
|
||||
3B63384B1A3A4BB300698BFB /* MPFunction+MPToken.m in Sources */,
|
||||
3B6338BF1A3A4D9400698BFB /* MPWhiteView.m in Sources */,
|
||||
3B6338931A3A4CCA00698BFB /* MPEvaluationContext.m in Sources */,
|
||||
3B6338C31A3A4DA500698BFB /* MPLayout.m in Sources */,
|
||||
3B63387F1A3A4C7E00698BFB /* MPSumTerm.m in Sources */,
|
||||
3B6338811A3A4C7E00698BFB /* MPTerm.m in Sources */,
|
||||
3B6338B11A3A4D6A00698BFB /* MPExpressionView.m in Sources */,
|
||||
3B6338AD1A3A4D3000698BFB /* NSRegularExpression+MPParsingAdditions.m in Sources */,
|
||||
3B63388B1A3A4CAF00698BFB /* MPElementaryFunctionTerm.m in Sources */,
|
||||
3B6338511A3A4BD100698BFB /* MPParenthesisFunction.m in Sources */,
|
||||
3B6338871A3A4CA500698BFB /* MPFactorialTerm.m in Sources */,
|
||||
3B6338431A3A4B9500698BFB /* MPFunction.m in Sources */,
|
||||
3B6338751A3A4C2B00698BFB /* MPPowerTerm.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@@ -1,840 +0,0 @@
|
||||
//
|
||||
// MPExpression.h
|
||||
// MathPad
|
||||
//
|
||||
// Created by Kim Wittenburg on 10.08.14.
|
||||
// Copyright (c) 2014 Kim Wittenburg. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
@const MPIllegalElementException
|
||||
@brief Name for an exception that is raised if an invalid element is
|
||||
added to an expression.
|
||||
|
||||
@discussion This exception may be raised during initialization of an
|
||||
expression or when the expression is mutated. This exception
|
||||
always contains the @c MPIllegalElementExceptionElementKey key in
|
||||
its @c userInfo dictionary.
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString *const MPIllegalElementException;
|
||||
|
||||
|
||||
/*!
|
||||
@const MPIllegalElementExceptionElementKey
|
||||
@brief Predefined key for the invalid element that caused an exception
|
||||
to be raised.
|
||||
|
||||
@discussion The invalid element can be of any type.
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString *const MPIllegalElementExceptionElementKey;
|
||||
|
||||
|
||||
/*!
|
||||
@typedef MPReferenceFrame
|
||||
@brief A reference frame describes what an @em item in an expression is.
|
||||
|
||||
@discussion Reference frames have to be passed in multiple methods of the @c
|
||||
MPExpression class. You can convert between reference frames
|
||||
using the following methods:
|
||||
<pre>
|
||||
@textblock
|
||||
- convertIndexFromReferenceFrame:toReferenceFrame:
|
||||
- convertIndexFromReferenceFrame:toReferenceFrame:offset:
|
||||
@/textblock
|
||||
</pre>
|
||||
|
||||
There are three different types of items (reference frames):
|
||||
symbols, tokens and elements. A symbol is the smalles possible
|
||||
unit in an expression. Thus a token consists of one or more
|
||||
symbols. Similarly an element consists of one or more tokens.
|
||||
|
||||
@constant MPElementReferenceFrame
|
||||
Specifies that items should be interpreted as elements. An
|
||||
element is either a @c NSString object or a @c MPFunction object.
|
||||
|
||||
@constant MPSymbolReferenceFrame
|
||||
Specifies that items should be interpreted as symbols. A symbol
|
||||
can be a single character (represented by the @c NSString class)
|
||||
or a @c MPFunction object.
|
||||
|
||||
@constant MPTokenReferenceFrame
|
||||
Specifies that items should be interpreted as tokens. A token is
|
||||
a logical unit of content in an expression. This can be a single
|
||||
character (e.g. '+'), an arbitrary number of characters (e.g. a
|
||||
number) or a @c MPFunction object.
|
||||
|
||||
All tokens conform to the @c MPToken protocol.
|
||||
*/
|
||||
typedef NS_ENUM(NSUInteger, MPReferenceFrame) {
|
||||
MPElementReferenceFrame,
|
||||
MPSymbolReferenceFrame,
|
||||
MPTokenReferenceFrame
|
||||
};
|
||||
|
||||
|
||||
|
||||
@class MPExpression, MPFunction, MPRangePath, MPParsedExpression;
|
||||
@protocol MPExpressionElement, MPToken;
|
||||
|
||||
|
||||
/*!
|
||||
@class MPExpression
|
||||
@brief An @c MPExpression object is the base object for any mathematical
|
||||
expression.
|
||||
|
||||
@discussion Every expression consists of string elements (represented by the
|
||||
@c NSString class) and function elements (represented by the @c
|
||||
MPFunction class). Functions likewise can have expressions as
|
||||
elements (also called <i>children</i> in this context). Both
|
||||
expressions and functions are mutable. Through this organization
|
||||
expression are organized in a tree-like structure called the
|
||||
'expression tree'.
|
||||
|
||||
An expression can evaluate itself giving you either a
|
||||
result or possibly an error if the expression was not constructed
|
||||
correctly or could not be evaluated.
|
||||
*/
|
||||
@interface MPExpression : NSObject <NSCopying, NSCoding>
|
||||
|
||||
|
||||
#pragma mark Creation Methods
|
||||
/*!
|
||||
@methodgroup Creation Methods
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@method init
|
||||
@brief Initlializes a newly created expression.
|
||||
|
||||
@discussion This method is a convenience initializer to initialize an
|
||||
expression with @c 0 elements.
|
||||
|
||||
@return An expression.
|
||||
*/
|
||||
- (instancetype)init;
|
||||
|
||||
|
||||
/*!
|
||||
@method initWithElement:
|
||||
@brief Initializes a newly created expression with @c element.
|
||||
|
||||
@discussion This method is a convenience initializer to initialize an
|
||||
expression with a single element.
|
||||
|
||||
@param element
|
||||
The element to be added to the expression. The @c element will be
|
||||
copied.
|
||||
|
||||
@return An expression initialized with @c element.
|
||||
*/
|
||||
- (instancetype)initWithElement:(id<MPExpressionElement>)element;
|
||||
|
||||
|
||||
/*!
|
||||
@method initWithElements:
|
||||
@brief Initializes a newly created expression with the specified
|
||||
elements.
|
||||
|
||||
@discussion All elements must conform to the @c MPExpressionElement protocol.
|
||||
If one or more objects do not conform to that protocol an @c
|
||||
MPIllegalElementException is raised.
|
||||
|
||||
This method is the designated initializer for the @c MPExpression
|
||||
class.
|
||||
|
||||
@param elements
|
||||
The elements that should be added to the expression. Every
|
||||
element must conform to the @c MPExpressionElement protocol. Each
|
||||
element is copied and the copy is then added to the expression.
|
||||
The object in the @c elements array is not modified.
|
||||
|
||||
@return An expression containing @c elements.
|
||||
*/
|
||||
- (instancetype)initWithElements:(NSArray *)elements; /* designated initializer */
|
||||
|
||||
|
||||
#pragma mark Querying Expressions
|
||||
/*!
|
||||
@methodgroup Querying Expressions
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@property parent
|
||||
@brief The receiver's parent.
|
||||
|
||||
@discussion Expressions are organized in a tree-like structure. Through this
|
||||
property an expression's containing function can be accessed.
|
||||
@warning You should never set this property manually. If you are
|
||||
implementing a custom subclass of @c MPFunction use the @c
|
||||
MPFunctionAccessorImplementation macro.
|
||||
|
||||
@return The parent of the receiver or @c nil if the receiver is the root
|
||||
expression.
|
||||
*/
|
||||
@property (nonatomic, weak) MPFunction *parent;
|
||||
|
||||
|
||||
/*!
|
||||
@method rootExpression
|
||||
@brief Returns the root expression from the receiver's expression tree.
|
||||
|
||||
@discussion The root expression is the ultimate parent of all expressions and
|
||||
functions in the expression tree. A root expression does not have
|
||||
a parent.
|
||||
|
||||
@return The root expression from the receiver's expression tree.
|
||||
*/
|
||||
- (MPExpression *)rootExpression;
|
||||
|
||||
|
||||
/*!
|
||||
@method indexPath
|
||||
@brief Returns the index path of the receiver in the expression tree.
|
||||
|
||||
@discussion The index path is calculated by going up the expression tree
|
||||
collecting the respective index of the receiver. The indexes are
|
||||
expressed in the element reference frame. If any of the indexes
|
||||
exceed the respective receiver's bounds a @c NSRangeException is
|
||||
raised.
|
||||
|
||||
@return The index path of the receiver in the expression tree.
|
||||
*/
|
||||
- (NSIndexPath *)indexPath;
|
||||
|
||||
|
||||
/*!
|
||||
@method countItemsInReferenceFrame:
|
||||
@brief Returns the number of items in the receiver in the respective
|
||||
reference frame.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame that should be used to count the items.
|
||||
|
||||
@return The current number of items in the receiver counted in the
|
||||
specified reference frame.
|
||||
*/
|
||||
- (NSUInteger)countItemsInReferenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method itemAtIndex:referenceFrame:
|
||||
@brief Returns the item at @c anIndex.
|
||||
|
||||
@discussion The item is not copied before it is returned. So be aware that
|
||||
if you mutate a @c MPFunction object returned from this function
|
||||
the changes will be reflected in the receiver.
|
||||
|
||||
@param anIndex
|
||||
The index of the item. If the index is greater than the number of
|
||||
items for the respective reference frame an @c NSRangeException
|
||||
is raised.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame that should be used to identify the item at
|
||||
@c anIndex.
|
||||
|
||||
@return The item at @c anIndex.
|
||||
*/
|
||||
- (id)itemAtIndex:(NSUInteger)anIndex
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method elementAtIndex:referenceFrame:
|
||||
@brief Returns the element at the specified index.
|
||||
|
||||
@discussion An element is either a string or a function. If @c anIndex
|
||||
specifies a position inside a string the complete string element
|
||||
is returned.
|
||||
|
||||
This method does not return any item in any reference frame but
|
||||
only complete elements. Use @c -itemAtIndex:referenceFrame: for
|
||||
that purpose.
|
||||
|
||||
@param anIndex
|
||||
The index of the element.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame @c anIndex is specified in.
|
||||
|
||||
@return The item at @c anIndex.
|
||||
*/
|
||||
- (id<MPExpressionElement>)elementAtIndex:(NSUInteger)anIndex
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
/*!
|
||||
@method indexOfElement:
|
||||
@brief Returns the index of @c element or @c NSNotFound if it was not
|
||||
found.
|
||||
|
||||
@param element
|
||||
The element to find.
|
||||
|
||||
@return The index of @c element expressed in the element reference frame.
|
||||
*/
|
||||
- (NSUInteger)indexOfElement:(id<MPExpressionElement>)element;
|
||||
|
||||
|
||||
/*!
|
||||
@method itemsInRange:referenceFrame:
|
||||
@brief Returns an array of the items that are located in the specified
|
||||
range.
|
||||
|
||||
@discussion The objects in the returned array are not copied before they are
|
||||
returned. You should be aware of the fact that mutations to any
|
||||
returned objects will be reflected in the receiver.
|
||||
|
||||
If the @c range exceeds the receiver's bounds an @c
|
||||
NSRangeException is raised.
|
||||
|
||||
@param aRange
|
||||
The requested range within the receiver's bounds.
|
||||
|
||||
@param referenceFrame
|
||||
The referenceFrame @c aRange is expressed in.
|
||||
|
||||
@return An array of objects that conform to the @c MPExpressionElement
|
||||
protocol (that is @c NSString objects and @c MPFunction objects).
|
||||
The length of the returned array is equal to the length of the
|
||||
specified range.
|
||||
*/
|
||||
- (NSArray *)itemsInRange:(NSRange)aRange
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method allItemsInReferenceFrame:
|
||||
@brief Returns an array of all items in the receiver for the specified
|
||||
reference frame.
|
||||
|
||||
@discussion The elements in the returned array are not copied before they are
|
||||
returned so be aware that mutations to any of the returned
|
||||
objects will be reflected in the receiver.
|
||||
|
||||
@return An array of all items in the receiver.
|
||||
*/
|
||||
- (NSArray *)allItemsInReferenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method elementAtIndexPath:
|
||||
@brief Returns the element at the specified index path.
|
||||
|
||||
@discussion This method @em walks down the expression tree (including
|
||||
functions) using the specified index path and finds the
|
||||
corresponding element. The returned object can be an @c NSString,
|
||||
a @c MPFunction or an @c MPExpression depending on the element @c
|
||||
indexPath points to. If any of the indexes exceed the bounds of
|
||||
the respective receiver an @c NSRangeException is raised.
|
||||
|
||||
If the index path does not contain any indexes the receiver
|
||||
itself is returned.
|
||||
|
||||
@param indexPath
|
||||
The index path the required object is located at. The indexes are
|
||||
expressed in the element reference frame.
|
||||
|
||||
@return The element located at @c indexPath. The element is not copied
|
||||
before it is returned. Be aware of the fact that any mutations
|
||||
made to the returned object are reflected in the receiver.
|
||||
*/
|
||||
- (id)elementAtIndexPath:(NSIndexPath *)indexPath;
|
||||
|
||||
|
||||
/*!
|
||||
@method convertIndex:fromReferenceFrame:toReferenceFrame:
|
||||
@brief Converts an index from one reference frame to another.
|
||||
|
||||
@discussion This method ignores any offsets into items the conversion between
|
||||
reference frames can cause. If you are interested in the offset
|
||||
use @c -convertIndex:fromReferenceFrame:toReferenceFrame:offset:
|
||||
instead.
|
||||
|
||||
@param anIndex
|
||||
The index to be converted.
|
||||
|
||||
@param fromReferenceFrame
|
||||
The reference frame @c anIndex is specified in.
|
||||
|
||||
@param toReferenceFrame
|
||||
The reference frame @c anIndex should be converted to.
|
||||
|
||||
@return An index specified in the @c toReferenceFrame. If @c anIndex
|
||||
specifies a location inside an item in the @c toReferenceFrame
|
||||
the index of the corresponding item is returned.
|
||||
*/
|
||||
- (NSUInteger)convertIndex:(NSUInteger)anIndex
|
||||
fromReferenceFrame:(MPReferenceFrame)fromReferenceFrame
|
||||
toReferenceFrame:(MPReferenceFrame)toReferenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method convertIndex:fromReferenceFrame:toReferenceFrame:offset:
|
||||
@brief Converts an index from one reference frame to another.
|
||||
|
||||
@discussion If @c anIndex specifies a location inside an item in the @c
|
||||
toReferenceFrame the index of the corresponding item is returned.
|
||||
|
||||
@param anIndex
|
||||
The index to be converted.
|
||||
|
||||
@param fromReferenceFrame
|
||||
The reference frame @c anIndex is specified in.
|
||||
|
||||
@param toReferenceFrame
|
||||
The reference frame @c anIndex should be converted to.
|
||||
|
||||
@param offset
|
||||
This output parameter will be set to the number of symbols that
|
||||
are between the location specified by @c anIndex and the index
|
||||
that is actually returned. The offset is specified in the symbol
|
||||
reference frame. If you are not interested in the offset pass
|
||||
@c NULL.
|
||||
|
||||
@return An index specified in the @c toReferenceFrame corresponding to
|
||||
@c anIndex.
|
||||
*/
|
||||
- (NSUInteger)convertIndex:(NSUInteger)anIndex
|
||||
fromReferenceFrame:(MPReferenceFrame)fromReferenceFrame
|
||||
toReferenceFrame:(MPReferenceFrame)toReferenceFrame
|
||||
offset:(out NSUInteger *)offset;
|
||||
|
||||
|
||||
/*!
|
||||
@method convertRange:fromReferenceFrame:toReferenceFrame:
|
||||
@brief Converts a range from one reference frame to another.
|
||||
|
||||
@discussion This method just converts the location and target of the range
|
||||
separately using @c
|
||||
-convertIndex:fromReferenceFrame:toReferenceFrame:. This method
|
||||
ensures that the returned range definitely includes all items
|
||||
that were specified by @c aRange.
|
||||
|
||||
This method ignores the possibility that the returned range may
|
||||
include more than @a aRange. If you need that information use
|
||||
@c -convertRange:fromReferenceFrame:toReferenceFrame:leadingOffset:trailingOffset:.
|
||||
|
||||
@param aRange
|
||||
The range to be converted.
|
||||
|
||||
@param fromReferenceFrame
|
||||
The reference frame @c aRange is specified in.
|
||||
|
||||
@param toReferenceFrame
|
||||
The reference frame @c aRange is to be converted to.
|
||||
|
||||
@return A range in the @c toReferenceFrame that includes the the items
|
||||
specified by @c aRange.
|
||||
*/
|
||||
- (NSRange)convertRange:(NSRange)aRange
|
||||
fromReferenceFrame:(MPReferenceFrame)fromReferenceFrame
|
||||
toReferenceFrame:(MPReferenceFrame)toReferenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method convertRange:fromReferenceFrame:toReferenceFrame:leadingOffset:trailingOffset:
|
||||
@brief Converts a range from one reference frame to another.
|
||||
|
||||
@discussion This method just converts the location and target of the range
|
||||
separately using @c
|
||||
-convertIndex:fromReferenceFrame:toReferenceFrame:. This method
|
||||
ensures that the returned range definitely includes all items
|
||||
that were specified by @c aRange.
|
||||
|
||||
@param aRange
|
||||
The range to be converted.
|
||||
|
||||
@param fromReferenceFrame
|
||||
The reference frame @c aRange is specified in.
|
||||
|
||||
@param toReferenceFrame
|
||||
The reference frame @c aRange is to be converted to.
|
||||
|
||||
@param leadingOffset
|
||||
The offset of the location of the returned range in respect to
|
||||
the location of @c aRange.
|
||||
|
||||
@param trailingOffset
|
||||
The offset of the last index in the range in respect to the last
|
||||
index of @c aRange.
|
||||
|
||||
@return A range in the @c toReferenceFrame that includes the the items
|
||||
specified by @c aRange.
|
||||
*/
|
||||
- (NSRange)convertRange:(NSRange)aRange
|
||||
fromReferenceFrame:(MPReferenceFrame)fromReferenceFrame
|
||||
toReferenceFrame:(MPReferenceFrame)toReferenceFrame
|
||||
leadingOffset:(NSUInteger *)leadingOffset
|
||||
trailingOffset:(NSUInteger *)trailingOffset;
|
||||
|
||||
|
||||
#pragma mark Mutating Expressions
|
||||
/*!
|
||||
@methodgroup Mutating Expressions
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@method replaceItemsInRange:referenceFrame:withElements:
|
||||
@brief Replaces the elements in the specified range with the contents of
|
||||
the @c elements array.
|
||||
|
||||
@discussion This is the most primitive mutation method of @c MPExpression.
|
||||
Every other mutating method utlimately must call this method.
|
||||
|
||||
After the receiver has been mutated the integrety of the receiver
|
||||
is restored. That basically means that subsequent strings are
|
||||
joined and empty strings removed. After restoring integrity the
|
||||
receiver sends a @c
|
||||
-changedElementsInIndexedRangePath:replacementLength: to
|
||||
itself. For more information see the documentation on that
|
||||
method.
|
||||
|
||||
@param aRange
|
||||
The @c range of symbols (including functions) to replace.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame @c aRange is specified in.
|
||||
|
||||
@param elements
|
||||
The elements that should replace the symbols specified by @c
|
||||
range.
|
||||
*/
|
||||
- (void)replaceItemsInRange:(NSRange)aRange
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame
|
||||
withElements:(NSArray *)elements;
|
||||
|
||||
|
||||
/*!
|
||||
@method changedElementsInRangePath:replacementLength:
|
||||
@brief Called after the receiver has been mutated.
|
||||
|
||||
@discussion This method does nothing more than notify it's parent that it has
|
||||
been mutated at the receiver's index. If you need to know about
|
||||
changes in an expression you should override this method instead
|
||||
of @c -replaceSymbolsInRange:withElements: because this method
|
||||
gives you information about the number of elements changed during
|
||||
the mutation.
|
||||
|
||||
@param rangePath
|
||||
The range path at which the receiver was changed starting at the
|
||||
receiver. The range addressed by @c rangePath is expressed in the
|
||||
element reference frame.
|
||||
|
||||
@param replacementLength
|
||||
The number of elements replacing the elements specified by @c
|
||||
rangePath (also specified in the element reference frame).
|
||||
*/
|
||||
- (void)changedElementsInRangePath:(MPRangePath *)rangePath
|
||||
replacementLength:(NSUInteger)replacementLength;
|
||||
|
||||
|
||||
/*!
|
||||
@method subexpressionFromIndex:referenceFrame:
|
||||
@brief Creates an expression from the items in the receiver from the
|
||||
specified index to the end.
|
||||
|
||||
@discussion The items from the receiver are copied. Mutations to the returned
|
||||
expression will not change the receiver.
|
||||
|
||||
@param from
|
||||
The index from which to start constructing the subexpression.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame @c from is specified in.
|
||||
|
||||
@return An expression containing the items from the specified index to
|
||||
the end of the receiver.
|
||||
*/
|
||||
- (MPExpression *)subexpressionFromIndex:(NSUInteger)from
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method subexpressionToIndex:referenceFrame:
|
||||
@brief Creates an expression from the items in the receiver from the
|
||||
first item to the end.
|
||||
|
||||
@discussion The items from the receiver are copied. Mutations to the returned
|
||||
expression will not change the receiver.
|
||||
|
||||
@param to
|
||||
The index of the first element not to include in the newly
|
||||
constructed subexpression.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame @c to is specified in.
|
||||
|
||||
@return An expression containing the items from the first item to the one
|
||||
at the specified index.
|
||||
*/
|
||||
- (MPExpression *)subexpressionToIndex:(NSUInteger)to
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method subexpressionWithRange:referenceFrame:
|
||||
@brief Creates an expression from the items in the receiver within the
|
||||
specified range.
|
||||
|
||||
@discussion The items from the receiver are copied. Mutations to the returned
|
||||
expression will not change the receiver.
|
||||
|
||||
@param aRange
|
||||
Specifies the items to be included in the newly created
|
||||
subexpression.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame @c aRange is specified in.
|
||||
|
||||
@return An expression containing the items in @c aRange.
|
||||
*/
|
||||
- (MPExpression *)subexpressionWithRange:(NSRange)aRange
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
#pragma mark Evaluating Expressions
|
||||
/*!
|
||||
@methodgroup Evaluating Expressions
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@method evaluateWitErrors:
|
||||
@brief Evaluates the receiver.
|
||||
|
||||
@discussion This is a convenience method for evaluating an expression. If you
|
||||
want more control over the evaluation process use @c -parse
|
||||
instead.
|
||||
|
||||
@param errors
|
||||
If the receiver (or any of its elements) contain syntax errors or
|
||||
can not be evaluated this parameter is set to an appropriate
|
||||
value. All items in the array are @c NSError instances. This
|
||||
parameter is never set to an empty array.
|
||||
Pass @c NULL if you are not interested in any errors that might
|
||||
occur.
|
||||
|
||||
@return The result of the evaluation or @c nil of the receiver could not
|
||||
be evaluated. In that case the @c error parameter is set to an
|
||||
appropriate value.
|
||||
*/
|
||||
- (NSDecimalNumber *)evaluateWithErrors:(NSArray *__autoreleasing *)errors;
|
||||
|
||||
|
||||
/*!
|
||||
@method parse:
|
||||
@brief Parses the receiver.
|
||||
|
||||
@discussion This is a convenience method that calls @c
|
||||
-parseExpectingVariable:errors: with @c NO as the first argument.
|
||||
|
||||
@param errors
|
||||
If the receiver (or any of its elements) contain syntax errors
|
||||
this parameter is set to an appropriate value. All items in the
|
||||
array are @c NSError instances. This parameter is never set to an
|
||||
empty array.
|
||||
Pass @c NULL if you are not interested in any errors that might
|
||||
occur.
|
||||
|
||||
@return A @c MPParsedExpression object that represents the receiver and
|
||||
can be evaluated or @c nil if an error occurs. In that case the
|
||||
@c errors parameter is set to an array containing at least one
|
||||
@c NSError instance.
|
||||
*/
|
||||
- (MPParsedExpression *)parse:(NSArray *__autoreleasing *)errors;
|
||||
|
||||
|
||||
/*!
|
||||
@method parseExpectingVariable:errors:
|
||||
@brief Parses the receiver.
|
||||
|
||||
@param flag
|
||||
If @c YES the receiver must (exept for whitespaces) begin with a
|
||||
single letter followed by an equals sign. If it doesn't the
|
||||
expression is considered invalid. Specify @c NO If the expression
|
||||
should be evaluatable by itself.
|
||||
|
||||
@param errors
|
||||
If the receiver (or any of its elements) contain syntax errors
|
||||
this parameter is set to an appropriate value. All items in the
|
||||
array are @c NSError instances. This parameter is never set to an
|
||||
empty array.
|
||||
Pass @c NULL if you are not interested in any errors that might
|
||||
occur.
|
||||
|
||||
@return A @c MPParsedExpression object that represents the receiver and
|
||||
can be evaluated or @c nil if an error occurs. In that case the
|
||||
@c errors parameter is set to an array containing at least one
|
||||
@c NSError instance.
|
||||
*/
|
||||
- (MPParsedExpression *)parseExpectingVariable:(BOOL)flag
|
||||
errors:(NSArray *__autoreleasing *)errors;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
@category MPExpression (MPExpressionConvenience)
|
||||
@brief This category defines convenience methods for the @c MPExpression
|
||||
class.
|
||||
|
||||
@discussion All convenience methods are completely defined in terms of other
|
||||
methods of the @c MPExpression class.
|
||||
*/
|
||||
@interface MPExpression (MPExpressionConvenience)
|
||||
|
||||
#pragma mark Querying Expressions
|
||||
/*!
|
||||
@methodgroup Querying Expressions
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@method countElements
|
||||
@brief Returns the number of elements in the receiver.
|
||||
|
||||
@return The number of elements in the receiver expressed in the element
|
||||
reference frame.
|
||||
*/
|
||||
- (NSUInteger)countElements;
|
||||
|
||||
|
||||
/*!
|
||||
@method countSymbols
|
||||
@brief Returns the number of symbols in the receiver.
|
||||
|
||||
@return The number of symbols in the receiver expressed in the symbol
|
||||
reference frame.
|
||||
*/
|
||||
- (NSUInteger)countSymbols;
|
||||
|
||||
|
||||
/*!
|
||||
@method countTokens
|
||||
@brief Returns the number of tokens in the receiver.
|
||||
|
||||
@return The number of tokens in the receiver expressed in the token
|
||||
reference frame.
|
||||
*/
|
||||
- (NSUInteger)countTokens;
|
||||
|
||||
|
||||
/*!
|
||||
@method elementAtIndex:
|
||||
@brief Returns the element at the specified index.
|
||||
|
||||
@param anIndex
|
||||
The index of the element specified in the element reference
|
||||
frame.
|
||||
|
||||
@return The element at @c anIndex.
|
||||
*/
|
||||
- (id<MPExpressionElement>)elementAtIndex:(NSUInteger)anIndex;
|
||||
|
||||
|
||||
/*!
|
||||
@method symbolAtIndex:
|
||||
@brief Returns the symbol at the specified index.
|
||||
|
||||
@param anIndex
|
||||
The index of the symbol specified in the symbol reference frame.
|
||||
|
||||
@return The symbol at @c anIndex.
|
||||
*/
|
||||
- (id<MPExpressionElement>)symbolAtIndex:(NSUInteger)anIndex;
|
||||
|
||||
|
||||
/*!
|
||||
@method tokenAtIndex:
|
||||
@brief Returns the token at the specified index.
|
||||
|
||||
@param anIndex
|
||||
The index of the token specified in the token reference frame.
|
||||
|
||||
@return The token at @c anIndex.
|
||||
*/
|
||||
- (id<MPToken>)tokenAtIndex:(NSUInteger)anIndex;
|
||||
|
||||
|
||||
#pragma mark Mutating Expressions
|
||||
/*!
|
||||
@methodgroup Mutating Expressions
|
||||
*/
|
||||
|
||||
|
||||
/*!
|
||||
@method appendElement:
|
||||
@brief Appends @c anElement to the receiver.
|
||||
|
||||
@param anElement
|
||||
The element to append to the receiver.
|
||||
*/
|
||||
- (void)appendElement:(id<MPExpressionElement>)anElement;
|
||||
|
||||
|
||||
/*!
|
||||
@method appendElements:
|
||||
@brief Appends the objects from @c elements to the receiver.
|
||||
|
||||
@param elements
|
||||
The elements to append to the receiver.
|
||||
*/
|
||||
- (void)appendElements:(NSArray *)elements;
|
||||
|
||||
|
||||
/*!
|
||||
@method insertElement:atIndex:referenceFrame:
|
||||
@brief Inserts @c anElement at the specified index.
|
||||
|
||||
@param anElement
|
||||
The element to be inserted.
|
||||
|
||||
@param index
|
||||
The index where to insert @c anElement.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame @c index is specified in.
|
||||
*/
|
||||
- (void)insertElement:(id<MPExpressionElement>)anElement
|
||||
atIndex:(NSUInteger)index
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method insertElements:atIndex:referenceFrame:
|
||||
@brief Inserts @c elements at the specified index.
|
||||
|
||||
@param elements
|
||||
The elements to be inserted.
|
||||
|
||||
@param index
|
||||
The index where to insert @c elements.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame @c index is specified in.
|
||||
*/
|
||||
- (void)insertElements:(NSArray *)elements
|
||||
atIndex:(NSUInteger)index
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
|
||||
/*!
|
||||
@method deleteElementsInRange:
|
||||
@brief Removes the elements specified by @c range from the receiver.
|
||||
|
||||
@param range
|
||||
The range of items to remove from the receiver.
|
||||
|
||||
@param referenceFrame
|
||||
The reference frame @c range is specified in.
|
||||
*/
|
||||
- (void)deleteElementsInRange:(NSRange)range
|
||||
referenceFrame:(MPReferenceFrame)referenceFrame;
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user