Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F3047386
stdlib.h.ts
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
stdlib.h.ts
View Options
import
{
arena
,
freedSet
,
die
}
from
'./memory.h'
;
export
type
ptr
=
number
;
export
type
union
=
'ptr'
|
'int'
|
'float'
|
'char*'
|
'unknown'
;
export
function
malloc
(
size
:
number
)
:
ptr
{
const
p
=
arena
.
brk
;
arena
.
brk
+=
size
;
for
(
let
i
=
0
;
i
<
size
;
i
++
)
freedSet
.
delete
(
p
+
i
);
return
p
;
}
export
function
dealloc
(
p
:
ptr
,
i
:
ptr
)
{
delete
arena
.
mem
[
p
+
i
];
freedSet
.
add
(
p
+
i
);
}
export
function
free
(
p
:
ptr
,
size
:
number
)
:
void
{
if
(
freedSet
.
has
(
p
))
die
(
p
,
'pointer being freed was not allocated'
);
for
(
let
i
=
0
;
i
<
size
;
i
++
)
dealloc
(
p
,
i
);
}
export
function
memcpy
(
dst
:
ptr
,
src
:
ptr
,
n
:
number
)
:
void
{
for
(
let
i
=
0
;
i
<
n
;
i
++
)
arena
.
mem
[
dst
+
i
]
=
arena
.
mem
[
src
+
i
];
}
export
interface
struct_def
<
T
extends
string
=
string
>
{
fields
:
Record
<
T
,
{
offset
:
number
;
type
:
union
}
>
;
size
:
number
;
}
export
function
typedef
<
T
extends
string
>
(
fields
:
{
name
:
T
;
type
:
union
}[])
:
struct_def
<
T
>
{
const
result
=
{}
as
Record
<
T
,
{
offset
:
number
;
type
:
union
}
>
;
fields
.
forEach
((
f
,
i
)
=>
{
result
[
f
.
name
]
=
{
offset
:
i
,
type
:
f
.
type
};
});
return
{
fields
:
result
,
size
:
fields.length
};
}
export
function
$
<
T
extends
string
>
(
def
:
struct_def
<
T
>
,
field
:
T
)
:
number
{
return
def
.
fields
[
field
].
offset
;
}
File Metadata
Details
Attached
Mime Type
application/javascript
Expires
Fri, Apr 3, 1:15 PM (2 d)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
520988
Default Alt Text
stdlib.h.ts (1 KB)
Attached To
Mode
rANT Ant
Attached
Detach File
Event Timeline
Log In to Comment