[Ooc-checkins] ooc2/src/OOC/SymbolTable TypeRules.Mod,1.73,1.74
Brought to you by:
mva
From: Michael v. A. <mv...@us...> - 2004-06-29 09:03:00
|
Update of /cvsroot/ooc/ooc2/src/OOC/SymbolTable In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30620/src/OOC/SymbolTable Modified Files: TypeRules.Mod Log Message: (IsObjectType) New predicate. Index: TypeRules.Mod =================================================================== RCS file: /cvsroot/ooc/ooc2/src/OOC/SymbolTable/TypeRules.Mod,v retrieving revision 1.73 retrieving revision 1.74 diff -u -d -r1.73 -r1.74 --- TypeRules.Mod 21 Mar 2004 16:09:17 -0000 1.73 +++ TypeRules.Mod 29 Jun 2004 09:02:49 -0000 1.74 @@ -105,6 +105,23 @@ END; END ExtendsLibType; +PROCEDURE IsPointerType(type: Sym.Type; module, recordName: ARRAY OF CHAR): BOOLEAN; + VAR + r: Sym.Type; + BEGIN + IF (type IS Sym.Pointer) & + (type(Sym.Pointer).baseType IS Sym.Record) THEN + r := type(Sym.Pointer).baseType; + RETURN (r # NIL) & + (r.namingDecl # NIL) & + (r.namingDecl.name.str^ = recordName) & + (r.namingDecl.parent IS Sym.Module) & + (r.namingDecl.parent(Sym.Module).name.str^ = module); + ELSE + RETURN FALSE; + END; + END IsPointerType; + PROCEDURE IsObject*(type: Sym.Type): BOOLEAN; (**Return @code{TRUE} if @oparam{type} is the library type @otype{*Object.Object}, or an extension of this type. *) @@ -112,6 +129,13 @@ RETURN ExtendsLibType(type, "Object", "ObjectDesc"); END IsObject; +PROCEDURE IsObjectType*(type: Sym.Type): BOOLEAN; +(**Return @code{TRUE} if @oparam{type} is the library type + @otype{*Object.Object}, but @emph{not} an extension thereof. *) + BEGIN + RETURN IsPointerType(type, "Object", "ObjectDesc"); + END IsObjectType; + PROCEDURE IsException*(type: Sym.Type): BOOLEAN; (**Return @code{TRUE} if @oparam{type} is an extension of @otype{*Exception.Exception}. *) |