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

SCM Repository

[diderot] Diff of /branches/pure-cfg/src/compiler/c-target/print-as-c.sml
ViewVC logotype

Diff of /branches/pure-cfg/src/compiler/c-target/print-as-c.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 528, Sun Feb 13 03:05:35 2011 UTC revision 544, Wed Feb 16 23:14:14 2011 UTC
# Line 94  Line 94 
94                          str ")"));                          str ")"));
95                        PP.newline strm;                        PP.newline strm;
96                        ppBlock (case body of CL.S_Block stms => stms | stm => [stm]))                        ppBlock (case body of CL.S_Block stms => stms | stm => [stm]))
97                      | CL.D_StructDef(fields, tyName) => (
98                          str "typedef struct {";
99                          PP.openVBox strm indent;
100                            List.app (fn (ty, x) => (
101                                PP.newline strm;
102                                inHBox (fn () => (ppTy(ty, SOME x); str ";"))))
103                              fields;
104                          PP.closeBox strm;
105                          PP.newline strm;
106                          inHBox (fn () => (str "}"; sp(); str tyName; str ";"));
107                          PP.newline strm)
108                  (* end case *))                  (* end case *))
109            and ppParam (CL.PARAM(attr, ty, x)) = (            and ppParam (CL.PARAM(attrs, ty, x)) = (
110                  str attr; sp(); ppTy(ty, SOME(CL.varToString x)))                  ppList {pp=str, sep=sp, l = attrs};
111                    if List.null attrs then () else sp();
112                    ppTy(ty, SOME(CL.varToString x)))
113            and ppBlock stms =  (            and ppBlock stms =  (
114                  str "{";                  str "{";
115                  PP.openVBox strm indent;                  PP.openVBox strm indent;
# Line 148  Line 161 
161                    | CL.E_Int(n, CL.T_Num(RawTypes.RT_Int64)) =>                    | CL.E_Int(n, CL.T_Num(RawTypes.RT_Int64)) =>
162                        str(IntegerLit.toString n ^ "l")                        str(IntegerLit.toString n ^ "l")
163                    | CL.E_Int(n, _) => str(IntegerLit.toString n)                    | CL.E_Int(n, _) => str(IntegerLit.toString n)
164                    | CL.E_Flt(f, CL.T_Num(RawTypes.RT_Float)) =>                    | CL.E_Flt(f, ty) => let
165                        str(FloatLit.toString f ^ "f")                        val isDouble = (case ty
166                    | CL.E_Flt(f, _) => str(FloatLit.toString f)                               of CL.T_Num(RawTypes.RT_Float) => false
167                                  | _ => true
168                                (* end case *))
169                          val f = if FloatLit.same(FloatLit.negInf, f)
170                                  then if isDouble
171                                    then "(-HUGE_VAL)"
172                                    else "(-HUGE_VALF)"
173                                else if FloatLit.same(FloatLit.posInf, f)
174                                  then if isDouble
175                                    then "HUGE_VAL"
176                                    else "HUGE_VALF"
177                                else if isDouble
178                                  then FloatLit.toString f
179                                  else FloatLit.toString f ^ "f"
180                          in
181                            str f
182                          end
183                    | CL.E_Bool b => str(Bool.toString b)                    | CL.E_Bool b => str(Bool.toString b)
184                    | CL.E_Str s => str(concat["\"", String.toCString s, "\""])                    | CL.E_Str s => str(concat["\"", String.toCString s, "\""])
185                  (* end case *))                  (* end case *))

Legend:
Removed from v.528  
changed lines
  Added in v.544

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