From: jduarte@liege.ICS.UCI.EDU (J o s e D u a r t e)
Subject: Re: Types defining h/w r/o or w/o registers
Date: 31 May 91 17:26:39 GMT [thread overview]
Message-ID: <9105311025.aa04299@PARIS.ICS.UCI.EDU> (raw)
In-Reply-To: <3949@titan.tsd.arlut.utexas.edu>
> Is there some way to define a type such that all variables of that
> type can be only read or only written? For instance, I have a type that
> defines the status register of some peripheral which can only be
> read. It would be best if the compiler could flag any assignments
> to variables of such a type as errors.
> Is there some other means for commonly handling this problem? The
> compiler being used is VADSWorks, if an implementation-defined solution
> is required.
Well...Ada is "the" language which explicitly allows you
to name variables which can ONLY be read/written/read-write using
the procedure syntax:
with REGISTERS; use REGISTERS;
procedure XYZ(Reg1: in REGISTER; Reg2: out REGISTER; Reg3: in out REGISTER) is
begin
-- Reg1 can only be used effectively as a constant in this scope
-- Reg2 can only be assigned to in this scope
-- Reg3 can be assigned to or read from in this scope
null;
end XYZ;
.
.
.
Alternatively, you can define a "type" and then define a constant variable
of that type for read only variables...
subtype XYZ is INTEGER;
NY_REG: constant XYZ := 0; -- define a variable that can only be read
.
.
.
to define a type in a package that does not have ":="
implicitly defined...use a "limited private" syntax:
package REGS is
type XYZ is limited private;
-- insert your procedures/functions here
private
type XYZ is NEW WHATEVER;
end REGS;
--- This would not allow other programmers that use your package to assign
--- to a variable of type "XYZ" unless you also specified an "Assign" procedure.
--- Look up "limited private" types for more details. I believe that "limited
--- private" means that "=" (and thus "/=") and ":=" are not implicitly
--- allowed for that type unless the package also explicitly defines
--- "Assign" and "Read-From" procedures
Jose' D.
next prev parent reply other threads:[~1991-05-31 17:26 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
1991-05-30 13:03 Types defining h/w r/o or w/o registers Don Gardner
1991-05-31 17:03 ` david.c.willett
1991-05-31 17:10 ` david.c.willett
1991-05-31 17:26 ` J o s e D u a r t e [this message]
1991-06-01 8:34 ` Orville R. Weyrich
1991-06-01 10:01 ` Types defining h/w r/o or w/o regis stt
1991-06-02 16:54 ` Types defining h/w r/o or w/o registers rharwood
1991-06-03 7:57 ` Orville R. Weyrich
1991-06-04 14:08 ` John Goodenough
1991-06-04 14:48 ` Anthony Shipman
1991-06-05 13:59 ` John Goodenough
-- strict thread matches above, loose matches on Subject: below --
1991-06-05 18:59 John Goodenough
1991-06-06 3:02 Steven V. Case
1991-06-09 0:15 ` rharwood
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox