1 #include "mongoose_mex.hpp" 2 3 namespace Mongoose 4 { 5 6 #define MEX_STRUCT_READINT(F) returner->F = (Int) readField(matOptions, #F); 7 #define MEX_STRUCT_READDOUBLE(F) returner->F = readField(matOptions, #F); 8 #define MEX_STRUCT_READBOOL(F) returner->F = static_cast<bool>((readField(matOptions, #F) != 0.0)); 9 #define MEX_STRUCT_READENUM(F,T) returner->F = (T) (readField(matOptions, #F)); 10 mex_get_options(const mxArray * matOptions)11EdgeCut_Options *mex_get_options 12 ( 13 const mxArray *matOptions 14 ) 15 { 16 EdgeCut_Options *returner = EdgeCut_Options::create(); 17 18 if(!returner) 19 return NULL; 20 if(matOptions == NULL) 21 return returner; 22 23 MEX_STRUCT_READINT(random_seed); 24 MEX_STRUCT_READINT(coarsen_limit); 25 MEX_STRUCT_READENUM(matching_strategy, MatchingStrategy); 26 MEX_STRUCT_READBOOL(do_community_matching); 27 MEX_STRUCT_READDOUBLE(high_degree_threshold); 28 29 /** Guess Partitioning Options *******************************************/ 30 MEX_STRUCT_READENUM(initial_cut_type, InitialEdgeCutType); 31 32 /** Waterdance Options ***************************************************/ 33 MEX_STRUCT_READINT(num_dances); 34 35 /**** Fidducia-Mattheyes Options *****************************************/ 36 MEX_STRUCT_READBOOL(use_FM); 37 MEX_STRUCT_READINT(FM_search_depth); 38 MEX_STRUCT_READINT(FM_consider_count); 39 MEX_STRUCT_READINT(FM_max_num_refinements); 40 41 /**** Quadratic Programming Options **************************************/ 42 MEX_STRUCT_READBOOL(use_QP_gradproj); 43 MEX_STRUCT_READDOUBLE(gradproj_tolerance); 44 MEX_STRUCT_READINT(gradproj_iteration_limit); 45 46 /** Final Partition Target Metrics ***************************************/ 47 MEX_STRUCT_READDOUBLE(target_split); 48 MEX_STRUCT_READDOUBLE(soft_split_tolerance); 49 50 return returner; 51 } 52 53 }