/*----------------------------------------------------------------------------*/
/* This file is generated by the templates/template.rb script and should not  */
/* be modified manually.                                                      */
/* To change the template see                                                 */
/* templates/ext/rbs_extension/class_constants.c.erb                          */
/*----------------------------------------------------------------------------*/

#include "rbs_extension.h"

VALUE RBS;
VALUE RBS_AST;
VALUE RBS_AST_Declarations;
VALUE RBS_AST_Directives;
VALUE RBS_AST_Members;
VALUE RBS_AST_Ruby;
VALUE RBS_AST_Ruby_Annotations;
VALUE RBS_Parser;
VALUE RBS_Types;
VALUE RBS_Types_Bases;

VALUE RBS_AST_Annotation;
VALUE RBS_AST_Comment;
VALUE RBS_AST_Declarations_Class;
VALUE RBS_AST_Declarations_Class_Super;
VALUE RBS_AST_Declarations_ClassAlias;
VALUE RBS_AST_Declarations_Constant;
VALUE RBS_AST_Declarations_Global;
VALUE RBS_AST_Declarations_Interface;
VALUE RBS_AST_Declarations_Module;
VALUE RBS_AST_Declarations_Module_Self;
VALUE RBS_AST_Declarations_ModuleAlias;
VALUE RBS_AST_Declarations_TypeAlias;
VALUE RBS_AST_Directives_Use;
VALUE RBS_AST_Directives_Use_SingleClause;
VALUE RBS_AST_Directives_Use_WildcardClause;
VALUE RBS_AST_Members_Alias;
VALUE RBS_AST_Members_AttrAccessor;
VALUE RBS_AST_Members_AttrReader;
VALUE RBS_AST_Members_AttrWriter;
VALUE RBS_AST_Members_ClassInstanceVariable;
VALUE RBS_AST_Members_ClassVariable;
VALUE RBS_AST_Members_Extend;
VALUE RBS_AST_Members_Include;
VALUE RBS_AST_Members_InstanceVariable;
VALUE RBS_AST_Members_MethodDefinition;
VALUE RBS_AST_Members_MethodDefinition_Overload;
VALUE RBS_AST_Members_Prepend;
VALUE RBS_AST_Members_Private;
VALUE RBS_AST_Members_Public;
VALUE RBS_AST_Ruby_Annotations_BlockParamTypeAnnotation;
VALUE RBS_AST_Ruby_Annotations_ClassAliasAnnotation;
VALUE RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation;
VALUE RBS_AST_Ruby_Annotations_DoubleSplatParamTypeAnnotation;
VALUE RBS_AST_Ruby_Annotations_InstanceVariableAnnotation;
VALUE RBS_AST_Ruby_Annotations_MethodTypesAnnotation;
VALUE RBS_AST_Ruby_Annotations_ModuleAliasAnnotation;
VALUE RBS_AST_Ruby_Annotations_ModuleSelfAnnotation;
VALUE RBS_AST_Ruby_Annotations_NodeTypeAssertion;
VALUE RBS_AST_Ruby_Annotations_ParamTypeAnnotation;
VALUE RBS_AST_Ruby_Annotations_ReturnTypeAnnotation;
VALUE RBS_AST_Ruby_Annotations_SkipAnnotation;
VALUE RBS_AST_Ruby_Annotations_SplatParamTypeAnnotation;
VALUE RBS_AST_Ruby_Annotations_TypeApplicationAnnotation;
VALUE RBS_AST_TypeParam;
VALUE RBS_MethodType;
VALUE RBS_Namespace;
VALUE RBS_TypeName;
VALUE RBS_Types_Alias;
VALUE RBS_Types_Bases_Any;
VALUE RBS_Types_Bases_Bool;
VALUE RBS_Types_Bases_Bottom;
VALUE RBS_Types_Bases_Class;
VALUE RBS_Types_Bases_Instance;
VALUE RBS_Types_Bases_Nil;
VALUE RBS_Types_Bases_Self;
VALUE RBS_Types_Bases_Top;
VALUE RBS_Types_Bases_Void;
VALUE RBS_Types_Block;
VALUE RBS_Types_ClassInstance;
VALUE RBS_Types_ClassSingleton;
VALUE RBS_Types_Function;
VALUE RBS_Types_Function_ForwardingParam;
VALUE RBS_Types_Function_Param;
VALUE RBS_Types_Interface;
VALUE RBS_Types_Intersection;
VALUE RBS_Types_Literal;
VALUE RBS_Types_Optional;
VALUE RBS_Types_Proc;
VALUE RBS_Types_Record;
VALUE RBS_Types_Tuple;
VALUE RBS_Types_Union;
VALUE RBS_Types_UntypedFunction;
VALUE RBS_Types_Variable;

