/* * CS:APP Data Lab */ /* Declare different function types */ typedef int (*funct_t) (void); typedef int (*funct1_t)(int); typedef int (*funct2_t)(int, int); typedef int (*funct3_t)(int, int, int); /* Combine all the information about a function and its tests as structure */ typedef struct { char *name; /* String name */ funct_t solution_funct; /* Function */ funct_t test_funct; /* Test function */ int args; /* Number of function arguments */ char *ops; /* List of legal operators. Special case: "$" for floating point */ int op_limit; /* Max number of ops allowed in solution */ int rating; /* Problem rating (1 -- 4) */ int arg_ranges[3][2]; /* Argument ranges. Always defined for 3 args, even if */ /* the function takes fewer. Special case: First arg */ /* must be set to {1,1} for f.p. puzzles */ } test_rec, *test_ptr; extern test_rec test_set[];