// Prints InnerArraySequential public static void PrintInnerArraySequential(InnerArraySequential outer, string name) { for (int i = 0; i < Common.NumArrElements; i++) { Console.WriteLine("\t{0}.arr[{1}].f1 = {2}", name, i, outer.arr[i].f1); Console.WriteLine("\t{0}.arr[{1}].f2 = {2}", name, i, outer.arr[i].f2); Console.WriteLine("\t{0}.arr[{1}].f3 = {2}", name, i, outer.arr[i].f3); } }
// Returns new OUTER instance; the params are the fields of INNER; // all the INNER elements have the same field values public static InnerArraySequential NewInnerArraySequential(int f1, float f2, string f3) { InnerArraySequential outer = new InnerArraySequential(); outer.arr = new InnerSequential[Common.NumArrElements]; for (int i = 0; i < Common.NumArrElements; i++) { outer.arr[i].f1 = f1; outer.arr[i].f2 = f2; outer.arr[i].f3 = f3; } return(outer); }
// Returns true if the two params have the same fields public static bool ValidateInnerArraySequential(InnerArraySequential outer1, InnerArraySequential outer2, string methodName) { for (int i = 0; i < Common.NumArrElements; i++) { if (outer1.arr[i].f1 != outer2.arr[i].f1 || outer1.arr[i].f2 != outer2.arr[i].f2 || outer1.arr[i].f3 != outer2.arr[i].f3) { Console.WriteLine("\tFAILED! " + methodName + "did not receive result as expected."); Console.WriteLine("\tThe Actual is..."); Console.WriteLine("\t{0}.arr[{1}].f1 = {2}", outer1.ToString(), i, outer1.arr[i].f1); Console.WriteLine("\t{0}.arr[{1}].f2 = {2}", outer1.ToString(), i, outer1.arr[i].f2); Console.WriteLine("\t{0}.arr[{1}].f3 = {2}", outer1.ToString(), i, outer1.arr[i].f3); Console.WriteLine("\tThe Expected is..."); Console.WriteLine("\t{0}.arr[{1}].f1 = {2}", outer2.ToString(), i, outer2.arr[i].f1); Console.WriteLine("\t{0}.arr[{1}].f2 = {2}", outer2.ToString(), i, outer2.arr[i].f2); Console.WriteLine("\t{0}.arr[{1}].f3 = {2}", outer2.ToString(), i, outer2.arr[i].f3); return(false); } } Console.WriteLine("\tPASSED!"); return(true); }
// Returns true if the two params have the same fields public static bool ValidateInnerArraySequential(InnerArraySequential outer1, InnerArraySequential outer2, string methodName) { for (int i = 0; i < Common.NumArrElements; i++) { if (outer1.arr[i].f1 != outer2.arr[i].f1 || outer1.arr[i].f2 != outer2.arr[i].f2 || outer1.arr[i].f3 != outer2.arr[i].f3) { Console.WriteLine("\tFAILED! " + methodName + "did not recieve result as expected."); Console.WriteLine("\tThe Actual is..."); Console.WriteLine("\t{0}.arr[{1}].f1 = {2}", outer1.ToString(), i, outer1.arr[i].f1); Console.WriteLine("\t{0}.arr[{1}].f2 = {2}", outer1.ToString(), i, outer1.arr[i].f2); Console.WriteLine("\t{0}.arr[{1}].f3 = {2}", outer1.ToString(), i, outer1.arr[i].f3); Console.WriteLine("\tThe Expected is..."); Console.WriteLine("\t{0}.arr[{1}].f1 = {2}", outer2.ToString(), i, outer2.arr[i].f1); Console.WriteLine("\t{0}.arr[{1}].f2 = {2}", outer2.ToString(), i, outer2.arr[i].f2); Console.WriteLine("\t{0}.arr[{1}].f3 = {2}", outer2.ToString(), i, outer2.arr[i].f3); return false; } } Console.WriteLine("\tPASSED!"); return true; }
// Returns new OUTER instance; the params are the fields of INNER; // all the INNER elements have the same field values public static InnerArraySequential NewInnerArraySequential(int f1, float f2, string f3) { InnerArraySequential outer = new InnerArraySequential(); outer.arr = new InnerSequential[Common.NumArrElements]; for (int i = 0; i < Common.NumArrElements; i++) { outer.arr[i].f1 = f1; outer.arr[i].f2 = f2; outer.arr[i].f3 = f3; } return outer; }
static extern bool MarshalStructAsParam_AsSeqByRef2(ref InnerArraySequential str1);
static extern bool MarshalStructAsParam_AsSeqByVal2(InnerArraySequential str1);