Version.cpp
Go to the documentation of this file.
1
/*----------------------------------------------------------------------------*/
2
/* */
3
/* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */
4
/* Copyright (c) 2005-2009 Rexx Language Association. All rights reserved. */
5
/* */
6
/* This program and the accompanying materials are made available under */
7
/* the terms of the Common Public License v1.0 which accompanies this */
8
/* distribution. A copy is also available at the following address: */
9
/* http://www.oorexx.org/license.html */
10
/* */
11
/* Redistribution and use in source and binary forms, with or */
12
/* without modification, are permitted provided that the following */
13
/* conditions are met: */
14
/* */
15
/* Redistributions of source code must retain the above copyright */
16
/* notice, this list of conditions and the following disclaimer. */
17
/* Redistributions in binary form must reproduce the above copyright */
18
/* notice, this list of conditions and the following disclaimer in */
19
/* the documentation and/or other materials provided with the distribution. */
20
/* */
21
/* Neither the name of Rexx Language Association nor the names */
22
/* of its contributors may be used to endorse or promote products */
23
/* derived from this software without specific prior written permission. */
24
/* */
25
/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
26
/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
27
/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
28
/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
29
/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
30
/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
31
/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
32
/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */
33
/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
34
/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
35
/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
36
/* */
37
/*----------------------------------------------------------------------------*/
38
/******************************************************************************/
39
/* REXX Kernel */
40
/* */
41
/* Version Identification */
42
/* */
43
/******************************************************************************/
44
#include "
RexxCore.h
"
45
#include "
StringClass.hpp
"
46
#include "
Interpreter.hpp
"
47
48
const
char
*
build_date
= __DATE__;
/* date of last build */
49
50
RexxString
*
Interpreter::versionNumber
=
OREF_NULL
;
51
52
RexxString
*
Interpreter::getVersionNumber
()
53
/******************************************************************************/
54
/* Arguments: None */
55
/* */
56
/* Returned: Version string */
57
/******************************************************************************/
58
{
59
if
(
versionNumber
==
OREF_NULL
)
60
{
61
char
buffer[100];
/* buffer for building the string */
62
char
work
[20];
/* working buffer */
63
64
strcpy(
work
,
build_date
);
/* copy the build date */
65
char
*month = strtok(
work
,
" "
);
/* get the month */
66
char
*day = strtok(NULL,
" "
);
/* get the build day */
67
char
*year = strtok(NULL,
" "
);
/* and the year */
68
if
(*day ==
'0'
)
/* day have a leading zero? */
69
{
70
day++;
/* step over it */
71
}
72
/* format the result */
73
snprintf(buffer,
sizeof
buffer,
"REXX-ooRexx_%d.%d.%d(MT)_%s-bit 6.04 %s %s %s"
, ORX_VER, ORX_REL, ORX_MOD,
74
#ifdef __REXX64__
75
"64"
,
76
#
else
77
"32"
,
78
#endif
79
day, month, year);
80
versionNumber
=
new_string
(buffer);
/* return as a rexx string */
81
}
82
return
versionNumber
;
83
}
84
85
86
/**
87
* Get the interpreter version level as a binary number
88
* to be returned in the APIs.
89
*
90
* @return The binary interpreter version level.
91
*/
92
size_t
Interpreter::getInterpreterVersion
()
93
{
94
return
REXX_CURRENT_INTERPRETER_VERSION
;
95
}
96
97
/**
98
* Return the current language level implemented by this
99
* interpreter version.
100
*
101
* @return The current defined language level.
102
*/
103
size_t
Interpreter::getLanguageLevel
()
104
{
105
return
REXX_CURRENT_LANGUAGE_LEVEL
;
106
}
Interpreter.hpp
RexxCore.h
OREF_NULL
#define OREF_NULL
Definition:
RexxCore.h:61
StringClass.hpp
new_string
RexxString * new_string(const char *s, stringsize_t l)
Definition:
StringClass.hpp:600
build_date
const char * build_date
Definition:
Version.cpp:48
Interpreter::getInterpreterVersion
static size_t getInterpreterVersion()
Definition:
Version.cpp:92
Interpreter::getVersionNumber
static RexxString * getVersionNumber()
Definition:
Version.cpp:52
Interpreter::versionNumber
static RexxString * versionNumber
Definition:
Interpreter.hpp:147
Interpreter::getLanguageLevel
static size_t getLanguageLevel()
Definition:
Version.cpp:103
RexxString
Definition:
StringClass.hpp:122
REXX_CURRENT_LANGUAGE_LEVEL
#define REXX_CURRENT_LANGUAGE_LEVEL
Definition:
oorexxapi.h:228
REXX_CURRENT_INTERPRETER_VERSION
#define REXX_CURRENT_INTERPRETER_VERSION
Definition:
oorexxapi.h:223
work
char work[256]
Definition:
unix/rxqueue.cpp:82
oorexx
executor
sandbox
jlf
trunk
interpreter
runtime
Version.cpp
Generated by
1.9.2