Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /branches/pure-cfg/src/lib/common/input.c
ViewVC logotype

Annotation of /branches/pure-cfg/src/lib/common/input.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1231 - (view) (download) (as text)

1 : jhr 1231 /*! \file input.c
2 :     *
3 :     * \author John Reppy
4 :     */
5 :    
6 :     /*
7 :     * COPYRIGHT (c) 2011 The Diderot Project (http://diderot-language.cs.uchicago.edu)
8 :     * All rights reserved.
9 :     */
10 :     #include "Diderot/diderot.h"
11 :     #include <teem/hest.h>
12 :    
13 :     /* FIXME: eventally we should change the naming conventions in the header files to be generic */
14 :     #if defined(DIDEROT_SINGLE_PRECISION)
15 :     #define vec2(a,b) vec2f(a,b)
16 :     #define vec3(a,b,c) vec3f(a,b,c)
17 :     #else
18 :     #define vec2(a,b) vec2d(a,b)
19 :     #define vec3(a,b,c) vec3d(a,b,c)
20 :     #endif
21 :    
22 :     Status_t Diderot_InputString (const char *name, const char **v, bool hasDflt)
23 :     {
24 :     return DIDEROT_FAIL;
25 :     }
26 :    
27 :     Status_t Diderot_InputReal (const char *name, Diderot_real_t *v, bool hasDflt)
28 :     {
29 :     char buf[256];
30 :     double f;
31 :    
32 :     while (true) {
33 :     if (hasDflt)
34 :     printf("Enter value for %s (default %lf): ", name, (double)*v);
35 :     else
36 :     printf("Enter value for %s: ", name);
37 :     fflush (stdout);
38 :    
39 :     char *p = fgets(buf, sizeof(buf), stdin);
40 :     if (p == NULL)
41 :     return DIDEROT_FAIL; // EOF
42 :     int n = sscanf(buf, "%lf\n", &f);
43 :     if (n == 1) {
44 :     *v = (Diderot_real_t)f;
45 :     return DIDEROT_OK;;
46 :     }
47 :     else if (hasDflt)
48 :     return DIDEROT_OK;;
49 :     }
50 :    
51 :     }
52 :    
53 :     Status_t Diderot_InputVec2 (const char *name, Diderot_vec2_t *v, bool hasDflt)
54 :     {
55 :     char buf[256];
56 :     double f1, f2;
57 :    
58 :     while (true) {
59 :     if (hasDflt) {
60 :     Diderot_union2_t u;
61 :     u.v = *v;
62 :     printf("Enter value for %s (default %f %f): ",
63 :     name, (double)(u.r[0]), (double)(u.r[1]));
64 :     }
65 :     else
66 :     printf("Enter value for %s: ", name);
67 :     fflush (stdout);
68 :    
69 :     char *p = fgets(buf, sizeof(buf), stdin);
70 :     if (p == NULL)
71 :     return DIDEROT_FAIL; // EOF
72 :     int n = sscanf(buf, "%lf %lf\n", &f1, &f2);
73 :     if (n == 2) {
74 :     *v = vec2((Diderot_real_t)f1, (Diderot_real_t)f2);
75 :     return DIDEROT_OK;;
76 :     }
77 :     else if (hasDflt)
78 :     return DIDEROT_OK;;
79 :     }
80 :    
81 :     }
82 :    
83 :     Status_t Diderot_InputVec3 (const char *name, Diderot_vec3_t *v, bool hasDflt)
84 :     {
85 :     char buf[256];
86 :     double f1, f2, f3;
87 :    
88 :     while (true) {
89 :     if (hasDflt) {
90 :     Diderot_union3_t u;
91 :     u.v = *v;
92 :     printf("Enter value for %s (default %f %f %f): ",
93 :     name, (double)(u.r[0]), (double)(u.r[1]), (double)(u.r[2]));
94 :     }
95 :     else
96 :     printf("Enter value for %s: ", name);
97 :     fflush (stdout);
98 :    
99 :     char *p = fgets(buf, sizeof(buf), stdin);
100 :     if (p == NULL)
101 :     return DIDEROT_FAIL; // EOF
102 :     int n = sscanf(buf, "%lf %lf %lf\n", &f1, &f2, &f3);
103 :     if (n == 3) {
104 :     *v = vec3((Diderot_real_t)f1, (Diderot_real_t)f2, (Diderot_real_t)f3);
105 :     return DIDEROT_OK;;
106 :     }
107 :     else if (hasDflt)
108 :     return DIDEROT_OK;;
109 :     }
110 :    
111 :     }

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0