📄 record.cc
字号:
/* * record.cc * Copyright (C) 1997 Norio Katayama * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA * * 03/28/96 katayama@rd.nacsis.ac.jp * $Id: record.cc,v 1.4 1997/06/02 09:35:51 katayama Exp $ */#include <math.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/time.h>#include <sys/resource.h>#include "config.h"#include "record.hh"#ifdef HAVE_NAN_H#include <nan.h>#endifvoidgetRecord(const char *line, int dimension, RecordPoint *point_return, RecordData *data_return){ const char *head, *tail; char buffer[BUFFER_SIZE]; int i, length; RecordPoint &point = *point_return; /* initialize record data */ memset(data_return, 0, sizeof(RecordData)); head = line; /* fname */ if((tail = strchr(head, ':')) == NULL) { fprintf(stderr, "`:' is expected.\n"); exit(1); } length = tail - head; strncpy(data_return->fname, head, length); data_return->fname[length] = 0; head = tail + 1; /* point */ point.dimension = dimension; for(i=0; i<dimension; i++) { if((tail = strchr(head, ':')) == NULL) { fprintf(stderr, "`:' is expected.\n"); exit(1); } length = tail - head; strncpy(buffer, head, length); buffer[length] = 0; point.coords[i] = atof(buffer); head = tail + 1; } /* data */ strcpy(data_return->data, head);}HnBoolincludesNANorINF(const RecordPoint &point){ int i; for(i=0; i<point.dimension; i++) {#ifdef IsNANorINF if(IsNANorINF(point.coords[i]))#else if(!finite(point.coords[i]))#endif return HnTRUE; } return HnFALSE;}const char *pointToString(const RecordPoint &point){ static char buffer[BUFFER_SIZE]; int i; char *bp; bp = buffer; sprintf(bp, "[ "); bp += strlen(bp); for(i=0; i<point.dimension; i++) { if(i != 0) { sprintf(bp, ", "); bp += strlen(bp); } sprintf(bp, "%g", point.coords[i]); bp += strlen(bp); } sprintf(bp, " ]"); bp += strlen(bp); return buffer;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -