NEURON
macprt.cpp
Go to the documentation of this file.
1 
2 #include <stdio.h>
3 #include <stdarg.h>
4 #include <stdlib.h>
5 #include <string.h>
6 #include <errno.h>
7 #include "hoc.h"
8 
9 #include "gui-redirect.h"
10 
11 
12 extern Object** (*nrnpy_gui_helper_)(const char* name, Object* obj);
13 extern double (*nrnpy_object_to_double_)(Object*);
14 
15 extern void debugfile(const char*, ...);
16 extern int oc_print_from_dll(char*);
17 extern void single_event_run();
18 
19 extern char* neuron_home;
20 
21 int oc_print_from_dll(char* buf) { /* interchange \n and \r !*/
22  char* cp;
23  for (cp = buf; *cp != '\0'; ++cp) { /* safe because buf is already a temp buffer */
24  if (*cp == '\n') {
25  *cp = '\r';
26  } else if (*cp == '\r') {
27  *cp = '\n';
28  }
29  }
30  return printf("%s", buf);
31 }
32 
33 /* jijun 4/22/97, 4/23/97 */
34 extern void setneuronhome(const char* p) {
35  CInfoPBRec myPB;
36  short vRefNum;
37  long dirID;
38  Str255 dirName;
39  char prePath[256];
40  static char fullPath[256];
41 
42  OSErr err = HGetVol((0), &vRefNum, &dirID);
43  if (err == noErr) {
44  myPB.dirInfo.ioNamePtr = dirName;
45  myPB.dirInfo.ioVRefNum = vRefNum;
46  myPB.dirInfo.ioDrParID = dirID;
47  myPB.dirInfo.ioFDirIndex = -1;
48  do {
49  myPB.dirInfo.ioDrDirID = myPB.dirInfo.ioDrParID;
50  err = PBGetCatInfoSync(&myPB);
51  if (err == noErr) {
52  dirName[dirName[0] + 1] = '\0';
53  strcpy(prePath, &dirName[1]);
54  strcat(prePath, ":");
55  strcat(prePath, fullPath);
56  strcpy(fullPath, prePath);
57  }
58  } while (myPB.dirInfo.ioDrDirID > 2);
59  }
60 
61  neuron_home = fullPath;
62  // get rid of last ':'
63  neuron_home[strlen(neuron_home) - 1] = '\0';
64  // debugfile("neuron_home = %s\n", neuron_home);
65 }
66 
67 char* getenv(const char* s) {
68  static char buf[200];
69  if (strcmp(s, "NEURONHOME") == 0) {
70  return neuron_home;
71  }
72  if (strcmp(s, "NRNDEMO") == 0) {
73  strcpy(buf, neuron_home);
74  strcat(buf, ":demo:");
75  return buf;
76  }
77  printf("getenv: don't know |%s|\n", s);
78  return 0;
79 }
80 
81 int hoc_copyfile(const char* src, const char* dest) {
82  return 0;
83 }
84 
85 void hoc_check_intupt(int intupt) {
86 #if 1
87  extern void set_intset();
88  EventRecord e;
89  if (EventAvail(keyDownMask, &e)) {
90  // debugfile("%d\n", e.what);
91  if (e.what == keyDown) {
92  char c = e.message & charCodeMask;
93  if (c == 0x03) {
94  set_intset();
95  }
96  }
97  // single_event_run();
98  }
99 #endif
100 }
101 
102 FILE* popen(char* s1, char* s2) {
103  printf("no popen\n");
104  return 0;
105 }
106 
107 pclose(FILE* p) {
108  printf("no pclose\n");
109 }
110 
112 
114 
115 void plprint(const char* s) {
116  printf("%s", s);
117 }
119 /*
120 int getpid() {
121  return 1;
122 }
123 */
126  TRY_GUI_REDIRECT_DOUBLE("graphmode", NULL);
127  ret();
128  pushx(0.);
129 }
131  TRY_GUI_REDIRECT_DOUBLE("graph", NULL);
132  ret();
133  pushx(0.);
134 }
136  TRY_GUI_REDIRECT_DOUBLE("regraph", NULL);
137  ret();
138  pushx(0.);
139 }
141  TRY_GUI_REDIRECT_DOUBLE("plotx", NULL);
142  ret();
143  pushx(0.);
144 }
146  TRY_GUI_REDIRECT_DOUBLE("ploty", NULL);
147  ret();
148  pushx(0.);
149 }
152  ret();
153  pushx(0.);
154 }
156  TRY_GUI_REDIRECT_DOUBLE("setcolor", NULL);
157  ret();
158  pushx(0.);
159 }
161  ret();
162  pushx(0.);
163 }
165  TRY_GUI_REDIRECT_DOUBLE("settext", NULL);
166  ret();
167  pushx(0.);
168 }
170  TRY_GUI_REDIRECT_DOUBLE("plot", NULL);
171  ret();
172  pushx(0.);
173 }
175  TRY_GUI_REDIRECT_DOUBLE("axis", NULL);
176  ret();
177  pushx(0.);
178 }
179 
180 
181 // int gethostname() {printf("no gethostname\n");}
182 
183 
184 plt(int mode, double x, double y) {}
186 
187 
void pushx(double d)
Definition: code.cpp:658
#define c
char buf[512]
Definition: init.cpp:13
hoc_close_plot()
Definition: macprt.cpp:124
hoc_menu_cleanup()
Definition: macprt.cpp:185
initplot()
Definition: macprt.cpp:188
#define TRY_GUI_REDIRECT_DOUBLE(name, obj)
Definition: gui-redirect.h:58
hoc_Graph()
Definition: macprt.cpp:130
hoc_settext()
Definition: macprt.cpp:164
hoc_ploty()
Definition: macprt.cpp:145
plt(int mode, double x, double y)
Definition: macprt.cpp:184
void single_event_run()
double(* nrnpy_object_to_double_)(Object *)
Definition: xmenu.cpp:14
pclose(FILE *p)
Definition: macprt.cpp:107
int hoc_plttext
Definition: macprt.cpp:118
void plprint(const char *s)
Definition: macprt.cpp:115
void setneuronhome(const char *p)
Definition: macprt.cpp:34
hoc_Graphmode()
Definition: macprt.cpp:125
void debugfile(const char *,...)
hoc_Setcolor()
Definition: macprt.cpp:155
void hoc_check_intupt(int intupt)
Definition: macprt.cpp:85
hoc_Lw()
Definition: macprt.cpp:160
hoc_Plt()
Definition: macprt.cpp:150
hoc_axis()
Definition: macprt.cpp:174
int oc_print_from_dll(char *)
Definition: macprt.cpp:21
char * getenv(const char *s)
Definition: macprt.cpp:67
FILE * popen(char *s1, char *s2)
Definition: macprt.cpp:102
hoc_Plot()
Definition: macprt.cpp:169
hoc_win_normal_cursor()
Definition: macprt.cpp:111
char * neuron_home
Definition: hoc_init.cpp:404
int hoc_copyfile(const char *src, const char *dest)
Definition: macprt.cpp:81
hoc_plotx()
Definition: macprt.cpp:140
hoc_win_wait_cursor()
Definition: macprt.cpp:113
hoc_regraph()
Definition: macprt.cpp:135
char * name
Definition: init.cpp:16
#define printf
Definition: mwprefix.h:26
size_t p
#define e
Definition: passive0.cpp:22
#define ret
Definition: redef.h:123
#define NULL
Definition: sptree.h:16
Definition: hocdec.h:227