File: scimem.c

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (100 lines) | stat: -rw-r--r-- 1,734 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/* Copyright INRIA */
#include <string.h>

#ifdef __STDC__
#include <stdlib.h>
#else
#include <malloc.h>
#endif

#include "../machine.h"

#if defined(netbsd)
#include <ieeefp.h>
#endif

#if defined(freebsd)
#include <floatingpoint.h>
#endif

#if defined(netbsd) || defined(freebsd)
void C2F(nofpex)()
{
  fpsetmask(0);   /* Don't dump core on FPE return Inf or NaN */
}
#else
void C2F(nofpex)()
{
  return;
}
#endif

char *the_p=NULL;
char *the_ps=NULL;
char *the_gp=NULL;
char *the_gps=NULL;

/* static  char *the_p,*the_ps;*/

extern struct {
  double stk_1[2];
} C2F(stack);

integer C2F(scimem)(n,ptr)
     integer *n, *ptr;
{
  char *p1;
  if (*n > 0){
    /* add 1 for alignment problems */
    p1 = (char *) malloc((unsigned)sizeof(double) * (*n + 1));
    if (p1 != NULL) {
      the_ps = the_p;
      the_p = p1;
      /* add 1 for alignment problems */
      *ptr = ((int) (the_p - (char *)C2F(stack).stk_1))/sizeof(double) + 1;
    }
    else 
      {
	if (the_p == NULL) {
	  sciprint("No space to allocate Scilab stack\r\n");
	  exit(1); 
	}
	*ptr=0;
      }
  }
  return(0);
}
integer C2F(scigmem)(n,ptr)
     integer *n, *ptr;
{
  char *p1;
  if (*n > 0){
    /* add 1 for alignment problems */
    p1 = (char *) malloc((unsigned)sizeof(double) * (*n + 1));
    if (p1 != NULL) {
      the_gps = the_gp;
      the_gp = p1;
      /* add 1 for alignment problems */
      *ptr = ((int) (the_gp - (char *)C2F(stack).stk_1))/sizeof(double) + 1;
    }
    else 
      {
	if (the_gp == NULL) {
	  sciprint("No space to allocate Scilab stack\r\n");
	  exit(1); 
	}
	*ptr=0;
      }
  }
  return(0);
}
void C2F(freegmem)()
{
  if (the_gps != NULL) free(the_gps);
}

void C2F(freemem)()
{
  if (the_ps != NULL) free(the_ps);
}