static object getByArrayIndex(object value, WmPathItem pathItem, IData origPipe) { if (pathItem.arrayIndex == -1) { return(value); } if ((pathItem.tableIndex != -1) && ((value is Object[][]))) { Object[][] obj = (Object[][])value; int arrayIndex = pathItem.arrayIndex; if (arrayIndex == -2) { arrayIndex = getIndexFromPipe(pathItem.varArrayIndex, origPipe); } if (arrayIndex < obj.Length) { int tableIndex = pathItem.tableIndex; if (tableIndex == -2) { tableIndex = getIndexFromPipe(pathItem.varTableIndex, origPipe); } if (tableIndex < obj[arrayIndex].Length) { return(obj[arrayIndex][tableIndex]); } return(null); } } else if ((value is object[])) { object[] obj = (object[])value; int index = pathItem.arrayIndex; if (index == -2) { index = getIndexFromPipe(pathItem.varArrayIndex, origPipe); } if (index < obj.Length) { return(obj[index]); } return(null); } return(null); }
public static object get(IData parent, WmPathItem pathItem, bool bestEffort, IData origPipe) { if ((parent == null) || (pathItem == null)) { return(null); } Object value = null; if (pathItem.pathType == 0) { IDataCursor cursor = parent.getCursor(); String name = pathItem.name; if (cursor.first(name)) { value = cursor.getValue(); } cursor.destroy(); } else if (pathItem.pathType == 1) { if (pathItem.position < 0) { return(null); } IDataCursor cursor = parent.getCursor(); if (seek(cursor, pathItem.position)) { value = cursor.getValue(); } cursor.destroy(); } else if (pathItem.pathType == 2) { if (pathItem.position < 0) { return(null); } IDataCursor cursor = parent.getCursor(); String name = pathItem.name; int position = pathItem.position; bool find = true; for (int i = 0; i <= position; i++) { if (!cursor.next(name)) { find = false; break; } } if (find) { value = cursor.getValue(); } cursor.destroy(); } else if (pathItem.pathType == 3) { return(null); } if ((!bestEffort) && (!dataCheck(value, pathItem))) { value = null; } if ((value is WmIDataList)) { value = ((WmIDataList)value).getItems(); } if (pathItem.arrayIndex == -1) { return(value); } return(getByArrayIndex(value, pathItem, origPipe)); }
private static Object get(IData parent, WmPathItem pathItem, IData origPipe) { return(get(parent, pathItem, true, origPipe)); }
private static bool dataCheck(object data, WmPathItem pathItem) { if ((data is WmIDataList)) { data = ((WmIDataList)data).getItems(); } if (data == null) { return(true); } int type = pathItem.type; int dim = pathItem.dim; if (type == -1) { if (dim == 2) { return(data is object[][]); } if (dim == 1) { return(data is object[]); } return(true); } if (dim == -1) { if (type == 1) { return(((data is string)) || ((data is string[])) || ((data is string[][]))); } if (NSField.isRecordType(type)) { return(data is IData); } return(true); } if ((type == 3) && (dim == 0)) { return(true); } if (((data is string)) && (type == 1) && (dim == 0)) { return(true); } if (((data is string[])) && (type == 1) && (dim == 1)) { return(true); } if (((data is string[][])) && (type == 1) && (dim == 2)) { return(true); } if (((data is IData)) && (NSField.isRecordType(type)) && (dim == 0)) { return(true); } if (((data is IData[])) && (NSField.isRecordType(type)) && (dim == 1)) { return(true); } if (((data is object[])) && (type == 3) && (dim == 1)) { return(true); } return(false); }