Skip to content

Commit e536d4c

Browse files
committed
99% of the way there to remove statics.
1 parent d4317b7 commit e536d4c

22 files changed

+420
-325
lines changed

RepositoryAPI/Repository.dbl

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ namespace CodeGen.RepositoryAPI
4848

4949
public class Repository implements IDisposable
5050

51-
public static RpsControl ,dcs
51+
public RpsControl ,dcs
5252

5353
private mStructures ,@RpsStructureCollection
5454
private mFiles ,@RpsFileCollection
@@ -217,7 +217,7 @@ namespace CodeGen.RepositoryAPI
217217
;;; For example, a programmer might want to use an instance of a
218218
;;; RpsStructure class without having to instantiate the Repository class.
219219
;;; </summary>
220-
public static method CheckIsOpen, void
220+
public method CheckIsOpen, void
221221
endparams
222222
proc
223223
if ((RpsControl.mchn_r)&&(%chopen(RpsControl.mchn_r))
@@ -291,7 +291,7 @@ namespace CodeGen.RepositoryAPI
291291
proc
292292
;Load the structures collection the first time it is referenced
293293
if (mStructures==^null)
294-
mStructures = new RpsStructureCollection(RpsLoadMode.Load)
294+
mStructures = new RpsStructureCollection(this,RpsLoadMode.Load)
295295
mreturn mStructures
296296
endmethod
297297
endproperty
@@ -305,7 +305,7 @@ namespace CodeGen.RepositoryAPI
305305
required in StructureName, String
306306
endparams
307307
proc
308-
mreturn new RpsStructure(StructureName,mUseAlternateFieldNames)
308+
mreturn new RpsStructure(this,StructureName,mUseAlternateFieldNames)
309309
endmethod
310310

311311
;;---------------------------------------------------------------------
@@ -319,7 +319,7 @@ namespace CodeGen.RepositoryAPI
319319
proc
320320
;Load the files collection the first time it is referenced
321321
if (mFiles==^null)
322-
mFiles = new RpsFileCollection(RpsLoadMode.Load,mUseAlternateFieldNames)
322+
mFiles = new RpsFileCollection(this,RpsLoadMode.Load,mUseAlternateFieldNames)
323323
mreturn mFiles
324324
endmethod
325325
endproperty
@@ -333,7 +333,7 @@ namespace CodeGen.RepositoryAPI
333333
required in FileName, String
334334
endparams
335335
proc
336-
mreturn new RpsFile(FileName,mUseAlternateFieldNames)
336+
mreturn new RpsFile(this,FileName,mUseAlternateFieldNames)
337337
endmethod
338338

339339
;;---------------------------------------------------------------------
@@ -347,7 +347,7 @@ namespace CodeGen.RepositoryAPI
347347
proc
348348
;Load the templates collection the first time it is referenced
349349
if (mTemplates==^null)
350-
mTemplates = new RpsTemplateCollection()
350+
mTemplates = new RpsTemplateCollection(this)
351351
mreturn mTemplates
352352
endmethod
353353
endproperty
@@ -361,7 +361,7 @@ namespace CodeGen.RepositoryAPI
361361
required in TemplateName, String
362362
endparams
363363
proc
364-
mreturn new RpsTemplate(TemplateName)
364+
mreturn new RpsTemplate(this,TemplateName)
365365
endmethod
366366

367367
;;---------------------------------------------------------------------
@@ -375,7 +375,7 @@ namespace CodeGen.RepositoryAPI
375375
proc
376376
;Load the formats collection the first time it is referenced
377377
if (mFormats==^null)
378-
mFormats = new RpsFormatCollection(RpsGlobalFormatType.Format)
378+
mFormats = new RpsFormatCollection(this,RpsGlobalFormatType.Format)
379379
mreturn mFormats
380380
endmethod
381381
endproperty
@@ -388,7 +388,7 @@ namespace CodeGen.RepositoryAPI
388388
proc
389389
;Load the date formats collection the first time it is referenced
390390
if (mDateFormats==^null)
391-
mDateFormats = new RpsFormatCollection(RpsGlobalFormatType.DateFormat)
391+
mDateFormats = new RpsFormatCollection(this,RpsGlobalFormatType.DateFormat)
392392
mreturn mDateFormats
393393
endmethod
394394
endproperty
@@ -401,7 +401,7 @@ namespace CodeGen.RepositoryAPI
401401
proc
402402
;Load the time formats collection the first time it is referenced
403403
if (mTimeFormats==^null)
404-
mTimeFormats = new RpsFormatCollection(RpsGlobalFormatType.TimeFormat)
404+
mTimeFormats = new RpsFormatCollection(this,RpsGlobalFormatType.TimeFormat)
405405
mreturn mTimeFormats
406406
endmethod
407407
endproperty
@@ -429,7 +429,7 @@ namespace CodeGen.RepositoryAPI
429429
proc
430430
;Load the enumerations collection the first time it is referenced
431431
if (mEnumerations==^null)
432-
mEnumerations = new RpsEnumCollection()
432+
mEnumerations = new RpsEnumCollection(this)
433433
mreturn mEnumerations
434434
endmethod
435435
endproperty

RepositoryAPI/RepositoryAPI.synproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
<ItemGroup>
119119
<Compile Include="DataMapping.dbl" />
120120
<Compile Include="DataMappings.dbl" />
121-
<Compile Include="JsonSerializationHelpers.dbl" />
121+
<None Include="JsonSerializationHelpers.dbl" />
122122
<Compile Include="Properties\AssemblyInfo.dbl" />
123123
<Compile Include="Repository.dbl" />
124124
<Compile Include="RpsEnum.dbl" />

RepositoryAPI/RpsEnum.dbl

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ namespace CodeGen.RepositoryAPI
5353
;;; </summary>
5454
public class RpsEnum
5555

56+
protected mRepository, @Repository
57+
5658
public override method ToString, String
5759
endparams
5860
proc
@@ -71,10 +73,12 @@ namespace CodeGen.RepositoryAPI
7173
;;; </summary>
7274
;;; <param name="EnumName">Name of ENUM to load</param>
7375
public method RpsEnum
76+
required in aRepository, @Repository
7477
required in EnumName, String
7578
endparams
7679
proc
77-
Repository.CheckIsOpen()
80+
mRepository = aRepository
81+
mRepository.CheckIsOpen()
7882
LoadEnum(EnumName)
7983
endmethod
8084

@@ -93,8 +97,8 @@ namespace CodeGen.RepositoryAPI
9397
mName = EnumName.Trim().ToUpper()
9498

9599
;;Load enum information
96-
dd_enum(Repository.RpsControl,DDE_INFO,mName,^a(me_info))
97-
if (Repository.RpsControl.error)
100+
dd_enum(mRepository.RpsControl,DDE_INFO,mName,^a(me_info))
101+
if (mRepository.RpsControl.error)
98102
throw new RpsEnumException("Failed to get information for repository enumeration "+mName)
99103

100104
;;Load the enums text-based attributes
@@ -103,8 +107,8 @@ namespace CodeGen.RepositoryAPI
103107
if (me_info.ei_desc) then
104108
begin
105109
data tmpDescription, a40
106-
xcall dd_enum(Repository.RpsControl,DDE_TEXT,me_info.ei_desc,tmpDescription)
107-
if (Repository.RpsControl.error) then
110+
xcall dd_enum(mRepository.RpsControl,DDE_TEXT,me_info.ei_desc,tmpDescription)
111+
if (mRepository.RpsControl.error) then
108112
throw new RpsEnumException("Failed to get description for repository enumeration "+mName)
109113
else
110114
mDescription = %atrim(tmpDescription)
@@ -116,8 +120,8 @@ namespace CodeGen.RepositoryAPI
116120
if (me_info.ei_ldesc) then
117121
begin
118122
data tmpLongDescription, a1800
119-
dd_enum(Repository.RpsControl,DDE_TEXT,me_info.ei_ldesc,tmpLongDescription)
120-
if (Repository.RpsControl.error) then
123+
dd_enum(mRepository.RpsControl,DDE_TEXT,me_info.ei_ldesc,tmpLongDescription)
124+
if (mRepository.RpsControl.error) then
121125
throw new RpsEnumException("Failed to get long description for repository enumeration "+mName)
122126
else
123127
mLongDescription = tmpLongDescription
@@ -138,7 +142,7 @@ namespace CodeGen.RepositoryAPI
138142
proc
139143
;;Load the members collection the first time it is referenced
140144
if (mMembers==^null)
141-
mMembers = new RpsEnumMemberCollection(mName)
145+
mMembers = new RpsEnumMemberCollection(mRepository,mName)
142146
mreturn mMembers
143147
endmethod
144148
endproperty

RepositoryAPI/RpsEnumCollection.dbl

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,26 @@ namespace CodeGen.RepositoryAPI
5050

5151
public class RpsEnumCollection extends List<RpsEnum>
5252

53+
protected mRepository, @Repository
54+
5355
;; Constructor (all enumerations)
5456
public method RpsEnumCollection
57+
required in aRepository, @Repository
5558
endparams
5659
proc
57-
Repository.CheckIsOpen()
60+
mRepository = aRepository
61+
mRepository.CheckIsOpen()
5862
LoadAllEnumerations()
5963
endmethod
6064

6165
;; Constructor (enumerations used by a structures fields)
6266
public method RpsEnumCollection
67+
required in aRepository, @Repository
6368
required in StructureName, String
6469
endparams
6570
proc
66-
Repository.CheckIsOpen()
71+
mRepository = aRepository
72+
mRepository.CheckIsOpen()
6773
LoadStructureEnumerations(StructureName)
6874
endmethod
6975

@@ -83,19 +89,19 @@ namespace CodeGen.RepositoryAPI
8389
try
8490
begin
8591
;Get the number of enumerations in the repository
86-
dd_name(Repository.RpsControl,DDN_COUNT,DDN_ENUM,EnumCount)
87-
if (Repository.RpsControl.error)
92+
dd_name(mRepository.RpsControl,DDN_COUNT,DDN_ENUM,EnumCount)
93+
if (mRepository.RpsControl.error)
8894
throw new RpsEnumException("Failed to get repository enumeration count")
8995
;Do we have any enumerations to load?
9096
if (EnumCount)
9197
begin
9298
;Allocate enumeration name memory and get enum names
9399
MemHandle = %mem_proc(DM_ALLOC,^size(strIdentifier)*EnumCount)
94-
dd_name(Repository.RpsControl,DDN_LIST,DDN_ENUM,EnumCount,^m(strIdentifier,MemHandle))
95-
if (Repository.RpsControl.error)
100+
dd_name(mRepository.RpsControl,DDN_LIST,DDN_ENUM,EnumCount,^m(strIdentifier,MemHandle))
101+
if (mRepository.RpsControl.error)
96102
throw new RpsEnumException("Failed to get repository enumeration names")
97103
for ix from 1 thru EnumCount
98-
this.Add(new RpsEnum(^m(strIdentifier[ix],MemHandle)))
104+
this.Add(new RpsEnum(mRepository,^m(strIdentifier[ix],MemHandle)))
99105
end
100106
end
101107
finally
@@ -116,7 +122,7 @@ namespace CodeGen.RepositoryAPI
116122
ix, int
117123
endrecord
118124
proc
119-
str = new RpsStructure(StructureName)
125+
str = new RpsStructure(mRepository,StructureName)
120126
for ix from 0 thru str.Fields.Count-1
121127
begin
122128
if (str.Fields[ix].EnumName)
@@ -136,7 +142,7 @@ namespace CodeGen.RepositoryAPI
136142
if (done)
137143
nextloop
138144
;;Add to collection
139-
this.Add(new RpsEnum(str.Fields[ix].EnumName))
145+
this.Add(new RpsEnum(mRepository,str.Fields[ix].EnumName))
140146
end
141147
end
142148
str = ^null

RepositoryAPI/RpsEnumMember.dbl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ namespace CodeGen.RepositoryAPI
5353
;;; </summary>
5454
public class RpsEnumMember
5555

56+
protected mRepository, @Repository
57+
5658
public override method ToString, String
5759
endparams
5860
proc
@@ -73,13 +75,15 @@ namespace CodeGen.RepositoryAPI
7375
;;; <param name="ExplicitValue">Explicitly assigned value</param>
7476
;;; <param name="ImplicitValue">Implicitly derived value</param>
7577
public method RpsEnumMember
78+
required in aRepository, @Repository
7679
required in EnumName, String
7780
required in Name, String
7881
required in ExplicitValue, String
7982
required in ImplicitValue, String
8083
endparams
8184
proc
82-
Repository.CheckIsOpen()
85+
mRepository = aRepository
86+
mRepository.CheckIsOpen()
8387

8488
if (EnumName==^null) then
8589
mEnumName = ""

RepositoryAPI/RpsEnumMemberCollection.dbl

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,23 @@ namespace CodeGen.RepositoryAPI
5050

5151
public class RpsEnumMemberCollection extends List<RpsEnumMember>
5252

53+
protected mRepository, @Repository
54+
5355
; Constructor (don't load any members)
5456
public method RpsEnumMemberCollection
55-
endparams
57+
required in aRepository, @Repository
5658
proc
59+
mRepository = aRepository
5760
endmethod
5861

5962
; Constructor (load members for named enum)
6063
public method RpsEnumMemberCollection
64+
required in aRepository, @Repository
6165
required in EnumName, String
6266
endparams
6367
proc
64-
Repository.CheckIsOpen()
68+
mRepository = aRepository
69+
mRepository.CheckIsOpen()
6570
LoadMembers(EnumName)
6671
endmethod
6772

@@ -84,17 +89,17 @@ namespace CodeGen.RepositoryAPI
8489
data me_info, e_info
8590
;Set the current enum and get enum information
8691

87-
dd_enum(Repository.RpsControl,DDE_INFO,EnumName,^a(me_info))
88-
if (Repository.RpsControl.error)
92+
dd_enum(mRepository.RpsControl,DDE_INFO,EnumName,^a(me_info))
93+
if (mRepository.RpsControl.error)
8994
throw new RpsEnumException("Failed to get information for repository enumeration "+EnumName)
9095
;Do we have any members to load?
9196
if (me_info.ei_nmmbrs)
9297
begin
9398
;Size the member names and values arrays and get the data
9499
MemHandleName = %mem_proc(DM_ALLOC,^size(strIdentifier)*me_info.ei_nmmbrs)
95100
MemHandleValue = %mem_proc(DM_ALLOC,^size(strEnumValue)*me_info.ei_nmmbrs)
96-
dd_enum(Repository.RpsControl,DDE_MBRS,me_info.ei_nmmbrs,^m(strIdentifier,MemHandleName),^m(strEnumValue,MemHandleValue))
97-
if (Repository.RpsControl.error)
101+
dd_enum(mRepository.RpsControl,DDE_MBRS,me_info.ei_nmmbrs,^m(strIdentifier,MemHandleName),^m(strEnumValue,MemHandleValue))
102+
if (mRepository.RpsControl.error)
98103
throw new RpsEnumException("Failed to get members for repository enumeration "+EnumName)
99104
;Add members to the collection
100105
for ix from 1 thru me_info.ei_nmmbrs
@@ -115,12 +120,12 @@ namespace CodeGen.RepositoryAPI
115120
begin
116121
;Workaround for bug in %integer with negative numbers in 9.2.1
117122
data tmpd, d18
118-
tmpd = this[this.Count-1].ImplicitValue
123+
tmpd = this[this.Count-1].ImplicitValue
119124
ImplicitValue = tmpd + 1 [LEFT]
120125
; ImplicitValue = %integer(((RpsEnumMember)mCollection[mCollection.Count]).ImplicitValue) + 1 [LEFT]
121126
end
122127
end
123-
this.Add(new RpsEnumMember(EnumName,MemberName,ExplicitValue,ImplicitValue))
128+
this.Add(new RpsEnumMember(mRepository,EnumName,MemberName,ExplicitValue,ImplicitValue))
124129
end
125130
end
126131
end
@@ -133,8 +138,8 @@ namespace CodeGen.RepositoryAPI
133138
MemHandleValue = %mem_proc(DM_FREE,MemHandleValue)
134139
end
135140
endtry
136-
endmethod
141+
endmethod
137142

138-
endclass
143+
endclass
139144

140145
endnamespace

0 commit comments

Comments
 (0)