This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
TODO : comment
| ptr |
Definition at line 104 of file mexlib.c.
00105 { 00106 /* Retuns an integer pointer to the header of a mxArray */ 00107 int *header = (int *) stkptr((long int)ptr); 00108 if (header[0] < 0) header = (int *) stk(header[1]); 00109 return header; 00110 }
Here is the call graph for this function:

TODO : comment
| header |
Definition at line 113 of file mexlib.c.
References C2F, lstk, and stkptr().
00114 { 00115 mxArray ptr; 00116 ptr=(mxArray) ((double *)header-(double *)stkptr(C2F(vstk).lstk[0])+C2F(vstk).lstk[0]) ; 00117 return (mxArray *) ptr; 00118 }
Here is the call graph for this function:

TODO : comment
| ptr |
Definition at line 401 of file mexlib.c.
References listentry(), and RawHeader().
00402 { 00403 int proddims,k; 00404 int *header = RawHeader(ptr); 00405 int *headerdims = listentry(header,2); 00406 proddims=1; 00407 for (k=0; k<headerdims[1]*headerdims[2]; k++) { 00408 proddims=proddims*headerdims[4+k]; 00409 } 00410 return (int) proddims==1; 00411 }
Here is the call graph for this function:

TODO : comment
| ptr |
Definition at line 1511 of file mexlib.c.
References Header(), l, listentry(), MLIST, and STRINGMATRIX.
01512 { 01513 int *header1; int l; int nfplus2; 01514 int *header = Header(ptr); 01515 if (header[0]==MLIST) { 01516 header1 = (int *) listentry(header,1); 01517 nfplus2 = header1[1]*header1[2]; 01518 l = 5 + nfplus2; 01519 if (header1[0]==STRINGMATRIX) 01520 if (header1[l]==12 && header1[l+1]==14) return 1; /* "ce" */ 01521 if (header1[l]==28 && header1[l+1]==29) return 1; /* "st" */ 01522 else return 0; 01523 } 01524 else return 0; 01525 }
Here is the call graph for this function:

TODO : comment
| header | ||
| i |
Definition at line 120 of file mexlib.c.
00121 { 00122 /*Usage int *header = header(array_ptr) 00123 * int *headersub = listentry(header, k) 00124 * then headersub[0] ... is the header of the kth object in the 00125 * list array_ptr */ 00126 int n, *ptr; 00127 n = header[1]; 00128 if (i <= n) { 00129 if ( n%2 == 0 ) n++; 00130 /* n = n if n odd, n=n+1 if n even (=> n is odd and ptr even !) */ 00131 ptr = (int *) header + 3 + n + 2*( header[2 + (i - 1) ] -1); 00132 return ptr; 00133 } else { 00134 return NULL; 00135 } 00136 }
| const char* mexFunctionName | ( | void | ) |
generic mex interface
Definition at line 2121 of file mexlib.c.
References the_current_mex_name.
02121 { return the_current_mex_name;}
| bool mexIsGlobal | ( | const mxArray * | ptr | ) |
TODO : comment
| ptr |
Definition at line 1669 of file mexlib.c.
References arr2numcst(), Header(), Infstk, and RawHeader().
01670 { 01671 int pointed; 01672 int ret_val; 01673 int *header;int *rheader; 01674 header=(int *) Header(ptr); 01675 rheader=(int *) RawHeader(ptr); 01676 pointed = arr2numcst(ptr); 01677 /* A FINIR si interface par reference OK 01678 printf("POINTED %i Infstk(pointed) %i\n", pointed, *Infstk(pointed)); 01679 printf("header[2] %i Infstk(pointed) %i\n", header[2], *Infstk(header[2])); */ 01680 pointed=header[2]; 01681 if (*Infstk(pointed) == 2) 01682 ret_val = 1; 01683 else 01684 ret_val = 0; 01685 return ret_val; 01686 }
Here is the call graph for this function:

