/usr/share/gap/lib/attr.gd is in gap-libs 4r7p9-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | #############################################################################
##
#W attr.gd GAP library Steve Linton
##
##
#Y Copyright (C) 1996, Lehrstuhl D für Mathematik, RWTH Aachen, Germany
#Y (C) 1998 School Math and Comp. Sci., University of St Andrews, Scotland
#Y Copyright (C) 2002 The GAP Group
#############################################################################
##
## <#GAPDoc Label="[1]{attr}">
## The normal behaviour of attributes (when called with just one argument)
## is that once a method has been selected and executed, and has returned a
## value the setter of the attribute is called, to (possibly) store the
## computed value. In special circumstances, this behaviour can be altered
## dynamically on an attribute-by-attribute basis, using the functions
## <C>DisableAttributeValueStoring</C> and <C>EnableAttributeValueStoring</C>.
## <P/>
## In general, the code in the library assumes, for efficiency, but not for
## correctness, that attribute values <E>will</E> be stored (in suitable
## objects), so disabling storing may cause substantial computations to be
## repeated.
## <#/GAPDoc>
##
#############################################################################
##
#V InfoAttributes . . . info class for reporting on attribute tweaking
##
## <#GAPDoc Label="InfoAttributes">
## <ManSection>
## <InfoClass Name="InfoAttributes"/>
##
## <Description>
## This info class (together with <Ref Func="InfoWarning"/> is used
## for messages about attribute storing being disabled (at level 2) or
## enabled (level 3). It may be used in the future for other messages
## concerning changes to attribute behaviour.
## </Description>
## </ManSection>
## <#/GAPDoc>
##
DeclareInfoClass("InfoAttributes");
#############################################################################
##
#F EnableAttributeValueStoring( <attr> ) tell attr. to resume storing values
##
## <#GAPDoc Label="EnableAttributeValueStoring">
## <ManSection>
## <Func Name="EnableAttributeValueStoring" Arg='attr'/>
##
## <Description>
## enables the usual call of <C>Setter( <A>attr</A> )</C> when a method for <A>attr</A>
## returns a value. In consequence the values may be stored. This will
## usually have no effect unless <C>DisableAttributeValueStoring</C> has
## previously been used for <A>attr</A>. Note that <A>attr</A> must be an attribute
## and <E>not</E> a property.
## <Example><![CDATA[
## gap> g := Group((1,2,3,4,5),(1,2,3));
## Group([ (1,2,3,4,5), (1,2,3) ])
## gap> KnownAttributesOfObject(g);
## [ "LargestMovedPoint", "GeneratorsOfMagmaWithInverses",
## "MultiplicativeNeutralElement" ]
## gap> SetInfoLevel(InfoAttributes,3);
## gap> DisableAttributeValueStoring(Size);
## #I Disabling value storing for Size
## gap> Size(g);
## 60
## gap> KnownAttributesOfObject(g);
## [ "OneImmutable", "LargestMovedPoint", "NrMovedPoints",
## "MovedPoints", "GeneratorsOfMagmaWithInverses",
## "MultiplicativeNeutralElement", "StabChainMutable",
## "StabChainOptions" ]
## gap> Size(g);
## 60
## gap> EnableAttributeValueStoring(Size);
## #I Enabling value storing for Size
## gap> Size(g);
## 60
## gap> KnownAttributesOfObject(g);
## [ "Size", "OneImmutable", "LargestMovedPoint", "NrMovedPoints",
## "MovedPoints", "GeneratorsOfMagmaWithInverses",
## "MultiplicativeNeutralElement", "StabChainMutable",
## "StabChainOptions" ]
## ]]></Example>
## </Description>
## </ManSection>
## <#/GAPDoc>
##
DeclareGlobalFunction("EnableAttributeValueStoring");
#############################################################################
##
#F DisableAttributeValueStoring( <attr> ) tell attr. to stop storing values
##
## <#GAPDoc Label="DisableAttributeValueStoring">
## <ManSection>
## <Func Name="DisableAttributeValueStoring" Arg='attr'/>
##
## <Description>
## disables the usual call of <C>Setter( <A>attr</A> )</C> when a method for <A>attr</A>
## returns a value. In consequence the values will never be stored. Note
## that <A>attr</A> must be an attribute and <E>not</E> a property.
## </Description>
## </ManSection>
## <#/GAPDoc>
##
DeclareGlobalFunction("DisableAttributeValueStoring");
|