// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

#ifndef LIB_MIRRORS_H_
#define LIB_MIRRORS_H_

#include "vm/allocation.h"

namespace dart {

class Mirrors : public AllStatic {
 public:
  #define MIRRORS_KIND_SHIFT_LIST(V)                                           \
    V(kAbstract)                                                               \
    V(kGetter)                                                                 \
    V(kSetter)                                                                 \
    V(kConstructor)                                                            \
    V(kConstCtor)                                                              \
    V(kGenerativeCtor)                                                         \
    V(kRedirectingCtor)                                                        \
    V(kFactoryCtor)                                                            \
    V(kExternal)                                                               \

  // These offsets much be kept in sync with those in mirrors_impl.dart.
  enum KindShifts {
  #define DEFINE_KIND_SHIFT_ENUM(name) name,
  MIRRORS_KIND_SHIFT_LIST(DEFINE_KIND_SHIFT_ENUM)
  #undef DEFINE_KIND_SHIFT_ENUM
  };
};

}  // namespace dart

#endif  // LIB_MIRRORS_H_