| void mexMakeMemoryPersistent | ( | void * | ptr | ) |
TODO : comment
| ptr |
Definition at line 1419 of file mexlib.c.
References calloc_table, and rec_size.
01419 { 01420 int i; 01421 for ( i = 0 ; i < rec_size ; i++) { 01422 if (calloc_table[i].adr == ptr) 01423 { 01424 if (calloc_table[i].keep == 1 ) 01425 { 01426 calloc_table[i].keep = 2; 01427 } 01428 } 01429 } 01430 }
TODO : comment
| array_ptr | ||
| workspace |
Definition at line 2293 of file mexlib.c.
References mexPrintf().
02294 { 02295 /* TO BE DONE obsolete ? */ 02296 mexPrintf( "Function mexPutArray is obsolete, use mexPutVariable! \n"); 02297 return 1; 02298 }
Here is the call graph for this function:

TODO : comment
| workspace | ||
| var_name | ||
| array_ptr |
Definition at line 2300 of file mexlib.c.
References arr2num(), and PutVar.
02301 { 02302 /* workspace ignored: to be done .... */ 02303 PutVar( arr2num( array_ptr) , var_name); 02304 return 0; /* CHECK THIS !!!!!! */ 02305 }
Here is the call graph for this function:

| void mxAssert | ( | int | expr, | |
| char * | error_message | |||
| ) |
TODO : comment
| expr | ||
| error_message |
Definition at line 919 of file mexlib.c.
References mexErrMsgTxt().
00920 { 00921 if (!expr) mexErrMsgTxt(error_message); 00922 }
Here is the call graph for this function:

TODO : comment
| y | ||
| ptr | ||
| pti | ||
| n |
Definition at line 2845 of file mexlib.c.
References C2F, dcopy(), and value.
02846 { 02847 int one=1; int two=2; 02848 double *value = ((double *) *ptr); 02849 double *headerm = ((double *) *pti); 02850 C2F(dcopy)(n,y,&two,value,&one); 02851 C2F(dcopy)(n,++y,&two,headerm,&one); 02852 return 0; 02853 }
Here is the call graph for this function:

TODO : comment
| ptr | ||
| pti | ||
| y | ||
| n |
Definition at line 2863 of file mexlib.c.
References C2F, dcopy(), and value.
02864 { 02865 int one=1; int two=2; 02866 double *value = ((double *) *ptr); 02867 double *headerm = ((double *) *pti); 02868 C2F(dcopy)(n,value,&one,y,&two); 02869 C2F(dcopy)(n,headerm,&one,++y,&two); 02870 return 0; 02871 }
Here is the call graph for this function:

TODO : comment
| m |
Definition at line 414 of file mexlib.c.
References AsIs, C2F, createvar(), L, lr, mexErrMsgTxt(), Nbvars, and size.
00415 : create a no-header, unpopulated * 00416 * mxArray of size=m*sizeof(double) */ 00417 { 00418 static int lw, lr; 00419 int n; int size; 00420 lw = Nbvars + 1; 00421 size=m-2; 00422 if (! C2F(createvar)(&lw, "d", &size, (n=1,&n), &lr, 1L)) { 00423 mexErrMsgTxt("No more memory available: increase stacksize"); 00424 } 00425 C2F(intersci).ntypes[lw-1]=AsIs; 00426 return (mxArray *) C2F(intersci).iwhere[lw-1]; 00427 }
Here is the call graph for this function:

TODO : comment
| m | ||
| n |
Definition at line 1910 of file mexlib.c.
References C2F, CreateData, GetData(), iwhere, LOGICAL, and Nbvars.
01911 { 01912 int new, k; int *header; 01913 Nbvars++; 01914 new=Nbvars; 01915 CreateData(new, (3+m*n)*sizeof(int)); 01916 header = (int *) GetData(new); 01917 header[0]=LOGICAL; 01918 header[1]= m; 01919 header[2]= n; 01920 for (k=0; k<m*n; k++) 01921 header[3+k]= 0; 01922 return (mxArray *) C2F(intersci).iwhere[new-1]; 01923 }
Here is the call graph for this function:

| mxArray* mxCreateLogicalScalar | ( | mxLOGICAL * | value | ) |
TODO : comment
| value |
Definition at line 1925 of file mexlib.c.
References mxCreateLogicalMatrix(), and stkptr().
01926 { 01927 mxArray *pa; int *header; 01928 pa = mxCreateLogicalMatrix(1, 1); 01929 header = (int *) stkptr((long int) pa); 01930 header[3]=(int) value; 01931 return (mxArray *) pa; 01932 }
Here is the call graph for this function:

