Ada_Ru форум

Обсуждение языка Ада

enum

Оставить новое сообщение

Сообщения

Alexey Veselovsky
enum
2008-08-16 01:32:41

Есть некий сишный хедер с вот таким вот енумом:

 

typedef enum {

A = 0, a = 0,

B = 2, b = 2,

C = 3, c = 3,

D = 10;

} SomeEnum;

 

Вопрос -- как это дело импортировать в Аде? Как организовать вот такой же енум?

Alexey Veselovsky wrote:

Есть некий сишный хедер с вот таким вот енумом:

 

typedef enum {

A = 0, a = 0,

B = 2, b = 2,

C = 3, c = 3,

D = 10;

} SomeEnum;

 

Вопрос -- как это дело импортировать в Аде? Как организовать вот такой же енум?

 

 

type Some_Enum is (A, B, C, D);

pragma Convention (C, Some_Enum);

for Some_Enum use

(A => 0,

B => 2,

C => 3,

D => 10);

Vadim Godunko wrote:

 

type Some_Enum is (A, B, C, D);

pragma Convention (C, Some_Enum);

for Some_Enum use

(A => 0,

B => 2,

C => 3,

D => 10);

 

Для полной ясности стоит напомнить, что в идентификаторах

Ада не различает большие и маленькие буквы

type Some_Enum is (A, B, C, D);

pragma Convention (C, Some_Enum);

for Some_Enum use

(A => 0,

B => 2,

C => 3,

D => 10);

 

Для полной ясности стоит напомнить, что в идентификаторах

Ада не различает большие и маленькие буквы

 

Это то ясно, но сути дела не меняет.

 

typedef enum {

A = 0, z = 0,

B = 2, y = 2,

C = 3, x = 3,

D = 10;

} SomeEnum;

Alexey Veselovsky wrote:

type Some_Enum is (A, B, C, D);

pragma Convention (C, Some_Enum);

for Some_Enum use

(A => 0,

B => 2,

C => 3,

D => 10);

Для полной ясности стоит напомнить, что в идентификаторах

Ада не различает большие и маленькие буквы

 

Это то ясно, но сути дела не меняет.

 

typedef enum {

A = 0, z = 0,

B = 2, y = 2,

C = 3, x = 3,

D = 10;

} SomeEnum;

 

Есть встречный вопрос у меня...

 

А в чём собственно состоит задача? Полное отображение в общем случае невозможно, это на мой взгляд и так понятно. А неполность и трюки - тема формально-теоретического исследования ;-)

 

А теперь - код в обычно привычном виде:

 

type Some_Enum is (A, B, C, D);

pragma Convention (C, Some_Enum);

for Some_Enum use (A => 0, B => 2, C => 3, D => 10);

Z : constant Some_Enum := A;

Y : constant Some_Enum := B;

X : constant Some_Enum := C;

 

и в логически эквивалентном виде (и это задание на знание языка :-) ):

 

type Some_Enum is (A, B, C, D);

pragma Convention (C, Some_Enum);

for Some_Enum use (A => 0, B => 2, C => 3, D => 10);

function Z return Some_Enum;

function Y return Some_Enum;

function X return Some_Enum;

On Sun, Aug 17, 2008 at 10:52:48PM +0400, Vadim Godunko wrote:

type Some_Enum is (A, B, C, D);

pragma Convention (C, Some_Enum);

for Some_Enum use (A => 0, B => 2, C => 3, D => 10);

function Z return Some_Enum;

function Y return Some_Enum;

function X return Some_Enum;

 

 

Я бы написал даже так:

type Some_Enum is (A, B, C, D);

pragma Convention (C, Some_Enum);

for Some_Enum use (A => 0, B => 2, C => 3, D => 10);

 

function Z return Some_Enum renames A;

function Y return Some_Enum renames B;

function X return Some_Enum renames C;

 

--

Maxim Reznik

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти