My Profile
Active Members
TodayLast 7 Days
more...
Awards & Gifts
Online Exams
Fresher Jobs
Our fresher job section is exclusively for fresh graduates! Find jobs for freshers in major Indian
cities including Bangalore, Chennai, Hyderabad, Pune or Kochi
Resources
Find educational articles, blogs, discussion threads and other resources.
Colleges
Find details about any college in India or search for courses.
|
Multi Variable Array Operation Acceptor
Posted Date:
Total Responses: 0
Posted By: Mahesh Member Level: Platinum Points/Cash: 8
|
using System; using System.Collections.Generic; using System.Text; using BaseTypes;
namespace FormulaEditor { public class MultiVariableArrayOperationAcceptor : IMultiVariableOperationAcceptor, IMultiVariableOperation {
#region Fields
private IMultiVariableOperationAcceptor acceptor;
private IMultiVariableOperation operation; private IMultiVariableOperation op; protected object[] y; protected object[] types; protected ArrayReturnType returnType; protected object returnValue; protected bool[] isArray; protected int length = 0; protected int[] rank; protected int[][] ranks; protected object[][] yy; protected object[] yt;
#endregion
public MultiVariableArrayOperationAcceptor(IMultiVariableOperationAcceptor acceptor) { this.acceptor = acceptor; }
#region IMultiVariableOperationAcceptor Members
public IMultiVariableOperation AcceptOperation(MathSymbol symbol) { operation = acceptor.AcceptOperation(symbol); return this; }
#endregion
#region IOperationAcceptor Members
public IObjectOperation Accept(object type) { IObjectOperation ownOp = acceptor.Accept(type); if (ownOp != null) { return ownOp; } if (type is ArrayReturnType) { ArrayReturnType a = type as ArrayReturnType; if (a.IsObjectType) { op = acceptor.Accept(a) as IMultiVariableOperation; if (op == null) { return null; } types = new object[] { type }; ArrayOperation.CreateAllArrays(op, types, out y, out yy, out rank, out ranks); returnType = new ArrayReturnType(op.ReturnType, rank, true); return this; } } return null; }
#endregion
#region IMultiVariableOperation Members
public IObjectOperation Accept(object[] types) { this.types = types; if (acceptor is IMultiVariableOperation) { IMultiVariableOperation ma = acceptor as IMultiVariableOperation; IObjectOperation ownOp = ma.Accept(types); if (ownOp != null) { return ownOp; } } if (types == null) { return acceptor.Accept(null); } object[] t = new object[types.Length]; bool isArray = false; for (int i = 0; i < t.Length; i++) { t[i] = ArrayReturnType.GetBaseType(types[i]); if (types[i] is ArrayReturnType) { isArray = true; } } IObjectOperation opr = operation.Accept(t); if (opr == null) { return null; } if (!isArray) { return opr; } ArrayOperation.CreateAllArrays(opr, types, out y, out yy, out rank, out ranks); returnType = new ArrayReturnType(opr.ReturnType, rank, true); returnValue = y; if (types != null) { if (types.Length > 0) { yt = new object[types.Length]; } } return this; }
#endregion
#region IObjectOperation Members
public int Arity { get { return types.Length; } }
public object this[object[] x] { get { ArrayOperation.PerformOperation(operation, returnValue as object[], x, yy, rank.Length, ranks, rank, yt); return returnValue; } }
public object ReturnType { get { return returnType; } }
public bool IsPowered { get { return op.IsPowered; } }
#endregion
} }
|
Project Feedbacks
|
No feedbacks found. Be the first to respond and make money from revenue sharing program.
|
|
|
| Post Feedback |
|
|
You must Sign In to post a feedback.
|
|
|
|
|
Advertise Here
|