/***********************************************************************/ /* Open Visualization Data Explorer */ /* (C) Copyright IBM Corp. 1989,1999 */ /* ALL RIGHTS RESERVED */ /* This code licensed under the */ /* "IBM PUBLIC LICENSE - Open Visualization Data Explorer" */ /***********************************************************************/ #include #include #include "utils.h" #if 0 char *strsaven (char *old, int n) { char *new; new = DXAllocate (n + 1); if (new) { memcpy (new, old, n); new[n] = NULL; } return (new); } #endif #if 0 char *lstrsaven (char *old, int n) { char *new; new = DXAllocateLocal (n + 1); if (new) { memcpy (new, old, n); new[n] = NULL; } return (new); } #endif char *_dxf_ExStrSave (char *old) { char *new; int n; n = strlen (old); new = DXAllocate (n + 1); if (new) { memcpy (new, old, n); new[n] = NULL; } return (new); } #if 0 char *lstrsave (char *old) { char *new; int n; n = strlen (old); new = DXAllocateLocal (n + 1); if (new) { memcpy (new, old, n); new[n] = NULL; } return (new); } #endif /* * Adjusts a pointer value such that it falls on an n byte aligned boundary. * * WARNING: Only works if n is a power of 2. */ Pointer _dxf_ExAlignBoundary (int n, Pointer p) { int mask; if (n == 0 || n == 1) return (p); mask = n - 1; return ((mask & (int) p) ? (Pointer) (((int) p + (int) n) & ~mask) : p); } char *_dxf_ExCopyStringN (char *old, int len) { char *new; if (old == NULL) return (NULL); new = (char *) DXAllocate (len + 1); if (! new) { DXResetError (); return (NULL); } strncpy (new, old, len); new[len] = '\0'; return (new); } char *_dxf_ExCopyString (char *old) { char *new; if (old == NULL) return (NULL); new = (char *) DXAllocate (strlen (old) + 1); if (! new) { DXResetError (); return (NULL); } strcpy (new, old); return (new); } char *_dxf_ExCopyStringLocal (char *old) { char *new; int size; size = strlen (old) + 1; new = (char *) DXAllocateLocal (size); if (! new) { DXResetError (); return (NULL); } strcpy (new, old); return (new); } int _dxf_ExNextPowerOf2 (int n) { int i; int v; for (i = 0, v = 1; i < 31; i++, v <<= 1) if (v >= n) return (v); } Array _dxfExNewInteger (int n) { return DXAddArrayData (DXNewArray (TYPE_INT, CATEGORY_REAL, 0), 0, 1, (Pointer) &n); }