summaryrefslogtreecommitdiffstats
path: root/perl-install/standalone/drakperm
Commit message (Expand)AuthorAgeFilesLines
* perl_checker compliancePascal Rigaux2003-08-191-2/+3
* remove stock icons (per IHM team request)Pascal Rigaux2003-08-051-10/+10
* fix crash on adding new permissionThierry Vignaud2003-07-251-2/+1
* since we've replace save "button" by "ok", exit the tool after saving the pre...Thierry Vignaud2003-07-241-0/+1
* fix tree fillingThierry Vignaud2003-07-241-8/+8
* - ugtk2-ize dialog constructionThierry Vignaud2003-07-241-61/+61
* localize level option menuThierry Vignaud2003-07-241-3/+11
* settings dialog:Thierry Vignaud2003-07-241-2/+22
* use stock icons on rule toolbarThierry Vignaud2003-07-241-6/+6
* make label be undserstandableThierry Vignaud2003-07-241-1/+2
* upcase various widget texts (still have to localize settings dialogThierry Vignaud2003-07-241-7/+7
* simplify (un|)sensitive property setting of the listThierry Vignaud2003-07-241-3/+1
* use option menus instead of combos in settings dialog tooThierry Vignaud2003-07-241-4/+2
* use stock icons and std button layout in settings dialogThierry Vignaud2003-07-241-4/+6
* use option menus instead of combosThierry Vignaud2003-07-241-2/+1
* fix button layoutThierry Vignaud2003-07-151-2/+2
* disable column sorting since it makes gtk+2 crash when moving up a columnThierry Vignaud2003-07-101-1/+1
* switch from gtk2-perl to gtk2-perl-xsThierry Vignaud2003-07-091-17/+5
* let columns be sortable (lmontel request)Thierry Vignaud2003-07-061-0/+1
* increase gui coherency of drakxtools vs other gtk+ apps: use stock iconsThierry Vignaud2003-07-061-2/+2
* perl_checker fixesThierry Vignaud2003-05-231-7/+7
* better use get instead of _getThierry Vignaud2003-05-131-5/+5
* perl_checker fixesThierry Vignaud2003-04-301-7/+7
* Fix fatal error in editable window when adding a new entryFlorent Villard2003-03-151-5/+5
* - untabifyThierry Vignaud2003-03-041-92/+93
* - remove last warningThierry Vignaud2003-03-041-5/+4
* - fix #1776 (part one): make up and down button be usefull instead ofThierry Vignaud2003-03-041-13/+43
* - fix #1776 part two (do not insert dummy lines)Thierry Vignaud2003-03-041-20/+27
* remove unused $rows_cntThierry Vignaud2003-03-031-4/+0
* smoother gui: let main windows be unreachable until modal dialog is closedThierry Vignaud2003-03-031-0/+1
* fix bug reported by Cédric Thévenet (impossible to save newly edited rules)Thierry Vignaud2003-03-031-5/+9
* reflect in standalone drakxtools the removal of DrakX iconsGuillaume Cottenceau2003-02-281-1/+1
* make it fit in embedded mode, large enough elseThierry Vignaud2003-02-271-21/+15
* fix #1771Thierry Vignaud2003-02-241-11/+12
* level should not be editableThierry Vignaud2003-02-241-0/+1
* - (row_setting_data) inline itThierry Vignaud2003-02-181-12/+8
* o Gtk2Damien Chaumette2003-02-141-100/+78
* perl_checker fixesThierry Vignaud2003-02-121-2/+2
* smoother guiThierry Vignaud2003-02-111-0/+1
* - further ugtk2 cleanupsThierry Vignaud2003-02-111-47/+48
* phase 1 of drakperm clean up through ugtk2Thierry Vignaud2003-02-111-30/+21
* - gtk2 port of dialogs (poulpy)Thierry Vignaud2003-02-111-258/+257
* English proofreadingPablo Saratxaga2003-01-241-2/+2
* English proofreadingPablo Saratxaga2003-01-221-2/+2
* replace occurences of "$foo ? $foo : $bar" with "$foo || $bar"Pascal Rigaux2003-01-161-1/+1
* - basic gtk+-2 port (edition is not ready yet)Thierry Vignaud2002-12-181-82/+87
* one more fixThierry Vignaud2002-11-281-3/+3
* - "use strict" fixesThierry Vignaud2002-11-281-144/+130
* drakbug, drakfont, drakperm, draksplash, drakxtv, harddrake2,Thierry Vignaud2002-11-181-4/+0
* ensure "common" is imported to have N()Pascal Rigaux2002-11-101-3/+1
>) SIGNAL (SIGFPE, math_floating_point_exception); errno = sig; } #endif double SLmath_hypot (double x, double y) { double fr, fi, ratio; fr = fabs(x); fi = fabs(y); if (fr > fi) { ratio = y / x; x = fr * sqrt (1.0 + ratio * ratio); } else if (fi == 0.0) x = 0.0; else { ratio = x / y; x = fi * sqrt (1.0 + ratio * ratio); } return x; } /* usage here is a1 a2 ... an n x ==> a1x^n + a2 x ^(n - 1) + ... + an */ static double math_poly (void) { int n; double xn = 1.0, sum = 0.0; double an, x; if ((SLang_pop_double(&x, NULL, NULL)) || (SLang_pop_integer(&n))) return(0.0); while (n-- > 0) { if (SLang_pop_double(&an, NULL, NULL)) break; sum += an * xn; xn = xn * x; } return (double) sum; } static int double_math_op_result (int op, unsigned char a, unsigned char *b) { (void) op; if (a != SLANG_FLOAT_TYPE) *b = SLANG_DOUBLE_TYPE; else *b = a; return 1; } #ifdef HAVE_ASINH # define ASINH_FUN asinh #else # define ASINH_FUN my_asinh static double my_asinh (double x) { return log (x + sqrt (x*x + 1)); } #endif #ifdef HAVE_ACOSH # define ACOSH_FUN acosh #else # define ACOSH_FUN my_acosh static double my_acosh (double x) { return log (x + sqrt(x*x - 1)); /* x >= 1 */ } #endif #ifdef HAVE_ATANH # define ATANH_FUN atanh #else # define ATANH_FUN my_atanh static double my_atanh (double x) { return 0.5 * log ((1.0 + x)/(1.0 - x)); /* 0 <= x^2 < 1 */ } #endif static int double_math_op (int op, unsigned char type, VOID_STAR ap, unsigned int na, VOID_STAR bp) { double *a, *b; unsigned int i; double (*fun) (double); (void) type; a = (double *) ap; b = (double *) bp; switch (op) { default: return 0; case SLMATH_SINH: fun = sinh; break; case SLMATH_COSH: fun = cosh; break; case SLMATH_TANH: fun = tanh; break; case SLMATH_TAN: fun = tan; break; case SLMATH_ASIN: fun = asin; break; case SLMATH_ACOS: fun = acos; break; case SLMATH_ATAN: fun = atan; break; case SLMATH_EXP: fun = exp; break; case SLMATH_LOG: fun = log; break; case SLMATH_LOG10: fun = log10; break; case SLMATH_SQRT: fun = sqrt; break; case SLMATH_SIN: fun = sin; break; case SLMATH_COS: fun = cos; break; case SLMATH_ASINH: fun = ASINH_FUN; break; case SLMATH_ATANH: fun = ATANH_FUN; break; case SLMATH_ACOSH: fun = ACOSH_FUN; break; case SLMATH_CONJ: case SLMATH_REAL: for (i = 0; i < na; i++) b[i] = a[i]; return 1; case SLMATH_IMAG: for (i = 0; i < na; i++) b[i] = 0.0; return 1; } for (i = 0; i < na; i++) b[i] = (*fun) (a[i]); return 1; } static int float_math_op (int op, unsigned char type, VOID_STAR ap, unsigned int na, VOID_STAR bp) { float *a, *b; unsigned int i; double (*fun) (double); (void) type; a = (float *) ap; b = (float *) bp; switch (op) { default: return 0; case SLMATH_SINH: fun = sinh; break; case SLMATH_COSH: fun = cosh; break; case SLMATH_TANH: fun = tanh; break; case SLMATH_TAN: fun = tan; break; case SLMATH_ASIN: fun = asin; break; case SLMATH_ACOS: fun = acos; break; case SLMATH_ATAN: fun = atan; break; case SLMATH_EXP: fun = exp; break; case SLMATH_LOG: fun = log; break; case SLMATH_LOG10: fun = log10; break; case SLMATH_SQRT: fun = sqrt; break; case SLMATH_SIN: fun = sin; break; case SLMATH_COS: fun = cos; break; case SLMATH_ASINH: fun = ASINH_FUN; break; case SLMATH_ATANH: fun = ATANH_FUN; break; case SLMATH_ACOSH: fun = ACOSH_FUN; break; case SLMATH_CONJ: case SLMATH_REAL: for (i = 0; i < na; i++) b[i] = a[i]; return 1; case SLMATH_IMAG: for (i = 0; i < na; i++) b[i] = 0.0; return 1; } for (i = 0; i < na; i++) b[i] = (float) (*fun) ((double) a[i]); return 1; } static int generic_math_op (int op, unsigned char type, VOID_STAR ap, unsigned int na, VOID_STAR bp) { double *b; unsigned int i; SLang_To_Double_Fun_Type to_double; double (*fun) (double); unsigned int da; char *a; if (NULL == (to_double = SLarith_get_to_double_fun (type, &da))) return 0; b = (double *) bp; a = (char *) ap; switch (op) { default: return 0; case SLMATH_SINH: fun = sinh; break; case SLMATH_COSH: fun = cosh; break; case SLMATH_TANH: fun = tanh; break; case SLMATH_TAN: fun = tan; break; case SLMATH_ASIN: fun = asin; break; case SLMATH_ACOS: fun = acos; break; case SLMATH_ATAN: fun = atan; break; case SLMATH_EXP: fun = exp; break; case SLMATH_LOG: fun = log; break; case SLMATH_LOG10: fun = log10; break; case SLMATH_SQRT: fun = sqrt; break; case SLMATH_SIN: fun = sin; break; case SLMATH_COS: fun = cos; break; case SLMATH_ASINH: fun = ASINH_FUN; break; case SLMATH_ATANH: fun = ATANH_FUN; break; case SLMATH_ACOSH: fun = ACOSH_FUN; break; case SLMATH_CONJ: case SLMATH_REAL: for (i = 0; i < na; i++) { b[i] = to_double((VOID_STAR) a); a += da; } return 1; case SLMATH_IMAG: for (i = 0; i < na; i++) b[i] = 0.0; return 1; } for (i = 0; i < na; i++) { b[i] = (*fun) (to_double ((VOID_STAR) a)); a += da; } return 1; } #if SLANG_HAS_COMPLEX static int complex_math_op_result (int op, unsigned char a, unsigned char *b) { (void) a; switch (op) { default: *b = SLANG_COMPLEX_TYPE; break; case SLMATH_REAL: case SLMATH_IMAG: *b = SLANG_DOUBLE_TYPE; break; } return 1; } static int complex_math_op (int op, unsigned char type, VOID_STAR ap, unsigned int na, VOID_STAR bp) { double *a, *b; unsigned int i; unsigned int na2 = na * 2; double *(*fun) (double *, double *); (void) type; a = (double *) ap; b = (double *) bp; switch (op) { default: return 0; case SLMATH_REAL: for (i = 0; i < na; i++) b[i] = a[2 * i]; return 1; case SLMATH_IMAG: for (i = 0; i < na; i++) b[i] = a[2 * i + 1]; return 1; case SLMATH_CONJ: for (i = 0; i < na2; i += 2) { b[i] = a[i]; b[i+1] = -a[i+1]; } return 1; case SLMATH_ATANH: fun = SLcomplex_atanh; break; case SLMATH_ACOSH: fun = SLcomplex_acosh; break; case SLMATH_ASINH: fun = SLcomplex_asinh; break; case SLMATH_EXP: fun = SLcomplex_exp; break; case SLMATH_LOG: fun = SLcomplex_log; break; case SLMATH_LOG10: fun = SLcomplex_log10; break; case SLMATH_SQRT: fun = SLcomplex_sqrt; break; case SLMATH_SIN: fun = SLcomplex_sin; break; case SLMATH_COS: fun = SLcomplex_cos; break; case SLMATH_SINH: fun = SLcomplex_sinh; break; case SLMATH_COSH: fun = SLcomplex_cosh; break; case SLMATH_TANH: fun = SLcomplex_tanh; break; case SLMATH_TAN: fun = SLcomplex_tan; break; case SLMATH_ASIN: fun = SLcomplex_asin; break; case SLMATH_ACOS: fun = SLcomplex_acos; break; case SLMATH_ATAN: fun = SLcomplex_atan; break; } for (i = 0; i < na2; i += 2) (void) (*fun) (b + i, a + i); return 1; } #endif static SLang_DConstant_Type DConst_Table [] = { MAKE_DCONSTANT("E", 2.718281828459045), MAKE_DCONSTANT("PI", 3.14159265358979323846264338327950288), SLANG_END_DCONST_TABLE }; static SLang_Math_Unary_Type SLmath_Table [] = { MAKE_MATH_UNARY("sinh", SLMATH_SINH), MAKE_MATH_UNARY("asinh", SLMATH_ASINH), MAKE_MATH_UNARY("cosh", SLMATH_COSH), MAKE_MATH_UNARY("acosh", SLMATH_ACOSH), MAKE_MATH_UNARY("tanh", SLMATH_TANH), MAKE_MATH_UNARY("atanh", SLMATH_ATANH), MAKE_MATH_UNARY("sin", SLMATH_SIN), MAKE_MATH_UNARY("cos", SLMATH_COS), MAKE_MATH_UNARY("tan", SLMATH_TAN), MAKE_MATH_UNARY("atan", SLMATH_ATAN), MAKE_MATH_UNARY("acos", SLMATH_ACOS), MAKE_MATH_UNARY("asin", SLMATH_ASIN), MAKE_MATH_UNARY("exp", SLMATH_EXP), MAKE_MATH_UNARY("log", SLMATH_LOG), MAKE_MATH_UNARY("sqrt", SLMATH_SQRT), MAKE_MATH_UNARY("log10", SLMATH_LOG10), #if SLANG_HAS_COMPLEX MAKE_MATH_UNARY("Real", SLMATH_REAL), MAKE_MATH_UNARY("Imag", SLMATH_IMAG), MAKE_MATH_UNARY("Conj", SLMATH_CONJ), #endif SLANG_END_MATH_UNARY_TABLE }; static SLang_Intrin_Fun_Type SLang_Math_Table [] = { MAKE_INTRINSIC_0("polynom", math_poly, SLANG_DOUBLE_TYPE), SLANG_END_INTRIN_FUN_TABLE }; int SLang_init_slmath (void) { unsigned char *int_types; #if defined(__unix__) (void) SIGNAL (SIGFPE, math_floating_point_exception); #endif int_types = _SLarith_Arith_Types; while (*int_types != SLANG_FLOAT_TYPE) { if (-1 == SLclass_add_math_op (*int_types, generic_math_op, double_math_op_result)) return -1; int_types++; } if ((-1 == SLclass_add_math_op (SLANG_FLOAT_TYPE, float_math_op, double_math_op_result)) || (-1 == SLclass_add_math_op (SLANG_DOUBLE_TYPE, double_math_op, double_math_op_result)) #if SLANG_HAS_COMPLEX || (-1 == SLclass_add_math_op (SLANG_COMPLEX_TYPE, complex_math_op, complex_math_op_result)) #endif ) return -1; if ((-1 == SLadd_math_unary_table (SLmath_Table, "__SLMATH__")) || (-1 == SLadd_intrin_fun_table (SLang_Math_Table, NULL)) || (-1 == SLadd_dconstant_table (DConst_Table, NULL))) return -1; return 0; }