Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 [ 95 ] 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140

long GetEnumSize(long enum id);

Функция возвращает число членов перечисления, заданного идентификатором. Обратите внимание, именно число элементов, а не занимаемый ими размер, который вообще вычислить невозможно, поскольку члены перечисления не имеют типа.

Пример:

FFFFFFFF ; enum enum 1 FFFFFFFF enum 1 0 FFFFFFFF enum 1 2 FFFFFFFF

= 1 = 2

Message("0x%X \n", GetEnumSize(

GetEnum("enum 1")

Если перечисление пусто, то функция возвращает ноль, но то же значение возвращается, если указать неверный идентификатор, поэтому возникает неоднозначная ситуация - либо перечисление отсутствует (было удалено?) либо же попросту пусто.

Пример:

FFFFFFFF ; enum enum 2

Message("0x%X \n", GetEnumSize( GetEnum("enum 2")

Message("0x%X \n", GetEnumSize(BADADDR)

Операнд

Пояснения

Enum id

Идентификатор перечисления

Return

==return

Пояснения

Число членов перечисления

Пустое перечисление

Ошибка



long GetEnumFlag(long enum id);

Функция возвращает флаги, определяющие представление членов перечисления, заданного идентификатором.

Возможные значения перечислены ниже в таблице:

FF 0NUMH

0x00100000

шестнадцатеричное представление первого операнда

FF 0NUMD

0x00200000

десятичное представление первого операнда

FF 0CHAR

0x00300000

символьное представление первого операнда

FF 0SEG

0x00400000

первый операнд - сегмент

FF 0OFF

0x00500000

первый операнд - смещение

FF 0NUMB

0x00600000

Представление первого операнда в бинарном виде

FF 0NUMO

0x00700000

Представление первого операнда в восьмеричном виде

FF 0ENUM

0x00800000

Представление первого операнда в виде перечисления

FF 0FOP

0x00900000

Принудительный первый операнд

FF 0STRO

0x00A00000

Представление первого операнда как смещения в структуре

FF 0STK

0x00B00000

первый операнд стековая переменная

FF 1VOID

0x00000000

тип второго операнда Void

FF 1NUMH

0x00100000

Шестнадцатеричное представление второго операнда

FF 1NUMD

0x00200000

десятичное представление второго операнда

FF 1CHAR

0x00300000

символьное представление второго операнда

FF 1SEG

0x00400000

второй операнд - сегмент

FF 1OFF

0x00500000

второй операнд - смещение

FF 1NUMB

0x00600000

Представление второго операнда в бинарном виде

FF 1NUMO

0x00700000

Представление второго операнда в восьмеричном виде

FF 1ENUM

0x00800000

Представление второго операнда в виде перечисления

FF 1FOP

0x00900000

Принудительный второй операнд

FF 1STRO

0x00A00000

Представление второго операнда как смещения в структуре

FF 1STK

0x00B00000

второй операнд стековая переменная

Пример:

FFFFFFFF ; enum enum 1 FFFFFFFF enum 1 0 = 1 FFFFFFFF enum 1 2 = 2 FFFFFFFF

Message("0x%X \n", GetEnumFlag( GetEnum("enum 1") );

0x1100000

Операнд

Пояснения

Enum id

Идентификатор перечисления

==return

Пояснения

Return

Флаг отображения членов перечисления

Ошибка



long GetConstByName(char name);

Функция возвращает идентификатор константы по ее имени. Все перечисления разделяют общее пространство имен, другими словами одно и то же имя не может быть повторено дважды, поэтому является уникальным.

Например:

FFFFFFFF enum 1 0 FFFFFFFF enum 1 2

FFFFFFFF FFFFFFFF ; FFFFFFFF

FFFFFFFF ; enum enum 2 FFFFFFFF MyEnum

= 1 = 2

Message("0x%X \n", GetConstByName("MyEnum")

0xFF000136

Идентификатор обеспечивает доступ к константе. Что бы, например, получить ее значение необходимо воспользоваться функцией long GetConstValue(long const id), которая описана ниже.

Операнд

Пояснения

name

Имя константы

==return

Пояснения

Return

Идентификатор константы

Ошибка

long GetConstValue(long const id);

Функция возвращает значение константы по ее идентификатору или ноль в результате ошибки. Поэтому часто возникает неопределенность, - то ли действительно имела место ошибка (например, был указан несуществующий идентификатор) или же просто константа имеет такое значение.

Пример использования:

FFFFFFFF enum 1 0 = 1

FFFFFFFF enum 1 2 = 2

FFFFFFFF FFFFFFFF ; FFFFFFFF

FFFFFFFF ; enum enum 2 FFFFFFFF MyEnum = 16h

Message("0x%X \n", GetConstValue(

GetConstByName("MyEnum")

0x16



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 [ 95 ] 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140