0000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0040: 2f 2f 2f 2f 2f 2f 0d 0a 2f 2f 20 42 4c 43 6f 6c //////..// BLCol
0050: 6c 65 63 74 69 6f 6e 2e 68 3a 20 69 6e 74 65 72 lection.h: inter
0060: 66 61 63 65 20 66 6f 72 20 74 68 65 20 43 42 4c face for the CBL
0070: 43 6f 6c 6c 65 63 74 69 6f 6e 20 74 65 6d 70 6c Collection templ
0080: 61 74 65 20 63 6c 61 73 73 2e 0d 0a 2f 2f 20 43 ate class...// C
0090: 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 opyright (c) 200
00a0: 35 2d 32 30 30 38 2e 20 41 6c 6c 20 52 69 67 68 5-2008. All Righ
00b0: 74 73 20 52 65 73 65 72 76 65 64 2e 0d 0a 2f 2f ts Reserved...//
00c0: 20 57 72 69 74 74 65 6e 20 62 79 20 44 6d 69 74 Written by Dmit
00d0: 72 69 79 20 4f 73 68 63 68 65 70 6b 6f 76 20 61 riy Oshchepkov a
00e0: 6b 61 20 44 6d 69 74 72 4f 2c 20 6d 61 69 6c 74 ka DmitrO, mailt
00f0: 6f 3a 20 64 6d 69 74 72 6f 40 72 75 73 73 69 61 o: dmitro@russia
0100: 6e 2e 72 75 0d 0a 2f 2f 20 56 65 72 73 69 6f 6e n.ru..// Version
0110: 3a 20 31 2e 30 0d 0a 2f 2f 2f 2f 2f 2f 2f 2f 2f : 1.0../////////
0120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d /////////////...
0160: 0a 2f 2a 0d 0a 54 68 65 20 49 74 65 6d 54 79 70 ./*..The ItemTyp
0170: 65 20 63 6c 61 73 73 20 6d 75 73 74 20 62 65 20 e class must be
0180: 70 75 62 6c 69 63 20 64 65 6c 69 76 65 72 65 64 public delivered
0190: 20 66 72 6f 6d 20 43 42 4c 43 6f 6e 74 65 78 74 from CBLContext
01a0: 20 63 6c 61 73 73 20 61 6e 64 20 6d 75 73 74 0d class and must.
01b0: 0a 68 61 76 65 20 74 68 69 73 20 69 6e 74 65 72 .have this inter
01c0: 66 61 63 65 3a 0d 0a 63 6c 61 73 73 20 49 74 65 face:..class Ite
01d0: 6d 54 79 70 65 0d 0a 7b 0d 0a 70 75 62 6c 69 63 mType..{..public
01e0: 3a 0d 0a 20 20 20 20 4c 50 43 53 54 52 20 47 65 :.. LPCSTR Ge
01f0: 74 4e 61 6d 65 28 29 20 63 6f 6e 73 74 3b 0d 0a tName() const;..
0200: 7d 0d 0a 0d 0a 54 68 65 20 43 6f 6c 6c 54 79 70 }....The CollTyp
0210: 65 20 63 6c 61 73 73 20 6d 75 73 74 20 68 61 76 e class must hav
0220: 65 20 74 68 69 73 20 69 6e 74 65 72 66 61 63 65 e this interface
0230: 3a 0d 0a 63 6c 61 73 73 20 43 6f 6c 6c 54 79 70 :..class CollTyp
0240: 65 0d 0a 7b 0d 0a 70 75 62 6c 69 63 3a 0d 0a 20 e..{..public:..
0250: 20 20 20 69 6e 74 20 47 65 74 53 69 7a 65 28 29 int GetSize()
0260: 20 63 6f 6e 73 74 3b 0d 0a 20 20 20 20 49 74 65 const;.. Ite
0270: 6d 54 79 70 65 2a 20 41 64 64 28 4c 50 43 53 54 mType* Add(LPCST
0280: 52 20 73 7a 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 R szName);..
0290: 49 74 65 6d 54 79 70 65 2a 20 49 6e 73 65 72 74 ItemType* Insert
02a0: 28 69 6e 74 20 6e 49 6e 64 65 78 2c 20 4c 50 43 (int nIndex, LPC
02b0: 53 54 52 20 73 7a 4e 61 6d 65 29 3b 0d 0a 20 20 STR szName);..
02c0: 20 20 49 74 65 6d 54 79 70 65 2a 20 47 65 74 41 ItemType* GetA
02d0: 74 28 69 6e 74 20 6e 49 6e 64 65 78 29 20 63 6f t(int nIndex) co
02e0: 6e 73 74 3b 0d 0a 20 20 20 20 49 74 65 6d 54 79 nst;.. ItemTy
02f0: 70 65 2a 20 47 65 74 41 74 28 4c 50 43 53 54 52 pe* GetAt(LPCSTR
0300: 20 73 7a 4e 61 6d 65 29 20 63 6f 6e 73 74 3b 0d szName) const;.
0310: 0a 20 20 20 20 69 6e 74 20 49 6e 64 65 78 4f 66 . int IndexOf
0320: 28 4c 50 43 53 54 52 20 73 7a 4e 61 6d 65 29 20 (LPCSTR szName)
0330: 63 6f 6e 73 74 3b 0d 0a 20 20 20 20 69 6e 74 20 const;.. int
0340: 49 6e 64 65 78 4f 66 28 49 74 65 6d 54 79 70 65 IndexOf(ItemType
0350: 2a 20 70 49 74 65 6d 54 79 70 65 29 20 63 6f 6e * pItemType) con
0360: 73 74 3b 0d 0a 20 20 20 20 42 4f 4f 4c 20 52 65 st;.. BOOL Re
0370: 6d 6f 76 65 28 69 6e 74 20 6e 49 6e 64 65 78 29 move(int nIndex)
0380: 3b 0d 0a 20 20 20 20 42 4f 4f 4c 20 4d 6f 76 65 ;.. BOOL Move
0390: 28 69 6e 74 20 6e 49 6e 64 65 78 2c 20 69 6e 74 (int nIndex, int
03a0: 20 6e 4f 66 66 73 65 74 29 3b 0d 0a 20 20 20 20 nOffset);..
03b0: 76 6f 69 64 20 52 65 6d 6f 76 65 41 6c 6c 28 29 void RemoveAll()
03c0: 3b 0d 0a 7d 0d 0a 2a 2f 0d 0a 0d 0a 23 70 72 61 ;..}..*/....#pra
03d0: 67 6d 61 20 6f 6e 63 65 0d 0a 0d 0a 23 64 65 66 gma once....#def
03e0: 69 6e 65 20 42 4c 43 5f 52 45 41 44 4f 4e 4c 59 ine BLC_READONLY
03f0: 20 20 20 20 30 78 30 30 30 30 30 30 30 30 0d 0a 0x00000000..
0400: 23 64 65 66 69 6e 65 20 42 4c 43 5f 4d 4f 44 49 #define BLC_MODI
0410: 46 45 44 20 20 20 20 20 30 78 30 30 30 30 30 30 FED 0x000000
0420: 30 31 0d 0a 23 64 65 66 69 6e 65 20 42 4c 43 5f 01..#define BLC_
0430: 49 4e 53 45 52 54 20 20 20 20 20 20 30 78 30 30 INSERT 0x00
0440: 30 30 30 30 30 32 0d 0a 23 64 65 66 69 6e 65 20 000002..#define
0450: 42 4c 43 5f 4d 4f 56 45 20 20 20 20 20 20 20 20 BLC_MOVE
0460: 30 78 30 30 30 30 30 30 30 34 0d 0a 0d 0a 74 65 0x00000004....te
0470: 6d 70 6c 61 74 65 20 3c 63 6c 61 73 73 20 43 6f mplate <class Co
0480: 6c 6c 54 79 70 65 2c 20 63 6c 61 73 73 20 49 74 llType, class It
0490: 65 6d 54 79 70 65 2c 20 43 52 75 6e 74 69 6d 65 emType, CRuntime
04a0: 43 6c 61 73 73 2a 20 70 49 74 65 6d 52 75 6e 74 Class* pItemRunt
04b0: 69 6d 65 43 6c 61 73 73 2c 20 44 57 4f 52 44 20 imeClass, DWORD
04c0: 64 77 46 6c 61 67 73 20 3d 20 42 4c 43 5f 52 45 dwFlags = BLC_RE
04d0: 41 44 4f 4e 4c 59 3e 0d 0a 63 6c 61 73 73 20 43 ADONLY>..class C
04e0: 42 4c 43 6f 6c 6c 65 63 74 69 6f 6e 20 3a 20 70 BLCollection : p
04f0: 75 62 6c 69 63 20 43 6f 6c 6c 54 79 70 65 2c 20 ublic CollType,
0500: 70 75 62 6c 69 63 20 43 42 4c 43 6f 6e 74 65 78 public CBLContex
0510: 74 0d 0a 7b 0d 0a 70 75 62 6c 69 63 3a 0d 0a 20 t..{..public:..
0520: 20 20 20 65 6e 75 6d 0d 0a 20 20 20 20 7b 0d 0a enum.. {..
0530: 20 20 20 20 20 20 20 20 6d 65 74 68 43 6f 75 6e methCoun
0540: 74 2c 0d 0a 20 20 20 20 20 20 20 20 6d 65 74 68 t,.. meth
0550: 47 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 6d 65 Get,.. me
0560: 74 68 49 6e 64 65 78 4f 66 2c 0d 0a 20 20 20 20 thIndexOf,..
0570: 20 20 20 20 6d 65 74 68 41 64 64 2c 0d 0a 20 20 methAdd,..
0580: 20 20 20 20 20 20 6d 65 74 68 52 65 6d 6f 76 65 methRemove
0590: 2c 0d 0a 20 20 20 20 20 20 20 20 6d 65 74 68 43 ,.. methC
05a0: 6c 65 61 72 2c 0d 0a 20 20 20 20 20 20 20 20 6d lear,.. m
05b0: 65 74 68 49 6e 73 65 72 74 2c 0d 0a 20 20 20 20 ethInsert,..
05c0: 20 20 20 20 6d 65 74 68 4d 6f 76 65 2c 0d 0a 20 methMove,..
05d0: 20 20 20 20 20 20 20 4c 61 73 74 4d 65 74 68 6f LastMetho
05e0: 64 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 d.. };....
05f0: 20 43 42 4c 43 6f 6c 6c 65 63 74 69 6f 6e 28 29 CBLCollection()
0600: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 .. {..
0610: 20 69 66 20 28 6d 5f 50 61 72 61 6d 44 65 66 73 if (m_ParamDefs
0620: 2e 45 6d 70 74 79 28 29 29 0d 0a 20 20 20 20 20 .Empty())..
0630: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 {..
0640: 20 20 6d 5f 50 61 72 61 6d 44 65 66 73 2e 53 65 m_ParamDefs.Se
0650: 74 50 6f 6f 6c 53 69 7a 65 28 4c 61 73 74 4d 65 tPoolSize(LastMe
0660: 74 68 6f 64 2c 20 30 29 3b 0d 0a 20 20 20 20 20 thod, 0);..
0670: 20 20 20 20 20 20 20 6d 5f 50 61 72 61 6d 44 65 m_ParamDe
0680: 66 73 2e 41 64 64 50 61 72 61 6d 28 22 43 6f 75 fs.AddParam("Cou
0690: 6e 74 22 2c 20 22 ca ee eb e8 f7 e5 f1 f2 e2 ee nt", "..........
06a0: 22 2c 20 6d 65 74 68 43 6f 75 6e 74 2c 20 31 2c ", methCount, 1,
06b0: 20 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 0);..
06c0: 20 20 6d 5f 50 61 72 61 6d 44 65 66 73 2e 41 64 m_ParamDefs.Ad
06d0: 64 50 61 72 61 6d 28 22 47 65 74 22 2c 20 22 cf dParam("Get", ".
06e0: ee eb f3 f7 e8 f2 fc 22 2c 20 6d 65 74 68 47 65 .......", methGe
06f0: 74 2c 20 31 2c 20 32 29 3b 0d 0a 20 20 20 20 20 t, 1, 2);..
0700: 20 20 20 20 20 20 20 6d 5f 50 61 72 61 6d 44 65 m_ParamDe
0710: 66 73 2e 41 64 64 50 61 72 61 6d 28 22 49 6e 64 fs.AddParam("Ind
0720: 65 78 4f 66 22 2c 20 22 c8 ed e4 e5 ea f1 22 2c exOf", "......",
0730: 20 6d 65 74 68 49 6e 64 65 78 4f 66 2c 20 31 2c methIndexOf, 1,
0740: 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 1);..
0750: 20 20 69 66 20 28 64 77 46 6c 61 67 73 20 26 20 if (dwFlags &
0760: 42 4c 43 5f 4d 4f 44 49 46 45 44 29 0d 0a 20 20 BLC_MODIFED)..
0770: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 {..
0780: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 5f 50 m_P
0790: 61 72 61 6d 44 65 66 73 2e 41 64 64 50 61 72 61 aramDefs.AddPara
07a0: 6d 28 22 41 64 64 22 2c 20 22 c4 ee e1 e0 e2 e8 m("Add", "......
07b0: f2 fc 22 2c 20 6d 65 74 68 41 64 64 2c 20 31 2c ..", methAdd, 1,
07c0: 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 1);..
07d0: 20 20 20 20 20 20 6d 5f 50 61 72 61 6d 44 65 66 m_ParamDef
07e0: 73 2e 41 64 64 50 61 72 61 6d 28 22 52 65 6d 6f s.AddParam("Remo
07f0: 76 65 22 2c 20 22 d3 e4 e0 eb e8 f2 fc 22 2c 20 ve", ".......",
0800: 6d 65 74 68 52 65 6d 6f 76 65 2c 20 30 2c 20 31 methRemove, 0, 1
0810: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
0820: 20 20 20 20 6d 5f 50 61 72 61 6d 44 65 66 73 2e m_ParamDefs.
0830: 41 64 64 50 61 72 61 6d 28 22 43 6c 65 61 72 22 AddParam("Clear"
0840: 2c 20 22 ce f7 e8 f1 f2 e8 f2 fc 22 2c 20 6d 65 , "........", me
0850: 74 68 43 6c 65 61 72 2c 20 30 2c 20 30 29 3b 0d thClear, 0, 0);.
0860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
0870: 20 69 66 20 28 64 77 46 6c 61 67 73 20 26 20 42 if (dwFlags & B
0880: 4c 43 5f 49 4e 53 45 52 54 29 0d 0a 20 20 20 20 LC_INSERT)..
0890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
08a0: 6d 5f 50 61 72 61 6d 44 65 66 73 2e 41 64 64 50 m_ParamDefs.AddP
08b0: 61 72 61 6d 28 22 49 6e 73 65 72 74 22 2c 20 22 aram("Insert", "
08c0: c2 f1 f2 e0 e2 e8 f2 fc 22 2c 20 6d 65 74 68 49 ........", methI
08d0: 6e 73 65 72 74 2c 20 31 2c 20 32 29 3b 0d 0a 20 nsert, 1, 2);..
08e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
08f0: 66 20 28 64 77 46 6c 61 67 73 20 26 20 42 4c 43 f (dwFlags & BLC
0900: 5f 4d 4f 56 45 29 0d 0a 20 20 20 20 20 20 20 20 _MOVE)..
0910: 20 20 20 20 20 20 20 20 20 20 20 20 6d 5f 50 61 m_Pa
0920: 72 61 6d 44 65 66 73 2e 41 64 64 50 61 72 61 6d ramDefs.AddParam
0930: 28 22 4d 6f 76 65 22 2c 20 22 d1 e4 e2 e8 ed f3 ("Move", "......
0940: f2 fc 22 2c 20 6d 65 74 68 4d 6f 76 65 2c 20 30 ..", methMove, 0
0950: 2c 20 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 , 2);..
0960: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d }.. }.
0970: 0a 20 20 20 20 7d 3b 0d 0a 20 20 20 20 76 69 72 . };.. vir
0980: 74 75 61 6c 20 7e 43 42 4c 43 6f 6c 6c 65 63 74 tual ~CBLCollect
0990: 69 6f 6e 28 29 0d 0a 20 20 20 20 7b 7d 3b 0d 0a ion().. {};..
09a0: 0d 0a 09 76 69 72 74 75 61 6c 20 76 6f 69 64 20 ...virtual void
09b0: 49 6e 69 74 49 74 65 6d 28 49 74 65 6d 54 79 70 InitItem(ItemTyp
09c0: 65 2a 2c 20 43 56 61 6c 75 65 2a 2a 29 20 7b 7d e*, CValue**) {}
09d0: 3b 0d 0a 09 76 69 72 74 75 61 6c 20 69 6e 74 20 ;...virtual int
09e0: 43 6f 75 6e 74 41 64 64 50 61 72 61 6d 73 28 29 CountAddParams()
09f0: 63 6f 6e 73 74 20 7b 72 65 74 75 72 6e 20 30 3b const {return 0;
0a00: 7d 3b 0d 0a 09 76 69 72 74 75 61 6c 20 42 4f 4f };...virtual BOO
0a10: 4c 20 47 65 74 44 65 66 56 61 6c 41 64 64 50 61 L GetDefValAddPa
0a20: 72 61 6d 73 28 69 6e 74 20 6e 50 61 72 61 6d 49 rams(int nParamI
0a30: 6e 64 65 78 2c 20 43 56 61 6c 75 65 2a 20 70 44 ndex, CValue* pD
0a40: 65 66 56 61 6c 75 65 29 63 6f 6e 73 74 20 7b 72 efValue)const {r
0a50: 65 74 75 72 6e 20 46 41 4c 53 45 3b 7d 3b 0d 0a eturn FALSE;};..
0a60: 0d 0a 20 20 20 20 2f 2f 43 42 4c 43 6f 6e 74 65 .. //CBLConte
0a70: 78 74 0d 0a 20 20 20 20 2f 2f 76 69 72 74 75 61 xt.. //virtua
0a80: 6c 20 76 6f 69 64 09 09 09 49 6e 69 74 4f 62 6a l void...InitObj
0a90: 65 63 74 28 63 68 61 72 20 63 6f 6e 73 74 2a 20 ect(char const*
0aa0: 73 7a 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 76 69 szName);.. vi
0ab0: 72 74 75 61 6c 20 63 68 61 72 20 63 6f 6e 73 74 rtual char const
0ac0: 2a 20 09 47 65 74 54 79 70 65 53 74 72 69 6e 67 * .GetTypeString
0ad0: 28 76 6f 69 64 29 63 6f 6e 73 74 0d 0a 20 20 20 (void)const..
0ae0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
0af0: 64 77 46 6c 61 67 73 20 3d 3d 20 42 4c 43 5f 52 dwFlags == BLC_R
0b00: 45 41 44 4f 4e 4c 59 29 0d 0a 20 20 20 20 20 20 EADONLY)..
0b10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 d4 e8 return "..
0b20: ea f1 e8 f0 ee e2 e0 ed ed e0 ff ca ee eb eb e5 ................
0b30: ea f6 e8 ff 22 3b 0d 0a 20 20 20 20 20 20 20 20 ....";..
0b40: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 else..
0b50: 20 20 72 65 74 75 72 6e 20 22 ca ee eb eb e5 ea return "......
0b60: f6 e8 ff 22 3b 0d 0a 20 20 20 20 7d 3b 0d 0a 20 ...";.. };..
0b70: 20 20 20 0d 0a 09 76 69 72 74 75 61 6c 20 69 6e ...virtual in
0b80: 74 09 09 09 09 47 65 74 4e 50 72 6f 70 73 28 76 t....GetNProps(v
0b90: 6f 69 64 29 63 6f 6e 73 74 0d 0a 20 20 20 20 7b oid)const.. {
0ba0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
0bb0: 20 47 65 74 53 69 7a 65 28 29 3b 0d 0a 20 20 20 GetSize();..
0bc0: 20 7d 3b 0d 0a 09 76 69 72 74 75 61 6c 20 69 6e };...virtual in
0bd0: 74 09 09 09 09 46 69 6e 64 50 72 6f 70 28 63 68 t....FindProp(ch
0be0: 61 72 20 63 6f 6e 73 74 2a 20 73 7a 4e 61 6d 65 ar const* szName
0bf0: 29 63 6f 6e 73 74 0d 0a 20 20 20 20 7b 0d 0a 20 )const.. {..
0c00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e return In
0c10: 64 65 78 4f 66 28 73 7a 4e 61 6d 65 29 3b 0d 0a dexOf(szName);..
0c20: 20 20 20 20 7d 3b 0d 0a 09 76 69 72 74 75 61 6c };...virtual
0c30: 20 63 68 61 72 20 63 6f 6e 73 74 2a 20 09 47 65 char const* .Ge
0c40: 74 50 72 6f 70 4e 61 6d 65 28 69 6e 74 20 6e 50 tPropName(int nP
0c50: 72 6f 70 49 6e 64 65 78 2c 20 69 6e 74 20 6e 41 ropIndex, int nA
0c60: 6c 69 61 73 29 63 6f 6e 73 74 0d 0a 20 20 20 20 lias)const..
0c70: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {.. retur
0c80: 6e 20 47 65 74 41 74 28 6e 50 72 6f 70 49 6e 64 n GetAt(nPropInd
0c90: 65 78 29 2d 3e 47 65 74 4e 61 6d 65 28 29 3b 0d ex)->GetName();.
0ca0: 0a 20 20 20 20 7d 3b 0d 0a 09 76 69 72 74 75 61 . };...virtua
0cb0: 6c 20 69 6e 74 09 09 09 09 47 65 74 50 72 6f 70 l int....GetProp
0cc0: 56 61 6c 28 69 6e 74 20 6e 50 72 6f 70 49 6e 64 Val(int nPropInd
0cd0: 65 78 2c 20 63 6c 61 73 73 20 43 56 61 6c 75 65 ex, class CValue
0ce0: 26 20 56 61 6c 75 65 29 63 6f 6e 73 74 0d 0a 20 & Value)const..
0cf0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 56 61 {.. Va
0d00: 6c 75 65 2e 41 73 73 69 67 6e 43 6f 6e 74 65 78 lue.AssignContex
0d10: 74 28 73 74 61 74 69 63 5f 63 61 73 74 3c 49 74 t(static_cast<It
0d20: 65 6d 54 79 70 65 2a 3e 28 47 65 74 41 74 28 6e emType*>(GetAt(n
0d30: 50 72 6f 70 49 6e 64 65 78 29 29 29 3b 0d 0a 20 PropIndex)));..
0d40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b return 1;
0d50: 0d 0a 20 20 20 20 7d 3b 0d 0a 09 2f 2f 76 69 72 .. };...//vir
0d60: 74 75 61 6c 20 69 6e 74 09 09 09 09 53 65 74 50 tual int....SetP
0d70: 72 6f 70 56 61 6c 28 69 6e 74 20 6e 50 72 6f 70 ropVal(int nProp
0d80: 49 6e 64 65 78 2c 20 63 6c 61 73 73 20 43 56 61 Index, class CVa
0d90: 6c 75 65 20 63 6f 6e 73 74 26 20 56 61 6c 75 65 lue const& Value
0da0: 29 3b 0d 0a 09 76 69 72 74 75 61 6c 20 69 6e 74 );...virtual int
0db0: 09 09 09 09 49 73 50 72 6f 70 52 65 61 64 61 62 ....IsPropReadab
0dc0: 6c 65 28 69 6e 74 20 6e 50 72 6f 70 49 6e 64 65 le(int nPropInde
0dd0: 78 29 63 6f 6e 73 74 0d 0a 20 20 20 20 7b 0d 0a x)const.. {..
0de0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 return T
0df0: 52 55 45 3b 0d 0a 20 20 20 20 7d 3b 0d 0a 09 76 RUE;.. };...v
0e00: 69 72 74 75 61 6c 20 69 6e 74 09 09 09 09 49 73 irtual int....Is
0e10: 50 72 6f 70 57 72 69 74 61 62 6c 65 28 69 6e 74 PropWritable(int
0e20: 20 6e 50 72 6f 70 49 6e 64 65 78 29 63 6f 6e 73 nPropIndex)cons
0e30: 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 t.. {..
0e40: 20 20 72 65 74 75 72 6e 20 46 41 4c 53 45 3b 0d return FALSE;.
0e50: 0a 20 20 20 20 7d 3b 0d 0a 20 20 20 20 0d 0a 09 . };.. ...
0e60: 76 69 72 74 75 61 6c 20 69 6e 74 09 09 09 09 47 virtual int....G
0e70: 65 74 4e 4d 65 74 68 6f 64 73 28 76 6f 69 64 29 etNMethods(void)
0e80: 63 6f 6e 73 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 const.. {..
0e90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 5f 50 return m_P
0ea0: 61 72 61 6d 44 65 66 73 2e 53 69 7a 65 28 29 3b aramDefs.Size();
0eb0: 0d 0a 20 20 20 20 7d 3b 0d 0a 09 76 69 72 74 75 .. };...virtu
0ec0: 61 6c 20 69 6e 74 09 09 09 09 46 69 6e 64 4d 65 al int....FindMe
0ed0: 74 68 6f 64 28 63 68 61 72 20 63 6f 6e 73 74 2a thod(char const*
0ee0: 20 73 7a 4e 61 6d 65 29 63 6f 6e 73 74 0d 0a 20 szName)const..
0ef0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 {.. re
0f00: 74 75 72 6e 20 6d 5f 50 61 72 61 6d 44 65 66 73 turn m_ParamDefs
0f10: 2e 47 65 74 49 6e 64 65 78 42 79 4e 61 6d 65 28 .GetIndexByName(
0f20: 73 7a 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 7d 3b szName);.. };
0f30: 0d 0a 09 76 69 72 74 75 61 6c 20 63 68 61 72 20 ...virtual char
0f40: 63 6f 6e 73 74 2a 20 09 47 65 74 4d 65 74 68 6f const* .GetMetho
0f50: 64 4e 61 6d 65 28 69 6e 74 20 6e 4d 65 74 68 49 dName(int nMethI
0f60: 6e 64 65 78 2c 20 69 6e 74 20 6e 41 6c 69 61 73 ndex, int nAlias
0f70: 29 63 6f 6e 73 74 0d 0a 20 20 20 20 7b 0d 0a 20 )const.. {..
0f80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 5f return m_
0f90: 50 61 72 61 6d 44 65 66 73 5b 6e 4d 65 74 68 49 ParamDefs[nMethI
0fa0: 6e 64 65 78 5d 2e 4e 61 6d 65 73 5b 6e 41 6c 69 ndex].Names[nAli
0fb0: 61 73 5d 3b 0d 0a 20 20 20 20 7d 3b 0d 0a 09 76 as];.. };...v
0fc0: 69 72 74 75 61 6c 20 69 6e 74 09 09 09 09 47 65 irtual int....Ge
0fd0: 74 4e 50 61 72 61 6d 73 28 69 6e 74 20 6e 4d 65 tNParams(int nMe
0fe0: 74 68 49 6e 64 65 78 29 63 6f 6e 73 74 0d 0a 20 thIndex)const..
0ff0: 20 20 20 7b 0d 0a 09 09 73 77 69 74 63 68 20 28 {....switch (
1000: 6e 4d 65 74 68 49 6e 64 65 78 29 0d 0a 09 09 7b nMethIndex)....{
1010: 0d 0a 09 09 63 61 73 65 20 6d 65 74 68 41 64 64 ....case methAdd
1020: 3a 0d 0a 09 09 63 61 73 65 20 6d 65 74 68 49 6e :....case methIn
1030: 73 65 72 74 3a 0d 0a 09 09 09 72 65 74 75 72 6e sert:.....return
1040: 20 6d 5f 50 61 72 61 6d 44 65 66 73 5b 6e 4d 65 m_ParamDefs[nMe
1050: 74 68 49 6e 64 65 78 5d 2e 4e 75 6d 62 65 72 4f thIndex].NumberO
1060: 66 50 61 72 61 6d 73 20 2b 20 43 6f 75 6e 74 41 fParams + CountA
1070: 64 64 50 61 72 61 6d 73 28 29 3b 0d 0a 09 09 64 ddParams();....d
1080: 65 66 61 75 6c 74 3a 0d 0a 09 09 09 72 65 74 75 efault:.....retu
1090: 72 6e 20 6d 5f 50 61 72 61 6d 44 65 66 73 5b 6e rn m_ParamDefs[n
10a0: 4d 65 74 68 49 6e 64 65 78 5d 2e 4e 75 6d 62 65 MethIndex].Numbe
10b0: 72 4f 66 50 61 72 61 6d 73 3b 0d 0a 09 09 7d 0d rOfParams;....}.
10c0: 0a 20 20 20 20 7d 3b 0d 0a 09 76 69 72 74 75 61 . };...virtua
10d0: 6c 20 69 6e 74 09 09 09 09 47 65 74 50 61 72 61 l int....GetPara
10e0: 6d 44 65 66 56 61 6c 75 65 28 69 6e 74 20 6e 4d mDefValue(int nM
10f0: 65 74 68 49 6e 64 65 78 2c 20 69 6e 74 20 6e 50 ethIndex, int nP
1100: 61 72 61 6d 49 6e 64 65 78 2c 20 63 6c 61 73 73 aramIndex, class
1110: 20 43 56 61 6c 75 65 2a 20 70 44 65 66 56 61 6c CValue* pDefVal
1120: 75 65 29 63 6f 6e 73 74 0d 0a 20 20 20 20 7b 0d ue)const.. {.
1130: 0a 09 09 73 77 69 74 63 68 20 28 6e 4d 65 74 68 ...switch (nMeth
1140: 49 6e 64 65 78 29 0d 0a 09 09 7b 0d 0a 09 09 63 Index)....{....c
1150: 61 73 65 20 6d 65 74 68 41 64 64 3a 0d 0a 09 09 ase methAdd:....
1160: 63 61 73 65 20 6d 65 74 68 49 6e 73 65 72 74 3a case methInsert:
1170: 0d 0a 09 09 09 72 65 74 75 72 6e 20 47 65 74 44 .....return GetD
1180: 65 66 56 61 6c 41 64 64 50 61 72 61 6d 73 28 6e efValAddParams(n
1190: 50 61 72 61 6d 49 6e 64 65 78 2c 20 70 44 65 66 ParamIndex, pDef
11a0: 56 61 6c 75 65 29 3b 0d 0a 09 09 09 62 72 65 61 Value);.....brea
11b0: 6b 3b 0d 0a 09 09 63 61 73 65 20 6d 65 74 68 47 k;....case methG
11c0: 65 74 3a 0d 0a 09 09 09 69 66 20 28 6e 50 61 72 et:.....if (nPar
11d0: 61 6d 49 6e 64 65 78 20 3d 3d 20 31 29 0d 0a 09 amIndex == 1)...
11e0: 09 09 7b 0d 0a 09 09 09 09 70 44 65 66 56 61 6c ..{......pDefVal
11f0: 75 65 2d 3e 52 65 73 65 74 28 29 3b 0d 0a 09 09 ue->Reset();....
1200: 09 09 72 65 74 75 72 6e 20 31 3b 0d 0a 09 09 09 ..return 1;.....
1210: 7d 0d 0a 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09 }.....break;....
1220: 7d 0d 0a 09 09 72 65 74 75 72 6e 20 30 3b 0d 0a }....return 0;..
1230: 20 20 20 20 7d 3b 0d 0a 09 76 69 72 74 75 61 6c };...virtual
1240: 20 69 6e 74 09 09 09 09 48 61 73 52 65 74 56 61 int....HasRetVa
1250: 6c 28 69 6e 74 20 6e 4d 65 74 68 49 6e 64 65 78 l(int nMethIndex
1260: 29 63 6f 6e 73 74 0d 0a 20 20 20 20 7b 0d 0a 20 )const.. {..
1270: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 5f return m_
1280: 50 61 72 61 6d 44 65 66 73 5b 6e 4d 65 74 68 49 ParamDefs[nMethI
1290: 6e 64 65 78 5d 2e 48 61 73 52 65 74 75 72 6e 56 ndex].HasReturnV
12a0: 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 3b 0d 0a 09 alue;.. };...
12b0: 76 69 72 74 75 61 6c 20 69 6e 74 09 09 09 09 43 virtual int....C
12c0: 61 6c 6c 41 73 50 72 6f 63 28 69 6e 74 20 6e 4d allAsProc(int nM
12d0: 65 74 68 49 6e 64 65 78 2c 20 63 6c 61 73 73 20 ethIndex, class
12e0: 43 56 61 6c 75 65 2a 2a 20 70 70 56 61 6c 75 65 CValue** ppValue
12f0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 ).. {..
1300: 20 20 69 66 20 28 64 77 46 6c 61 67 73 20 26 20 if (dwFlags &
1310: 42 4c 43 5f 4d 4f 44 49 46 45 44 29 0d 0a 20 20 BLC_MODIFED)..
1320: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 {..
1330: 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 4d 65 switch (nMe
1340: 74 68 49 6e 64 65 78 29 0d 0a 20 20 20 20 20 20 thIndex)..
1350: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 {..
1360: 20 20 20 20 20 63 61 73 65 20 6d 65 74 68 52 65 case methRe
1370: 6d 6f 76 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 move:..
1380: 20 20 20 20 20 20 20 69 66 20 28 21 52 65 6d 6f if (!Remo
1390: 76 65 28 70 70 56 61 6c 75 65 5b 30 5d 2d 3e 47 ve(ppValue[0]->G
13a0: 65 74 4e 75 6d 65 72 69 63 28 29 29 29 0d 0a 20 etNumeric()))..
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b {
13c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
13d0: 20 20 20 20 20 20 43 42 4c 4d 6f 64 75 6c 65 3a CBLModule:
13e0: 3a 52 61 69 73 65 45 78 74 52 75 6e 74 69 6d 65 :RaiseExtRuntime
13f0: 45 72 72 6f 72 28 22 cd e5 e4 ee ef f3 f1 f2 e8 Error(".........
1400: ec fb e9 20 e8 ed e4 e5 ea f1 2e 22 2c 20 30 29 ... .......", 0)
1410: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
1420: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b return 0;
1430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1440: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
1450: 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 break;..
1460: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 6d 65 case me
1470: 74 68 43 6c 65 61 72 3a 0d 0a 20 20 20 20 20 20 thClear:..
1480: 20 20 20 20 20 20 20 20 20 20 52 65 6d 6f 76 65 Remove
1490: 41 6c 6c 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 All();..
14a0: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
14b0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
14c0: 20 6d 65 74 68 4d 6f 76 65 3a 0d 0a 20 20 20 20 methMove:..
14d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
14e0: 64 77 46 6c 61 67 73 20 26 20 42 4c 43 5f 4d 4f dwFlags & BLC_MO
14f0: 56 45 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 VE)..
1500: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 {..
1510: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
1520: 21 4d 6f 76 65 28 70 70 56 61 6c 75 65 5b 30 5d !Move(ppValue[0]
1530: 2d 3e 47 65 74 4e 75 6d 65 72 69 63 28 29 2c 20 ->GetNumeric(),
1540: 70 70 56 61 6c 75 65 5b 31 5d 2d 3e 47 65 74 4e ppValue[1]->GetN
1550: 75 6d 65 72 69 63 28 29 29 29 0d 0a 20 20 20 20 umeric()))..
1560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1570: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
1580: 20 20 20 20 20 20 20 20 20 20 20 43 42 4c 4d 6f CBLMo
1590: 64 75 6c 65 3a 3a 52 61 69 73 65 45 78 74 52 75 dule::RaiseExtRu
15a0: 6e 74 69 6d 65 45 72 72 6f 72 28 22 cd e5 e4 ee ntimeError("....
15b0: ef f3 f1 f2 e8 ec fb e5 20 ef e0 f0 e0 ec e5 f2 ........ .......
15c0: f0 fb 2e 22 2c 20 30 29 3b 0d 0a 20 20 20 20 20 ...", 0);..
15d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15e0: 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 return 0;..
15f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1600: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
1610: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
1620: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
1630: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
1640: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
1650: 6e 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d n 1;.. }.
1660: 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 . else..
1670: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
1680: 6e 20 30 3b 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a n 0;.. };....
1690: 09 76 69 72 74 75 61 6c 20 69 6e 74 09 09 09 09 .virtual int....
16a0: 43 61 6c 6c 41 73 46 75 6e 63 28 69 6e 74 20 6e CallAsFunc(int n
16b0: 4d 65 74 68 49 6e 64 65 78 2c 20 63 6c 61 73 73 MethIndex, class
16c0: 20 43 56 61 6c 75 65 26 20 52 65 74 56 61 6c 75 CValue& RetValu
16d0: 65 2c 20 63 6c 61 73 73 20 43 56 61 6c 75 65 2a e, class CValue*
16e0: 2a 20 70 70 56 61 6c 75 65 29 0d 0a 20 20 20 20 * ppValue)..
16f0: 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 {.. switc
1700: 68 20 28 6e 4d 65 74 68 49 6e 64 65 78 29 0d 0a h (nMethIndex)..
1710: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 {..
1720: 20 20 20 63 61 73 65 20 6d 65 74 68 43 6f 75 6e case methCoun
1730: 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 t:..
1740: 52 65 74 56 61 6c 75 65 20 3d 20 47 65 74 53 69 RetValue = GetSi
1750: 7a 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ze();..
1760: 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 break;..
1770: 20 20 20 63 61 73 65 20 6d 65 74 68 41 64 64 3a case methAdd:
1780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
1790: 20 28 64 77 46 6c 61 67 73 20 26 20 42 4c 43 5f (dwFlags & BLC_
17a0: 4d 4f 44 49 46 45 44 29 0d 0a 09 09 09 7b 0d 0a MODIFED).....{..
17b0: 09 09 09 09 49 74 65 6d 54 79 70 65 2a 20 70 49 ....ItemType* pI
17c0: 74 65 6d 54 79 70 65 20 3d 20 73 74 61 74 69 63 temType = static
17d0: 5f 63 61 73 74 3c 49 74 65 6d 54 79 70 65 2a 3e _cast<ItemType*>
17e0: 28 41 64 64 28 70 70 56 61 6c 75 65 5b 30 5d 2d (Add(ppValue[0]-
17f0: 3e 47 65 74 53 74 72 69 6e 67 28 29 29 29 3b 0d >GetString()));.
1800: 0a 09 09 09 09 49 6e 69 74 49 74 65 6d 28 70 49 .....InitItem(pI
1810: 74 65 6d 54 79 70 65 2c 26 28 70 70 56 61 6c 75 temType,&(ppValu
1820: 65 5b 31 5d 29 29 3b 0d 0a 20 20 20 20 20 20 20 e[1]));..
1830: 20 20 20 20 20 20 20 20 20 52 65 74 56 61 6c 75 RetValu
1840: 65 2e 41 73 73 69 67 6e 43 6f 6e 74 65 78 74 28 e.AssignContext(
1850: 70 49 74 65 6d 54 79 70 65 29 3b 0d 0a 09 09 09 pItemType);.....
1860: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 }.. b
1870: 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 63 reak;.. c
1880: 61 73 65 20 6d 65 74 68 49 6e 73 65 72 74 3a 0d ase methInsert:.
1890: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
18a0: 28 64 77 46 6c 61 67 73 20 26 20 42 4c 43 5f 49 (dwFlags & BLC_I
18b0: 4e 53 45 52 54 29 0d 0a 20 20 20 20 20 20 20 20 NSERT)..
18c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 {..
18d0: 20 20 20 20 20 20 20 49 74 65 6d 54 79 70 65 2a ItemType*
18e0: 20 70 49 74 65 6d 54 79 70 65 20 3d 20 73 74 61 pItemType = sta
18f0: 74 69 63 5f 63 61 73 74 3c 49 74 65 6d 54 79 70 tic_cast<ItemTyp
1900: 65 2a 3e 28 49 6e 73 65 72 74 28 70 70 56 61 6c e*>(Insert(ppVal
1910: 75 65 5b 30 5d 2d 3e 47 65 74 4e 75 6d 65 72 69 ue[0]->GetNumeri
1920: 63 28 29 2c 20 70 70 56 61 6c 75 65 5b 31 5d 2d c(), ppValue[1]-
1930: 3e 47 65 74 53 74 72 69 6e 67 28 29 29 29 3b 0d >GetString()));.
1940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1950: 20 69 66 20 28 21 70 49 74 65 6d 54 79 70 65 29 if (!pItemType)
1960: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1970: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 {..
1980: 20 20 20 20 20 20 20 20 20 43 42 4c 4d 6f 64 75 CBLModu
1990: 6c 65 3a 3a 52 61 69 73 65 45 78 74 52 75 6e 74 le::RaiseExtRunt
19a0: 69 6d 65 45 72 72 6f 72 28 22 cd e5 e4 ee ef f3 imeError("......
19b0: f1 f2 e8 ec fb e9 20 f2 e8 ef 20 ef e5 f0 e2 ee ...... ... .....
19c0: e3 ee 20 ef e0 f0 e0 ec e5 f2 f0 e0 2e 22 2c 20 .. ..........",
19d0: 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 0);..
19e0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
19f0: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 0;..
1a00: 20 20 20 20 7d 0d 0a 09 09 09 09 49 6e 69 74 49 }......InitI
1a10: 74 65 6d 28 70 49 74 65 6d 54 79 70 65 2c 26 28 tem(pItemType,&(
1a20: 70 70 56 61 6c 75 65 5b 32 5d 29 29 3b 0d 0a 20 ppValue[2]));..
1a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 R
1a40: 65 74 56 61 6c 75 65 2e 41 73 73 69 67 6e 43 6f etValue.AssignCo
1a50: 6e 74 65 78 74 28 70 49 74 65 6d 54 79 70 65 29 ntext(pItemType)
1a60: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
1a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 .. br
1a80: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 eak;.. ca
1a90: 73 65 20 6d 65 74 68 47 65 74 3a 0d 0a 20 20 20 se methGet:..
1aa0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 {..
1ab0: 20 20 20 20 20 20 69 6e 74 20 6e 54 79 70 65 20 int nType
1ac0: 3d 20 70 70 56 61 6c 75 65 5b 30 5d 2d 3e 47 65 = ppValue[0]->Ge
1ad0: 74 54 79 70 65 43 6f 64 65 28 29 3b 0d 0a 20 20 tTypeCode();..
1ae0: 20 20 20 20 20 20 20 20 20 20 49 74 65 6d 54 79 ItemTy
1af0: 70 65 2a 20 70 49 74 65 6d 3b 0d 0a 20 20 20 20 pe* pItem;..
1b00: 20 20 20 20 20 20 20 20 69 66 20 28 6e 54 79 70 if (nTyp
1b10: 65 20 3d 3d 20 4e 55 4d 42 45 52 5f 54 59 50 45 e == NUMBER_TYPE
1b20: 5f 31 43 29 0d 0a 20 20 20 20 20 20 20 20 20 20 _1C)..
1b30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 {..
1b40: 20 20 20 20 20 70 49 74 65 6d 20 3d 20 73 74 61 pItem = sta
1b50: 74 69 63 5f 63 61 73 74 3c 49 74 65 6d 54 79 70 tic_cast<ItemTyp
1b60: 65 2a 3e 28 47 65 74 41 74 28 70 70 56 61 6c 75 e*>(GetAt(ppValu
1b70: 65 5b 30 5d 2d 3e 47 65 74 4e 75 6d 65 72 69 63 e[0]->GetNumeric
1b80: 28 29 2e 6f 70 65 72 61 74 6f 72 20 6c 6f 6e 67 ().operator long
1b90: 28 29 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ()));..
1ba0: 20 20 20 20 20 20 20 69 66 20 28 70 49 74 65 6d if (pItem
1bb0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
1bc0: 20 20 20 20 20 20 20 2a 70 70 56 61 6c 75 65 5b *ppValue[
1bd0: 31 5d 20 3d 20 70 49 74 65 6d 2d 3e 47 65 74 4e 1] = pItem->GetN
1be0: 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 ame();..
1bf0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
1c00: 20 20 20 65 6c 73 65 20 69 66 20 28 6e 54 79 70 else if (nTyp
1c10: 65 20 3d 3d 20 53 54 52 49 4e 47 5f 54 59 50 45 e == STRING_TYPE
1c20: 5f 31 43 29 0d 0a 20 20 20 20 20 20 20 20 20 20 _1C)..
1c30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 {..
1c40: 20 20 20 20 20 70 49 74 65 6d 20 3d 20 73 74 61 pItem = sta
1c50: 74 69 63 5f 63 61 73 74 3c 49 74 65 6d 54 79 70 tic_cast<ItemTyp
1c60: 65 2a 3e 28 47 65 74 41 74 28 70 70 56 61 6c 75 e*>(GetAt(ppValu
1c70: 65 5b 30 5d 2d 3e 47 65 74 53 74 72 69 6e 67 28 e[0]->GetString(
1c80: 29 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 )));..
1c90: 20 20 20 20 20 20 2a 70 70 56 61 6c 75 65 5b 31 *ppValue[1
1ca0: 5d 20 3d 20 49 6e 64 65 78 4f 66 28 70 70 56 61 ] = IndexOf(ppVa
1cb0: 6c 75 65 5b 30 5d 2d 3e 47 65 74 53 74 72 69 6e lue[0]->GetStrin
1cc0: 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 g());..
1cd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
1ce0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 else..
1cf0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 {..
1d00: 20 20 20 20 20 20 20 43 42 4c 4d 6f 64 75 6c 65 CBLModule
1d10: 3a 3a 52 61 69 73 65 45 78 74 52 75 6e 74 69 6d ::RaiseExtRuntim
1d20: 65 45 72 72 6f 72 28 22 cd e5 e4 ee ef f3 f1 f2 eError("........
1d30: e8 ec fb e9 20 f2 e8 ef 20 ef e0 f0 e0 ec e5 f2 .... ... .......
1d40: f0 e0 2e 22 2c 20 30 29 3b 0d 0a 20 20 20 20 20 ...", 0);..
1d50: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
1d60: 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 n 0;..
1d70: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
1d80: 20 69 66 20 28 70 49 74 65 6d 20 3d 3d 20 4e 55 if (pItem == NU
1d90: 4c 4c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 LL)..
1da0: 20 7b 0d 0a 09 09 09 09 52 65 74 56 61 6c 75 65 {......RetValue
1db0: 2e 52 65 73 65 74 28 29 3b 0d 0a 20 20 20 20 20 .Reset();..
1dc0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 43 42 4c //CBL
1dd0: 4d 6f 64 75 6c 65 3a 3a 52 61 69 73 65 45 78 74 Module::RaiseExt
1de0: 52 75 6e 74 69 6d 65 45 72 72 6f 72 28 22 cd e5 RuntimeError("..
1df0: e4 ee ef f3 f1 f2 e8 ec ee e5 20 e7 ed e0 f7 e5 .......... .....
1e00: ed e8 e5 20 ef e0 f0 e0 ec e5 f2 f0 e0 2e 22 2c ... ..........",
1e10: 20 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 0);..
1e20: 20 20 20 20 20 20 2f 2f 72 65 74 75 72 6e 20 30 //return 0
1e30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
1e40: 0d 0a 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 52 .....else......R
1e50: 65 74 56 61 6c 75 65 2e 41 73 73 69 67 6e 43 6f etValue.AssignCo
1e60: 6e 74 65 78 74 28 70 49 74 65 6d 29 3b 0d 0a 20 ntext(pItem);..
1e70: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
1e80: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a break;..
1e90: 20 20 20 20 20 20 20 20 63 61 73 65 20 6d 65 74 case met
1ea0: 68 49 6e 64 65 78 4f 66 3a 0d 0a 09 09 09 2f 2a hIndexOf:...../*
1eb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
1ec0: 20 28 70 70 56 61 6c 75 65 5b 30 5d 2d 3e 47 65 (ppValue[0]->Ge
1ed0: 74 54 79 70 65 43 6f 64 65 28 29 20 21 3d 20 41 tTypeCode() != A
1ee0: 47 52 45 47 41 54 45 5f 54 59 50 45 5f 31 43 29 GREGATE_TYPE_1C)
1ef0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d .. {.
1f00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1f10: 20 43 42 4c 4d 6f 64 75 6c 65 3a 3a 52 61 69 73 CBLModule::Rais
1f20: 65 45 78 74 52 75 6e 74 69 6d 65 45 72 72 6f 72 eExtRuntimeError
1f30: 28 22 cd e5 e4 ee ef f3 f1 f2 e8 ec fb e9 20 f2 ("............ .
1f40: e8 ef 20 ef e0 f0 e0 ec e5 f2 f0 e0 2e 22 2c 20 .. ..........",
1f50: 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 0);..
1f60: 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a return 0;..
1f70: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
1f80: 20 20 20 20 20 20 20 20 20 20 20 49 74 65 6d 54 ItemT
1f90: 79 70 65 2a 20 70 49 74 65 6d 20 3d 20 73 74 61 ype* pItem = sta
1fa0: 74 69 63 5f 63 61 73 74 3c 49 74 65 6d 54 79 70 tic_cast<ItemTyp
1fb0: 65 2a 3e 28 70 70 56 61 6c 75 65 5b 30 5d 2d 3e e*>(ppValue[0]->
1fc0: 47 65 74 43 6f 6e 74 65 78 74 28 29 29 3b 0d 0a GetContext());..
1fd0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
1fe0: 70 49 74 65 6d 2d 3e 47 65 74 52 75 6e 74 69 6d pItem->GetRuntim
1ff0: 65 43 6c 61 73 73 28 29 20 21 3d 20 70 49 74 65 eClass() != pIte
2000: 6d 52 75 6e 74 69 6d 65 43 6c 61 73 73 29 0d 0a mRuntimeClass)..
2010: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 {..
2020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 C
2030: 42 4c 4d 6f 64 75 6c 65 3a 3a 52 61 69 73 65 45 BLModule::RaiseE
2040: 78 74 52 75 6e 74 69 6d 65 45 72 72 6f 72 28 22 xtRuntimeError("
2050: cd e5 e4 ee ef f3 f1 f2 e8 ec fb e9 20 f2 e8 ef ............ ...
2060: 20 ef e0 f0 e0 ec e5 f2 f0 e0 2e 22 2c 20 30 29 ..........", 0)
2070: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
2080: 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 return 0;..
2090: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
20a0: 20 20 20 20 20 20 20 20 20 52 65 74 56 61 6c 75 RetValu
20b0: 65 20 3d 20 49 6e 64 65 78 4f 66 28 70 49 74 65 e = IndexOf(pIte
20c0: 6d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 m);..
20d0: 20 62 72 65 61 6b 3b 0d 0a 09 09 09 2a 2f 0d 0a break;.....*/..
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
20f0: 70 70 56 61 6c 75 65 5b 30 5d 2d 3e 47 65 74 54 ppValue[0]->GetT
2100: 79 70 65 43 6f 64 65 28 29 20 3d 3d 20 41 47 52 ypeCode() == AGR
2110: 45 47 41 54 45 5f 54 59 50 45 5f 31 43 29 0d 0a EGATE_TYPE_1C)..
2120: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 09 {...
2130: 09 09 09 49 74 65 6d 54 79 70 65 2a 20 70 49 74 ...ItemType* pIt
2140: 65 6d 20 3d 20 73 74 61 74 69 63 5f 63 61 73 74 em = static_cast
2150: 3c 49 74 65 6d 54 79 70 65 2a 3e 28 70 70 56 61 <ItemType*>(ppVa
2160: 6c 75 65 5b 30 5d 2d 3e 47 65 74 43 6f 6e 74 65 lue[0]->GetConte
2170: 78 74 28 29 29 3b 0d 0a 09 09 09 09 69 66 20 28 xt());......if (
2180: 70 49 74 65 6d 2d 3e 47 65 74 52 75 6e 74 69 6d pItem->GetRuntim
2190: 65 43 6c 61 73 73 28 29 20 21 3d 20 70 49 74 65 eClass() != pIte
21a0: 6d 52 75 6e 74 69 6d 65 43 6c 61 73 73 29 0d 0a mRuntimeClass)..
21b0: 09 09 09 09 7b 0d 0a 09 09 09 09 09 43 42 4c 4d ....{.......CBLM
21c0: 6f 64 75 6c 65 3a 3a 52 61 69 73 65 45 78 74 52 odule::RaiseExtR
21d0: 75 6e 74 69 6d 65 45 72 72 6f 72 28 22 cd e5 e4 untimeError("...
21e0: ee ef f3 f1 f2 e8 ec fb e9 20 f2 e8 ef 20 ef e0 ......... ... ..
21f0: f0 e0 ec e5 f2 f0 e0 2e 22 2c 20 30 29 3b 0d 0a ........", 0);..
2200: 09 09 09 09 09 72 65 74 75 72 6e 20 30 3b 0d 0a .....return 0;..
2210: 09 09 09 09 7d 0d 0a 09 09 09 09 52 65 74 56 61 ....}......RetVa
2220: 6c 75 65 20 3d 20 49 6e 64 65 78 4f 66 28 70 49 lue = IndexOf(pI
2230: 74 65 6d 29 3b 0d 0a 09 09 09 7d 0d 0a 20 20 20 tem);.....}..
2240: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 else if
2250: 20 28 70 70 56 61 6c 75 65 5b 30 5d 2d 3e 47 65 (ppValue[0]->Ge
2260: 74 54 79 70 65 43 6f 64 65 28 29 20 3d 3d 20 53 tTypeCode() == S
2270: 54 52 49 4e 47 5f 54 59 50 45 5f 31 43 29 0d 0a TRING_TYPE_1C)..
2280: 09 09 09 7b 0d 0a 09 09 09 09 52 65 74 56 61 6c ...{......RetVal
2290: 75 65 20 3d 20 49 6e 64 65 78 4f 66 28 70 70 56 ue = IndexOf(ppV
22a0: 61 6c 75 65 5b 30 5d 2d 3e 47 65 74 53 74 72 69 alue[0]->GetStri
22b0: 6e 67 28 29 29 3b 0d 0a 09 09 09 7d 0d 0a 09 09 ng());.....}....
22c0: 09 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 .else..
22d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 {..
22e0: 20 20 20 20 20 20 43 42 4c 4d 6f 64 75 6c 65 3a CBLModule:
22f0: 3a 52 61 69 73 65 45 78 74 52 75 6e 74 69 6d 65 :RaiseExtRuntime
2300: 45 72 72 6f 72 28 22 cd e5 e4 ee ef f3 f1 f2 e8 Error(".........
2310: ec fb e9 20 f2 e8 ef 20 ef e0 f0 e0 ec e5 f2 f0 ... ... ........
2320: e0 2e 22 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20 ..", 0);..
2330: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
2340: 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 0;..
2350: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
2360: 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 break;..
2370: 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }.. retur
2380: 6e 20 31 3b 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a n 1;.. };....
2390: 20 20 20 20 73 74 61 74 69 63 20 43 50 61 72 61 static CPara
23a0: 6d 44 65 66 73 20 6d 5f 50 61 72 61 6d 44 65 66 mDefs m_ParamDef
23b0: 73 3b 0d 0a 7d 3b 0d 0a 0d 0a 74 65 6d 70 6c 61 s;..};....templa
23c0: 74 65 20 3c 63 6c 61 73 73 20 43 6f 6c 6c 54 79 te <class CollTy
23d0: 70 65 2c 20 63 6c 61 73 73 20 49 74 65 6d 54 79 pe, class ItemTy
23e0: 70 65 2c 20 43 52 75 6e 74 69 6d 65 43 6c 61 73 pe, CRuntimeClas
23f0: 73 2a 20 70 49 74 65 6d 52 75 6e 74 69 6d 65 43 s* pItemRuntimeC
2400: 6c 61 73 73 2c 20 42 4f 4f 4c 20 62 49 73 4d 6f lass, BOOL bIsMo
2410: 64 69 66 65 64 3e 0d 0a 43 50 61 72 61 6d 44 65 difed>..CParamDe
2420: 66 73 20 43 42 4c 43 6f 6c 6c 65 63 74 69 6f 6e fs CBLCollection
2430: 3c 43 6f 6c 6c 54 79 70 65 2c 20 49 74 65 6d 54 <CollType, ItemT
2440: 79 70 65 2c 20 70 49 74 65 6d 52 75 6e 74 69 6d ype, pItemRuntim
2450: 65 43 6c 61 73 73 2c 20 62 49 73 4d 6f 64 69 66 eClass, bIsModif
2460: 65 64 3e 3a 3a 6d 5f 50 61 72 61 6d 44 65 66 73 ed>::m_ParamDefs
2470: 3b 0d 0a ;..