Example #1
0
vfy_jclass
vfy_get_superclass (vfy_jclass klass)
{
  vfy_jclass k;
  k = CLASSTYPE_SUPER (klass);
  return k;
}
Example #2
0
File: typeck.c Project: AHelper/gcc
/* Search in the superclasses of SEARCHED_CLASS for a method matching
   METHOD_NAME and signature SIGNATURE.  A private helper for
   lookup_do.  */
static tree
find_method_in_superclasses (tree searched_class, int flags, 
                             tree method_name, tree signature,
                             tree (*signature_builder) (tree))
{
  tree klass;
  for (klass = CLASSTYPE_SUPER (searched_class); klass != NULL_TREE;
       klass = CLASSTYPE_SUPER (klass))
    {
      tree method;
      method = shallow_find_method (klass, flags, method_name, 
				    signature, signature_builder);
      if (method != NULL_TREE)
	return method;
    }

  return NULL_TREE;
}
Example #3
0
File: typeck.c Project: AHelper/gcc
/* Search in class SEARCHED_CLASS (and its superclasses) for a method
   matching METHOD_NAME and signature SIGNATURE.  FLAGS control some
   parameters of the search.
   
   SEARCH_INTERFACE means also search interfaces and superinterfaces
   of SEARCHED_CLASS.
   
   SEARCH_SUPER means skip SEARCHED_CLASS and start with its
   superclass.
   
   SEARCH_VISIBLE means skip methods for which METHOD_INVISIBLE is
   set.

   Return the matched method DECL or NULL_TREE.  SIGNATURE_BUILDER is
   used on method candidates to build their (sometimes partial)
   signature.  */
static tree
lookup_do (tree searched_class, int flags, tree method_name,
	   tree signature, tree (*signature_builder) (tree))
{
  tree method;
  tree orig_class = searched_class;
    
  if (searched_class == NULL_TREE)
    return NULL_TREE;

  if (flags & SEARCH_SUPER)
    {
      searched_class = CLASSTYPE_SUPER (searched_class);
      if (searched_class == NULL_TREE)
	return NULL_TREE;
    }

  /* First look in our own methods.  */
  method = shallow_find_method (searched_class, flags, method_name,
				signature, signature_builder);  
  if (method)
    return method;

  /* Then look in our superclasses.  */
  if (! CLASS_INTERFACE (TYPE_NAME (searched_class)))
    method = find_method_in_superclasses (searched_class, flags, method_name,
					  signature, signature_builder);  
  if (method)
    return method;
  
  /* If that doesn't work, look in our interfaces.  */
  if (flags & SEARCH_INTERFACE)
    method = find_method_in_interfaces (orig_class, flags, method_name, 
					signature, signature_builder);
  
  return method;
}