[rules-dev] range indexing - help wanted

Wolfgang Laun wolfgang.laun at gmail.com
Wed Jul 11 02:23:57 EDT 2012


On 11/07/2012, Mark Proctor <mproctor at codehaus.org> wrote:
> my mistake, length should not be zero based:
>              if ( depth == stack.length - 1 ) {
>                  // increase the stack if we have used up all space
>                  int[] newStack = new int[depth * 3 ];
>                  System.arraycopy( stack, 0, newStack, 0, stack.length);
>                  stack = newStack;
>              }

What do you mean by "length should not be zero based"?

Sorry, this just repeats your earlier version. This allocates a new
array with triplicated lenght (not length-1 - but that's no problem)
and copies the old into the new.

 stack = Arrays.copyOf( stack, stack.length * 3 );

What's wrong with this?

-W

>
>
> On 11/07/2012 00:18, Mark Proctor wrote:
>> ok I think I see what you mean, it's overwriting the array it's
>> copying from. have updated it, and running tests now:
>>             if ( depth == stack.length - 1 ) {
>>                 // increase the stack if we have used up all space
>>                 int[] newStack = new int[depth * 3 ];
>>                 System.arraycopy( stack, 0, newStack, 0,
>> stack.length-1 );
>>                 stack = newStack;
>>             }
>>
>> Mark
>> On 11/07/2012 00:04, Mark Proctor wrote:
>>> Wolfgang,
>>>
>>> Not sure what you mean, I just checked the src, line 150:
>>> https://github.com/droolsjbpm/drools/blob/c00d45712f1cf2027ebda9e7df41567cf89c8fcd/drools-core/src/main/java/org/drools/core/util/RBTree.java
>>>
>>>
>>>
>>> public void recurse() {
>>> if ( depth == stack.length - 1 ) {
>>> // increase the stack if we have used up all space
>>> stack = new int[depth * 3 ];
>>> stack = Arrays.copyOf( stack, stack.length * 3 );
>>> } The comment doesn't exist there to remove. Mark
>>>
>>>
>>>
>>> On 07/07/2012 07:05, Wolfgang Laun wrote:
>>>> Removing the line marked with //>>> helps.
>>>>
>>>>   public void recurse() {
>>>>
>>>>              if ( depth == stack.length - 1 ) {
>>>>                  // increase the stack if we have used up all space
>>>>                  //>>> stack = new int[depth * 3 ];
>>>>                  stack = Arrays.copyOf( stack, stack.length * 3 );
>>>>              }
>>>>
>>>> Cheers
>>>> Wolfgang
>>> On 07/07/2012, Mark Proctor <mproctor at codehaus.org> wrote:
>>>>> I started to write this range indexing class, based on a RBTree
>>>>> implementation that I lifted from the web somewhere. However it's a
>>>>> bit
>>>>> buggy, and large ranges null pointer. Anyone want to work on making
>>>>> these stable? Once done we can start using them with not/exists nodes.
>>>>> Standard joins will take a bit more work, due to some integration
>>>>> issues
>>>>> of the tuple structures.
>>>>>
>>>>> The two classes can be found in this commit, just try removing the
>>>>> @Ignore to see the issues, and feel free to add more range tests.
>>>>> https://github.com/droolsjbpm/drools/commit/c789459c431763581db02653fb7bfafd5742ae1f
>>>>>
>>>>>
>>>>> drools-core/src/main/java/org/drools/core/util/RBTree.java
>>>>> drools-core/src/test/java/org/drools/core/util/RBTreeTest.java
>>>>>
>>>>> Mark
>>>>> _______________________________________________
>>>>> rules-dev mailing list
>>>>> rules-dev at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>>>
>>>> _______________________________________________
>>>> rules-dev mailing list
>>>> rules-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>
>>>
>>
>>
>
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>


More information about the rules-dev mailing list