#ifndef REGION
#define REGION(Id, Parent)
#endif
#ifndef ABSTRACT_REGION
#define ABSTRACT_REGION(Id, Parent)
#endif
#ifndef REGION_RANGE
#define REGION_RANGE(Id, First, Last)
#endif
ABSTRACT_REGION(MemSpaceRegion, MemRegion)
REGION(CodeSpaceRegion, MemSpaceRegion)
ABSTRACT_REGION(GlobalsSpaceRegion, MemSpaceRegion)
ABSTRACT_REGION(NonStaticGlobalSpaceRegion, GlobalsSpaceRegion)
REGION(GlobalImmutableSpaceRegion, NonStaticGlobalSpaceRegion)
REGION(GlobalInternalSpaceRegion, NonStaticGlobalSpaceRegion)
REGION(GlobalSystemSpaceRegion, NonStaticGlobalSpaceRegion)
REGION_RANGE(NON_STATIC_GLOBAL_MEMSPACES, GlobalImmutableSpaceRegionKind,
GlobalSystemSpaceRegionKind)
REGION(StaticGlobalSpaceRegion, MemSpaceRegion)
REGION_RANGE(GLOBAL_MEMSPACES, GlobalImmutableSpaceRegionKind,
StaticGlobalSpaceRegionKind)
REGION(HeapSpaceRegion, MemSpaceRegion)
ABSTRACT_REGION(StackSpaceRegion, MemSpaceRegion)
REGION(StackArgumentsSpaceRegion, StackSpaceRegion)
REGION(StackLocalsSpaceRegion, StackSpaceRegion)
REGION_RANGE(STACK_MEMSPACES, StackArgumentsSpaceRegionKind,
StackLocalsSpaceRegionKind)
REGION(UnknownSpaceRegion, MemSpaceRegion)
REGION_RANGE(MEMSPACES, CodeSpaceRegionKind,
UnknownSpaceRegionKind)
ABSTRACT_REGION(SubRegion, MemRegion)
REGION(AllocaRegion, SubRegion)
REGION(SymbolicRegion, SubRegion)
ABSTRACT_REGION(TypedRegion, SubRegion)
REGION(BlockDataRegion, TypedRegion)
ABSTRACT_REGION(CodeTextRegion, TypedRegion)
REGION(BlockCodeRegion, CodeTextRegion)
REGION(FunctionCodeRegion, CodeTextRegion)
REGION_RANGE(CODE_TEXT_REGIONS, BlockCodeRegionKind,
FunctionCodeRegionKind)
ABSTRACT_REGION(TypedValueRegion, TypedRegion)
REGION(CompoundLiteralRegion, TypedValueRegion)
REGION(CXXBaseObjectRegion, TypedValueRegion)
REGION(CXXDerivedObjectRegion, TypedValueRegion)
REGION(CXXTempObjectRegion, TypedValueRegion)
REGION(CXXLifetimeExtendedObjectRegion, TypedValueRegion)
REGION(CXXThisRegion, TypedValueRegion)
ABSTRACT_REGION(DeclRegion, TypedValueRegion)
REGION(FieldRegion, DeclRegion)
REGION(ObjCIvarRegion, DeclRegion)
ABSTRACT_REGION(VarRegion, DeclRegion)
REGION(NonParamVarRegion, VarRegion)
REGION(ParamVarRegion, VarRegion)
REGION_RANGE(VAR_REGIONS, NonParamVarRegionKind,
ParamVarRegionKind)
REGION_RANGE(DECL_REGIONS, FieldRegionKind,
ParamVarRegionKind)
REGION(ElementRegion, TypedValueRegion)
REGION(ObjCStringRegion, TypedValueRegion)
REGION(StringRegion, TypedValueRegion)
REGION_RANGE(TYPED_VALUE_REGIONS, CompoundLiteralRegionKind,
StringRegionKind)
REGION_RANGE(TYPED_REGIONS, BlockDataRegionKind,
StringRegionKind)
#undef REGION_RANGE
#undef ABSTRACT_REGION
#undef REGION