VALUE RBS_ParsingError;

#define IMPORT_CONSTANT(var, parent, name)           \
    {                                                \
        var = rb_const_get(parent, rb_intern(name)); \
        rb_gc_register_mark_object(var);             \
    }

void rbs__init_constants(void) {
    IMPORT_CONSTANT(RBS, rb_cObject, "RBS");
    IMPORT_CONSTANT(RBS_ParsingError, RBS, "ParsingError");

    IMPORT_CONSTANT(RBS_AST, RBS, "AST");
    IMPORT_CONSTANT(RBS_AST_Declarations, RBS_AST, "Declarations");
    IMPORT_CONSTANT(RBS_AST_Directives, RBS_AST, "Directives");
    IMPORT_CONSTANT(RBS_AST_Members, RBS_AST, "Members");
    IMPORT_CONSTANT(RBS_AST_Ruby, RBS_AST, "Ruby");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations, RBS_AST_Ruby, "Annotations");
    IMPORT_CONSTANT(RBS_Types, RBS, "Types");
    IMPORT_CONSTANT(RBS_Types_Bases, RBS_Types, "Bases");

    IMPORT_CONSTANT(RBS_AST_Annotation, RBS_AST, "Annotation");
    IMPORT_CONSTANT(RBS_AST_Comment, RBS_AST, "Comment");
    IMPORT_CONSTANT(RBS_AST_Declarations_Class, RBS_AST_Declarations, "Class");
    IMPORT_CONSTANT(RBS_AST_Declarations_Class_Super, RBS_AST_Declarations_Class, "Super");
    IMPORT_CONSTANT(RBS_AST_Declarations_ClassAlias, RBS_AST_Declarations, "ClassAlias");
    IMPORT_CONSTANT(RBS_AST_Declarations_Constant, RBS_AST_Declarations, "Constant");
    IMPORT_CONSTANT(RBS_AST_Declarations_Global, RBS_AST_Declarations, "Global");
    IMPORT_CONSTANT(RBS_AST_Declarations_Interface, RBS_AST_Declarations, "Interface");
    IMPORT_CONSTANT(RBS_AST_Declarations_Module, RBS_AST_Declarations, "Module");
    IMPORT_CONSTANT(RBS_AST_Declarations_Module_Self, RBS_AST_Declarations_Module, "Self");
    IMPORT_CONSTANT(RBS_AST_Declarations_ModuleAlias, RBS_AST_Declarations, "ModuleAlias");
    IMPORT_CONSTANT(RBS_AST_Declarations_TypeAlias, RBS_AST_Declarations, "TypeAlias");
    IMPORT_CONSTANT(RBS_AST_Directives_Use, RBS_AST_Directives, "Use");
    IMPORT_CONSTANT(RBS_AST_Directives_Use_SingleClause, RBS_AST_Directives_Use, "SingleClause");
    IMPORT_CONSTANT(RBS_AST_Directives_Use_WildcardClause, RBS_AST_Directives_Use, "WildcardClause");
    IMPORT_CONSTANT(RBS_AST_Members_Alias, RBS_AST_Members, "Alias");
    IMPORT_CONSTANT(RBS_AST_Members_AttrAccessor, RBS_AST_Members, "AttrAccessor");
    IMPORT_CONSTANT(RBS_AST_Members_AttrReader, RBS_AST_Members, "AttrReader");
    IMPORT_CONSTANT(RBS_AST_Members_AttrWriter, RBS_AST_Members, "AttrWriter");
    IMPORT_CONSTANT(RBS_AST_Members_ClassInstanceVariable, RBS_AST_Members, "ClassInstanceVariable");
    IMPORT_CONSTANT(RBS_AST_Members_ClassVariable, RBS_AST_Members, "ClassVariable");
    IMPORT_CONSTANT(RBS_AST_Members_Extend, RBS_AST_Members, "Extend");
    IMPORT_CONSTANT(RBS_AST_Members_Include, RBS_AST_Members, "Include");
    IMPORT_CONSTANT(RBS_AST_Members_InstanceVariable, RBS_AST_Members, "InstanceVariable");
    IMPORT_CONSTANT(RBS_AST_Members_MethodDefinition, RBS_AST_Members, "MethodDefinition");
    IMPORT_CONSTANT(RBS_AST_Members_MethodDefinition_Overload, RBS_AST_Members_MethodDefinition, "Overload");
    IMPORT_CONSTANT(RBS_AST_Members_Prepend, RBS_AST_Members, "Prepend");
    IMPORT_CONSTANT(RBS_AST_Members_Private, RBS_AST_Members, "Private");
    IMPORT_CONSTANT(RBS_AST_Members_Public, RBS_AST_Members, "Public");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_BlockParamTypeAnnotation, RBS_AST_Ruby_Annotations, "BlockParamTypeAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ClassAliasAnnotation, RBS_AST_Ruby_Annotations, "ClassAliasAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ColonMethodTypeAnnotation, RBS_AST_Ruby_Annotations, "ColonMethodTypeAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_DoubleSplatParamTypeAnnotation, RBS_AST_Ruby_Annotations, "DoubleSplatParamTypeAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_InstanceVariableAnnotation, RBS_AST_Ruby_Annotations, "InstanceVariableAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_MethodTypesAnnotation, RBS_AST_Ruby_Annotations, "MethodTypesAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ModuleAliasAnnotation, RBS_AST_Ruby_Annotations, "ModuleAliasAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ModuleSelfAnnotation, RBS_AST_Ruby_Annotations, "ModuleSelfAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_NodeTypeAssertion, RBS_AST_Ruby_Annotations, "NodeTypeAssertion");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ParamTypeAnnotation, RBS_AST_Ruby_Annotations, "ParamTypeAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_ReturnTypeAnnotation, RBS_AST_Ruby_Annotations, "ReturnTypeAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_SkipAnnotation, RBS_AST_Ruby_Annotations, "SkipAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_SplatParamTypeAnnotation, RBS_AST_Ruby_Annotations, "SplatParamTypeAnnotation");
    IMPORT_CONSTANT(RBS_AST_Ruby_Annotations_TypeApplicationAnnotation, RBS_AST_Ruby_Annotations, "TypeApplicationAnnotation");
    IMPORT_CONSTANT(RBS_AST_TypeParam, RBS_AST, "TypeParam");
    IMPORT_CONSTANT(RBS_MethodType, RBS, "MethodType");
    IMPORT_CONSTANT(RBS_Namespace, RBS, "Namespace");
    IMPORT_CONSTANT(RBS_TypeName, RBS, "TypeName");
    IMPORT_CONSTANT(RBS_Types_Alias, RBS_Types, "Alias");
    IMPORT_CONSTANT(RBS_Types_Bases_Any, RBS_Types_Bases, "Any");
    IMPORT_CONSTANT(RBS_Types_Bases_Bool, RBS_Types_Bases, "Bool");
    IMPORT_CONSTANT(RBS_Types_Bases_Bottom, RBS_Types_Bases, "Bottom");
    IMPORT_CONSTANT(RBS_Types_Bases_Class, RBS_Types_Bases, "Class");
    IMPORT_CONSTANT(RBS_Types_Bases_Instance, RBS_Types_Bases, "Instance");
    IMPORT_CONSTANT(RBS_Types_Bases_Nil, RBS_Types_Bases, "Nil");
    IMPORT_CONSTANT(RBS_Types_Bases_Self, RBS_Types_Bases, "Self");
    IMPORT_CONSTANT(RBS_Types_Bases_Top, RBS_Types_Bases, "Top");
    IMPORT_CONSTANT(RBS_Types_Bases_Void, RBS_Types_Bases, "Void");
    IMPORT_CONSTANT(RBS_Types_Block, RBS_Types, "Block");
    IMPORT_CONSTANT(RBS_Types_ClassInstance, RBS_Types, "ClassInstance");
    IMPORT_CONSTANT(RBS_Types_ClassSingleton, RBS_Types, "ClassSingleton");
    IMPORT_CONSTANT(RBS_Types_Function, RBS_Types, "Function");
    IMPORT_CONSTANT(RBS_Types_Function_ForwardingParam, RBS_Types_Function, "ForwardingParam");
    IMPORT_CONSTANT(RBS_Types_Function_Param, RBS_Types_Function, "Param");
    IMPORT_CONSTANT(RBS_Types_Interface, RBS_Types, "Interface");
    IMPORT_CONSTANT(RBS_Types_Intersection, RBS_Types, "Intersection");
    IMPORT_CONSTANT(RBS_Types_Literal, RBS_Types, "Literal");
    IMPORT_CONSTANT(RBS_Types_Optional, RBS_Types, "Optional");
    IMPORT_CONSTANT(RBS_Types_Proc, RBS_Types, "Proc");
    IMPORT_CONSTANT(RBS_Types_Record, RBS_Types, "Record");
    IMPORT_CONSTANT(RBS_Types_Tuple, RBS_Types, "Tuple");
    IMPORT_CONSTANT(RBS_Types_Union, RBS_Types, "Union");
    IMPORT_CONSTANT(RBS_Types_UntypedFunction, RBS_Types, "UntypedFunction");
    IMPORT_CONSTANT(RBS_Types_Variable, RBS_Types, "Variable");
}
