New file. This is included in `$(top_srcdir)/lib/lib.pl'.

1999-11-28  Martin Baulig  <martin@home-of-linux.org>

	* c_types.pl: New file.
	This is included in `$(top_srcdir)/lib/lib.pl'.
This commit is contained in:
Martin Baulig
1999-11-28 16:20:16 +00:00
committed by Martin Baulig
parent f918792bb6
commit b60b7fd201
4 changed files with 57 additions and 0 deletions

2
scripts/.cvsignore Normal file
View File

@@ -0,0 +1,2 @@
Makefile.in
Makefile

5
scripts/ChangeLog Normal file
View File

@@ -0,0 +1,5 @@
1999-11-28 Martin Baulig <martin@home-of-linux.org>
* c_types.pl: New file.
This is included in `$(top_srcdir)/lib/lib.pl'.

1
scripts/Makefile.am Normal file
View File

@@ -0,0 +1 @@
EXTRA_DIST = c_types.pl

49
scripts/c_types.pl Normal file
View File

@@ -0,0 +1,49 @@
# Internal functions
my $c_strlen_func = sub {
local ($_) = @_;
return "strlen ($_) + sizeof (unsigned) + 1";
};
my $c_marshal_func = sub {
my ($type, $param, $indent) = @_;
my $code = '';
$code .= sprintf ("%s_LIBGTOP_SEND_temp_len = strlen (%s)+1;\n",
$indent, $param);
$code .= sprintf ("%smemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n",
$indent, "&_LIBGTOP_SEND_temp_len", "sizeof (unsigned)");
$code .= sprintf ("%s_LIBGTOP_SEND_ptr += sizeof (unsigned);\n", $indent);
$code .= sprintf ("%smemcpy (_LIBGTOP_SEND_ptr, %s, %s);\n",
$indent, $param, "strlen ($param)+1");
$need_temp_len = 1;
return $code;
};
# Typeinfo array fields:
# ---------------------
# * C type name
# * Flag specifying whether we need to copy the parameter into temp storage
#
$typeinfo = {'long' => ['int64_t', 0],
'ulong' => ['u_int64_t', 0],
'pid_t' => ['pid_t', 0],
'int' => ['int', 0],
'retval' => ['int', 0],
'ushort' => ['unsigned short', 0],
'unsigned' => ['unsigned', 0],
'string' => ['const char *', 1],
};
$sizeof_funcs = {'string' => $c_strlen_func,
};
$marshal_funcs = {'string' => $c_marshal_func,
};
1;