Member Class Reference

#include <reflectionbase.h>

Inheritance diagram for Member:

Detailed Description

Member is the root interface of the reflection hierarchy. A Member may be

All members except the global package have an enclosing container as their parent. For example, the method StringInterface::GetLength() has the class StringInterface as enclosing container, which has the maxon package as enclosing container, which has the global package as enclosing container.

Public Types

enum class  KIND {
  PACKAGE ,
  CLASS ,
  FUNCTION ,
  INSTANCE_FUNCTION ,
  CONST_INSTANCE_FUNCTION ,
  CONTAINER_TEST ,
  FUNCTION_TEST
}
 

Public Member Functions

enum maxon::reflection::Member::KIND MAXON_ENUM_FLAGS_CLASS (KIND)
 
MAXON_METHOD const ContainerGetEnclosingContainer () const
 
MAXON_METHOD KIND GetKind () const
 
MAXON_METHOD const IdGetSimpleName () const
 
MAXON_METHOD const IdGetId () const
 
MAXON_METHOD String ToString (const FormatStatement *fs=nullptr) const
 

Static Public Member Functions

static MAXON_METHOD Result< BoolGetMembers (const ValueReceiver< const Member & > &members)
 
static MAXON_METHOD const MemberFind (const Id &memberId)
 

Private Member Functions

 MAXON_INTERFACE_NONVIRTUAL (Member, MAXON_REFERENCE_NONE, "net.maxon.reflection.interface.member", MAXON_IMPLEMENTATION_MODULE("net.maxon.kernel"))
 

Member Enumeration Documentation

◆ KIND

enum KIND
strong

This enum defines the possible kinds of a Member. Exactly one of the flags is set in the value returned by GetKind().

Enumerator
PACKAGE 

The member is a Package.

CLASS 

The member is a Class.

FUNCTION 

The member is a Function (either at package scope, or a static class member).

INSTANCE_FUNCTION 

The member is a non-const instance function (i.e., non-static class member).

CONST_INSTANCE_FUNCTION 

The member is a const instance function (i.e., non-static class member).

CONTAINER_TEST 
FUNCTION_TEST 

Member Function Documentation

◆ MAXON_INTERFACE_NONVIRTUAL()

MAXON_INTERFACE_NONVIRTUAL ( Member  ,
MAXON_REFERENCE_NONE  ,
"net.maxon.reflection.interface.member"  ,
MAXON_IMPLEMENTATION_MODULE("net.maxon.kernel")   
)
private

◆ MAXON_ENUM_FLAGS_CLASS()

enum maxon::reflection::Member::KIND MAXON_ENUM_FLAGS_CLASS ( KIND  )

◆ GetEnclosingContainer()

MAXON_METHOD const Container* GetEnclosingContainer ( ) const

Returns the enclosing container of this member. All members except the global package have such an enclosing container: Functions and classes are nested in classes or packages, packages are nested in other packages.

Returns
The enclosing container of this member, or nullptr if this is the global package.

◆ GetKind()

MAXON_METHOD KIND GetKind ( ) const

Returns the kind of this member. This allows to tell whether this Member can be safely cast to a Package, Class or Function. The returned value has exactly one of the KIND flags set.

Returns
Kind of this member.

◆ GetSimpleName()

MAXON_METHOD const Id& GetSimpleName ( ) const

Returns the (unqualified) name of this member. E.g., for maxon::StringInterface::GetLength this is "GetLength".

Returns
Name of this member.

◆ GetId()

MAXON_METHOD const Id& GetId ( ) const

Returns a unique id for this member. This is the qualified name of the member (with dot as separator), plus optionally an additional code for disambiguation, separated by "@". For functions, a hashcode which depends on the parameter and return types is used to disambiguate between overloads (such as "net.maxon.asin@919429e0").

The function Find() allows to find a Member for the id.

Returns
Unique id for this member.

◆ ToString()

MAXON_METHOD String ToString ( const FormatStatement fs = nullptr) const

Returns a readable string of the content.

Parameters
[in]fsNullptr or additional formatting instruction. Currently no additional formatting instructions are supported.
Returns
The converted result.

◆ GetMembers()

static MAXON_METHOD Result<Bool> GetMembers ( const ValueReceiver< const Member & > &  members)
static

Yields all registered members.

◆ Find()

static MAXON_METHOD const Member* Find ( const Id memberId)
static

Finds the member whose id is memberId. The id has to be in a format as specified by GetId(). If there is no member with the given memberId, nullptr is returned.

Parameters
[in]memberIdA member id.
Returns
The member with the given memberId, or nullptr.