-gboolean
-mono_trace_eval_exception (MonoClass *klass)
-{
- int include = 0;
- int i;
-
- if (!klass)
- return FALSE;
-
- for (i = 0; i < trace_spec.len; i++) {
- MonoTraceOperation *op = &trace_spec.ops [i];
- int inc = 0;
-
- switch (op->op){
- case MONO_TRACEOP_EXCEPTION:
- if (strcmp ("", op->data) == 0 && strcmp ("all", op->data2) == 0)
- inc = 1;
- else if (strcmp ("", op->data) == 0 || strcmp (klass->name_space, op->data) == 0)
- if (strcmp (klass->name, op->data2) == 0)
- inc = 1;
- break;
- default:
- break;
- }
- if (op->exclude){
- if (inc)
- include = 0;
- } else if (inc)
- include = 1;
- }
-
- return include;
-}
-
-gboolean
-mono_trace_eval (MonoMethod *method)
-{
- int include = 0;
- int i;
-
- for (i = 0; i < trace_spec.len; i++){
- MonoTraceOperation *op = &trace_spec.ops [i];
- int inc = 0;
-
- switch (op->op){
- case MONO_TRACEOP_ALL:
- inc = 1;
- break;
- case MONO_TRACEOP_PROGRAM:
- if (trace_spec.assembly && (method->klass->image == mono_assembly_get_image (trace_spec.assembly)))
- inc = 1;
- break;
- case MONO_TRACEOP_WRAPPER:
- if ((method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED) ||
- (method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE))
- inc = 1;
- break;
- case MONO_TRACEOP_METHOD:
- if (mono_method_desc_full_match ((MonoMethodDesc *) op->data, method))
- inc = 1;
- break;
- case MONO_TRACEOP_CLASS:
- if (strcmp (method->klass->name_space, op->data) == 0)
- if (strcmp (method->klass->name, op->data2) == 0)
- inc = 1;
- break;
- case MONO_TRACEOP_ASSEMBLY:
- if (strcmp (mono_image_get_name (method->klass->image), op->data) == 0)
- inc = 1;
- break;
- case MONO_TRACEOP_NAMESPACE:
- if (strcmp (method->klass->name_space, op->data) == 0)
- inc = 1;
- break;
- case MONO_TRACEOP_EXCEPTION:
- break;
- }
- if (op->exclude) {
- if (inc)
- include = 0;
- } else if (inc) {
- include = 1;
- }
- }
- return include;
-}
-
-static int is_filenamechar (char p)
-{
- if (p >= 'A' && p <= 'Z')
- return TRUE;
- if (p >= 'a' && p <= 'z')
- return TRUE;
- if (p >= '0' && p <= '9')
- return TRUE;
- if (p == '.' || p == ':' || p == '_' || p == '-' || p == '`')
- return TRUE;
- return FALSE;
-}
-
-static char *input;
-static char *value;
-
-static void get_string (void)
-{
- char *start = input;
- while (is_filenamechar (*input)){
- input++;
- }
- if (value != NULL)
- g_free (value);
- size_t len = input - start;
- value = (char *)g_malloc (len + 1);
- memcpy (value, start, len);
- value [len] = 0;
-}
-
-enum Token {
- TOKEN_METHOD,
- TOKEN_CLASS,
- TOKEN_ALL,
- TOKEN_PROGRAM,
- TOKEN_EXCEPTION,
- TOKEN_NAMESPACE,
- TOKEN_WRAPPER,
- TOKEN_STRING,
- TOKEN_EXCLUDE,
- TOKEN_DISABLED,
- TOKEN_SEPARATOR,
- TOKEN_END,
- TOKEN_ERROR
-};
-
-static int
-get_token (void)