Changeset: 4cb31334199a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4cb31334199a
Modified Files:
clients/Tests/exports.stable.out
monetdb5/modules/mal/manual.c
monetdb5/modules/mal/manual.h
monetdb5/modules/mal/manual.mal
Branch: default
Log Message:
Cleanup of manual generation
Rely on external tools to render them further.
diffs (truncated from 355 to 300 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1266,7 +1266,6 @@ str IOprintBoth(Client cntxt, MalBlkPtr
str IOprint_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
str IOprintf(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str IOprintfStream(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-str IOprompt_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str IOtable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str ITRbunIterator(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str ITRbunNext(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
@@ -1347,12 +1346,8 @@ str MALstartDataflow(Client cntxt, MalBl
str MANIFOLDevaluate(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str MANIFOLDremapMultiplex(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
p);
MALfcn MANIFOLDtypecheck(Client cntxt, MalBlkPtr mb, InstrPtr pci);
-str MANUALcompletion(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-str MANUALcreateIndex(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-str MANUALcreateSection(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
-str MANUALcreateSummary(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
+str MANUALcreateOverview(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
str MANUALhelp(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-str MANUALsearch(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str MATHbinary_ATAN2dbl(dbl *res, const dbl *a, const dbl *b);
str MATHbinary_ATAN2flt(flt *res, const flt *a, const flt *b);
str MATHbinary_POWdbl(dbl *res, const dbl *a, const dbl *b);
diff --git a/monetdb5/modules/mal/manual.c b/monetdb5/modules/mal/manual.c
--- a/monetdb5/modules/mal/manual.c
+++ b/monetdb5/modules/mal/manual.c
@@ -16,141 +16,49 @@
#include "monetdb_config.h"
#include "manual.h"
-
-static int cmpModName(Module *f, Module *l){
- return strcmp((*f)->name, (*l)->name);
-}
-
-str
-MANUALcreateIndex(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{
- stream *f = cntxt->fdout;
- Module s = cntxt->nspace;
- int j,z,rows,cols;
- Symbol t;
- InstrPtr sig;
- Module list[256]; int k, top=0, ftop, fnd;
- InstrPtr fcn[5000];
- int r, c, *x = NULL, x_sze = 0;
-
- (void) mb;
- (void) stk;
- (void) pci;
-
- if(s==NULL || f==NULL){
- return MAL_SUCCEED;
- }
- list[top++]=s;
- while(s->outer){ list[top++]= s->outer;s=s->outer;}
-
- if(top>1) qsort(list, top, sizeof(Module),
- (int(*)(const void *, const void *))cmpModName);
-
- cols = 4;
- mnstr_printf(f,"@multitable @columnfractions .24 .24 .24 .24\n");
- for(k=0;k<top;k++){
- s= list[k];
- ftop = 0;
- if( s->subscope)
- for(j=0;j<MAXSCOPE;j++)
- if(s->subscope[j]){
- for(t= s->subscope[j];t!=NULL;t=t->peer) {
- sig= getSignature(t);
- fnd = 0;
- fnd= *getFunctionId(sig) == '#';
- for(z=0; z<ftop; z++)
- if(
strcmp(getFunctionId(fcn[z]),getFunctionId(sig))==0){
- fnd++;
- break;
- }
- if( fnd == 0 && ftop<5000)
- fcn[ftop++] = sig;
- }
- }
- for(j=0; j<ftop; j++)
- for(z=j+1; z<ftop; z++)
- if( strcmp(getFunctionId(fcn[j]),getFunctionId(fcn[z])) >0) {
- sig= fcn[j]; fcn[j]=fcn[z]; fcn[z]= sig;
- }
- mnstr_printf(f,"@" "item\n");
- rows = (ftop + cols - 1) / cols;
- if (x == NULL) {
- /* 2x* to allow for empty/skipped fields/columns */
- x_sze = 2 * cols * rows;
- x = (int*) GDKmalloc(x_sze * sizeof(int));
- } else if (2 * cols * rows > x_sze) {
- x_sze = 2 * cols * rows;
- x = (int*) GDKrealloc(x, x_sze * sizeof(int));
- }
- if( x == NULL){
- GDKerror("dumpManualOverview"MAL_MALLOC_FAIL);
- return MAL_SUCCEED;
- }
- for (z = 0; z < rows; z++) {
- x[cols * z] = z;
- }
- for (c = 1; c < cols; c++) {
- for (r = 0; r < rows; r++) {
- int i = (cols * r) + c - 1;
- if (z < ftop &&
- (x[i] < 0 || strlen(getModuleId(fcn[x[i]]))
+ strlen(getFunctionId(fcn[x[i]])) < (size_t)(80 / cols))) {
- x[i+1] = z++;
- } else {
- /* HACK to avoid long names running
into next column in printed version */
- x[i+1] = -1;
- }
- }
- }
- z = 0;
- for (r = 0; r < rows; r++) {
- for (c = 0; c < cols; c++) {
- str it[] = {"item", "tab"};
- mnstr_printf(f,"@" "%s\n", it[(c > 0)]);
- if (x[z] != -1) {
- mnstr_printf(f,"%s.%s\n",
- getModuleId(fcn[x[z]]),
getFunctionId(fcn[x[z]]));
- }
- z++;
- }
- }
- }
- mnstr_printf(f,"@end multitable\n");
- if (x != NULL)
- GDKfree(x);
- return MAL_SUCCEED;
-}
-
/*
* The manual help overview merely lists the mod.function names
* together with the help oneliner in texi format for inclusion in the
documentation.
*/
str
-MANUALcreateSummary(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+MANUALcreateOverview(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
+ BAT *sig, *adr, *com;
+ bat *sx = getArgReference_bat(stk,pci,0);
+ bat *ax = getArgReference_bat(stk,pci,1);
+ bat *cx = getArgReference_bat(stk,pci,2);
stream *f= cntxt->fdout;
Module s= cntxt->nspace;
int j,z;
Symbol t;
- InstrPtr sig;
- Module list[256]; int k, ftop, fnd,top=0;
- InstrPtr fcn[5000];
- str hlp[5000],msg;
- str hlp_texi = NULL;
- size_t hlp_texi_len = 0;
+ Module list[256];
+ int k, ftop, top=0;
+ MalBlkPtr blks[25000];
+ str hlp[25000];
+ char buf[BUFSIZ], *tt;
- (void) mb;
- (void) stk;
- (void) pci;
+ sig = BATnew(TYPE_void, TYPE_str, 0, TRANSIENT);
+ adr = BATnew(TYPE_void, TYPE_str, 0, TRANSIENT);
+ com = BATnew(TYPE_void, TYPE_str, 0, TRANSIENT);
+ if( sig == NULL || adr == NULL || com == NULL){
+ if(sig) BBPunfix(sig->batCacheid);
+ if(adr) BBPunfix(adr->batCacheid);
+ if(com) BBPunfix(com->batCacheid);
+ }
+ BATseqbase(sig, 0);
+ BATseqbase(adr, 0);
+ BATseqbase(com, 0);
+
+ BATkey(sig, TRUE);
+ BATkey(adr, TRUE);
+ BATkey(com, TRUE);
if(s==NULL || f==NULL){
return MAL_SUCCEED;
}
list[top++]=s;
- while(s->outer ){ list[top++]= s->outer;s=s->outer;}
-
- if(top>1) qsort(list, top, sizeof(Module),
- (int(*)(const void *, const void *))cmpModName);
+ while(s->outer && top < 256 ){ list[top++]= s->outer;s=s->outer;}
for(k=0;k<top;k++){
s= list[k];
@@ -159,76 +67,33 @@ MANUALcreateSummary(Client cntxt, MalBlk
for(j=0;j<MAXSCOPE;j++)
if(s->subscope[j]){
for(t= s->subscope[j];t!=NULL;t=t->peer) {
- sig= getSignature(t);
- fnd = 0;
- fnd= *getFunctionId(sig) == '#';
- for(z=0; z<ftop; z++)
- if(
strcmp(getFunctionId(fcn[z]),getFunctionId(sig))==0){
- if( hlp[z] == 0)
- hlp[z]= t->def->help;
- fnd++;
- break;
- }
- if( fnd == 0 && ftop<5000){
- hlp[ftop]= t->def->help;
- fcn[ftop++] = sig;
- }
+ hlp[ftop]= t->def->help;
+ blks[ftop]= t->def;
+ ftop++;
+ if( ftop == 25000)
+ throw(MAL,"manual.functions","Ouf of
space");
}
}
- for(j=0; j<ftop; j++)
- for(z=j+1; z<ftop; z++)
- if( strcmp(getFunctionId(fcn[j]),getFunctionId(fcn[z])) >0) {
- msg= hlp[j]; hlp[j]=hlp[z]; hlp[z]= msg;
- sig= fcn[j]; fcn[j]=fcn[z]; fcn[z]= sig;
- }
-
for(z=0; z<ftop; z++){
- mnstr_printf(f,"%s.%s", getModuleId(fcn[z]),
getFunctionId(fcn[z]));
- if( hlp[z] ) {
- str hlp_ = hlp[z];
- size_t hlp_len = 2*strlen(hlp[z]) + 1;
- if (hlp_texi == NULL) {
- hlp_texi = (str) GDKmalloc(hlp_len);
- hlp_texi_len = hlp_len;
- } else if (hlp_len > hlp_texi_len) {
- hlp_texi = (str) GDKrealloc(hlp_texi,
hlp_len);
- hlp_texi_len = hlp_len;
- }
- if (hlp_texi != NULL) {
- str st, o = hlp_texi;
- for ( st= hlp[z]; *st; st++){
- if (*st == '\n' || *st == '\t')
- *o++ = ' ';
- else
- if( *st == '\\') {
- *o++ = ' ';
- st++;
- } else
- *o++ = *st;
- }
- *o++ = '\0';
- hlp_ = hlp_texi;
- }
- if (strlen(getModuleId(fcn[z])) +
strlen(getFunctionId(fcn[z])) >= 20) {
- /* HACK to avoid long names running
into help text in printed version */
- }
- mnstr_printf(f," | %s", hlp_);
+ buf[0]=0;
+ BUNappend(com, hlp[z] ? hlp[z]:buf, TRUE);
+ fcnDefinition(blks[z], getInstrPtr(blks[z],0), buf,
TRUE, buf, BUFSIZ);
+ tt = strstr(buf,"address ");
+ if( tt){
+ *tt = 0;
+ tt += 8;
}
- mnstr_printf(f,"\n");
+ BUNappend(sig,buf,TRUE);
+ buf[0]=0;
+ BUNappend(adr,tt?tt:buf,TRUE);
}
}
- if (hlp_texi != NULL)
- GDKfree(hlp_texi);
- return MAL_SUCCEED;
-}
-str
-MANUALcompletion(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{
- str *text= getArgReference_str(stk,pci,1);
- (void) mb; /* fool compiler */
- dumpHelpTable(cntxt->fdout, cntxt->nspace, *text,1);
+ BBPkeepref( *sx = sig->batCacheid);
+ BBPkeepref( *ax = adr->batCacheid);
+ BBPkeepref( *cx = com->batCacheid);
+ (void)mb;
return MAL_SUCCEED;
}
@@ -252,25 +117,3 @@ MANUALhelp(Client cntxt, MalBlkPtr mb, M
GDKfree(msg);
return MAL_SUCCEED;
}
-
-str
-MANUALsearch(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list