| const char* mxGetClassName | ( | const mxArray * | ptr | ) |
TODO : comment
| ptr |
Definition at line 2403 of file mexlib.c.
References CELL, DOUBLEMATRIX, Header(), INTMATRIX, MLIST, NDARRAY, SPARSEMATRIX, STRINGMATRIX, STRUCT, and theMLIST().
02404 { 02405 int *header = Header(ptr); 02406 switch (header[0]) { 02407 case DOUBLEMATRIX: 02408 return "double"; 02409 case STRINGMATRIX: 02410 return "char"; 02411 case SPARSEMATRIX: 02412 return "sparse"; 02413 case INTMATRIX: 02414 /*[8,m,n,it] it=01 02 04 11 12 14 02415 int8 int16 int32 uint8 uint16 uint32 */ 02416 switch (header[3]){ 02417 case 1: 02418 return "int8"; 02419 case 2: 02420 return "int16"; 02421 case 4: 02422 return "int32"; 02423 case 11: 02424 return "uint8"; 02425 case 12: 02426 return "uint16"; 02427 case 14: 02428 return "uint32"; 02429 default: 02430 return "unknown"; 02431 } 02432 case MLIST: 02433 /* to be done return mxCELL_CLASS or mxCHAR_CLASS or mxSTRUCT_CLASS */ 02434 /* header[6+2*(header[4]-1)] ( = 1, 10, 8) */ 02435 switch (theMLIST(header)) { 02436 case CELL: 02437 return "cell"; 02438 case STRUCT: 02439 return "struct"; 02440 case NDARRAY: 02441 switch (header[6+2*(header[4]-1)]) { 02442 /* listentry(header,3) */ 02443 case DOUBLEMATRIX: 02444 return "double"; 02445 case STRINGMATRIX: 02446 return "char"; 02447 case INTMATRIX: 02448 switch (header[6+2*(header[4]-1)+3]) { 02449 case 1: 02450 return "int8"; 02451 case 2: 02452 return "int16"; 02453 case 4: 02454 return "int32"; 02455 case 11: 02456 return "uint8"; 02457 case 12: 02458 return "uint16"; 02459 case 14: 02460 return "uint32"; 02461 default: 02462 return "unknown"; 02463 } 02464 } 02465 default: 02466 return "unknown"; 02467 } 02468 } 02469 return "unknown"; 02470 }
Here is the call graph for this function:

| bool mxIsLogicalScalar | ( | mxArray * | pa | ) |
TODO : comment
| pa |
Definition at line 1942 of file mexlib.c.
References mxGetNumberOfElements(), and mxIsLogical().
01943 { 01944 bool retval; 01945 retval = mxIsLogical(pa) && mxGetNumberOfElements(pa) == 1; 01946 return retval; 01947 }
Here is the call graph for this function:

| bool mxIsLogicalScalarTrue | ( | mxArray * | pa | ) |
TODO : comment
| pa |
Definition at line 1934 of file mexlib.c.
References mxGetLogicals(), mxGetNumberOfElements(), and mxIsLogical().
01935 { 01936 bool retval; 01937 retval = mxIsLogical(pa) && mxGetNumberOfElements(pa) == 1 && *mxGetLogicals(pa) == 1; 01938 return retval; 01939 }
Here is the call graph for this function:

| void* mxRealloc | ( | void * | ptr, | |
| size_t | nsize | |||
| ) |
TODO : comment
| ptr | ||
| nsize |
Definition at line 1321 of file mexlib.c.
References C2F, createstkptr(), m, memcpy(), mxFree(), and NULL.
01322 { 01323 int m; vraiptrst lrd=(vraiptrst)NULL; 01324 m = (nsize) /sizeof(double) + 1; 01325 mxFree((void *) lrd); 01326 if (! C2F(createstkptr)( &m, &lrd)) return 0; 01327 memcpy((void *) lrd, ptr, nsize); 01328 return (void *) lrd; 01329 }
Here is the call graph for this function:

