result := SELF.clone;
result.make port_b;
result
);
- make port_b:USHORTINT <-
(
port_base := port_b;
);
//
// Deferred.
//
- n_drive:USMALLINT <- deferred;
- nbr_sector:UINTEGER <- deferred;
- nbr_cylinder:UINTEGER <- deferred;
- nbr_head:UINTEGER <- deferred;
- step:UINTEGER <- deferred;
- cursor:UINTEGER <- deferred;
- is_removable:BOOLEAN <- deferred;
- is_read_only:BOOLEAN <- deferred;
//
// Services
//
- size:UINTEGER <-
// Size drive (sector)
(
Tu le spécialises ensuite en créant un ide_controler.
Dans le bas de ton arbre d'héritage, tu met les différents type de FS que tu veux.
Avantage ?
Pas de couche de virtualisation...
C'est quand même mieux que du c avec des pointeurs, non ?
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
[^] # Re: peut etre que...
Posté par Ontologia (site web personnel) . En réponse au journal Un langage pour les nuls? Le langage D!. Évalué à 0.
Imagine, l'initialisation du système :
section PUBLIC
- main <-
(
SYSTEM.make;
MEMORY.print_capacity;
FILE_SYSTEM.make;
VIDEO.auto_make;
INTERFACE.make VIDEO;
INTERFACE.connect_to MOUSE;
INTERFACE.connect_to KEYBOARD;
INTERFACE.connect_to TIMER;
put_logo;
CLOCK.make;
PANEL.make;
INTERFACE.run;
VIDEO.close;
die_with_code exit_success_code;
);
Un objet "drive" :
section INHERIT
+ parent_controler:CONTROLER := CONTROLER;
section DRIVER
//
// Creation.
//
- create ctrl:CONTROLER drive drv:USMALLINT :SELF <-
( + result:SELF;
result := SELF.clone;
result.make ctrl drive drv;
result
);
- make ctrl:CONTROLER drive drv:USMALLINT <-
(
parent_controler := ctrl;
n_drive := drv;
read_status;
// Init cache 256Ko.
1.to 64 do { j:INTEGER;
first := SECTOR.create first;
};
);
Et le controleur disque lui même, que l'on peut spécialiser par héritage :
section PUBLIC
+ port_base:USHORTINT;
//
// Creation.
//
- create port_b:USHORTINT :SELF <-
( + result:SELF;
result := SELF.clone;
result.make port_b;
result
);
- make port_b:USHORTINT <-
(
port_base := port_b;
);
//
// Deferred.
//
- n_drive:USMALLINT <- deferred;
- nbr_sector:UINTEGER <- deferred;
- nbr_cylinder:UINTEGER <- deferred;
- nbr_head:UINTEGER <- deferred;
- step:UINTEGER <- deferred;
- cursor:UINTEGER <- deferred;
- is_removable:BOOLEAN <- deferred;
- is_read_only:BOOLEAN <- deferred;
//
// Services
//
- size:UINTEGER <-
// Size drive (sector)
(
Tu le spécialises ensuite en créant un ide_controler.
Dans le bas de ton arbre d'héritage, tu met les différents type de FS que tu veux.
Avantage ?
Pas de couche de virtualisation...
C'est quand même mieux que du c avec des pointeurs, non ?
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker