// import 'dart:ffi';

// import 'package:ffi/ffi.dart';
// import 'package:segmentation_douglas_peucker_flutter/dali_point.dart';
// import 'package:segmentation_douglas_peucker_flutter/dotnet_exception.dart';
// import 'package:segmentation_douglas_peucker_flutter/gen/generated_bindings.dart';
// import 'package:segmentation_douglas_peucker_flutter/lib.dart';

// abstract class MyLib {
//   static void runExample() {
//     final NativeLibrary nativeLibrary =
//         NativeLibrary(Lib.init('MyLib.Managed'));

//     final Pointer<System_Exception_t> exception = calloc();
//     print('Exception allocated ! ($exception)');

//     final MyLib_Hello_t hello = nativeLibrary.MyLib_Hello_Create(exception);
//     exception.handle();

//     print('Hello created ! ($hello)');

//     final MathLib_Math_t mathLib =
//         nativeLibrary.MyLib_Hello_GetMath(hello, exception);
//     exception.handle();

//     print('MathLib created ! ($mathLib)');

//     final System_Drawing_Point_t point1 =
//         nativeLibrary.System_Drawing_Point_Create(200, 400, exception);
//     exception.handle();
//     final DaliPoint daliPoint1 = DaliPoint.fromPointer(point1);

//     print('Point1: $daliPoint1');

//     final System_Drawing_Point_t point2 =
//         nativeLibrary.System_Drawing_Point_Create(200, 500, exception);
//     exception.handle();
//     final DaliPoint daliPoint2 = DaliPoint.fromPointer(point2);

//     print('Point2: $daliPoint2');

//     final System_Drawing_Point_t point3 =
//         nativeLibrary.System_Drawing_Point_Create(200, 600, exception);
//     exception.handle();
//     final DaliPoint daliPoint3 = DaliPoint.fromPointer(point3);

//     print('Point3: $daliPoint3');

//     final System_Type_t pointType = nativeLibrary.System_Drawing_Point_TypeOf();

//     final System_Collections_Generic_List_A1_t points =
//         nativeLibrary.System_Collections_Generic_List_A1_Create_1(
//       pointType,
//       3,
//       exception,
//     );

//     exception.handle();

//     print('Points list created ! ($points)');

//     nativeLibrary.System_Collections_Generic_List_A1_Add(
//         points, pointType, point1, exception);
//     exception.handle();

//     print('Point1 added !');

//     nativeLibrary.System_Collections_Generic_List_A1_Add(
//         points, pointType, point2, exception);
//     exception.handle();

//     print('Point2 added !');

//     nativeLibrary.System_Collections_Generic_List_A1_Add(
//         points, pointType, point3, exception);
//     exception.handle();

//     print('Point3 added !');

//     final pointSum =
//         nativeLibrary.MathLib_Math_SumPoints(mathLib, points, exception);
//     exception.handle();
//     final DaliPoint daliPointSum = DaliPoint.fromPointer(pointSum);

//     print('Point sum: $daliPointSum');
//   }
// }