TODO : comment
| ptr | ||
| number | ||
| size |
Definition at line 1594 of file mexlib.c.
References bot, C2F, lstk, Lstk, Nbvars, Rhs, and Top.
01595 : its number as scilab variable 01596 * and its size in Scilab double stack */ 01597 { 01598 int kk,lst_k; 01599 lst_k=(int) ptr; 01600 if (lst_k < *Lstk(C2F(vstk).bot)) { 01601 *number=0;*size=0; 01602 for (kk = 1; kk <= Nbvars; kk++) 01603 { 01604 *number=kk; 01605 if (lst_k == C2F(vstk).lstk[kk+ Top - Rhs -1]) break; 01606 } 01607 *size = C2F(vstk).lstk[*number+ Top - Rhs] - lst_k; 01608 } else 01609 { 01610 *number=0; 01611 for (kk = C2F(vstk).bot; kk < C2F(vstk).isiz; kk++) 01612 { 01613 *number=kk; 01614 if (lst_k == C2F(vstk).lstk[kk-1]) break; 01615 } 01616 *size = C2F(vstk).lstk[*number] - lst_k; 01617 } 01618 }
TODO : comment
| ptr |
Definition at line 392 of file mexlib.c.
References stkptr().
00393 { 00394 /* Utility function : return an integer pointer to * 00395 * a Scilab variable. The variable can be * 00396 * a reference (header[0] < 0) */ 00397 int *header = (int *) stkptr((long int)ptr); 00398 return header; 00399 }
Here is the call graph for this function:

TODO : comment
| ptr_lstk |
Referenced by Header(), header2ptr(), initmex(), mxCreateLogicalScalar(), mxgetm(), mxgetn(), mxgetpi(), mxgetpr(), mxgetscalar(), mxgetstring(), mxiscomplex(), mxisfull(), mxisnumeric(), mxissparse(), mxisstring(), mxSetM(), mxSetN(), mxSetNzmax(), and RawHeader().
Here is the caller graph for this function:

TODO : comment
| header |
Definition at line 138 of file mexlib.c.
References l, listentry(), MLIST, and STRINGMATRIX.
00139 { 00140 /* Returns the type of the mlist (CELL, STRUCT or HYPERMATRIX) */ 00141 int *header1; int nfplus2, l; 00142 if (header[0]==MLIST && header[1]==3 && header[6]==STRINGMATRIX) { 00143 if (header[14]==12 && header[15]==14) return 2; /* CELL "c"=12 "e"=14 */ 00144 if (header[14]==17 && header[15]==22) return 1; /* NDARRAY "h"=17 "m"=22 */ 00145 } 00146 if (header[0]==MLIST) { 00147 header1 = (int *) listentry(header,1); 00148 nfplus2 = header1[1]*header1[2]; 00149 l = 5 + nfplus2; 00150 /* "s"=28, "t"=29 */ 00151 if (header1[0]==STRINGMATRIX && header1[l]==28 && header1[l+1]==29) return 3; /* STRUCT */ 00152 } 00153 return 0; 00154 }
Here is the call graph for this function:

