1 
2 /*
3  * This source code file was generated by the C-code generator gentclAPI.tcl,
4  * part of the Next Scripting Framework.
5  */
6 
7 #if defined(USE_NSF_STUBS)
Nsf_ConvertTo_Boolean(Tcl_Interp * interp,Tcl_Obj * objPtr,Nsf_Param const * pPtr,ClientData * clientData,Tcl_Obj ** outObjPtr)8 int Nsf_ConvertTo_Boolean(Tcl_Interp *interp, Tcl_Obj *objPtr,  Nsf_Param const *pPtr,
9 			  ClientData *clientData, Tcl_Obj **outObjPtr) {
10   return Nsf_ConvertToBoolean(interp, objPtr, pPtr, clientData, outObjPtr);
11 }
Nsf_ConvertTo_Class(Tcl_Interp * interp,Tcl_Obj * objPtr,Nsf_Param const * pPtr,ClientData * clientData,Tcl_Obj ** outObjPtr)12 int Nsf_ConvertTo_Class(Tcl_Interp *interp, Tcl_Obj *objPtr,  Nsf_Param const *pPtr,
13 			  ClientData *clientData, Tcl_Obj **outObjPtr) {
14   return Nsf_ConvertToClass(interp, objPtr, pPtr, clientData, outObjPtr);
15 }
Nsf_ConvertTo_Int32(Tcl_Interp * interp,Tcl_Obj * objPtr,Nsf_Param const * pPtr,ClientData * clientData,Tcl_Obj ** outObjPtr)16 int Nsf_ConvertTo_Int32(Tcl_Interp *interp, Tcl_Obj *objPtr,  Nsf_Param const *pPtr,
17 			  ClientData *clientData, Tcl_Obj **outObjPtr) {
18   return Nsf_ConvertToInt32(interp, objPtr, pPtr, clientData, outObjPtr);
19 }
Nsf_ConvertTo_Integer(Tcl_Interp * interp,Tcl_Obj * objPtr,Nsf_Param const * pPtr,ClientData * clientData,Tcl_Obj ** outObjPtr)20 int Nsf_ConvertTo_Integer(Tcl_Interp *interp, Tcl_Obj *objPtr,  Nsf_Param const *pPtr,
21 			  ClientData *clientData, Tcl_Obj **outObjPtr) {
22   return Nsf_ConvertToInteger(interp, objPtr, pPtr, clientData, outObjPtr);
23 }
Nsf_ConvertTo_Object(Tcl_Interp * interp,Tcl_Obj * objPtr,Nsf_Param const * pPtr,ClientData * clientData,Tcl_Obj ** outObjPtr)24 int Nsf_ConvertTo_Object(Tcl_Interp *interp, Tcl_Obj *objPtr,  Nsf_Param const *pPtr,
25 			  ClientData *clientData, Tcl_Obj **outObjPtr) {
26   return Nsf_ConvertToObject(interp, objPtr, pPtr, clientData, outObjPtr);
27 }
Nsf_ConvertTo_Pointer(Tcl_Interp * interp,Tcl_Obj * objPtr,Nsf_Param const * pPtr,ClientData * clientData,Tcl_Obj ** outObjPtr)28 int Nsf_ConvertTo_Pointer(Tcl_Interp *interp, Tcl_Obj *objPtr,  Nsf_Param const *pPtr,
29 			  ClientData *clientData, Tcl_Obj **outObjPtr) {
30   return Nsf_ConvertToPointer(interp, objPtr, pPtr, clientData, outObjPtr);
31 }
Nsf_ConvertTo_String(Tcl_Interp * interp,Tcl_Obj * objPtr,Nsf_Param const * pPtr,ClientData * clientData,Tcl_Obj ** outObjPtr)32 int Nsf_ConvertTo_String(Tcl_Interp *interp, Tcl_Obj *objPtr,  Nsf_Param const *pPtr,
33 			  ClientData *clientData, Tcl_Obj **outObjPtr) {
34   return Nsf_ConvertToString(interp, objPtr, pPtr, clientData, outObjPtr);
35 }
Nsf_ConvertTo_Tclobj(Tcl_Interp * interp,Tcl_Obj * objPtr,Nsf_Param const * pPtr,ClientData * clientData,Tcl_Obj ** outObjPtr)36 int Nsf_ConvertTo_Tclobj(Tcl_Interp *interp, Tcl_Obj *objPtr,  Nsf_Param const *pPtr,
37 			  ClientData *clientData, Tcl_Obj **outObjPtr) {
38   return Nsf_ConvertToTclobj(interp, objPtr, pPtr, clientData, outObjPtr);
39 }
40 #else
41 # define Nsf_ConvertTo_Boolean Nsf_ConvertToBoolean
42 # define Nsf_ConvertTo_Class Nsf_ConvertToClass
43 # define Nsf_ConvertTo_Int32 Nsf_ConvertToInt32
44 # define Nsf_ConvertTo_Integer Nsf_ConvertToInteger
45 # define Nsf_ConvertTo_Object Nsf_ConvertToObject
46 # define Nsf_ConvertTo_Pointer Nsf_ConvertToPointer
47 # define Nsf_ConvertTo_String Nsf_ConvertToString
48 # define Nsf_ConvertTo_Tclobj Nsf_ConvertToTclobj
49 #endif
50 
51 
52 #if !defined(likely)
53 # if defined(__GNUC__) && __GNUC__ > 2
54 /* Use gcc branch prediction hint to minimize cost of e.g. DTrace
55  * ENABLED checks.
56  */
57 #  define unlikely(x) (__builtin_expect((x), 0))
58 #  define likely(x) (__builtin_expect((x), 1))
59 # else
60 #  define unlikely(x) (x)
61 #  define likely(x) (x)
62 # endif
63 #endif
64 
65 
66 
67 typedef enum {GridfilesourceNULL, GridfilesourceFileIdx, GridfilesourceStringIdx} GridfilesourceIdx_t;
68 
ConvertToGridfilesource(Tcl_Interp * interp,Tcl_Obj * objPtr,Nsf_Param const * pPtr,ClientData * clientData,Tcl_Obj ** outObjPtr)69 static int ConvertToGridfilesource(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr,
70 			    ClientData *clientData, Tcl_Obj **outObjPtr) {
71   int pos, result;
72   static const char *opts[] = {"file", "string", NULL};
73   (void)pPtr;
74   result = Tcl_GetIndexFromObj(interp, objPtr, opts, "gridfilesource", 0, &pos);
75   *clientData = (ClientData) INT2PTR(pos + 1);
76   *outObjPtr = objPtr;
77   return result;
78 }
79 
80 
81       static Nsf_EnumeratorConverterEntry enumeratorConverterEntries[] = {
82   {ConvertToGridfilesource, "file|string"},
83   {NULL, NULL}
84 };
85 
86 
87 /* just to define the symbol */
88 static Nsf_methodDefinition method_definitions[31];
89 
90 static const char *method_command_namespace_names[] = {
91   "::mongo"
92 };
93 static int NsfCollectionCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
94   NSF_nonnull(2) NSF_nonnull(4);
95 static int NsfCollectionOpenStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
96   NSF_nonnull(2) NSF_nonnull(4);
97 static int NsfMongoCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
98   NSF_nonnull(2) NSF_nonnull(4);
99 static int NsfMongoCollectionCountStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
100   NSF_nonnull(2) NSF_nonnull(4);
101 static int NsfMongoCollectionDeleteStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
102   NSF_nonnull(2) NSF_nonnull(4);
103 static int NsfMongoCollectionIndexStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
104   NSF_nonnull(2) NSF_nonnull(4);
105 static int NsfMongoCollectionInsertStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
106   NSF_nonnull(2) NSF_nonnull(4);
107 static int NsfMongoCollectionQueryStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
108   NSF_nonnull(2) NSF_nonnull(4);
109 static int NsfMongoCollectionStatsStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
110   NSF_nonnull(2) NSF_nonnull(4);
111 static int NsfMongoCollectionUpdateStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
112   NSF_nonnull(2) NSF_nonnull(4);
113 static int NsfMongoConnectStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
114   NSF_nonnull(2) NSF_nonnull(4);
115 static int NsfMongoCursorAggregateStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
116   NSF_nonnull(2) NSF_nonnull(4);
117 static int NsfMongoCursorCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
118   NSF_nonnull(2) NSF_nonnull(4);
119 static int NsfMongoCursorFindStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
120   NSF_nonnull(2) NSF_nonnull(4);
121 static int NsfMongoCursorNextStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
122   NSF_nonnull(2) NSF_nonnull(4);
123 static int NsfMongoGridFSCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
124   NSF_nonnull(2) NSF_nonnull(4);
125 static int NsfMongoGridFSOpenStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
126   NSF_nonnull(2) NSF_nonnull(4);
127 static int NsfMongoGridFileCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
128   NSF_nonnull(2) NSF_nonnull(4);
129 static int NsfMongoGridFileCreateStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
130   NSF_nonnull(2) NSF_nonnull(4);
131 static int NsfMongoGridFileDeleteStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
132   NSF_nonnull(2) NSF_nonnull(4);
133 static int NsfMongoGridFileGetContentTypeStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
134   NSF_nonnull(2) NSF_nonnull(4);
135 static int NsfMongoGridFileGetContentlengthStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
136   NSF_nonnull(2) NSF_nonnull(4);
137 static int NsfMongoGridFileGetMetaDataStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
138   NSF_nonnull(2) NSF_nonnull(4);
139 static int NsfMongoGridFileOpenStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
140   NSF_nonnull(2) NSF_nonnull(4);
141 static int NsfMongoGridFileReadStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
142   NSF_nonnull(2) NSF_nonnull(4);
143 static int NsfMongoGridFileSeekStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
144   NSF_nonnull(2) NSF_nonnull(4);
145 static int NsfMongoJsonGenerateStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
146   NSF_nonnull(2) NSF_nonnull(4);
147 static int NsfMongoJsonParseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
148   NSF_nonnull(2) NSF_nonnull(4);
149 static int NsfMongoRunCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
150   NSF_nonnull(2) NSF_nonnull(4);
151 static int NsfMongoStatusStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv)
152   NSF_nonnull(2) NSF_nonnull(4);
153 
154 static int NsfCollectionClose(Tcl_Interp *interp, mongoc_collection_t *collectionPtr, Tcl_Obj *collectionObj)
155   NSF_nonnull(1) NSF_nonnull(2);
156 static int NsfCollectionOpen(Tcl_Interp *interp, mongoc_client_t *connPtr, const char *dbname, const char *collectionname)
157   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3) NSF_nonnull(4);
158 static int NsfMongoClose(Tcl_Interp *interp, mongoc_client_t *connPtr, Tcl_Obj *connObj)
159   NSF_nonnull(1) NSF_nonnull(2);
160 static int NsfMongoCollectionCount(Tcl_Interp *interp, mongoc_collection_t *collectionPtr, Tcl_Obj *queryObj)
161   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3);
162 static int NsfMongoCollectionDelete(Tcl_Interp *interp, mongoc_collection_t *collectionPtr, Tcl_Obj *conditionObj)
163   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3);
164 static int NsfMongoCollectionIndex(Tcl_Interp *interp, mongoc_collection_t *collectionPtr, Tcl_Obj *attributesObj, const char *withName, int withBackground, int withDropdups, int withSparse, int withTtl, int withUnique)
165   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3);
166 static int NsfMongoCollectionInsert(Tcl_Interp *interp, mongoc_collection_t *collectionPtr, Tcl_Obj *valuesObj)
167   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3);
168 static int NsfMongoCollectionQuery(Tcl_Interp *interp, mongoc_collection_t *collectionPtr, Tcl_Obj *filterObj, Tcl_Obj *optsObj)
169   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3);
170 static int NsfMongoCollectionStats(Tcl_Interp *interp, mongoc_collection_t *collectionPtr, Tcl_Obj *optionsObj)
171   NSF_nonnull(1) NSF_nonnull(2);
172 static int NsfMongoCollectionUpdate(Tcl_Interp *interp, mongoc_collection_t *collectionPtr, Tcl_Obj *condObj, Tcl_Obj *valuesObj, int withUpsert, int withAll)
173   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3) NSF_nonnull(4);
174 static int NsfMongoConnect(Tcl_Interp *interp, const char *withUri)
175   NSF_nonnull(1);
176 static int NsfMongoCursorAggregate(Tcl_Interp *interp, mongoc_collection_t *collectionPtr, Tcl_Obj *pipelineObj, Tcl_Obj *optionsObj, int withTailable, int withAwaitdata)
177   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3) NSF_nonnull(4);
178 static int NsfMongoCursorClose(Tcl_Interp *interp, mongoc_cursor_t *cursorPtr, Tcl_Obj *cursorObj)
179   NSF_nonnull(1) NSF_nonnull(2);
180 static int NsfMongoCursorFind(Tcl_Interp *interp, mongoc_collection_t *collectionPtr, Tcl_Obj *filterObj, Tcl_Obj *optsObj)
181   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3);
182 static int NsfMongoCursorNext(Tcl_Interp *interp, mongoc_cursor_t *cursorPtr)
183   NSF_nonnull(1) NSF_nonnull(2);
184 static int NsfMongoGridFSClose(Tcl_Interp *interp, mongoc_gridfs_t *gfsPtr, Tcl_Obj *gfsObj)
185   NSF_nonnull(1) NSF_nonnull(2);
186 static int NsfMongoGridFSOpen(Tcl_Interp *interp, mongoc_client_t *connPtr, const char *dbname, const char *prefix)
187   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3) NSF_nonnull(4);
188 static int NsfMongoGridFileClose(Tcl_Interp *interp, mongoc_gridfs_file_t *gridfilePtr, Tcl_Obj *gridfileObj)
189   NSF_nonnull(1) NSF_nonnull(2);
190 static int NsfMongoGridFileCreate(Tcl_Interp *interp, GridfilesourceIdx_t withSource, mongoc_gridfs_t *gfsPtr, const char *value, const char *name, const char *contenttype, Tcl_Obj *metadataObj)
191   NSF_nonnull(1) NSF_nonnull(3) NSF_nonnull(4) NSF_nonnull(5) NSF_nonnull(6);
192 static int NsfMongoGridFileDelete(Tcl_Interp *interp, mongoc_gridfs_t *gfsPtr, Tcl_Obj *queryObj)
193   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3);
194 static int NsfMongoGridFileGetContentType(Tcl_Interp *interp, mongoc_gridfs_file_t *gridfilePtr)
195   NSF_nonnull(1) NSF_nonnull(2);
196 static int NsfMongoGridFileGetContentlength(Tcl_Interp *interp, mongoc_gridfs_file_t *gridfilePtr)
197   NSF_nonnull(1) NSF_nonnull(2);
198 static int NsfMongoGridFileGetMetaData(Tcl_Interp *interp, mongoc_gridfs_file_t *gridfilePtr)
199   NSF_nonnull(1) NSF_nonnull(2);
200 static int NsfMongoGridFileOpen(Tcl_Interp *interp, mongoc_gridfs_t *gfsPtr, Tcl_Obj *queryObj)
201   NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(3);
202 static int NsfMongoGridFileRead(Tcl_Interp *interp, mongoc_gridfs_file_t *gridfilePtr, int size)
203   NSF_nonnull(1) NSF_nonnull(2);
204 static int NsfMongoGridFileSeek(Tcl_Interp *interp, mongoc_gridfs_file_t *gridfilePtr, int offset)
205   NSF_nonnull(1) NSF_nonnull(2);
206 static int NsfMongoJsonGenerate(Tcl_Interp *interp, Tcl_Obj *listObj)
207   NSF_nonnull(1) NSF_nonnull(2);
208 static int NsfMongoJsonParse(Tcl_Interp *interp, Tcl_Obj *jsonObj)
209   NSF_nonnull(1) NSF_nonnull(2);
210 static int NsfMongoRunCmd(Tcl_Interp *interp, int withNocomplain, mongoc_client_t *connPtr, const char *db, Tcl_Obj *cmdObj)
211   NSF_nonnull(1) NSF_nonnull(3) NSF_nonnull(4) NSF_nonnull(5);
212 static int NsfMongoStatus(Tcl_Interp *interp, mongoc_client_t *connPtr, Tcl_Obj *connObj)
213   NSF_nonnull(1) NSF_nonnull(2);
214 
215 enum {
216  NsfCollectionCloseIdx,
217  NsfCollectionOpenIdx,
218  NsfMongoCloseIdx,
219  NsfMongoCollectionCountIdx,
220  NsfMongoCollectionDeleteIdx,
221  NsfMongoCollectionIndexIdx,
222  NsfMongoCollectionInsertIdx,
223  NsfMongoCollectionQueryIdx,
224  NsfMongoCollectionStatsIdx,
225  NsfMongoCollectionUpdateIdx,
226  NsfMongoConnectIdx,
227  NsfMongoCursorAggregateIdx,
228  NsfMongoCursorCloseIdx,
229  NsfMongoCursorFindIdx,
230  NsfMongoCursorNextIdx,
231  NsfMongoGridFSCloseIdx,
232  NsfMongoGridFSOpenIdx,
233  NsfMongoGridFileCloseIdx,
234  NsfMongoGridFileCreateIdx,
235  NsfMongoGridFileDeleteIdx,
236  NsfMongoGridFileGetContentTypeIdx,
237  NsfMongoGridFileGetContentlengthIdx,
238  NsfMongoGridFileGetMetaDataIdx,
239  NsfMongoGridFileOpenIdx,
240  NsfMongoGridFileReadIdx,
241  NsfMongoGridFileSeekIdx,
242  NsfMongoJsonGenerateIdx,
243  NsfMongoJsonParseIdx,
244  NsfMongoRunCmdIdx,
245  NsfMongoStatusIdx
246 } NsfMethods;
247 
248 
249 static int
NsfCollectionCloseStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)250 NsfCollectionCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
251   ParseContext pc;
252   (void)clientData;
253 
254   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
255                      method_definitions[NsfCollectionCloseIdx].paramDefs,
256                      method_definitions[NsfCollectionCloseIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
257                      &pc) == TCL_OK)) {
258     mongoc_collection_t *collectionPtr = (mongoc_collection_t *)pc.clientData[0];
259 
260     assert(pc.status == 0);
261     return NsfCollectionClose(interp, collectionPtr,pc.objv[0]);
262 
263   } else {
264 
265     return TCL_ERROR;
266   }
267 }
268 
269 static int
NsfCollectionOpenStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)270 NsfCollectionOpenStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
271   ParseContext pc;
272   (void)clientData;
273 
274   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
275                      method_definitions[NsfCollectionOpenIdx].paramDefs,
276                      method_definitions[NsfCollectionOpenIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
277                      &pc) == TCL_OK)) {
278     mongoc_client_t *connPtr = (mongoc_client_t *)pc.clientData[0];
279     const char *dbname = (const char *)pc.clientData[1];
280     const char *collectionname = (const char *)pc.clientData[2];
281 
282     assert(pc.status == 0);
283     return NsfCollectionOpen(interp, connPtr, dbname, collectionname);
284 
285   } else {
286 
287     return TCL_ERROR;
288   }
289 }
290 
291 static int
NsfMongoCloseStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)292 NsfMongoCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
293   ParseContext pc;
294   (void)clientData;
295 
296   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
297                      method_definitions[NsfMongoCloseIdx].paramDefs,
298                      method_definitions[NsfMongoCloseIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
299                      &pc) == TCL_OK)) {
300     mongoc_client_t *connPtr = (mongoc_client_t *)pc.clientData[0];
301 
302     assert(pc.status == 0);
303     return NsfMongoClose(interp, connPtr,pc.objv[0]);
304 
305   } else {
306 
307     return TCL_ERROR;
308   }
309 }
310 
311 static int
NsfMongoCollectionCountStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)312 NsfMongoCollectionCountStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
313   ParseContext pc;
314   (void)clientData;
315 
316   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
317                      method_definitions[NsfMongoCollectionCountIdx].paramDefs,
318                      method_definitions[NsfMongoCollectionCountIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
319                      &pc) == TCL_OK)) {
320     mongoc_collection_t *collectionPtr = (mongoc_collection_t *)pc.clientData[0];
321     Tcl_Obj *queryObj = (Tcl_Obj *)pc.clientData[1];
322 
323     assert(pc.status == 0);
324     return NsfMongoCollectionCount(interp, collectionPtr, queryObj);
325 
326   } else {
327 
328     return TCL_ERROR;
329   }
330 }
331 
332 static int
NsfMongoCollectionDeleteStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)333 NsfMongoCollectionDeleteStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
334   ParseContext pc;
335   (void)clientData;
336 
337   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
338                      method_definitions[NsfMongoCollectionDeleteIdx].paramDefs,
339                      method_definitions[NsfMongoCollectionDeleteIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
340                      &pc) == TCL_OK)) {
341     mongoc_collection_t *collectionPtr = (mongoc_collection_t *)pc.clientData[0];
342     Tcl_Obj *conditionObj = (Tcl_Obj *)pc.clientData[1];
343 
344     assert(pc.status == 0);
345     return NsfMongoCollectionDelete(interp, collectionPtr, conditionObj);
346 
347   } else {
348 
349     return TCL_ERROR;
350   }
351 }
352 
353 static int
NsfMongoCollectionIndexStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)354 NsfMongoCollectionIndexStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
355   ParseContext pc;
356   (void)clientData;
357 
358   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
359                      method_definitions[NsfMongoCollectionIndexIdx].paramDefs,
360                      method_definitions[NsfMongoCollectionIndexIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
361                      &pc) == TCL_OK)) {
362     mongoc_collection_t *collectionPtr = (mongoc_collection_t *)pc.clientData[0];
363     Tcl_Obj *attributesObj = (Tcl_Obj *)pc.clientData[1];
364     const char *withName = (const char *)pc.clientData[2];
365     int withBackground = (int )PTR2INT(pc.clientData[3]);
366     int withDropdups = (int )PTR2INT(pc.clientData[4]);
367     int withSparse = (int )PTR2INT(pc.clientData[5]);
368     int withTtl = (int )PTR2INT(pc.clientData[6]);
369     int withUnique = (int )PTR2INT(pc.clientData[7]);
370 
371     assert(pc.status == 0);
372     return NsfMongoCollectionIndex(interp, collectionPtr, attributesObj, withName, withBackground, withDropdups, withSparse, withTtl, withUnique);
373 
374   } else {
375 
376     return TCL_ERROR;
377   }
378 }
379 
380 static int
NsfMongoCollectionInsertStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)381 NsfMongoCollectionInsertStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
382   ParseContext pc;
383   (void)clientData;
384 
385   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
386                      method_definitions[NsfMongoCollectionInsertIdx].paramDefs,
387                      method_definitions[NsfMongoCollectionInsertIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
388                      &pc) == TCL_OK)) {
389     mongoc_collection_t *collectionPtr = (mongoc_collection_t *)pc.clientData[0];
390     Tcl_Obj *valuesObj = (Tcl_Obj *)pc.clientData[1];
391 
392     assert(pc.status == 0);
393     return NsfMongoCollectionInsert(interp, collectionPtr, valuesObj);
394 
395   } else {
396 
397     return TCL_ERROR;
398   }
399 }
400 
401 static int
NsfMongoCollectionQueryStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)402 NsfMongoCollectionQueryStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
403   ParseContext pc;
404   (void)clientData;
405 
406   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
407                      method_definitions[NsfMongoCollectionQueryIdx].paramDefs,
408                      method_definitions[NsfMongoCollectionQueryIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
409                      &pc) == TCL_OK)) {
410     mongoc_collection_t *collectionPtr = (mongoc_collection_t *)pc.clientData[0];
411     Tcl_Obj *filterObj = (Tcl_Obj *)pc.clientData[1];
412     Tcl_Obj *optsObj = (Tcl_Obj *)pc.clientData[2];
413 
414     assert(pc.status == 0);
415     return NsfMongoCollectionQuery(interp, collectionPtr, filterObj, optsObj);
416 
417   } else {
418 
419     return TCL_ERROR;
420   }
421 }
422 
423 static int
NsfMongoCollectionStatsStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)424 NsfMongoCollectionStatsStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
425   ParseContext pc;
426   (void)clientData;
427 
428   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
429                      method_definitions[NsfMongoCollectionStatsIdx].paramDefs,
430                      method_definitions[NsfMongoCollectionStatsIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
431                      &pc) == TCL_OK)) {
432     mongoc_collection_t *collectionPtr = (mongoc_collection_t *)pc.clientData[0];
433     Tcl_Obj *optionsObj = (Tcl_Obj *)pc.clientData[1];
434 
435     assert(pc.status == 0);
436     return NsfMongoCollectionStats(interp, collectionPtr, optionsObj);
437 
438   } else {
439 
440     return TCL_ERROR;
441   }
442 }
443 
444 static int
NsfMongoCollectionUpdateStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)445 NsfMongoCollectionUpdateStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
446   ParseContext pc;
447   (void)clientData;
448 
449   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
450                      method_definitions[NsfMongoCollectionUpdateIdx].paramDefs,
451                      method_definitions[NsfMongoCollectionUpdateIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
452                      &pc) == TCL_OK)) {
453     mongoc_collection_t *collectionPtr = (mongoc_collection_t *)pc.clientData[0];
454     Tcl_Obj *condObj = (Tcl_Obj *)pc.clientData[1];
455     Tcl_Obj *valuesObj = (Tcl_Obj *)pc.clientData[2];
456     int withUpsert = (int )PTR2INT(pc.clientData[3]);
457     int withAll = (int )PTR2INT(pc.clientData[4]);
458 
459     assert(pc.status == 0);
460     return NsfMongoCollectionUpdate(interp, collectionPtr, condObj, valuesObj, withUpsert, withAll);
461 
462   } else {
463 
464     return TCL_ERROR;
465   }
466 }
467 
468 static int
NsfMongoConnectStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)469 NsfMongoConnectStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
470   ParseContext pc;
471   (void)clientData;
472 
473   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
474                      method_definitions[NsfMongoConnectIdx].paramDefs,
475                      method_definitions[NsfMongoConnectIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
476                      &pc) == TCL_OK)) {
477     const char *withUri = (const char *)pc.clientData[0];
478 
479     assert(pc.status == 0);
480     return NsfMongoConnect(interp, withUri);
481 
482   } else {
483 
484     return TCL_ERROR;
485   }
486 }
487 
488 static int
NsfMongoCursorAggregateStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)489 NsfMongoCursorAggregateStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
490   ParseContext pc;
491   (void)clientData;
492 
493   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
494                      method_definitions[NsfMongoCursorAggregateIdx].paramDefs,
495                      method_definitions[NsfMongoCursorAggregateIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
496                      &pc) == TCL_OK)) {
497     mongoc_collection_t *collectionPtr = (mongoc_collection_t *)pc.clientData[0];
498     Tcl_Obj *pipelineObj = (Tcl_Obj *)pc.clientData[1];
499     Tcl_Obj *optionsObj = (Tcl_Obj *)pc.clientData[2];
500     int withTailable = (int )PTR2INT(pc.clientData[3]);
501     int withAwaitdata = (int )PTR2INT(pc.clientData[4]);
502 
503     assert(pc.status == 0);
504     return NsfMongoCursorAggregate(interp, collectionPtr, pipelineObj, optionsObj, withTailable, withAwaitdata);
505 
506   } else {
507 
508     return TCL_ERROR;
509   }
510 }
511 
512 static int
NsfMongoCursorCloseStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)513 NsfMongoCursorCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
514   ParseContext pc;
515   (void)clientData;
516 
517   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
518                      method_definitions[NsfMongoCursorCloseIdx].paramDefs,
519                      method_definitions[NsfMongoCursorCloseIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
520                      &pc) == TCL_OK)) {
521     mongoc_cursor_t *cursorPtr = (mongoc_cursor_t *)pc.clientData[0];
522 
523     assert(pc.status == 0);
524     return NsfMongoCursorClose(interp, cursorPtr,pc.objv[0]);
525 
526   } else {
527 
528     return TCL_ERROR;
529   }
530 }
531 
532 static int
NsfMongoCursorFindStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)533 NsfMongoCursorFindStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
534   ParseContext pc;
535   (void)clientData;
536 
537   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
538                      method_definitions[NsfMongoCursorFindIdx].paramDefs,
539                      method_definitions[NsfMongoCursorFindIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
540                      &pc) == TCL_OK)) {
541     mongoc_collection_t *collectionPtr = (mongoc_collection_t *)pc.clientData[0];
542     Tcl_Obj *filterObj = (Tcl_Obj *)pc.clientData[1];
543     Tcl_Obj *optsObj = (Tcl_Obj *)pc.clientData[2];
544 
545     assert(pc.status == 0);
546     return NsfMongoCursorFind(interp, collectionPtr, filterObj, optsObj);
547 
548   } else {
549 
550     return TCL_ERROR;
551   }
552 }
553 
554 static int
NsfMongoCursorNextStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)555 NsfMongoCursorNextStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
556   ParseContext pc;
557   (void)clientData;
558 
559   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
560                      method_definitions[NsfMongoCursorNextIdx].paramDefs,
561                      method_definitions[NsfMongoCursorNextIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
562                      &pc) == TCL_OK)) {
563     mongoc_cursor_t *cursorPtr = (mongoc_cursor_t *)pc.clientData[0];
564 
565     assert(pc.status == 0);
566     return NsfMongoCursorNext(interp, cursorPtr);
567 
568   } else {
569 
570     return TCL_ERROR;
571   }
572 }
573 
574 static int
NsfMongoGridFSCloseStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)575 NsfMongoGridFSCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
576   ParseContext pc;
577   (void)clientData;
578 
579   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
580                      method_definitions[NsfMongoGridFSCloseIdx].paramDefs,
581                      method_definitions[NsfMongoGridFSCloseIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
582                      &pc) == TCL_OK)) {
583     mongoc_gridfs_t *gfsPtr = (mongoc_gridfs_t *)pc.clientData[0];
584 
585     assert(pc.status == 0);
586     return NsfMongoGridFSClose(interp, gfsPtr,pc.objv[0]);
587 
588   } else {
589 
590     return TCL_ERROR;
591   }
592 }
593 
594 static int
NsfMongoGridFSOpenStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)595 NsfMongoGridFSOpenStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
596   ParseContext pc;
597   (void)clientData;
598 
599   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
600                      method_definitions[NsfMongoGridFSOpenIdx].paramDefs,
601                      method_definitions[NsfMongoGridFSOpenIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
602                      &pc) == TCL_OK)) {
603     mongoc_client_t *connPtr = (mongoc_client_t *)pc.clientData[0];
604     const char *dbname = (const char *)pc.clientData[1];
605     const char *prefix = (const char *)pc.clientData[2];
606 
607     assert(pc.status == 0);
608     return NsfMongoGridFSOpen(interp, connPtr, dbname, prefix);
609 
610   } else {
611 
612     return TCL_ERROR;
613   }
614 }
615 
616 static int
NsfMongoGridFileCloseStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)617 NsfMongoGridFileCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
618   ParseContext pc;
619   (void)clientData;
620 
621   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
622                      method_definitions[NsfMongoGridFileCloseIdx].paramDefs,
623                      method_definitions[NsfMongoGridFileCloseIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
624                      &pc) == TCL_OK)) {
625     mongoc_gridfs_file_t *gridfilePtr = (mongoc_gridfs_file_t *)pc.clientData[0];
626 
627     assert(pc.status == 0);
628     return NsfMongoGridFileClose(interp, gridfilePtr,pc.objv[0]);
629 
630   } else {
631 
632     return TCL_ERROR;
633   }
634 }
635 
636 static int
NsfMongoGridFileCreateStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)637 NsfMongoGridFileCreateStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
638   ParseContext pc;
639   (void)clientData;
640 
641   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
642                      method_definitions[NsfMongoGridFileCreateIdx].paramDefs,
643                      method_definitions[NsfMongoGridFileCreateIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
644                      &pc) == TCL_OK)) {
645     GridfilesourceIdx_t withSource = (GridfilesourceIdx_t )pc.clientData[0];
646     mongoc_gridfs_t *gfsPtr = (mongoc_gridfs_t *)pc.clientData[1];
647     const char *value = (const char *)pc.clientData[2];
648     const char *name = (const char *)pc.clientData[3];
649     const char *contenttype = (const char *)pc.clientData[4];
650     Tcl_Obj *metadataObj = (Tcl_Obj *)pc.clientData[5];
651 
652     assert(pc.status == 0);
653     return NsfMongoGridFileCreate(interp, withSource, gfsPtr, value, name, contenttype, metadataObj);
654 
655   } else {
656 
657     return TCL_ERROR;
658   }
659 }
660 
661 static int
NsfMongoGridFileDeleteStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)662 NsfMongoGridFileDeleteStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
663   ParseContext pc;
664   (void)clientData;
665 
666   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
667                      method_definitions[NsfMongoGridFileDeleteIdx].paramDefs,
668                      method_definitions[NsfMongoGridFileDeleteIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
669                      &pc) == TCL_OK)) {
670     mongoc_gridfs_t *gfsPtr = (mongoc_gridfs_t *)pc.clientData[0];
671     Tcl_Obj *queryObj = (Tcl_Obj *)pc.clientData[1];
672 
673     assert(pc.status == 0);
674     return NsfMongoGridFileDelete(interp, gfsPtr, queryObj);
675 
676   } else {
677 
678     return TCL_ERROR;
679   }
680 }
681 
682 static int
NsfMongoGridFileGetContentTypeStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)683 NsfMongoGridFileGetContentTypeStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
684   ParseContext pc;
685   (void)clientData;
686 
687   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
688                      method_definitions[NsfMongoGridFileGetContentTypeIdx].paramDefs,
689                      method_definitions[NsfMongoGridFileGetContentTypeIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
690                      &pc) == TCL_OK)) {
691     mongoc_gridfs_file_t *gridfilePtr = (mongoc_gridfs_file_t *)pc.clientData[0];
692 
693     assert(pc.status == 0);
694     return NsfMongoGridFileGetContentType(interp, gridfilePtr);
695 
696   } else {
697 
698     return TCL_ERROR;
699   }
700 }
701 
702 static int
NsfMongoGridFileGetContentlengthStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)703 NsfMongoGridFileGetContentlengthStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
704   ParseContext pc;
705   (void)clientData;
706 
707   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
708                      method_definitions[NsfMongoGridFileGetContentlengthIdx].paramDefs,
709                      method_definitions[NsfMongoGridFileGetContentlengthIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
710                      &pc) == TCL_OK)) {
711     mongoc_gridfs_file_t *gridfilePtr = (mongoc_gridfs_file_t *)pc.clientData[0];
712 
713     assert(pc.status == 0);
714     return NsfMongoGridFileGetContentlength(interp, gridfilePtr);
715 
716   } else {
717 
718     return TCL_ERROR;
719   }
720 }
721 
722 static int
NsfMongoGridFileGetMetaDataStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)723 NsfMongoGridFileGetMetaDataStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
724   ParseContext pc;
725   (void)clientData;
726 
727   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
728                      method_definitions[NsfMongoGridFileGetMetaDataIdx].paramDefs,
729                      method_definitions[NsfMongoGridFileGetMetaDataIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
730                      &pc) == TCL_OK)) {
731     mongoc_gridfs_file_t *gridfilePtr = (mongoc_gridfs_file_t *)pc.clientData[0];
732 
733     assert(pc.status == 0);
734     return NsfMongoGridFileGetMetaData(interp, gridfilePtr);
735 
736   } else {
737 
738     return TCL_ERROR;
739   }
740 }
741 
742 static int
NsfMongoGridFileOpenStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)743 NsfMongoGridFileOpenStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
744   ParseContext pc;
745   (void)clientData;
746 
747   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
748                      method_definitions[NsfMongoGridFileOpenIdx].paramDefs,
749                      method_definitions[NsfMongoGridFileOpenIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
750                      &pc) == TCL_OK)) {
751     mongoc_gridfs_t *gfsPtr = (mongoc_gridfs_t *)pc.clientData[0];
752     Tcl_Obj *queryObj = (Tcl_Obj *)pc.clientData[1];
753 
754     assert(pc.status == 0);
755     return NsfMongoGridFileOpen(interp, gfsPtr, queryObj);
756 
757   } else {
758 
759     return TCL_ERROR;
760   }
761 }
762 
763 static int
NsfMongoGridFileReadStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)764 NsfMongoGridFileReadStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
765   ParseContext pc;
766   (void)clientData;
767 
768   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
769                      method_definitions[NsfMongoGridFileReadIdx].paramDefs,
770                      method_definitions[NsfMongoGridFileReadIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
771                      &pc) == TCL_OK)) {
772     mongoc_gridfs_file_t *gridfilePtr = (mongoc_gridfs_file_t *)pc.clientData[0];
773     int size = (int )PTR2INT(pc.clientData[1]);
774 
775     assert(pc.status == 0);
776     return NsfMongoGridFileRead(interp, gridfilePtr, size);
777 
778   } else {
779 
780     return TCL_ERROR;
781   }
782 }
783 
784 static int
NsfMongoGridFileSeekStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)785 NsfMongoGridFileSeekStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
786   ParseContext pc;
787   (void)clientData;
788 
789   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
790                      method_definitions[NsfMongoGridFileSeekIdx].paramDefs,
791                      method_definitions[NsfMongoGridFileSeekIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
792                      &pc) == TCL_OK)) {
793     mongoc_gridfs_file_t *gridfilePtr = (mongoc_gridfs_file_t *)pc.clientData[0];
794     int offset = (int )PTR2INT(pc.clientData[1]);
795 
796     assert(pc.status == 0);
797     return NsfMongoGridFileSeek(interp, gridfilePtr, offset);
798 
799   } else {
800 
801     return TCL_ERROR;
802   }
803 }
804 
805 static int
NsfMongoJsonGenerateStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)806 NsfMongoJsonGenerateStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
807   (void)clientData;
808 
809 
810 
811       if (objc != 2) {
812 	return NsfArgumentError(interp, "wrong # of arguments:",
813 			     method_definitions[NsfMongoJsonGenerateIdx].paramDefs,
814 			     NULL, objv[0]);
815       }
816 
817     return NsfMongoJsonGenerate(interp, objv[1]);
818 
819 }
820 
821 static int
NsfMongoJsonParseStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)822 NsfMongoJsonParseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
823   (void)clientData;
824 
825 
826 
827       if (objc != 2) {
828 	return NsfArgumentError(interp, "wrong # of arguments:",
829 			     method_definitions[NsfMongoJsonParseIdx].paramDefs,
830 			     NULL, objv[0]);
831       }
832 
833     return NsfMongoJsonParse(interp, objv[1]);
834 
835 }
836 
837 static int
NsfMongoRunCmdStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)838 NsfMongoRunCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
839   ParseContext pc;
840   (void)clientData;
841 
842   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
843                      method_definitions[NsfMongoRunCmdIdx].paramDefs,
844                      method_definitions[NsfMongoRunCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
845                      &pc) == TCL_OK)) {
846     int withNocomplain = (int )PTR2INT(pc.clientData[0]);
847     mongoc_client_t *connPtr = (mongoc_client_t *)pc.clientData[1];
848     const char *db = (const char *)pc.clientData[2];
849     Tcl_Obj *cmdObj = (Tcl_Obj *)pc.clientData[3];
850 
851     assert(pc.status == 0);
852     return NsfMongoRunCmd(interp, withNocomplain, connPtr, db, cmdObj);
853 
854   } else {
855 
856     return TCL_ERROR;
857   }
858 }
859 
860 static int
NsfMongoStatusStub(ClientData clientData,Tcl_Interp * interp,int objc,Tcl_Obj * const * objv)861 NsfMongoStatusStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) {
862   ParseContext pc;
863   (void)clientData;
864 
865   if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0],
866                      method_definitions[NsfMongoStatusIdx].paramDefs,
867                      method_definitions[NsfMongoStatusIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN,
868                      &pc) == TCL_OK)) {
869     mongoc_client_t *connPtr = (mongoc_client_t *)pc.clientData[0];
870 
871     assert(pc.status == 0);
872     return NsfMongoStatus(interp, connPtr,pc.objv[0]);
873 
874   } else {
875 
876     return TCL_ERROR;
877   }
878 }
879 
880 static Nsf_methodDefinition method_definitions[31] = {
881 {"::mongo::collection::close", NsfCollectionCloseStub, 1, {
882   {"collection", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_collection_t",NULL,NULL,NULL,NULL,NULL}}
883 },
884 {"::mongo::collection::open", NsfCollectionOpenStub, 3, {
885   {"conn", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_client_t",NULL,NULL,NULL,NULL,NULL},
886   {"dbname", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
887   {"collectionname", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
888 },
889 {"::mongo::close", NsfMongoCloseStub, 1, {
890   {"conn", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_client_t",NULL,NULL,NULL,NULL,NULL}}
891 },
892 {"::mongo::collection::count", NsfMongoCollectionCountStub, 2, {
893   {"collection", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_collection_t",NULL,NULL,NULL,NULL,NULL},
894   {"query", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
895 },
896 {"::mongo::collection::delete", NsfMongoCollectionDeleteStub, 2, {
897   {"collection", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_collection_t",NULL,NULL,NULL,NULL,NULL},
898   {"condition", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
899 },
900 {"::mongo::collection::index", NsfMongoCollectionIndexStub, 8, {
901   {"collection", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_collection_t",NULL,NULL,NULL,NULL,NULL},
902   {"attributes", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
903   {"-name", 0, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
904   {"-background", 0, 0, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
905   {"-dropdups", 0, 0, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
906   {"-sparse", 0, 0, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
907   {"-ttl", 0, 1, Nsf_ConvertTo_Int32, NULL,NULL,"int32",NULL,NULL,NULL,NULL,NULL},
908   {"-unique", 0, 0, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
909 },
910 {"::mongo::collection::insert", NsfMongoCollectionInsertStub, 2, {
911   {"collection", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_collection_t",NULL,NULL,NULL,NULL,NULL},
912   {"values", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
913 },
914 {"::mongo::collection::query", NsfMongoCollectionQueryStub, 3, {
915   {"collection", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_collection_t",NULL,NULL,NULL,NULL,NULL},
916   {"filter", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
917   {"-opts", 0, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
918 },
919 {"::mongo::collection::stats", NsfMongoCollectionStatsStub, 2, {
920   {"collection", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_collection_t",NULL,NULL,NULL,NULL,NULL},
921   {"-options", 0, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
922 },
923 {"::mongo::collection::update", NsfMongoCollectionUpdateStub, 5, {
924   {"collection", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_collection_t",NULL,NULL,NULL,NULL,NULL},
925   {"cond", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
926   {"values", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
927   {"-upsert", 0, 0, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
928   {"-all", 0, 0, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
929 },
930 {"::mongo::connect", NsfMongoConnectStub, 1, {
931   {"-uri", 0, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
932 },
933 {"::mongo::cursor::aggregate", NsfMongoCursorAggregateStub, 5, {
934   {"collection", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_collection_t",NULL,NULL,NULL,NULL,NULL},
935   {"pipeline", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
936   {"options", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
937   {"-tailable", 0, 0, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
938   {"-awaitdata", 0, 0, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
939 },
940 {"::mongo::cursor::close", NsfMongoCursorCloseStub, 1, {
941   {"cursor", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_cursor_t",NULL,NULL,NULL,NULL,NULL}}
942 },
943 {"::mongo::cursor::find", NsfMongoCursorFindStub, 3, {
944   {"collection", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_collection_t",NULL,NULL,NULL,NULL,NULL},
945   {"filter", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
946   {"-opts", 0, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
947 },
948 {"::mongo::cursor::next", NsfMongoCursorNextStub, 1, {
949   {"cursor", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_cursor_t",NULL,NULL,NULL,NULL,NULL}}
950 },
951 {"::mongo::gridfs::close", NsfMongoGridFSCloseStub, 1, {
952   {"gfs", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_gridfs_t",NULL,NULL,NULL,NULL,NULL}}
953 },
954 {"::mongo::gridfs::open", NsfMongoGridFSOpenStub, 3, {
955   {"conn", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_client_t",NULL,NULL,NULL,NULL,NULL},
956   {"dbname", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
957   {"prefix", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
958 },
959 {"::mongo::gridfile::close", NsfMongoGridFileCloseStub, 1, {
960   {"gridfile", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_gridfs_file_t",NULL,NULL,NULL,NULL,NULL}}
961 },
962 {"::mongo::gridfile::create", NsfMongoGridFileCreateStub, 6, {
963   {"-source", NSF_ARG_REQUIRED|NSF_ARG_IS_ENUMERATION, 1, ConvertToGridfilesource, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
964   {"gfs", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_gridfs_t",NULL,NULL,NULL,NULL,NULL},
965   {"value", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
966   {"name", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
967   {"contenttype", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
968   {"-metadata", 0, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
969 },
970 {"::mongo::gridfile::delete", NsfMongoGridFileDeleteStub, 2, {
971   {"gfs", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_gridfs_t",NULL,NULL,NULL,NULL,NULL},
972   {"query", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
973 },
974 {"::mongo::gridfile::get_contenttype", NsfMongoGridFileGetContentTypeStub, 1, {
975   {"gridfile", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_gridfs_file_t",NULL,NULL,NULL,NULL,NULL}}
976 },
977 {"::mongo::gridfile::get_contentlength", NsfMongoGridFileGetContentlengthStub, 1, {
978   {"gridfile", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_gridfs_file_t",NULL,NULL,NULL,NULL,NULL}}
979 },
980 {"::mongo::gridfile::get_metadata", NsfMongoGridFileGetMetaDataStub, 1, {
981   {"gridfile", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_gridfs_file_t",NULL,NULL,NULL,NULL,NULL}}
982 },
983 {"::mongo::gridfile::open", NsfMongoGridFileOpenStub, 2, {
984   {"gfs", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_gridfs_t",NULL,NULL,NULL,NULL,NULL},
985   {"query", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
986 },
987 {"::mongo::gridfile::read", NsfMongoGridFileReadStub, 2, {
988   {"gridfile", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_gridfs_file_t",NULL,NULL,NULL,NULL,NULL},
989   {"size", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Int32, NULL,NULL,"int32",NULL,NULL,NULL,NULL,NULL}}
990 },
991 {"::mongo::gridfile::seek", NsfMongoGridFileSeekStub, 2, {
992   {"gridfile", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_gridfs_file_t",NULL,NULL,NULL,NULL,NULL},
993   {"offset", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Int32, NULL,NULL,"int32",NULL,NULL,NULL,NULL,NULL}}
994 },
995 {"::mongo::json::generate", NsfMongoJsonGenerateStub, 1, {
996   {"list", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
997 },
998 {"::mongo::json::parse", NsfMongoJsonParseStub, 1, {
999   {"json", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
1000 },
1001 {"::mongo::run", NsfMongoRunCmdStub, 4, {
1002   {"-nocomplain", 0, 0, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
1003   {"conn", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_client_t",NULL,NULL,NULL,NULL,NULL},
1004   {"db", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
1005   {"cmd", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
1006 },
1007 {"::mongo::status", NsfMongoStatusStub, 1, {
1008   {"conn", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Pointer, NULL,NULL,"mongoc_client_t",NULL,NULL,NULL,NULL,NULL}}
1009 },
1010 {NULL, NULL, 0, {{NULL, 0, 0, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}}
1011 };
1012 
1013