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:
committed by
Martin Baulig
parent
f918792bb6
commit
b60b7fd201
2
scripts/.cvsignore
Normal file
2
scripts/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Makefile.in
|
||||||
|
Makefile
|
5
scripts/ChangeLog
Normal file
5
scripts/ChangeLog
Normal 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
1
scripts/Makefile.am
Normal file
@@ -0,0 +1 @@
|
|||||||
|
EXTRA_DIST = c_types.pl
|
49
scripts/c_types.pl
Normal file
49
scripts/c_types.pl
Normal 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;
|
Reference in New Issue
Block a user