Unreference objects in a struct or cell
| ptr |
Definition at line 1712 of file mexlib.c.
References Bot, Error, Header(), listentry(), Lstk, mxDuplicateArray(), nb, numberandsize(), offset, Rhs, stk, and Top.
01713 { 01714 /* Unreference objects in a struct or cell */ 01715 int number, k; 01716 int list, lindex, offset; int sizeobj; 01717 int nb, nbobj, suite, newbot; 01718 01719 int oldsize, newsize; 01720 01721 int *header, *headernew; 01722 int *headerlist, *headerlistnew; 01723 int *headerobj, *headerobjnew; 01724 int *headerdims; int proddims;int obj; 01725 01726 mxArray *mxNew; 01727 header = Header(ptr); /* RawHeader ? */ 01728 mxNew = mxDuplicateArray(ptr); 01729 headernew = Header(mxNew); /* RawHeader ? */ 01730 01731 offset = Top - Rhs; 01732 newsize=header[4]; /* Initialize */ 01733 nb=header[1]-2; /* Number of fields */ 01734 headerdims = listentry(header,2); 01735 proddims=1; 01736 for (k=0; k<headerdims[1]*headerdims[2]; k++) { 01737 proddims=proddims*headerdims[4+k]; 01738 } 01739 if (!(proddims==1)) { 01740 suite=0; 01741 for (list=0; list<nb; list++) { 01742 headerlist= listentry(header, list+3); /* pointing to the field list */ 01743 nbobj=headerlist[1]; /* number of objects in the field */ 01744 for (lindex=0; lindex < nbobj; lindex++) 01745 { 01746 headerobj = listentry( headerlist,lindex+1); 01747 /* pointing to the object in the field */ 01748 if (headerobj[0] < 0) 01749 sizeobj=headerobj[3]; 01750 else 01751 sizeobj=headerlist[lindex+3]-headerlist[lindex+2]; 01752 newsize += sizeobj; /* update size of the field */ 01753 } 01754 suite++; 01755 newsize += (2+nbobj/2); /* size of list = size of inside + ... */ 01756 headernew[4+suite] = newsize; 01757 } 01758 numberandsize( mxNew, &number, &oldsize); 01759 newsize += 3; /* taking account begining of list */ 01760 newbot=*Lstk(number+offset)+newsize+1; 01761 if( (newbot - *Lstk(Bot)) > 0) 01762 {Error(17); return 0;} 01763 *Lstk(number+offset+1)=newbot; 01764 for (list=0; list<nb; list++) { 01765 headerlist= listentry(header, list+3); 01766 headerlistnew=listentry(headernew, list+3); 01767 nbobj=headerlist[1]; 01768 headerlistnew[0]= 15; 01769 headerlistnew[1]= nbobj; 01770 headerlistnew[2]= 1; 01771 for (lindex=0; lindex < nbobj; lindex++) 01772 { headerobj = listentry( headerlist,lindex+1); 01773 if (headerobj[0] < 0) 01774 sizeobj=headerobj[3]; /* reference (size of ) */ 01775 else 01776 sizeobj=headerlist[lindex+3]-headerlist[lindex+2]; 01777 headerlistnew[3+lindex]=headerlistnew[2+lindex]+sizeobj; 01778 } 01779 } 01780 for (list=0; list<nb; list++) { 01781 headerlist= listentry(header, list+3); 01782 headerlistnew=listentry(headernew, list+3); 01783 nbobj=headerlist[1]; 01784 for (lindex=0; lindex < nbobj; lindex++) 01785 { 01786 headerobj = listentry( headerlist,lindex+1); 01787 headerobjnew = listentry( headerlistnew,lindex+1); 01788 if (headerobj[0] < 0) /* reference */ 01789 { 01790 sizeobj=headerobj[3]; 01791 headerobj = (int *) stk(headerobj[1]); /* dereference */ 01792 } 01793 else 01794 { 01795 sizeobj=headerlist[lindex+3]-headerlist[lindex+2]; 01796 } 01797 for (k=0; k<2*sizeobj; k++) 01798 headerobjnew[k]=headerobj[k]; /* OUF! */ 01799 } 01800 } 01801 } 01802 else { 01803 /* 1 x 1 x ... x 1 struct */ 01804 suite=0; 01805 for (obj=0; obj<nb; obj++) { 01806 headerobj = listentry(header,3+obj); 01807 if (headerobj[0] < 0) 01808 sizeobj=headerobj[3]; 01809 else 01810 sizeobj = header[5+obj] - header[4+obj]; 01811 newsize += sizeobj; 01812 suite++; 01813 newsize += sizeobj; 01814 headernew[4+suite]=newsize; 01815 } 01816 numberandsize( mxNew, &number, &oldsize); 01817 newsize +=3; 01818 newbot = *Lstk(number+offset)+newsize+1; 01819 if ( (newbot - *Lstk(Bot)) > 0) 01820 {Error(17); return 0;} 01821 *Lstk(number+offset+1)=newbot; 01822 for (obj=0; obj<nb; obj++) 01823 { 01824 headerobj = listentry(header, 3+obj); 01825 headerobjnew = listentry(headernew, 3+obj); 01826 if (headerobj[0] < 0) 01827 { 01828 sizeobj=headerobj[3]; 01829 headerobj = (int *) stk(headerobj[1]); 01830 } 01831 else 01832 { 01833 sizeobj=header[5+obj]-header[4+obj]; 01834 } 01835 for (k=0; k<2*sizeobj; k++) 01836 headerobjnew[k]=headerobj[k]; 01837 } 01838 } 01839 return mxNew; 01840 }
Here is the call graph for this function:

1.5.1