source: Sophya/trunk/SophyaLib/SUtils/utils.cc@ 2327

Last change on this file since 2327 was 895, checked in by ansari, 25 years ago

Documentation de fichiers - Reza 12/4/2000

File size: 2.1 KB
Line 
1// This may look like C code, but it is really -*- C++ -*-
2//
3// $Id: utils.cc,v 1.1 2000-04-12 17:49:52 ansari Exp $
4//
5
6#include "machdefs.h"
7#include "utils.h"
8#include "pexceptions.h"
9#include <string.h>
10
11// MemCpy marche meme en cas de recouvrement.
12void* MemCpy(void* dest, const void* source, size_t n)
13{
14 int i; // THINK C ne veut pas du int i dans chaque for...
15 if (dest < source)
16 for (i=0; i<n; i++)
17 ((char*)dest)[i] = ((char*)source)[i];
18 else
19 for (i=n-1; i>=0; i--)
20 ((char*)dest)[i] = ((char*)source)[i];
21
22 return dest;
23}
24
25// Dans parmst.cc
26//int PrtLevel = 0;
27//int DebugLevel = 0;
28
29char const* PeidaWorkPath()
30{
31 char const* envWP = getenv("PEIDAWORKPATH");
32 if (envWP) return envWP;
33 #ifdef __mac__
34 return "WORK";
35 #endif
36 return ".";
37}
38
39#ifndef __mac__
40void buildPath(char* dst, const char* dir, const char* file)
41{
42 strcpy(dst, dir);
43 char *p = dst; while (*p) p++; p--;
44 if (*dir && *p != '/') strcat(dst, "/");
45 strcat(dst, file);
46}
47
48void buildPath(string& dst, const string& dir, const string& file)
49{
50 dst = dir;
51 if (dir != "" && dir[dir.length()-1] != '/') dst += "/";
52 dst += file;
53}
54
55#else
56void buildPath(char* dst, const char* dir, const char* file)
57{
58 if (*dir) {
59 strcpy(dst, ":");
60 strcat(dst, dir);
61 char *p = dst; while (*p) p++; p--;
62 strcat(dst, ":");
63 strcat(dst, file);
64 } else
65 strcpy(dst, file);
66}
67
68void buildPath(string& dst, const string& dir, const string& file)
69{
70 if (dir != "") {
71 dst = ":" + dir + ":" + file;
72 } else
73 dst = file;
74}
75
76#endif
77
78
79void changeSuffix(char* file, const char* suffix)
80{
81 char *p = file;
82 while (*p) p++;
83 while (*p != '.' && p > file) p--;
84 if (*p != '.')
85 strcat(file, suffix);
86 else
87 strcpy(p,suffix);
88}
89
90void changeSuffix(string& file, const string& suffix)
91{
92 size_t pos = file.rfind('.');
93 // if (pos != NPOS) file.remove(pos);
94 if (pos != NPOS) file = file.substr(0,pos);
95 file += suffix;
96}
97
98string itos(int i)
99{
100 char s[20];
101 sprintf(s, "%d", i);
102 return s;
103}
104
105string ftos(double f)
106{
107 char s[20];
108 sprintf(s, "%g", f);
109 return s;
110}
111
112
Note: See TracBrowser for help on using the repository browser.