Skip to content

Instantly share code, notes, and snippets.

@StevenBlack
Last active June 22, 2016 10:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save StevenBlack/0b5238e6362078a6b33a to your computer and use it in GitHub Desktop.
Save StevenBlack/0b5238e6362078a6b33a to your computer and use it in GitHub Desktop.
SessionFactory creates objects that are wrapped in a private data session. Note that the factory can die but its private datasession lives until all its products are out of scope.
*=======================================
DEFINE CLASS SessionFactory AS Session
*=======================================
DataSession = 2 && private
*==========================
FUNCTION Init()
*==========================
SET CENTURY TO 20 ROLLOVER 50
SET CENTURY ON
SET DELETED ON
SET EXACT OFF
SET EXCLUSIVE OFF
SET MEMOWIDTH TO 8000
SET MULTILOCKS ON
SET NEAR OFF
SET NULL OFF
SET SAFETY OFF
SET TALK OFF
SET SECONDS OFF
SET STRICTDATE TO 0
RETURN
*==========================
FUNCTION Execute( tcCommand )
*==========================
&tcCommand
RETURN
*==========================
FUNCTION CreateObject( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 )
*==========================
LOCAL lnCount, loRetVal
lnCount= PCOUNT()
DO CASE
CASE lnCount = 1
loRetVal = CREATEOBJECT( p1 )
CASE lnCount = 2
loRetVal = CREATEOBJECT( p1, p2 )
CASE lnCount = 3
loRetVal = CREATEOBJECT( p1, p2, p3 )
CASE lnCount = 4
loRetVal = CREATEOBJECT( p1, p2, p3, p4 )
CASE lnCount = 5
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5 )
CASE lnCount = 6
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5, p6 )
CASE lnCount = 7
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5, p6, p7 )
CASE lnCount = 8
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5, p6, p7, p8 )
CASE lnCount = 9
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5, p6, p7, p8, p9 )
CASE lnCount = 10
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 )
CASE lnCount = 11
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 )
CASE lnCount = 12
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 )
CASE lnCount = 13
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 )
CASE lnCount = 14
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 )
CASE lnCount = 15
loRetVal = CREATEOBJECT( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 )
ENDCASE
RETURN loRetVal
ENDDEFINE
@FoxInCloud
Copy link

Hi Steve,
FWIW, take a look at this fork: https://gist.github.com/FoxInCloud/9ecd988ed4c56cf44d69e98c3c6aab84
Amicalement,
Thierry Nivelet

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment