Ejemplo n.º 1
0
// add an enum even if its name already exists
enum_t add_dup_enum(DieHolder &enumeration_holder, char const *name,
                    flags_t flag)
{
  enum_t enum_id = add_enum(BADADDR, name, flag);

  // failed to add?
  if(enum_id == BADNODE)
  {
    qstring new_name(name);

    while(enum_id == BADNODE)
    {
      new_name.append('_');
      EnumCmp enum_cmp(new_name.c_str());

      // check if there is an existing equal enum
      // with the same new name
      if(enum_cmp.equal(enumeration_holder))
      {
        enum_id = enum_cmp.get_enum_id();
      }
      else
      {
        enum_id = add_enum(BADADDR, new_name.c_str(), flag);
      }
    }
  }

  return enum_id;
}
Ejemplo n.º 2
0
        void add( const field_desc_type *fld, const T& v )
        {
#           define VTRC_REFLECT_HELPER_DEFINE_CASE_ADD( CppType, TypeName )    \
                case field_desc_type::CppType:                                 \
                    add##TypeName( fld,                                        \
                      boost::lexical_cast<type_info##TypeName::data_type>(v)); \
                    break;

            switch( fld->cpp_type( ) ) {
            VTRC_REFLECT_HELPER_DEFINE_CASE_ADD( CPPTYPE_INT32,  _int32  );
            VTRC_REFLECT_HELPER_DEFINE_CASE_ADD( CPPTYPE_INT64,  _int64  );
            VTRC_REFLECT_HELPER_DEFINE_CASE_ADD( CPPTYPE_UINT32, _uint32 );
            VTRC_REFLECT_HELPER_DEFINE_CASE_ADD( CPPTYPE_UINT64, _uint64 );
            VTRC_REFLECT_HELPER_DEFINE_CASE_ADD( CPPTYPE_FLOAT,  _float  );
            VTRC_REFLECT_HELPER_DEFINE_CASE_ADD( CPPTYPE_DOUBLE, _double );
            VTRC_REFLECT_HELPER_DEFINE_CASE_ADD( CPPTYPE_STRING, _string );
            VTRC_REFLECT_HELPER_DEFINE_CASE_ADD( CPPTYPE_BOOL,   _bool   );
            case field_desc_type::CPPTYPE_ENUM:
                add_enum( fld, boost::lexical_cast<int>(v));
                break;
            default:
                throw std::runtime_error( "Bad field type" );
            }
#           undef VTRC_REFLECT_HELPER_DEFINE_CASE_SET
        }
Ejemplo n.º 3
0
 void add_enum( const field_desc_type *fld, int v )
 {
     const enum_value_type* ed(fld->enum_type( )->FindValueByNumber(v));
     if( ed )
         add_enum(fld, ed);
     else
         throw std::runtime_error( "Bad enum value number" );
 }
Ejemplo n.º 4
0
 void add_enum( const field_desc_type *fld, const std::string &v )
 {
     const enum_value_type* ed(fld->enum_type( )->FindValueByName(v));
     if( ed )
         add_enum(fld, ed);
     else
         throw std::runtime_error( "Bad enum value name" );
 }
