Index: library/mongodb/mongoAPI.h =================================================================== diff -u -N -rc81b840c71a9f0de9d0a502e3e4ddfde57b81fdd -r2837e8ce08344ee3f82a7451109f14a4b7cb3395 --- library/mongodb/mongoAPI.h (.../mongoAPI.h) (revision c81b840c71a9f0de9d0a502e3e4ddfde57b81fdd) +++ library/mongodb/mongoAPI.h (.../mongoAPI.h) (revision 2837e8ce08344ee3f82a7451109f14a4b7cb3395) @@ -13,6 +13,7 @@ }; static int NsfMongoCloseStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int NsfMongoConnectStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int NsfMongoCountStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int NsfMongoIndexStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int NsfMongoInsertStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int NsfMongoQueryStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); @@ -21,6 +22,7 @@ static int NsfMongoClose(Tcl_Interp *interp, Tcl_Obj *conn); static int NsfMongoConnect(Tcl_Interp *interp, CONST char *withHost, int withPort); +static int NsfMongoCount(Tcl_Interp *interp, Tcl_Obj *conn, CONST char *namespace, Tcl_Obj *query); static int NsfMongoIndex(Tcl_Interp *interp, Tcl_Obj *conn, CONST char *namespace, Tcl_Obj *attributes, int withDropdups, int withUnique); static int NsfMongoInsert(Tcl_Interp *interp, Tcl_Obj *conn, CONST char *namespace, Tcl_Obj *values); static int NsfMongoQuery(Tcl_Interp *interp, Tcl_Obj *conn, CONST char *namespace, Tcl_Obj *query, int withLimit, int withSkip); @@ -30,6 +32,7 @@ enum { NsfMongoCloseIdx, NsfMongoConnectIdx, + NsfMongoCountIdx, NsfMongoIndexIdx, NsfMongoInsertIdx, NsfMongoQueryIdx, @@ -75,6 +78,27 @@ } static int +NsfMongoCountStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + ParseContext pc; + (void)clientData; + + if (ArgumentParse(interp, objc, objv, NULL, objv[0], + method_definitions[NsfMongoCountIdx].paramDefs, + method_definitions[NsfMongoCountIdx].nrParameters, 1, + &pc) != TCL_OK) { + return TCL_ERROR; + } else { + Tcl_Obj *conn = (Tcl_Obj *)pc.clientData[0]; + CONST char *namespace = (CONST char *)pc.clientData[1]; + Tcl_Obj *query = (Tcl_Obj *)pc.clientData[2]; + + assert(pc.status == 0); + return NsfMongoCount(interp, conn, namespace, query); + + } +} + +static int NsfMongoIndexStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { ParseContext pc; (void)clientData; @@ -194,6 +218,11 @@ {"-host", 0, 1, Nsf_ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"-port", 0, 1, Nsf_ConvertToInteger, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, +{"::mongo::count", NsfMongoCountStub, 3, { + {"conn", NSF_ARG_REQUIRED, 0, Nsf_ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, + {"namespace", NSF_ARG_REQUIRED, 0, Nsf_ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, + {"query", NSF_ARG_REQUIRED, 0, Nsf_ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} +}, {"::mongo::index", NsfMongoIndexStub, 5, { {"conn", NSF_ARG_REQUIRED, 0, Nsf_ConvertToTclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"namespace", NSF_ARG_REQUIRED, 0, Nsf_ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL},