parent
04ac65be8f
commit
7b4b36e5d2
53 changed files with 18995 additions and 0 deletions
@ -0,0 +1,2 @@ |
||||
The Rasterman (Carsten Haitzler) <raster@rasterman.com> |
||||
|
@ -0,0 +1,28 @@ |
||||
Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS) |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
of this software and associated documentation files (the "Software"), to |
||||
deal in the Software without restriction, including without limitation the |
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
||||
sell copies of the Software, and to permit persons to whom the Software is |
||||
furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in |
||||
all copies of the Software and its Copyright notices. In addition publicly |
||||
documented acknowledgment must be given that this software has been used if no |
||||
source code of this software is made available publicly. This includes |
||||
acknowledgments in either Copyright notices, Manuals, Publicity and Marketing |
||||
documents or any documentation provided with any product containing this |
||||
software. This License does not apply to any software that links to the |
||||
libraries provided by this software (statically or dynamically), but only to |
||||
the software provided. |
||||
|
||||
Please see the COPYING.PLAIN for a plain-english explanation of this notice |
||||
and it's intent. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||||
THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
@ -0,0 +1,33 @@ |
||||
Plain English Copyright Notice |
||||
|
||||
This file is not intended to be the actual License. The reason this file |
||||
exists is that we here are programmers and engineers. We aren't lawyers. We |
||||
provide licenses that we THINK say the right things, but we have our own |
||||
intentions at heart. This is a plain-english explanation of what those |
||||
intentions are, and if you follow them you will be within the "spirit" of |
||||
the license. |
||||
|
||||
The intent is for us to enjoy writing software that is useful to us (the |
||||
AUTHORS) and allow others to use it freely and also benefit from the work we |
||||
put into making it. We don't want to restrict others using it. They should |
||||
not *HAVE* to make the source code of the applications they write that |
||||
simply link to these libraries (be that statically or dynamically), or for |
||||
them to be limited as to what license they choose to use (be it open, closed |
||||
or anything else). But we would like to know you are using these libraries. |
||||
We simply would like to know that it has been useful to someone. This is why |
||||
we ask for acknowledgement of some sort. |
||||
|
||||
You can do what you want with the source of this software - it doesn't |
||||
matter. We still have it here for ourselves and it is open and free to use |
||||
and download and play with. It can't be taken away. We don't really mind what |
||||
you do with the source to your software. We would simply like to know that |
||||
you are using it - especially if it makes it to a commerical product. If you |
||||
simply e-mail all the AUTHORS (see COPYING and AUTHORS files) telling us, and |
||||
then make sure you include a paragraph or page in the manual for the product |
||||
with the copyright notice and state that you used this software, we will be |
||||
very happy. If you want to contribute back modifications and fixes you may have |
||||
made we will welcome those too with open arms (generally). If you want help |
||||
with changes needed, ports needed or features to be added, arrangements can |
||||
be easily made with some dialogue. |
||||
|
||||
Carsten Haitzler <raster@rasterman.com> |
@ -0,0 +1,145 @@ |
||||
PROJECT_NAME = Embryo |
||||
PROJECT_NUMBER = |
||||
OUTPUT_DIRECTORY = doc |
||||
INPUT = embryo.c |
||||
IMAGE_PATH = doc/img |
||||
OUTPUT_LANGUAGE = English |
||||
GENERATE_HTML = YES |
||||
HTML_OUTPUT = html |
||||
HTML_FILE_EXTENSION = .html |
||||
HTML_HEADER = doc/head.html |
||||
HTML_FOOTER = doc/foot.html |
||||
HTML_STYLESHEET = doc/embryo.css |
||||
HTML_ALIGN_MEMBERS = YES |
||||
ENUM_VALUES_PER_LINE = 1 |
||||
GENERATE_HTMLHELP = NO |
||||
CHM_FILE = |
||||
HHC_LOCATION = |
||||
GENERATE_CHI = NO |
||||
BINARY_TOC = NO |
||||
TOC_EXPAND = NO |
||||
DISABLE_INDEX = NO |
||||
EXTRACT_ALL = NO |
||||
EXTRACT_PRIVATE = NO |
||||
EXTRACT_STATIC = NO |
||||
EXTRACT_LOCAL_CLASSES = NO |
||||
HIDE_UNDOC_MEMBERS = YES |
||||
HIDE_UNDOC_CLASSES = YES |
||||
HIDE_FRIEND_COMPOUNDS = YES |
||||
BRIEF_MEMBER_DESC = YES |
||||
REPEAT_BRIEF = YES |
||||
ALWAYS_DETAILED_SEC = NO |
||||
INLINE_INHERITED_MEMB = NO |
||||
FULL_PATH_NAMES = NO |
||||
STRIP_FROM_PATH = |
||||
INTERNAL_DOCS = NO |
||||
STRIP_CODE_COMMENTS = YES |
||||
CASE_SENSE_NAMES = YES |
||||
SHORT_NAMES = NO |
||||
HIDE_SCOPE_NAMES = NO |
||||
VERBATIM_HEADERS = NO |
||||
SHOW_INCLUDE_FILES = NO |
||||
JAVADOC_AUTOBRIEF = YES |
||||
MULTILINE_CPP_IS_BRIEF = NO |
||||
DETAILS_AT_TOP = NO |
||||
INHERIT_DOCS = YES |
||||
INLINE_INFO = YES |
||||
SORT_MEMBER_DOCS = YES |
||||
DISTRIBUTE_GROUP_DOC = NO |
||||
TAB_SIZE = 2 |
||||
GENERATE_TODOLIST = YES |
||||
GENERATE_TESTLIST = YES |
||||
GENERATE_BUGLIST = YES |
||||
GENERATE_DEPRECATEDLIST= YES |
||||
ALIASES = |
||||
ENABLED_SECTIONS = |
||||
MAX_INITIALIZER_LINES = 30 |
||||
OPTIMIZE_OUTPUT_FOR_C = YES |
||||
OPTIMIZE_OUTPUT_JAVA = NO |
||||
SHOW_USED_FILES = NO |
||||
QUIET = NO |
||||
WARNINGS = YES |
||||
WARN_IF_UNDOCUMENTED = YES |
||||
WARN_FORMAT = "$file:$line: $text" |
||||
WARN_LOGFILE = |
||||
FILE_PATTERNS = |
||||
RECURSIVE = NO |
||||
EXCLUDE = |
||||
EXCLUDE_SYMLINKS = NO |
||||
EXCLUDE_PATTERNS = |
||||
EXAMPLE_PATH = |
||||
EXAMPLE_PATTERNS = |
||||
EXAMPLE_RECURSIVE = NO |
||||
INPUT_FILTER = |
||||
FILTER_SOURCE_FILES = NO |
||||
SOURCE_BROWSER = NO |
||||
INLINE_SOURCES = NO |
||||
REFERENCED_BY_RELATION = YES |
||||
REFERENCES_RELATION = YES |
||||
ALPHABETICAL_INDEX = YES |
||||
COLS_IN_ALPHA_INDEX = 2 |
||||
IGNORE_PREFIX = |
||||
GENERATE_TREEVIEW = NO |
||||
TREEVIEW_WIDTH = 250 |
||||
GENERATE_LATEX = YES |
||||
LATEX_OUTPUT = latex |
||||
LATEX_CMD_NAME = latex |
||||
MAKEINDEX_CMD_NAME = makeindex |
||||
COMPACT_LATEX = NO |
||||
PAPER_TYPE = a4wide |
||||
EXTRA_PACKAGES = |
||||
LATEX_HEADER = |
||||
PDF_HYPERLINKS = YES |
||||
USE_PDFLATEX = NO |
||||
LATEX_BATCHMODE = NO |
||||
GENERATE_RTF = NO |
||||
RTF_OUTPUT = rtf |
||||
COMPACT_RTF = NO |
||||
RTF_HYPERLINKS = NO |
||||
RTF_STYLESHEET_FILE = |
||||
RTF_EXTENSIONS_FILE = |
||||
GENERATE_MAN = YES |
||||
MAN_OUTPUT = man |
||||
MAN_EXTENSION = .3 |
||||
MAN_LINKS = YES |
||||
GENERATE_XML = NO |
||||
XML_SCHEMA = |
||||
XML_DTD = |
||||
GENERATE_AUTOGEN_DEF = NO |
||||
ENABLE_PREPROCESSING = YES |
||||
MACRO_EXPANSION = NO |
||||
EXPAND_ONLY_PREDEF = NO |
||||
SEARCH_INCLUDES = NO |
||||
INCLUDE_PATH = |
||||
INCLUDE_FILE_PATTERNS = |
||||
PREDEFINED = |
||||
EXPAND_AS_DEFINED = |
||||
SKIP_FUNCTION_MACROS = YES |
||||
TAGFILES = |
||||
GENERATE_TAGFILE = |
||||
ALLEXTERNALS = NO |
||||
EXTERNAL_GROUPS = YES |
||||
PERL_PATH = /usr/bin/perl |
||||
CLASS_DIAGRAMS = NO |
||||
HIDE_UNDOC_RELATIONS = YES |
||||
HAVE_DOT = NO |
||||
CLASS_GRAPH = NO |
||||
COLLABORATION_GRAPH = NO |
||||
TEMPLATE_RELATIONS = NO |
||||
INCLUDE_GRAPH = NO |
||||
INCLUDED_BY_GRAPH = NO |
||||
GRAPHICAL_HIERARCHY = NO |
||||
DOT_IMAGE_FORMAT = png |
||||
DOT_PATH = |
||||
DOTFILE_DIRS = |
||||
MAX_DOT_GRAPH_WIDTH = 512 |
||||
MAX_DOT_GRAPH_HEIGHT = 512 |
||||
GENERATE_LEGEND = YES |
||||
DOT_CLEANUP = YES |
||||
SEARCHENGINE = NO |
||||
CGI_NAME = search.cgi |
||||
CGI_URL = |
||||
DOC_URL = |
||||
DOC_ABSPATH = |
||||
BIN_ABSPATH = /usr/bin/ |
||||
EXT_DOC_PATHS = |
@ -0,0 +1,14 @@ |
||||
COMPILING and INSTALLING: |
||||
|
||||
If you got a official release tar archive do: |
||||
./configure |
||||
|
||||
( otherwise if you got this from enlightenment cvs do: ./autogen.sh ) |
||||
|
||||
Then to compile: |
||||
make |
||||
|
||||
To install (run this as root, or the user who handles installs): |
||||
make install |
||||
|
||||
NOTE: You MUST make install Embryo for it to run properly. |
@ -0,0 +1,24 @@ |
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = src
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \
|
||||
config.h.in config.sub configure install-sh \
|
||||
ltconfig ltmain.sh missing mkinstalldirs \
|
||||
stamp-h.in embryo_docs.tar embryo_docs.tar.gz embryo.c
|
||||
|
||||
dist-hook: |
||||
./gendoc; \
|
||||
tar cvf embryo_docs.tar doc/html doc/latex doc/man; \
|
||||
rm -f embryo_docs.tar.gz; \
|
||||
gzip -9 embryo_docs.tar;
|
||||
|
||||
bin_SCRIPTS = embryo-config
|
||||
|
||||
EXTRA_DIST = README AUTHORS COPYING COPYING-PLAIN embryo.spec embryo.c.in \
|
||||
gendoc Doxyfile embryo_docs.tar.gz embryo.pc.in \
|
||||
make_cross_compile_arm.sh
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = embryo.pc
|
||||
|
@ -0,0 +1 @@ |
||||
Embryo 0.0.1 |
@ -0,0 +1,137 @@ |
||||
#!/bin/sh |
||||
# Run this to generate all the initial makefiles, etc. |
||||
|
||||
srcdir=`dirname $0` |
||||
PKG_NAME="the package." |
||||
|
||||
DIE=0 |
||||
|
||||
(autoconf --version) < /dev/null > /dev/null 2>&1 || { |
||||
echo |
||||
echo "**Error**: You must have \`autoconf' installed to." |
||||
echo "Download the appropriate package for your distribution," |
||||
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" |
||||
DIE=1 |
||||
} |
||||
|
||||
(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { |
||||
(libtool --version) < /dev/null > /dev/null 2>&1 || { |
||||
echo |
||||
echo "**Error**: You must have \`libtool' installed." |
||||
echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" |
||||
echo "(or a newer version if it is available)" |
||||
DIE=1 |
||||
} |
||||
} |
||||
|
||||
grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { |
||||
grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ |
||||
(gettext --version) < /dev/null > /dev/null 2>&1 || { |
||||
echo |
||||
echo "**Error**: You must have \`gettext' installed." |
||||
echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" |
||||
echo "(or a newer version if it is available)" |
||||
DIE=1 |
||||
} |
||||
} |
||||
|
||||
(automake --version) < /dev/null > /dev/null 2>&1 || { |
||||
echo |
||||
echo "**Error**: You must have \`automake' installed." |
||||
echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" |
||||
echo "(or a newer version if it is available)" |
||||
DIE=1 |
||||
NO_AUTOMAKE=yes |
||||
} |
||||
|
||||
|
||||
# if no automake, don't bother testing for aclocal |
||||
test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { |
||||
echo |
||||
echo "**Error**: Missing \`aclocal'. The version of \`automake'" |
||||
echo "installed doesn't appear recent enough." |
||||
echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" |
||||
echo "(or a newer version if it is available)" |
||||
DIE=1 |
||||
} |
||||
|
||||
if test "$DIE" -eq 1; then |
||||
exit 1 |
||||
fi |
||||
|
||||
if test -z "$*"; then |
||||
echo "**Warning**: I am going to run \`configure' with no arguments." |
||||
echo "If you wish to pass any to it, please specify them on the" |
||||
echo \`$0\'" command line." |
||||
echo |
||||
fi |
||||
|
||||
case $CC in |
||||
xlc ) |
||||
am_opt=--include-deps;; |
||||
esac |
||||
|
||||
for coin in `find $srcdir -name configure.in -print` |
||||
do |
||||
dr=`dirname $coin` |
||||
if test -f $dr/NO-AUTO-GEN; then |
||||
echo skipping $dr -- flagged as no auto-gen |
||||
else |
||||
echo processing $dr |
||||
macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` |
||||
( cd $dr |
||||
aclocalinclude="$ACLOCAL_FLAGS" |
||||
for k in $macrodirs; do |
||||
if test -d $k; then |
||||
aclocalinclude="$aclocalinclude -I $k" |
||||
##else |
||||
## echo "**Warning**: No such directory \`$k'. Ignored." |
||||
fi |
||||
done |
||||
if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then |
||||
if grep "sed.*POTFILES" configure.in >/dev/null; then |
||||
: do nothing -- we still have an old unmodified configure.in |
||||
else |
||||
echo "Creating $dr/aclocal.m4 ..." |
||||
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 |
||||
echo "Running gettextize... Ignore non-fatal messages." |
||||
echo "no" | gettextize --force --copy |
||||
echo "Making $dr/aclocal.m4 writable ..." |
||||
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 |
||||
fi |
||||
fi |
||||
if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then |
||||
echo "Creating $dr/aclocal.m4 ..." |
||||
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 |
||||
echo "Running gettextize... Ignore non-fatal messages." |
||||
echo "no" | gettextize --force --copy |
||||
echo "Making $dr/aclocal.m4 writable ..." |
||||
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 |
||||
fi |
||||
if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then |
||||
echo "Running libtoolize..." |
||||
libtoolize --force --copy |
||||
fi |
||||
echo "Running aclocal $aclocalinclude ..." |
||||
aclocal $aclocalinclude |
||||
if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then |
||||
echo "Running autoheader..." |
||||
autoheader |
||||
fi |
||||
echo "Running automake --gnu $am_opt ..." |
||||
automake --add-missing --gnu $am_opt |
||||
echo "Running autoconf ..." |
||||
autoconf |
||||
) |
||||
fi |
||||
done |
||||
|
||||
#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c |
||||
|
||||
if test x$NOCONFIGURE = x; then |
||||
echo Running $srcdir/configure $conf_flags "$@" ... |
||||
$srcdir/configure $conf_flags "$@" \ |
||||
&& echo Now type \`make\' to compile $PKG_NAME |
||||
else |
||||
echo Skipping configure process. |
||||
fi |
@ -0,0 +1,85 @@ |
||||
dnl Process this file with autoconf to produce a configure script. |
||||
|
||||
# get rid of that stupid cache mechanism |
||||
rm -f config.cache |
||||
|
||||
AC_INIT(configure.in) |
||||
AC_CANONICAL_BUILD |
||||
AC_CANONICAL_HOST |
||||
AC_CANONICAL_TARGET |
||||
AC_ISC_POSIX |
||||
AM_INIT_AUTOMAKE(embryo, 0.0.1) |
||||
AM_CONFIG_HEADER(config.h) |
||||
|
||||
AC_PROG_CC |
||||
AM_PROG_CC_STDC |
||||
AC_HEADER_STDC |
||||
AC_C_CONST |
||||
AM_ENABLE_SHARED |
||||
AM_PROG_LIBTOOL |
||||
|
||||
if test "x${exec_prefix}" = "xNONE"; then |
||||
if test "x${prefix}" = "xNONE"; then |
||||
bindir="${ac_default_prefix}/bin"; |
||||
else |
||||
bindir="${prefix}/bin"; |
||||
fi |
||||
else |
||||
if test "x${prefix}" = "xNONE"; then |
||||
bindir="${ac_default_prefix}/bin"; |
||||
else |
||||
bindir="${prefix}/bin"; |
||||
fi |
||||
fi |
||||
|
||||
if test "x${exec_prefix}" = "xNONE"; then |
||||
if test "x${prefix}" = "xNONE"; then |
||||
libdir="${ac_default_prefix}/lib"; |
||||
else |
||||
libdir="${prefix}/lib"; |
||||
fi |
||||
else |
||||
if test "x${prefix}" = "xNONE"; then |
||||
libdir="${ac_default_prefix}/lib"; |
||||
else |
||||
libdir="${prefix}/lib"; |
||||
fi |
||||
fi |
||||
|
||||
dnl Set PACKAGE_BIN_DIR in config.h. |
||||
if test "x${bindir}" = 'xNONE'; then |
||||
if test "x${prefix}" = "xNONE"; then |
||||
AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${ac_default_prefix}/bin", [Installation directory for user executables]) |
||||
else |
||||
AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${prefix}/bin", [Installation directory for user executables]) |
||||
fi |
||||
else |
||||
AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${bindir}", [Installation directory for user executables]) |
||||
fi |
||||
|
||||
dnl Set PACKAGE_LIB_DIR in config.h. |
||||
if test "x${libdir}" = 'xNONE'; then |
||||
if test "x${prefix}" = "xNONE"; then |
||||
AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${ac_default_prefix}/lib", [Installation directory for libraries] ) |
||||
else |
||||
AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${prefix}/lib", [Installation directory for libraries]) |
||||
fi |
||||
else |
||||
AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${libdir}", [Installation directory for libraries]) |
||||
fi |
||||
|
||||
dnl Set PACKAGE_SOURCE_DIR in config.h. |
||||
packagesrcdir=`cd $srcdir && pwd` |
||||
AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}", [Source code directory]) |
||||
|
||||
AC_OUTPUT([ |
||||
Makefile |
||||
embryo.pc |
||||
src/Makefile |
||||
src/lib/Makefile |
||||
src/bin/Makefile |
||||
embryo-config |
||||
],[ |
||||
chmod +x embryo-config |
||||
touch embryo_docs.tar.gz |
||||
]) |
@ -0,0 +1,178 @@ |
||||
td.md { |
||||
background-color: #ffffff; |
||||
font-family: monospace; |
||||
text-align: left; |
||||
vertical-align: center; |
||||
font-size: 10; |
||||
padding-right : 1px; |
||||
padding-top : 1px; |
||||
padding-left : 1px; |
||||
padding-bottom : 1px; |
||||
margin-left : 1px; |
||||
margin-right : 1px; |
||||
margin-top : 1px; |
||||
margin-bottom : 1px |
||||
} |
||||
td.mdname { |
||||
font-family: monospace; |
||||
text-align: left; |
||||
vertical-align: center; |
||||
font-size: 10; |
||||
padding-right : 1px; |
||||
padding-top : 1px; |
||||
padding-left : 1px; |
||||
padding-bottom : 1px; |
||||
margin-left : 1px; |
||||
margin-right : 1px; |
||||
margin-top : 1px; |
||||
margin-bottom : 1px |
||||
} |
||||
h1 |
||||
{ |
||||
text-align: center; |
||||
color: #333333 |
||||
} |
||||
h2 |
||||
{ |
||||
text-align: left; |
||||
color: #333333 |
||||
} |
||||
h3 |
||||
{ |
||||
text-align: left; |
||||
color: #333333 |
||||
} |
||||
a:link |
||||
{ |
||||
text-decoration: none; |
||||
color: #444444; |
||||
font-weight: bold; |
||||
} |
||||
a:visited |
||||
{ |
||||
text-decoration: none; |
||||
color: #666666; |
||||
font-weight: bold; |
||||
} |
||||
a:hover |
||||
{ |
||||
text-decoration: none; |
||||
color: #000000; |
||||
font-weight: bold; |
||||
} |
||||
a.nav:link |
||||
{ |
||||
text-decoration: none; |
||||
color: #444444; |
||||
font-weight: normal; |
||||
} |
||||
a.nav:visited |
||||
{ |
||||
text-decoration: none; |
||||
color: #666666; |
||||
font-weight: normal; |
||||
} |
||||
a.nav:hover |
||||
{ |
||||
text-decoration: none; |
||||
color: #000000; |
||||
font-weight: normal; |
||||
} |
||||
a.qindex:link |
||||
{ |
||||
text-decoration: none; |
||||
color: #444444; |
||||
font-weight: normal; |
||||
} |
||||
a.qindex:visited |
||||
{ |
||||
text-decoration: none; |
||||
color: #666666; |
||||
font-weight: normal; |
||||
} |
||||
a.qindex:hover |
||||
{ |
||||
text-decoration: none; |
||||
color: #000000; |
||||
font-weight: normal; |
||||
} |
||||
p |
||||
{ |
||||
color: #000000; |
||||
font-family: sans-serif; |
||||
font-size: 10; |
||||
} |
||||
body { |
||||
background-image: url("hilite.png"); |
||||
background-repeat: no-repeat; |
||||
background-position: left top; |
||||
background-color: #dddddd; |
||||
color: #000000; |
||||
font-family: sans-serif; |
||||
padding: 8px; |
||||
margin: 0; |
||||
} |
||||
div.fragment |
||||
{ |
||||
background-image: url("hilite.png"); |
||||
background-repeat: no-repeat; |
||||
background-position: left top; |
||||
border: thin solid #888888; |
||||
background-color: #eeeeee; |
||||
padding: 4px; |
||||
text-align: left; |
||||
vertical-align: center; |
||||
font-size: 12; |
||||
} |
||||
hr |
||||
{ |
||||
border: 0; |
||||
background-color: #000000; |
||||
width: 80%; |
||||
height: 1; |
||||
} |
||||
dl |
||||
{ |
||||
background-image: url("hilite.png"); |
||||
background-repeat: no-repeat; |
||||
background-position: left top; |
||||
border: thin solid #aaaaaa; |
||||
background-color: #eeeeee; |
||||
padding: 4px; |
||||
text-align: left; |
||||
vertical-align: center; |
||||
font-size: 12; |
||||
} |
||||
em |
||||
{ |
||||
color: #334466; |
||||
font-family: courier; |
||||
font-size: 10; |
||||
font-style: normal; |
||||
} |
||||
|
||||
div.nav |
||||
{ |
||||
border: thin solid #000000; |
||||
background-color: #ffffff; |
||||
padding: 1px; |
||||
text-align: center; |
||||
vertical-align: center; |
||||
font-size: 12; |
||||
} |
||||
div.body |
||||
{ |
||||
border: thin solid #000000; |
||||
background-color: #ffffff; |
||||
padding: 4px; |
||||
text-align: left; |
||||
font-size: 10; |
||||
} |
||||
div.diag |
||||
{ |
||||
border: thin solid #888888; |
||||
background-color: #eeeeee; |
||||
padding: 4px; |
||||
text-align: center; |
||||
font-size: 8; |
||||
} |
@ -0,0 +1,2 @@ |
||||
</body> |
||||
</html> |
@ -0,0 +1,19 @@ |
||||
<html> |
||||
|
||||
<head> |
||||
|
||||
<title>$title</title> |
||||
<link href=embryo.css rel=stylesheet type=text/css> |
||||
|
||||
</head> |
||||
|
||||
<body> |
||||
<div class=nav> |
||||
<table border=0 align=center><tr> |
||||
<td width=16><img src=embryo_mini.png width=16 height=16 alt=E></td> |
||||
<td width=100% align=center> |
||||
E : M : B : R : Y : O |
||||
</td> |
||||
<td width=16><img src=embryo_mini.png width=16 height=16 alt=E></td> |
||||
</tr></table> |
||||
</div> |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 915 KiB |
After Width: | Height: | Size: 753 B |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 6.0 KiB |
@ -0,0 +1,59 @@ |
||||
#!/bin/sh |
||||
|
||||
prefix=@prefix@ |
||||
exec_prefix=@exec_prefix@ |
||||
exec_prefix_set=no |
||||
|
||||
usage="\ |
||||
Usage: embryo-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]" |
||||
|
||||
if test $# -eq 0; then |
||||
echo "${usage}" 1>&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
while test $# -gt 0; do |
||||
case "$1" in |
||||
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; |
||||
*) optarg= ;; |
||||
esac |
||||
|
||||
case $1 in |
||||
--prefix=*) |
||||
prefix=$optarg |
||||
if test $exec_prefix_set = no ; then |
||||
exec_prefix=$optarg |
||||
fi |
||||
;; |
||||
--prefix) |
||||
echo $prefix |
||||
;; |
||||
--exec-prefix=*) |
||||
exec_prefix=$optarg |
||||
exec_prefix_set=yes |
||||
;; |
||||
--exec-prefix) |
||||
echo $exec_prefix |
||||
;; |
||||
--version) |
||||
echo @VERSION@ |
||||
;; |
||||
--cflags) |
||||
if test @includedir@ != /usr/include ; then |
||||
includes=-I@includedir@ |
||||
fi |
||||
echo $includes |
||||
;; |
||||
--libs) |
||||
libdirs=-L@libdir@ |
||||
echo $libdirs -lembryo -lm |
||||
;; |
||||
*) |
||||
echo "${usage}" 1>&2 |
||||
exit 1 |
||||
;; |
||||
esac |
||||
shift |
||||
done |
||||
|
||||
exit 0 |
@ -0,0 +1,30 @@ |
||||
/**
|
||||
@file |
||||
@brief Embryo virtual machine library & compiler |
||||
|
||||
These routines are used for Embryo library interaction |
||||
*/ |
||||
|
||||
/**
|
||||
|
||||
@mainpage Embryo Library Documentation |
||||
@image html embryo.png |
||||
@version 0.0.1 |
||||
@author Carsten Haitzler <raster@rasterman.com> |
||||
@date 2004 |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@section intro What is Embryo? |
||||
|
||||
It is a tiny library designed interpret limited small programs compiled by the |
||||
included scmall compiler. This is mostly cleaning up and reduction in size of |
||||
the original small abstract machine. the compiler itself has been left alone |
||||
almost completely. |
||||
|
||||
@todo Document it all |
||||
@todo Clean up compiler code. |
||||
|
||||
*/ |
@ -0,0 +1,11 @@ |
||||
prefix=@prefix@ |
||||
exec_prefix=@exec_prefix@ |
||||
libdir=@libdir@ |
||||
includedir=@includedir@ |
||||
|
||||
Name: embryo |
||||
Description: embryo |
||||
Version: @VERSION@ |
||||
Libs: -L${libdir} -lembryo -lm |
||||
Cflags: -I${includedir} |
||||
|
@ -0,0 +1,80 @@ |
||||
# Note that this is NOT a relocatable package |
||||
%define ver 0.0.1 |
||||
%define rel 1 |
||||
%define prefix /usr |
||||
|
||||
Summary: embryo |
||||
Name: embryo |
||||
Version: %ver |
||||
Release: %rel |
||||
Copyright: BSD |
||||
Group: System Environment/Libraries |
||||
Source: ftp://ftp.enlightenment.org/pub/embryo/embryo-%{ver}.tar.gz |
||||
BuildRoot: /var/tmp/embryo-root |
||||
Packager: The Rasterman <raster@rasterman.com> |
||||
URL: http://www.enlightenment.org/ |
||||
|
||||
Docdir: %{prefix}/doc |
||||
|
||||
%description |
||||
|
||||
Embryo is a tiny library designed as a virtual machine to interpret a limited |
||||
set of small compiled programs. |
||||
|
||||
%package devel |
||||
Summary: Embryo headers, static libraries, documentation and test programs |
||||
Group: System Environment/Libraries |
||||
Requires: %{name} = %{version} |
||||
|
||||
%description devel |
||||
Headers, static libraries, test programs and documentation for Embryo |
||||
|
||||
%prep |
||||
rm -rf $RPM_BUILD_ROOT |
||||
|
||||
%setup -q |
||||
|
||||
%build |
||||
./configure --prefix=%prefix |
||||
|
||||
if [ "$SMP" != "" ]; then |
||||
(make "MAKE=make -k -j $SMP"; exit 0) |
||||
make |
||||
else |
||||
make |
||||
fi |
||||
########################################################################### |
||||
|
||||
%install |
||||
make DESTDIR=$RPM_BUILD_ROOT install |
||||
|
||||
%clean |
||||
rm -rf $RPM_BUILD_ROOT |
||||
|
||||
%post |
||||
/sbin/ldconfig |
||||
|
||||
%postun |
||||
/sbin/ldconfig |
||||
|
||||
%files |
||||
%defattr(-,root,root) |
||||
%attr(755,root,root) %{prefix}/lib/libembryo.so.* |
||||
%{prefix}/lib/libembryo.la |
||||
%attr(755,root,root) %{prefix}/bin/embryo_cc |
||||
%attr(755,root,root) %{prefix}/bin/embryo |
||||
|
||||
%files devel |
||||
%attr(755,root,root) %{prefix}/lib/libembryo.so |
||||
%attr(755,root,root) %{prefix}/lib/libembryo.a |
||||
%attr(755,root,root) %{prefix}/bin/embryo-config |
||||
%{prefix}/lib/pkgconfig/embryo.pc |
||||
%{prefix}/include/Embryo* |
||||
%doc AUTHORS |
||||
%doc COPYING |
||||
%doc README |
||||
%doc embryo_docs.tar.gz |
||||
|
||||
%changelog |
||||
* Sat Jun 23 2001 The Rasterman <raster@rasterman.com> |
||||
- Created spec file |
@ -0,0 +1,12 @@ |
||||
#!/bin/sh |
||||
cp ./embryo.c.in ./embryo.c |
||||
for I in `find ./src/lib -name "*.c" -print`; do |
||||
cat $I >> ./embryo.c |
||||
done |
||||
rm -rf ./doc/html ./doc/latex ./doc/man |
||||
doxygen |
||||
cp doc/img/*.png doc/html/ |
||||
rm -f embryo_docs.tar embryo_docs.tar.gz |
||||
tar -cvf embryo_docs.tar doc/html doc/man doc/latex |
||||
gzip -9 embryo_docs.tar |
||||
exit 0 |
@ -0,0 +1,75 @@ |
||||
#!/bin/sh |
||||
|
||||
PROJ="embryo" |
||||
|
||||
SKIFF="/skiff/local" |
||||
HOSTARCH="i686-pc-linux-gnu" |
||||
TARGETCPU="arm" |
||||
TARGETARCH=$TARGETCPU"-pc-linux-gnu" |
||||
|
||||
make clean distclean |
||||
export CC=$SKIFF"/bin/"$TARGETCPU"-linux-gcc" |
||||
export CFLAGS=-O9 |
||||
./configure \ |
||||
--host=$HOSTARCH \ |
||||
--build=$TARGETARCH \ |
||||
--target=$TARGETARCH |
||||
|
||||
INST="/tmp/"$PROJ"-instroot" |
||||
sudo rm -rf $INST |
||||
|
||||
make |
||||
|
||||
for I in find . -name "*.la" -print; do |
||||
sed s:"/usr/local":$INST:g < $I > "/tmp/.sed.tmp" |
||||
sudo cp "/tmp/.sed.tmp" $I |
||||
rm -f "/tmp/.sed.tmp" |
||||
done |
||||
|
||||
sudo \ |
||||
make \ |
||||
prefix=$INST \ |
||||
exec_prefix=$INST \ |
||||
bindir=$INST"/bin" \ |
||||
sbindir=$INST"/sbin" \ |
||||
sysconfdir=$INST"/etc" \ |
||||
datadir=$INST"/share" \ |
||||
includedir=$INST"/include" \ |
||||
libdir=$INST"/lib" \ |
||||
libexecdir=$INST"/libexec" \ |
||||
localstatedir=$INST"/var/run" \ |
||||
mandir=$INST"/share/man" \ |
||||
infodir=$INST"/share/info" \ |
||||
install |
||||
|
||||
## FIXUPS |
||||
for I in $INST"/bin/"* $INST"/sbin/"* $INST"/libexec/"*; do |
||||
J=`echo $I | sed s:$TARGETARCH"-"::g` |
||||
sudo mv $I $J |
||||
done |
||||
|
||||
CF=$INST"/bin/"$PROJ"-config" |
||||
sed s:"/usr/local":$SKIFF"/"$TARGETCPU"-linux":g < $CF > "/tmp/.sed.tmp" |
||||
sudo cp "/tmp/.sed.tmp" $CF |
||||
rm -f "/tmp/.sed.tmp" |
||||
|
||||
for I in $INST"/lib/"*.la; do |
||||
sed s:"/usr/local":$SKIFF"/"$TARGETCPU"-linux":g < $I > "/tmp/.sed.tmp" |
||||
sudo cp "/tmp/.sed.tmp" $I |
||||
rm -f "/tmp/.sed.tmp" |
||||
done |
||||
|
||||
## package it all up |
||||
PACK=$PROJ"-"$TARGETCPU"-inst.tar.gz" |
||||
|
||||
DIR=$PWD |
||||
cd $INST |
||||
sudo tar zcvf $DIR"/"$PACK * |
||||
sudo chown $USER $DIR"/"$PACK |
||||
cd $DIR |
||||
sudo rm -rf $INST |
||||
|
||||
## install it in our skiff tree |
||||
cd $SKIFF"/"$TARGETCPU"-linux" |
||||
sudo tar zxvf $DIR"/"$PACK |
||||
|
@ -0,0 +1,3 @@ |
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = lib bin
|
@ -0,0 +1,34 @@ |
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
INCLUDES = -DLINUX -I$(top_srcdir)/src/lib
|
||||
|
||||
bin_PROGRAMS = embryo embryo_cc
|
||||
|
||||
embryo_SOURCES = \
|
||||
embryo_main.c |
||||
|
||||
embryo_LDADD = $(top_builddir)/src/lib/libembryo.la
|
||||
embryo_DEPENDENCIES = $(top_builddir)/src/lib/libembryo.la
|
||||
|
||||
embryo_cc_SOURCES = \
|
||||
embryo_cc_amx.h \ |
||||
embryo_cc_osdefs.h \ |
||||
embryo_cc_sc.h \ |
||||
embryo_cc_sc1.c \ |
||||
embryo_cc_sc2.c \ |
||||
embryo_cc_sc3.c \ |
||||
embryo_cc_sc4.c \ |
||||
embryo_cc_sc5.c \ |
||||
embryo_cc_sc6.c \ |
||||
embryo_cc_sc7.c \ |
||||
embryo_cc_scexpand.c \ |
||||
embryo_cc_sclinux.h \ |
||||
embryo_cc_sclist.c \ |
||||
embryo_cc_scvars.c |
||||
|
||||
embryo_cc_LDADD =
|
||||
embryo_cc_DEPENDENCIES =
|
||||
|
||||
EXTRA_DIST = \
|
||||
embryo_cc_sc5.scp \ |
||||
embryo_cc_sc7.scp |
@ -0,0 +1,349 @@ |
||||
/* Abstract Machine for the Small compiler
|
||||
* |
||||
* Copyright (c) ITB CompuPhase, 1997-2003 |
||||
* |
||||
* This software is provided "as-is", without any express or implied warranty. |
||||
* In no event will the authors be held liable for any damages arising from |
||||
* the use of this software. |
||||
* |
||||
* Permission is granted to anyone to use this software for any purpose, |
||||
* including commercial applications, and to alter it and redistribute it |
||||
* freely, subject to the following restrictions: |
||||
* |
||||
* 1. The origin of this software must not be misrepresented; you must not |
||||
* claim that you wrote the original software. If you use this software in |
||||
* a product, an acknowledgment in the product documentation would be |
||||
* appreciated but is not required. |
||||
* 2. Altered source versions must be plainly marked as such, and must not be |
||||
* misrepresented as being the original software. |
||||
* 3. This notice may not be removed or altered from any source distribution. |
||||
* |
||||
* Version: $Id$ |
||||
*/ |
||||
|
||||
#if defined LINUX |
||||
#include <embryo_cc_sclinux.h> |
||||
#endif |
||||
|
||||
#ifndef __AMX_H |
||||
#define __AMX_H |
||||
|
||||
#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L |
||||
/* The ISO C99 defines the int16_t and int_32t types. If the compiler got
|
||||
* here, these types are probably undefined. |
||||
*/ |
||||
#if defined __LCC__ || defined LINUX |
||||
#include <stdint.h> |
||||
#else |
||||
typedef short int int16_t; |
||||
typedef unsigned short int uint16_t; |
||||
#if defined SN_TARGET_PS2 |
||||
typedef int int32_t; |
||||
typedef unsigned int uint32_t; |
||||
#else |
||||
typedef long int int32_t; |
||||
typedef unsigned long int uint32_t; |
||||
#endif |
||||
#endif |
||||
#endif |
||||
|
||||
#if defined __WIN32__ || defined _WIN32 || defined WIN32 || defined __MSDOS__ |
||||
#if !defined alloca |
||||
#define alloca(n) _alloca(n) |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/* calling convention for native functions */ |
||||
#if !defined AMX_NATIVE_CALL |
||||
#define AMX_NATIVE_CALL |
||||
#endif |
||||
/* calling convention for all interface functions and callback functions */ |
||||
#if !defined AMXAPI |
||||
#if defined STDECL |
||||
#define AMXAPI __stdcall |
||||
#elif defined CDECL |
||||
#define AMXAPI __cdecl |
||||
#else |
||||
#define AMXAPI |
||||
#endif |
||||
#endif |
||||
#if !defined AMXEXPORT |
||||
#define AMXEXPORT |
||||
#endif |
||||
|
||||
/* File format version Required AMX version
|
||||
* 0 (original version) 0 |
||||
* 1 (opcodes JUMP.pri, SWITCH and CASETBL) 1 |
||||
* 2 (compressed files) 2 |
||||
* 3 (public variables) 2 |
||||
* 4 (opcodes SWAP.pri/alt and PUSHADDR) 4 |
||||
* 5 (tagnames table) 4 |
||||
* 6 (reformatted header) 6 |
||||
* 7 (name table, opcodes SYMTAG & SYSREQ.D) 7 |
||||
*/ |
||||
#define CUR_FILE_VERSION 7 /* current file version; also the current AMX version */ |
||||
#define MIN_FILE_VERSION 6 /* lowest supported file format version for the current AMX version */ |
||||
#define MIN_AMX_VERSION 7 /* minimum AMX version needed to support the current file format */ |
||||
|
||||
#if !defined CELL_TYPE |
||||
#define CELL_TYPE |
||||
#if defined(BIT16) |
||||
typedef uint16_t ucell; /* only for type casting */ |
||||
typedef int16_t cell; |
||||
#else |
||||
typedef uint32_t ucell; |
||||
typedef int32_t cell; |
||||
#endif |
||||
#endif |
||||
|
||||
struct tagAMX; |
||||
typedef cell (AMX_NATIVE_CALL *AMX_NATIVE)(struct tagAMX *amx, cell *params); |
||||
typedef int (AMXAPI *AMX_CALLBACK)(struct tagAMX *amx, cell index, |
||||
cell *result, cell *params); |
||||
typedef int (AMXAPI *AMX_DEBUG)(struct tagAMX *amx); |
||||
#if !defined _FAR |
||||
#define _FAR |
||||
#endif |
||||
|
||||
#if defined _MSC_VER |
||||
#pragma warning(disable:4103) /* disable warning message 4103 that complains |
||||
* about pragma pack in a header file */ |
||||
#pragma warning(disable:4100) /* "'%$S' : unreferenced formal parameter" */ |
||||
#endif |
||||
|
||||
/* Some compilers do not support the #pragma align, which should be fine. Some
|
||||
* compilers give a warning on unknown #pragmas, which is not so fine... |
||||
*/ |
||||
#if defined SN_TARGET_PS2 || defined __GNUC__ |
||||
#define AMX_NO_ALIGN |
||||
#endif |
||||
|
||||
#if defined __GNUC__ |
||||
#define PACKED __attribute__((packed)) |
||||
#else |
||||
#define PACKED |
||||
#endif |
||||
|
||||
#if !defined AMX_NO_ALIGN |
||||
#if defined LINUX |
||||
#pragma pack(1) /* structures must be packed (byte-aligned) */ |
||||
#else |
||||
#pragma pack(push) |
||||
#pragma pack(1) /* structures must be packed (byte-aligned) */ |
||||
#if defined __TURBOC__ |
||||
#pragma option -a- /* "pack" pragma for older Borland compilers */ |
||||
#endif |
||||
#endif |
||||
#endif |
||||
|
||||
typedef struct { |
||||
char _FAR *name PACKED; |
||||
AMX_NATIVE func PACKED; |
||||
} AMX_NATIVE_INFO PACKED; |
||||
|
||||
#define AMX_USERNUM 4 |
||||
#define sEXPMAX 19 /* maximum name length for file version <= 6 */ |
||||
#define sNAMEMAX 31 /* maximum name length of symbol name */ |
||||
|
||||
typedef struct tagAMX_FUNCSTUB { |
||||
uint32_t address PACKED; |
||||
char name[sEXPMAX+1] PACKED; |
||||
} AMX_FUNCSTUB PACKED; |
||||
|
||||
/* The AMX structure is the internal structure for many functions. Not all
|
||||
* fields are valid at all times; many fields are cached in local variables. |
||||
*/ |
||||
typedef struct tagAMX { |
||||
unsigned char _FAR *base PACKED; /* points to the AMX header ("amxhdr") plus the code, optionally also the data */ |
||||
unsigned char _FAR *data PACKED; /* points to separate data+stack+heap, may be NULL */ |
||||
AMX_CALLBACK callback PACKED; |
||||
AMX_DEBUG debug PACKED; /* debug callback */ |
||||
/* for external functions a few registers must be accessible from the outside */ |
||||
cell cip PACKED; /* instruction pointer: relative to base + amxhdr->cod */ |
||||
cell frm PACKED; /* stack frame base: relative to base + amxhdr->dat */ |
||||
cell hea PACKED; /* top of the heap: relative to base + amxhdr->dat */ |
||||
cell hlw PACKED; /* bottom of the heap: relative to base + amxhdr->dat */ |
||||
cell stk PACKED; /* stack pointer: relative to base + amxhdr->dat */ |
||||
cell stp PACKED; /* top of the stack: relative to base + amxhdr->dat */ |
||||
int flags PACKED; /* current status, see amx_Flags() */ |
||||
/* for assertions and debug hook */ |
||||
cell curline PACKED; |
||||
cell curfile PACKED; |
||||
int dbgcode PACKED; |
||||
cell dbgaddr PACKED; |
||||
cell dbgparam PACKED; |
||||
char _FAR *dbgname PACKED; |
||||
/* user data */ |
||||
long usertags[AMX_USERNUM] PACKED; |
||||
void _FAR *userdata[AMX_USERNUM] PACKED; |
||||
/* native functions can raise an error */ |
||||
int error PACKED; |
||||
/* the sleep opcode needs to store the full AMX status */ |
||||
cell pri PACKED; |
||||
cell alt PACKED; |
||||
cell reset_stk PACKED; |
||||
cell reset_hea PACKED; |
||||
cell _FAR *syscall_d PACKED; /* relocated value/address for the SYSCALL.D opcode */ |
||||
#if defined JIT |
||||
/* support variables for the JIT */ |
||||
int reloc_size PACKED; /* required temporary buffer for relocations */ |
||||
long code_size PACKED; /* estimated memory footprint of the native code */ |
||||
#endif |
||||
} AMX PACKED; |
||||
|
||||
/* The AMX_HEADER structure is both the memory format as the file format. The
|
||||
* structure is used internaly. |
||||
*/ |
||||
typedef struct tagAMX_HEADER { |
||||
int32_t size PACKED; /* size of the "file" */ |
||||
uint16_t magic PACKED; /* signature */ |
||||
char file_version PACKED; /* file format version */ |
||||
char amx_version PACKED; /* required version of the AMX */ |
||||
int16_t flags PACKED; |
||||
int16_t defsize PACKED; /* size of a definition record */ |
||||
int32_t cod PACKED; /* initial value of COD - code block */ |
||||
int32_t dat PACKED; /* initial value of DAT - data block */ |
||||
int32_t hea PACKED; /* initial value of HEA - start of the heap */ |
||||
int32_t stp PACKED; /* initial value of STP - stack top */ |
||||
int32_t cip PACKED; /* initial value of CIP - the instruction pointer */ |
||||
int32_t publics PACKED; /* offset to the "public functions" table */ |
||||
int32_t natives PACKED; /* offset to the "native functions" table */ |
||||
int32_t libraries PACKED; /* offset to the table of libraries */ |
||||
int32_t pubvars PACKED; /* the "public variables" table */ |
||||
int32_t tags PACKED; /* the "public tagnames" table */ |
||||
int32_t nametable PACKED; /* name table, file version 7 only */ |
||||
} AMX_HEADER PACKED; |
||||
#define AMX_MAGIC 0xf1e0 |
||||
|
||||
enum { |
||||
AMX_ERR_NONE, |
||||
/* reserve the first 15 error codes for exit codes of the abstract machine */ |
||||
AMX_ERR_EXIT, /* forced exit */ |
||||
AMX_ERR_ASSERT, /* assertion failed */ |
||||
AMX_ERR_STACKERR, /* stack/heap collision */ |
||||
AMX_ERR_BOUNDS, /* index out of bounds */ |
||||
AMX_ERR_MEMACCESS, /* invalid memory access */ |
||||
AMX_ERR_INVINSTR, /* invalid instruction */ |
||||
AMX_ERR_STACKLOW, /* stack underflow */ |
||||
AMX_ERR_HEAPLOW, /* heap underflow */ |
||||
AMX_ERR_CALLBACK, /* no callback, or invalid callback */ |
||||
AMX_ERR_NATIVE, /* native function failed */ |
||||
AMX_ERR_DIVIDE, /* divide by zero */ |
||||
AMX_ERR_SLEEP, /* go into sleepmode - code can be restarted */ |
||||
|
||||
AMX_ERR_MEMORY = 16, /* out of memory */ |
||||
AMX_ERR_FORMAT, /* invalid file format */ |
||||
AMX_ERR_VERSION, /* file is for a newer version of the AMX */ |
||||
AMX_ERR_NOTFOUND, /* function not found */ |
||||
AMX_ERR_INDEX, /* invalid index parameter (bad entry point) */ |
||||
AMX_ERR_DEBUG, /* debugger cannot run */ |
||||
AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ |
||||
AMX_ERR_USERDATA, /* unable to set user data field (table full) */ |
||||
AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ |
||||
AMX_ERR_PARAMS, /* parameter error */ |
||||
AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ |
||||
}; |
||||
|
||||
enum { |
||||
DBG_INIT, /* query/initialize */ |
||||
DBG_FILE, /* file number in curfile, filename in name */ |
||||
DBG_LINE, /* line number in curline, file number in curfile */ |
||||
DBG_SYMBOL, /* address in dbgaddr, class/type in dbgparam */ |
||||
DBG_CLRSYM, /* stack address below which locals should be removed. stack address in stk */ |
||||
DBG_CALL, /* function call, address jumped to in dbgaddr */ |
||||
DBG_RETURN, /* function returns */ |
||||
DBG_TERMINATE, /* program ends, code address in dbgaddr, reason in dbgparam */ |
||||
DBG_SRANGE, /* symbol size and dimensions (arrays); level in dbgaddr (!); length in dbgparam */ |
||||
DBG_SYMTAG, /* tag of the most recent symbol (if non-zero), tag in dbgparam */ |
||||
}; |
||||
|
||||
#define AMX_FLAG_CHAR16 0x01 /* characters are 16-bit */ |
||||
#define AMX_FLAG_DEBUG 0x02 /* symbolic info. available */ |
||||
#define AMX_FLAG_COMPACT 0x04 /* compact encoding */ |
||||
#define AMX_FLAG_BIGENDIAN 0x08 /* big endian encoding */ |
||||
#define AMX_FLAG_NOCHECKS 0x10 /* no array bounds checking */ |
||||
#define AMX_FLAG_BROWSE 0x4000 /* browsing/relocating or executing */ |
||||
#define AMX_FLAG_RELOC 0x8000 /* jump/call addresses relocated */ |
||||
|
||||
#define AMX_EXEC_MAIN -1 /* start at program entry point */ |
||||
#define AMX_EXEC_CONT -2 /* continue from last address */ |
||||
|
||||
#define AMX_USERTAG(a,b,c,d) ((a) | ((b)<<8) | ((long)(c)<<16) | ((long)(d)<<24)) |
||||
|
||||
#define AMX_EXPANDMARGIN 64 |
||||
|
||||
/* for native functions that use floating point parameters, the following
|
||||
* two macros are convenient for casting a "cell" into a "float" type _without_ |
||||
* changing the bit pattern |
||||
*/ |
||||
#define amx_ftoc(f) ( * ((cell*)&f) ) /* float to cell */ |
||||
#define amx_ctof(c) ( * ((float*)&c) ) /* cell to float */ |
||||
|
||||
#define amx_StrParam(amx,param,result) { \ |
||||
cell *amx_cstr_; int amx_length_; \
|
||||
amx_GetAddr((amx), (param), &amx_cstr_); \
|
||||
amx_StrLen(amx_cstr_, &amx_length_); \
|
||||
if (amx_length_ > 0 && \
|
||||
((result) = (char*)alloca(amx_length_ + 1)) != NULL) \
|
||||
amx_GetString((result), amx_cstr_); \
|
||||
else (result) = NULL; \
|
||||
} |
||||
|
||||
uint16_t * AMXAPI amx_Align16(uint16_t *v); |
||||
uint32_t * AMXAPI amx_Align32(uint32_t *v); |
||||
int AMXAPI amx_Allot(AMX *amx, int cells, cell *amx_addr, cell **phys_addr); |
||||
int AMXAPI amx_Callback(AMX *amx, cell index, cell *result, cell *params); |
||||
int AMXAPI amx_Cleanup(AMX *amx); |
||||
int AMXAPI amx_Clone(AMX *amxClone, AMX *amxSource, void *data); |
||||
int AMXAPI amx_Debug(AMX *amx); /* default debug procedure, does nothing */ |
||||
int AMXAPI amx_Exec(AMX *amx, cell *retval, int index, int numparams, ...); |
||||
int AMXAPI amx_Execv(AMX *amx, cell *retval, int index, int numparams, cell params[]); |
||||
int AMXAPI amx_FindNative(AMX *amx, char *name, int *index); |
||||
int AMXAPI amx_FindPublic(AMX *amx, char *funcname, int *index); |
||||
int AMXAPI amx_FindPubVar(AMX *amx, char *varname, cell *amx_addr); |
||||
int AMXAPI amx_FindTagId(AMX *amx, cell tag_id, char *tagname); |
||||
int AMXAPI amx_Flags(AMX *amx,uint16_t *flags); |
||||
int AMXAPI amx_GetAddr(AMX *amx,cell amx_addr,cell **phys_addr); |
||||
int AMXAPI amx_GetNative(AMX *amx, int index, char *funcname); |
||||
int AMXAPI amx_GetPublic(AMX *amx, int index, char *funcname); |
||||
int AMXAPI amx_GetPubVar(AMX *amx, int index, char *varname, cell *amx_addr); |
||||
int AMXAPI amx_GetString(char *dest,cell *source); |
||||
int AMXAPI amx_GetTag(AMX *amx, int index, char *tagname, cell *tag_id); |
||||
int AMXAPI amx_GetUserData(AMX *amx, long tag, void **ptr); |
||||
int AMXAPI amx_Init(AMX *amx, void *program); |
||||
int AMXAPI amx_InitJIT(AMX *amx, void *reloc_table, void *native_code); |
||||
int AMXAPI amx_MemInfo(AMX *amx, long *codesize, long *datasize, long *stackheap); |
||||
int AMXAPI amx_NameLength(AMX *amx, int *length); |
||||
AMX_NATIVE_INFO * AMXAPI amx_NativeInfo(char *name,AMX_NATIVE func); |
||||
int AMXAPI amx_NumNatives(AMX *amx, int *number); |
||||
int AMXAPI amx_NumPublics(AMX *amx, int *number); |
||||
int AMXAPI amx_NumPubVars(AMX *amx, int *number); |
||||
int AMXAPI amx_NumTags(AMX *amx, int *number); |
||||
int AMXAPI amx_RaiseError(AMX *amx, int error); |
||||
int AMXAPI amx_Register(AMX *amx, AMX_NATIVE_INFO *nativelist, int number); |
||||
int AMXAPI amx_Release(AMX *amx, cell amx_addr); |
||||
int AMXAPI amx_SetCallback(AMX *amx, AMX_CALLBACK callback); |
||||
int AMXAPI amx_SetDebugHook(AMX *amx, AMX_DEBUG debug); |
||||
int AMXAPI amx_SetString(cell *dest, char *source, int pack); |
||||
int AMXAPI amx_SetUserData(AMX *amx, long tag, void *ptr); |
||||
char * AMXAPI amx_StrError(int errnum); |
||||
int AMXAPI amx_StrLen(cell *cstring, int *length); |
||||
|
||||
|
||||
#if !defined AMX_NO_ALIGN |
||||
#if defined LINUX |
||||
#pragma pack() /* reset default packing */ |
||||
#else |
||||
#pragma pack(pop) /* reset previous packing */ |
||||
#endif |
||||
#endif |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif /* __AMX_H */ |
@ -0,0 +1,84 @@ |
||||
/* __MSDOS__ set when compiling for DOS (not Windows)
|
||||
* _Windows set when compiling for any version of Microsoft Windows |
||||
* __WIN32__ set when compiling for Windows95 or WindowsNT (32 bit mode) |
||||
* __32BIT__ set when compiling in 32-bit "flat" mode (DOS or Windows) |
||||
* |
||||
* Copyright 1998-2003, ITB CompuPhase, The Netherlands. |
||||
* info@compuphase.com. |
||||
*/ |
||||
|
||||
#ifndef _OSDEFS_H |
||||
#define _OSDEFS_H |
||||
|
||||
/* Every compiler uses different "default" macros to indicate the mode
|
||||
* it is in. Throughout the source, we use the Borland C++ macros, so |
||||
* the macros of Watcom C/C++ and Microsoft Visual C/C++ are mapped to |
||||
* those of Borland C++. |
||||
*/ |
||||
#if defined(__WATCOMC__) |
||||
# if defined(__WINDOWS__) || defined(__NT__) |
||||
# define _Windows 1 |
||||
# endif |
||||
# ifdef __386__ |
||||
# define __32BIT__ 1 |
||||
# endif |
||||
# if defined(_Windows) && defined(__32BIT__) |
||||
# define __WIN32__ 1 |
||||
# endif |
||||
#elif defined(_MSC_VER) |
||||
# if defined(_WINDOWS) || defined(_WIN32) |
||||
# define _Windows 1 |
||||
# endif |
||||
# ifdef _WIN32 |
||||
# define __WIN32__ 1 |
||||
# define __32BIT__ 1 |
||||
# endif |
||||
#endif |
||||
|
||||
#if defined LINUX |
||||
#include <endian.h> |
||||
#endif |
||||
|
||||
/* Linux NOW has these */ |
||||
#if !defined BIG_ENDIAN |
||||
#define BIG_ENDIAN 4321 |
||||
#endif |
||||
#if !defined LITTLE_ENDIAN |
||||
#define LITTLE_ENDIAN 1234 |
||||
#endif |
||||
|
||||
/* educated guess, BYTE_ORDER is undefined, i386 is common => little endian */ |
||||
#if !defined BYTE_ORDER |
||||
#if defined UCLINUX |
||||
#define BYTE_ORDER BIG_ENDIAN |
||||
#else |
||||
#define BYTE_ORDER LITTLE_ENDIAN |
||||
#endif |
||||
#endif |
||||
|
||||
/* _MAX_PATH is sometimes called differently and it may be in limits.h instead
|
||||
* stdio.h. |
||||
*/ |
||||
#if !defined _MAX_PATH |
||||
/* not defined, perhaps stdio.h was not included */ |
||||
#include <stdio.h> |
||||
#if !defined _MAX_PATH |
||||
/* still undefined, try a common alternative name */ |
||||
#if defined MAX_PATH |
||||
#define _MAX_PATH MAX_PATH |
||||
#else |
||||
/* no _MAX_PATH and no MAX_PATH, perhaps it is in limits.h */ |
||||
#include <limits.h> |
||||
#if defined PATH_MAX |
||||
#define _MAX_PATH PATH_MAX |
||||
#elif defined _POSIX_PATH_MAX |
||||
#define _MAX_PATH _POSIX_PATH_MAX |
||||
#else |
||||
/* everything failed, actually we have a problem here... */ |
||||
#define _MAX_PATH 1024 |
||||
#endif |
||||
#endif |
||||
#endif |
||||
#endif |
||||
|
||||
#endif /* _OSDEFS_H */ |