Ejemplo n.º 5
0
void
ObjectSettings::add_worldmap_direction(const std::string& text, worldmap::Direction* value_ptr,
                                       boost::optional<worldmap::Direction> default_value,
                                       const std::string& key, unsigned int flags)
{
  add_enum(text, reinterpret_cast<int*>(value_ptr),
           {_("None"), _("West"), _("East"), _("North"), _("South")},
           {"none", "west", "east", "north", "south"},
           default_value ? static_cast<int>(*default_value) : boost::optional<int>(),
           key, flags);
}
Ejemplo n.º 6
0
void
ObjectSettings::add_direction(const std::string& text, Direction* value_ptr,
                              boost::optional<Direction> default_value,
                              const std::string& key, unsigned int flags)
{
  add_enum(text, reinterpret_cast<int*>(value_ptr),
           {_("auto"), _("left"), _("right"), _("up"), _("down")},
           {"auto", "left", "right", "up", "down"},
           default_value ? static_cast<int>(*default_value) : boost::optional<int>(),
           key, flags);
}
Ejemplo n.º 7
0
//--------------------------------------------------------------------------
static tid_t get_class_struct_flags_enum()
{
  static const char enum_name[] = "ClassFlags";
  enum_t id = get_enum(enum_name);
  if ( id != BADNODE ) return id;
  id = add_enum(BADADDR, enum_name, hexflag());
  set_enum_bf(id, true);
  add_const(id, "CLASSF_HAS_DEFAULT",     (1<<0), (1<<0));
  add_const(id, "CLASSF_MASTER_CLASS",    (1<<1), (1<<1));
  add_const(id, "CLASSF_VARIANT_CLASS",   (1<<2), (1<<2));
  add_const(id, "CLASSF_DISCARD_ON_SAVE", (1<<3), (1<<3));
  add_const(id, "CLASSF_NEVER_SAVED",     (1<<4), (1<<4));
  add_const(id, "CLASSF_HAS_RELOC",       (1<<5), (1<<5));
  add_const(id, "CLASSF_C_HANDLERS",      (1<<6), (1<<6));
  return id;
}
Ejemplo n.º 8
0
//----------------------------------------------------------------------
static tid_t set_dsp_regs_enum()
{
  static const char enum_name[] = "DSPRegisters";
  enum_t id = get_enum(enum_name);
  if ( id != BADNODE )
    return id;
  id = add_enum(-1, enum_name, hexflag());

  add_enum_member(id, "V0VOLL"  , 0x00);
  add_enum_member(id, "V0VOLR"  , 0x01);
  add_enum_member(id, "V0PL"    , 0x02);
  add_enum_member(id, "V0PH"    , 0x03);
  add_enum_member(id, "V0SRCN"  , 0x04);
  add_enum_member(id, "V0ADSR1" , 0x05);
  add_enum_member(id, "V0ADSR2" , 0x06);
  add_enum_member(id, "V0GAIN"  , 0x07);
  add_enum_member(id, "V0ENVX"  , 0x08);
  add_enum_member(id, "V0OUTX"  , 0x09);

  add_enum_member(id, "V1VOLL"  , 0x10);
  add_enum_member(id, "V1VOLR"  , 0x11);
  add_enum_member(id, "V1PL"    , 0x12);
  add_enum_member(id, "V1PH"    , 0x13);
  add_enum_member(id, "V1SRCN"  , 0x14);
  add_enum_member(id, "V1ADSR1" , 0x15);
  add_enum_member(id, "V1ADSR2" , 0x16);
  add_enum_member(id, "V1GAIN"  , 0x17);
  add_enum_member(id, "V1ENVX"  , 0x18);
  add_enum_member(id, "V1OUTX"  , 0x19);

  add_enum_member(id, "V2VOLL"  , 0x20);
  add_enum_member(id, "V2VOLR"  , 0x21);
  add_enum_member(id, "V2PL"    , 0x22);
  add_enum_member(id, "V2PH"    , 0x23);
  add_enum_member(id, "V2SRCN"  , 0x24);
  add_enum_member(id, "V2ADSR1" , 0x25);
  add_enum_member(id, "V2ADSR2" , 0x26);
  add_enum_member(id, "V2GAIN"  , 0x27);
  add_enum_member(id, "V2ENVX"  , 0x28);
  add_enum_member(id, "V2OUTX"  , 0x29);

  add_enum_member(id, "V3VOLL"  , 0x30);
  add_enum_member(id, "V3VOLR"  , 0x31);
  add_enum_member(id, "V3PL"    , 0x32);
  add_enum_member(id, "V3PH"    , 0x33);
  add_enum_member(id, "V3SRCN"  , 0x34);
  add_enum_member(id, "V3ADSR1" , 0x35);
  add_enum_member(id, "V3ADSR2" , 0x36);
  add_enum_member(id, "V3GAIN"  , 0x37);
  add_enum_member(id, "V3ENVX"  , 0x38);
  add_enum_member(id, "V3OUTX"  , 0x39);

  add_enum_member(id, "V4VOLL"  , 0x40);
  add_enum_member(id, "V4VOLR"  , 0x41);
  add_enum_member(id, "V4PL"    , 0x42);
  add_enum_member(id, "V4PH"    , 0x43);
  add_enum_member(id, "V4SRCN"  , 0x44);
  add_enum_member(id, "V4ADSR1" , 0x45);
  add_enum_member(id, "V4ADSR2" , 0x46);
  add_enum_member(id, "V4GAIN"  , 0x47);
  add_enum_member(id, "V4ENVX"  , 0x48);
  add_enum_member(id, "V4OUTX"  , 0x49);

  add_enum_member(id, "V5VOLL"  , 0x50);
  add_enum_member(id, "V5VOLR"  , 0x51);
  add_enum_member(id, "V5PL"    , 0x52);
  add_enum_member(id, "V5PH"    , 0x53);
  add_enum_member(id, "V5SRCN"  , 0x54);
  add_enum_member(id, "V5ADSR1" , 0x55);
  add_enum_member(id, "V5ADSR2" , 0x56);
  add_enum_member(id, "V5GAIN"  , 0x57);
  add_enum_member(id, "V5ENVX"  , 0x58);
  add_enum_member(id, "V5OUTX"  , 0x59);

  add_enum_member(id, "V6VOLL"  , 0x60);
  add_enum_member(id, "V6VOLR"  , 0x61);
  add_enum_member(id, "V6PL"    , 0x62);
  add_enum_member(id, "V6PH"    , 0x63);
  add_enum_member(id, "V6SRCN"  , 0x64);
  add_enum_member(id, "V6ADSR1" , 0x65);
  add_enum_member(id, "V6ADSR2" , 0x66);
  add_enum_member(id, "V6GAIN"  , 0x67);
  add_enum_member(id, "V6ENVX"  , 0x68);
  add_enum_member(id, "V6OUTX"  , 0x69);

  add_enum_member(id, "V7VOLL"  , 0x70);
  add_enum_member(id, "V7VOLR"  , 0x71);
  add_enum_member(id, "V7PL"    , 0x72);
  add_enum_member(id, "V7PH"    , 0x73);
  add_enum_member(id, "V7SRCN"  , 0x74);
  add_enum_member(id, "V7ADSR1" , 0x75);
  add_enum_member(id, "V7ADSR2" , 0x76);
  add_enum_member(id, "V7GAIN"  , 0x77);
  add_enum_member(id, "V7ENVX"  , 0x78);
  add_enum_member(id, "V7OUTX"  , 0x79);

  add_enum_member(id, "MVOLL"   , 0x0c);
  add_enum_member(id, "MVOLR"   , 0x1c);
  add_enum_member(id, "EVOLL"   , 0x2c);
  add_enum_member(id, "EVOLR"   , 0x3c);
  add_enum_member(id, "KON"     , 0x4c);
  add_enum_member(id, "KOF"     , 0x5c);
  add_enum_member(id, "FLG"     , 0x6c);
  add_enum_member(id, "ENDX"    , 0x7c);
  add_enum_member(id, "EFB"     , 0x0d);
  add_enum_member(id, "PMON"    , 0x2d);
  add_enum_member(id, "NON"     , 0x3d);
  add_enum_member(id, "EON"     , 0x4d);
  add_enum_member(id, "DIR"     , 0x5d);
  add_enum_member(id, "ESA"     , 0x6d);
  add_enum_member(id, "EDL"     , 0x7d);
  add_enum_member(id, "FIR0"    , 0x0f);
  add_enum_member(id, "FIR1"    , 0x1f);
  add_enum_member(id, "FIR2"    , 0x2f);
  add_enum_member(id, "FIR3"    , 0x3f);
  add_enum_member(id, "FIR4"    , 0x4f);
  add_enum_member(id, "FIR5"    , 0x5f);
  add_enum_member(id, "FIR6"    , 0x6f);
  add_enum_member(id, "FIR7"    , 0x7f);

  return id;
}
Ejemplo n.º 9
0
AST_Decl *UTL_Scope::call_add()
{
   AST_Decl *result = NULL;
   AST_Decl *decl;

   UTL_ScopeActiveIterator *i;
   UTL_Scope *scope;

   i = new UTL_ScopeActiveIterator(this, UTL_Scope::IK_decls);

   while (!(i->is_done()))
   {
      decl = i->item();
      scope = 0;

      switch (decl->node_type())
      {

      case AST_Decl::NT_argument:
         result = add_argument(AST_Argument::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_array:
         result = add_array(AST_Array::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_attr:
         result = add_attribute(AST_Attribute::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_const:
         result = add_constant(AST_Constant::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_enum:
         scope = AST_Enum::narrow_from_decl(decl);
         result = add_enum(AST_Enum::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_enum_val:
         result = add_enum_val(AST_EnumVal::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_except:
         scope = AST_Exception::narrow_from_decl(decl);
         result = add_exception(AST_Exception::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_field:
         result = add_field(AST_Field::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_interface:
         scope = AST_Interface::narrow_from_decl(decl);
         result = add_interface(AST_Interface::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_interface_fwd:
         result = add_interface_fwd(AST_InterfaceFwd::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_module:
         scope = AST_Module::narrow_from_decl(decl);
         result = add_module(AST_Module::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_op:
         result = add_operation(AST_Operation::narrow_from_decl(decl));
         scope = AST_Operation::narrow_from_decl(decl);
         break;

      case AST_Decl::NT_pre_defined:
         result =
         add_predefined_type(AST_PredefinedType::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_sequence:
         result = add_sequence(AST_Sequence::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_string:
         result = add_string(AST_String::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_struct:
         result = add_structure(AST_Structure::narrow_from_decl(decl));
         scope = AST_Structure::narrow_from_decl(decl);
         break;

      case AST_Decl::NT_typedef:
         result = add_typedef(AST_Typedef::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_union:
         result = add_union(AST_Union::narrow_from_decl(decl));
         scope = AST_Union::narrow_from_decl(decl);
         break;

      case AST_Decl::NT_union_branch:
         result = add_union_branch(AST_UnionBranch::narrow_from_decl(decl));
         break;
         //   case AST_Decl::NT_opaque:
         //  result = add_opaque(AST_Opaque::narrow_from_decl(decl));
         // break;

      case AST_Decl::NT_value:
         result = add_valuetype (AST_Value::narrow_from_decl (decl));
         scope = AST_Value::narrow_from_decl (decl);
         break;

      case AST_Decl::NT_value_fwd:
         result = add_valuetype_fwd(AST_ValueFwd::narrow_from_decl(decl));
         break;

      case AST_Decl::NT_state_member:
         result = add_state_member(AST_StateMember::narrow_from_decl(decl));
         break;

      default:
         return NULL;
      }

      if (scope)
         scope->call_add();

      i->next();
   }

   delete i;
   return result;
}