home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / kaffe-0.5p4-src.tgz / tar.out / contrib / kaffe / lib / native / java.lang / Float.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  2KB  |  77 lines

  1. /*
  2.  * java.lang.Float.c
  3.  *
  4.  * Copyright (c) 1996 Systems Architecture Research Centre,
  5.  *           City University, London, UK.
  6.  *
  7.  * See the file "license.terms" for information on usage and redistribution
  8.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  9.  *
  10.  * Written by Tim Wilkinson <tim@sarc.city.ac.uk>, February 1996.
  11.  */
  12.  
  13. #include "config.h"
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <string.h>
  17. #include <native.h>
  18. #include "defs.h"
  19. #include "java.lang.stubs/Float.h"
  20.  
  21. /*
  22.  * Convert float into a string.
  23.  */
  24. struct Hjava_lang_String*
  25. java_lang_Float_toString(struct Hjava_lang_Float* none, jfloat val)
  26. {
  27.     char str[MAXNUMLEN];
  28.  
  29.     sprintf(str, "%g", val);
  30.     return (makeJavaString(str, strlen(str)));
  31. }
  32.  
  33. /*
  34.  * Convert string to float object.
  35.  */
  36. struct Hjava_lang_Float*
  37. java_lang_Float_valueOf(struct Hjava_lang_Float* none, struct Hjava_lang_String* str)
  38. {
  39.     struct Hjava_lang_Float* obj;
  40.     char buf[MAXNUMLEN];
  41.     char* endbuf;
  42.  
  43.     javaString2CString(str, buf, sizeof(buf));
  44.  
  45.     obj = (struct Hjava_lang_Float*)execute_java_constructor(0, "java.lang.Float", 0, "()V");
  46.  
  47. #if defined(HAVE_STRTOD)
  48.     unhand(obj)->value = strtod(buf, &endbuf);
  49.     if (*endbuf != 0) {
  50.         SignalError(0, "java.lang.NumberFormatException", "Bad float format");
  51.     }
  52. #else
  53.     /* Fall back on old atof - no error checking */
  54.     unhand(obj)->value = atof(buf);
  55. #endif
  56.  
  57.     return (obj);
  58. }
  59.  
  60. /*
  61.  * Convert float to bits.
  62.  */
  63. jint
  64. java_lang_Float_floatToIntBits(struct Hjava_lang_Float* none, jfloat val)
  65. {
  66.     return (*(jint*)&val);
  67. }
  68.  
  69. /*
  70.  * Convert bits to float.
  71.  */
  72. float
  73. java_lang_Float_intBitsToFloat(struct Hjava_lang_Float* none, jint val)
  74. {
  75.     return (*(jfloat*)&val);
  76. }
  77.