[Glass] Variable - pointer classes, do you have them?
Mariano Martinez Peck via Glass
glass at lists.gemtalksystems.com
Thu Sep 4 14:39:10 PDT 2014
On Thu, Sep 4, 2014 at 6:27 PM, Mariano Martinez Peck <marianopeck at gmail.com
> wrote:
> BTW...one of the examples I am trying to serialize/materialize in Gemstone
> is Interval. And I cannot find a way to recreate them, neither via
> #basicNew: or #_basicNew:
>
>
I am trying the combination #basicSize, #_at: , #_at:put and #basicNew:
However, creating an internal gives me something strange!
(-10 to: 10 by: 5) basicSize -> 3
(-10 to: 10 by: 5) _basicSize -> 0
(Interval basicNew: 3) basicSize -> 6
(Interval basicNew: 3) _basicSize -> 3
And also I have another problem with (0 to: 0 by: 1).
Anyway,..any clarification is appreciated.
thoughts?
> Thanks,
>
>
> On Thu, Sep 4, 2014 at 6:22 PM, Mariano Martinez Peck <
> marianopeck at gmail.com> wrote:
>
>> Hi guys,
>>
>> In Pharo, there are "variable" classes that hold pointers. That is,
>> besides the named instVars, there is a space for "variables". To create
>> these classes in Pharo we use variableSubclass:... etc...Example: Array.
>>
>> ArrayedCollection variableSubclass: #Array
>> instanceVariableNames: ''
>> classVariableNames: ''
>> poolDictionaries: ''
>> category: 'Collections-Sequenceable'
>>
>> So...to serialize these instances, what we do, is 2 things: serialize the
>> "fixed/named" instVars (none in this example of Array) and iterate and
>> serialize the "variable part" using #basicSize and #basicAt:. And then,
>> upon materialization, I can send #basicNew: with the desired size and using
>> #basicAt:put:
>>
>> The way to get those classes in Pharo is:
>>
>> Smalltalk allClasses select: [ :each | ((each isWeak not and: [ each
>> isFixed not ]) and: [ each isBytes not ]) and: [ each isPointers ] ]
>>
>> -> an OrderedCollection(AbsolutePath AdditionalMethodState Array
>> BlockClosure Cubic FaFnSeries FaSeries FileReferenceTest MCMockClassE
>> MetacelloMethodSectionPath MetacelloVersionNumber MethodContext
>> MethodDictionary Path PathTest RelativePath SixxMockBinaryData
>> SixxMockMementoArray SixxMockVariableAlternativeClass
>> SixxMockVariableNewFailedClass SparseLargeArray SparseLargeTable
>> WAExampleClass WeakActionSequence)
>>
>> Now I know in GemStone you have indexable classes. I think the equivalent
>> are those classes that answer true to #isPointers and #isIndexable
>>
>>
>> Smalltalk allClasses select: [:each | each isPointers and: [ each
>> isIndexable ] ]
>>
>> -> [ anArray( Array, Collection, CompiledMethod, InvariantArray,
>> OldRepository, SequenceableCollection, SymbolList, AbstractCollisionBucket,
>> KeyValueDictionary, IntegerKeyValueDictionary, StringKeyValueDictionary,
>> CharacterCollection, ClusterBucketArray, ClassHistory, RcQueue,
>> StackBuffer, BtreeNode, BtreeInteriorNode, BtreeLeafNode,
>> BtreeBasicInteriorNode, BtreeBasicLeafNode, RcKeyValueDictionary,
>> RcIndexDictionary, RcIndexBucket, IdentityIndex, RangeEqualityIndex,
>> PathTerm, IndexList, DependencyList, SetValuedPathTerm, MappingInfo,
>> ConstrainedPathTerm, QueryExecuter, IdentityKeyValueDictionary,
>> PathEvaluator, OrderedCollection, SortedCollection, SortNode,
>> BasicSortNode, RcIndexBucketWithCache, GsMethod, ...)]
>>
>> So..first question, is this assumption correct? If true.... then which
>> methods can I use for what I need? that is, #basicSize, #basicAt: ,
>> #basicAt:put: , #basicNew:
>> I tried different combinations of #basicAt: , #_at: etc but it never
>> worked.
>>
>> What is strange for example, is that if I serialize these objects as
>> FIXED pointers...they seem to work. But the fixed part serializes only via
>> instVarNames... so I don't understand how this could work since I would be
>> missing the variable part.
>>
>> Any help is appreciated.
>>
>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
>>
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
--
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20140904/f24da4f0/attachment-0001.html>
More information about the Glass
mailing list