From 84cd8c23e5332c54ab7c26f1ae8094e21d1a946c Mon Sep 17 00:00:00 2001
From: Qianqian Fang <fangqq@gmail.com>
Date: Thu, 3 Feb 2022 00:36:27 -0500
Subject: [PATCH] merge 2D and ND fast array parser

---
 loadbj.m   |  1 +
 loadjson.m | 27 +++------------------------
 2 files changed, 4 insertions(+), 24 deletions(-)

diff --git a/loadbj.m b/loadbj.m
index eab3f42..d5f50cb 100644
--- a/loadbj.m
+++ b/loadbj.m
@@ -136,6 +136,7 @@ function [data, mmap] = loadbj(fname,varargin)
 	if(jsoncount>=maxobjid)
 	    break;
 	end
+        opt.jsonpath_=sprintf('$%d',jsoncount);
         jsoncount=jsoncount+1;
     end % while
 
diff --git a/loadjson.m b/loadjson.m
index a1c36de..4f89361 100644
--- a/loadjson.m
+++ b/loadjson.m
@@ -5,7 +5,7 @@ function [data, mmap] = loadjson(fname,varargin)
 % [data, mmap]=loadjson(fname,'param1',value1,'param2',value2,...)
 %
 % parse a JSON (JavaScript Object Notation) file or string and return a
-% matlab data structure with optional memory-map table
+% matlab data structure with optional memory-map (mmap) table
 %
 % authors:Qianqian Fang (q.fang <at> neu.edu)
 % created on 2011/09/09, including previous works from 
@@ -178,6 +178,7 @@ function [data, mmap] = loadjson(fname,varargin)
 	if(jsoncount>=maxobjid)
 	    break;
 	end
+        opt.jsonpath_=sprintf('$%d',jsoncount);
         jsoncount=jsoncount+1;
     end % while
 
@@ -243,30 +244,8 @@ function [object, pos,index_esc, mmap] = parse_array(inputstr, pos, esc, index_e
                             end
                         end
 
-                        % next handle 2D array, these are most common ones
-                        if(maxlevel==2 && ~isempty(regexp(arraystr(2:end),'^\s*\[','once')))
-                            [dims,isndarray]=nestbracket2dim(arraystr);
-                            rowstart=find(arraystr(2:end)=='[',1)+1;
-                            if(rowstart && isndarray)
-                                [obj, nextidx]=parsendarray(arraystr,dims);
-                                if(nextidx>=length(arraystr)-1)
-                                    object=obj;
-                                    if(format>1.9)
-                                        object=object.';
-                                    end
-                                    pos=endpos;
-                                    pos=parse_char(inputstr, pos, ']');
-                                    if(pbar>0)
-                                        waitbar(pos/length(inStr),pbar,'loading ...');
-                                    end
-                                    return;
-                                end
-                            end
-                        end
-
                         % for N-D packed array in a nested array construct, 
-                        % in the future can replace 1d and 2d cases
-                        if(maxlevel>2 && ~isempty(regexp(arraystr(2:end),'^\s*\[\s*\[','once')))
+                        if(maxlevel>=2 && ~isempty(regexp(arraystr(2:end),'^\s*\[','once')))
                             [dims,isndarray]=nestbracket2dim(arraystr);
                             rowstart=find(arraystr(2:end)=='[',1)+1;
                             if(rowstart && isndarray)
-- 
GitLab