static gboolean unserialize (QCADDesignObject *obj, FILE *fp) { char *pszLine = NULL, *pszValue = NULL ; gboolean bStopReading = FALSE, bParentInit = FALSE ; if (!SkipPast (fp, '\0', "[TYPE:" QCAD_TYPE_STRING_RULER "]", NULL)) return FALSE ; while (TRUE) { if (NULL == (pszLine = ReadLine (fp, '\0', TRUE))) break ; if (!strcmp (pszLine, "[#TYPE:" QCAD_TYPE_STRING_RULER "]")) { g_free (pszLine) ; break ; } if (!bStopReading) { tokenize_line (pszLine, strlen (pszLine), &pszValue, '=') ; if (!strncmp (pszLine, "[TYPE:", 6)) { if (!(bParentInit = QCAD_DESIGN_OBJECT_CLASS (g_type_class_peek (g_type_parent (QCAD_TYPE_STRETCHY_OBJECT)))->unserialize (obj, fp))) bStopReading = TRUE ; } } g_free (pszLine) ; g_free (ReadLine (fp, '\0', FALSE)) ; } return bParentInit ; }
static gboolean unserialize (QCADDesignObject *obj, FILE *fp) { QCADClockingLayer *clocking_layer = QCAD_CLOCKING_LAYER (obj) ; char *pszLine = NULL, *pszValue = NULL ; gboolean bStopReading = FALSE, bParentInit = FALSE ; if (!SkipPast (fp, '\0', "[TYPE:" QCAD_TYPE_STRING_CLOCKING_LAYER "]", NULL)) return FALSE ; while (TRUE) { if (NULL == (pszLine = ReadLine (fp, '\0', TRUE))) break ; if (!strcmp ("[#TYPE:" QCAD_TYPE_STRING_CLOCKING_LAYER "]", pszLine)) { g_free (pszLine) ; break ; } if (!bStopReading) { tokenize_line (pszLine, strlen (pszLine), &pszValue, '=') ; if (!strncmp (pszLine, "[TYPE:", 6)) { tokenize_line_type (pszLine, strlen (pszLine), &pszValue, ':') ; if (!strcmp (pszValue, QCAD_TYPE_STRING_LAYER)) { if (!(bParentInit = QCAD_DESIGN_OBJECT_CLASS (g_type_class_peek (g_type_parent (QCAD_TYPE_CLOCKING_LAYER)))->unserialize (obj, fp))) bStopReading = TRUE ; } } else if (!strcmp (pszLine, "bDrawPotential")) clocking_layer->bDrawPotential = strcmp (pszValue, "TRUE") ? FALSE : TRUE ; else if (!strcmp (pszLine, "z_to_draw")) clocking_layer->z_to_draw = g_ascii_strtod (pszValue, NULL) ; else if (!strcmp (pszLine, "tile_size")) clocking_layer->tile_size = atoi (pszValue) ; else if (!strcmp (pszLine, "time_coord")) clocking_layer->time_coord = g_ascii_strtod (pszValue, NULL) ; } g_free (pszLine) ; g_free (ReadLine (fp, '\0', FALSE)) ; } return (bParentInit && !bStopReading) ; }
static gboolean unserialize (QCADDesignObject *obj, FILE *fp) { QCADRectangleElectrode *rc_electrode = QCAD_RECTANGLE_ELECTRODE (obj) ; char *pszLine = NULL, *pszValue = NULL ; gboolean bStopReading = FALSE, bParentInit = FALSE ; if (!SkipPast (fp, '\0', "[TYPE:" QCAD_TYPE_STRING_RECTANGLE_ELECTRODE "]", NULL)) return FALSE ; while (TRUE) { if (NULL == (pszLine = ReadLine (fp, '\0', TRUE))) break ; if (!strcmp ("[#TYPE:" QCAD_TYPE_STRING_RECTANGLE_ELECTRODE "]", pszLine)) { g_free (pszLine) ; break ; } if (!bStopReading) { tokenize_line (pszLine, strlen (pszLine), &pszValue, '=') ; if (!strncmp (pszLine, "[TYPE:", 6)) { tokenize_line_type (pszLine, strlen (pszLine), &pszValue, ':') ; if (!strcmp (pszValue, QCAD_TYPE_STRING_ELECTRODE)) { if (!(bParentInit = QCAD_DESIGN_OBJECT_CLASS (g_type_class_peek (g_type_parent (QCAD_TYPE_RECTANGLE_ELECTRODE)))->unserialize (obj, fp))) bStopReading = TRUE ; } } else if (!strcmp (pszLine, "angle")) rc_electrode->angle = g_ascii_strtod (pszValue, NULL) ; else if (!strcmp (pszLine, "n_x_divisions")) rc_electrode->n_x_divisions = atoi (pszValue) ; else if (!strcmp (pszLine, "n_y_divisions")) rc_electrode->n_y_divisions = atoi (pszValue) ; else if (!strcmp (pszLine, "cxWorld")) rc_electrode->cxWorld = g_ascii_strtod (pszValue, NULL) ; else if (!strcmp (pszLine, "cyWorld")) rc_electrode->cyWorld = g_ascii_strtod (pszValue, NULL) ; } g_free (pszLine) ; g_free (ReadLine (fp, '\0', FALSE)) ; } if (bParentInit && !bStopReading) { if (QCAD_DESIGN_OBJECT_CLASS (QCAD_RECTANGLE_ELECTRODE_GET_CLASS (rc_electrode))->unserialize == unserialize) QCAD_ELECTRODE_GET_CLASS (rc_electrode)->precompute (QCAD_ELECTRODE (rc_electrode)) ; return TRUE ; } else return FALSE ; }
/*#ifdef STDIO_FILEIO*/ static gboolean unserialize (QCADDesignObject *obj, FILE *pfile) { char *pszLine = NULL, *pszValue = NULL ; QCADLayer *layer = NULL ; /* int iShowProgress = -1 ;*/ layer = QCAD_LAYER (obj) ; /*#ifdef ALLOW_UNSERIALIZE_OVERLAP*/ /* layer->bAllowOverlap = TRUE ;*/ //#endif def ALLOW_UNSERIALIZE_OVERLAP if (!SkipPast (pfile, '\0', "[TYPE:" QCAD_TYPE_STRING_LAYER "]", NULL)) return FALSE ; while (TRUE) { //peek the next line if (NULL == (pszLine = ReadLine (pfile, '\0', TRUE))) break ; if (!strcmp (pszLine, "[#TYPE:" QCAD_TYPE_STRING_LAYER "]")) { g_free (pszLine) ; break ; } tokenize_line (pszLine, strlen (pszLine), &pszValue, '=') ; if (!strcmp (pszLine, "type")) { layer->type = atoi (pszValue) ; if (NULL != layer->default_properties) qcad_layer_free_default_properties (layer->default_properties) ; layer->default_properties = qcad_layer_create_default_properties (layer->type) ; } /* else*/ /* if (!strcmp (pszLine, "status"))*/ /* layer->status = atoi (pszValue) ;*/ if (!strcmp (pszLine, "pszDescription")) { if (NULL != layer->pszDescription) g_free (layer->pszDescription) ; layer->pszDescription = g_strdup_printf ("%s", pszValue) ; } else if (!strncmp (pszLine, "[TYPE:", 6)) { if (NULL != (obj = qcad_design_object_new_from_stream (pfile))) { qcad_layer_do_container_add (QCAD_DO_CONTAINER (layer), obj) ; /* DBG_REFS (fprintf (stderr, "QCADLayer::unserialize:After adding object 0x%08X to layer 0x%08X, unref-ing object\n", (int)obj, (int)layer)) ;*/ g_object_unref (G_OBJECT (obj)) ; /* if (!(iShowProgress = (iShowProgress + 1) % 1000))*/ /* set_progress_bar_fraction (get_file_percent (pfile)) ;*/ } } g_free (pszLine) ; //having peeked the line, consume it g_free (ReadLine (pfile, '\0', FALSE)) ; } /*#ifdef ALLOW_UNSERIALIZE_OVERLAP*/ /* layer->bAllowOverlap = FALSE ;*/ //#endif /* def ALLOW_UNSERIALIZE_OVERLAP */ return (layer->type >= 0 && layer->type < LAYER_TYPE_LAST_TYPE /*&& layer->status >= 0 && layer->status < LAYER_STATUS_LAST_STATUS*/) ; }