benetonmovie -- you wouldn't be at all mad if I created my own database scripts in competition with yours would you? (maybe even benchmark it against yours?)
Why don't we work together?
But no lol, I wouldn't be mad...
Well sure, we can work together, if you can decipher the way I'm writing the database code. Here's a little taste of what I have:
id = database_create()
var b;
b = createbuffer();
writeint(1, b); //version
writeint(64, b); //end of file +1 pointer
writeint(0, b); //number of tables
writeint(0, b); //first table pointer
writeint(0, b); //last table pointer
writeint(0, b); //size of free space
writeint(0, b); //first free space pointer
writeint(0, b); //last free space pointer
writechars(string_repeat(chr(0),32), b); //reserved
return b;
//----------------------------------------------------------
database_destroy(id)
freebuffer(argument0);
//----------------------------------------------------------
mptr = database_allocate(id, size)
var _freespace, _this, _prev, _next, _size;
setpos(20, argument0);
_freespace = readint(argument0);
if (_freespace >= argument1)
{
_this = readint(argument0);
while (_this != 0)
{
setpos(_this, argument0);
_prev = readint(argument0);
_next = readint(argument0);
_size = readint(argument0);
if (_size >= argument1)
{
if (_size >= (argument1 + 12))
{
setpos(20, argument0);
writeint(_freespace - argument1, argument0);
_size -= argument1;
setpos(_this + 8, argument0);
writeint(_size, argument0);
_this += _size;
break;
}
setpos(20, argument0);
writeint(_freespace - _size, argument0);
if (_prev == 0)
{
setpos(24, argument0);
writeint(_next, argument0);
} else {
setpos(_prev + 4, argument0);
writeint(_next, argument0);
}
if (_next == 0)
{
setpos(28, argument0);
writeint(_prev, argument0);
} else {
setpos(_next, argument0);
writeint(_prev, argument0);
}
break;
}
_this = _next;
}
} else {
setpos(4, argument0);
_this = readint(argument0);
writeint(_this + argument1, argument0);
setpos(_this, argument0);
writechars(string_repeat(chr(0), argument1), argument0);
}
return _this;
//----------------------------------------------------------
database_addfree(id, mptr, size)
var _last, _freespace;
setpos(20, argument0);
_freespace = readint(argument0);
writeint(_freespace + argument2, argument0);
setpos(28, argument0);
_last = readint(argument0);
if (_last == 0)
{
setpos(24, argument0);
writeint(argument1, argument0);
} else {
setpos(_last + 4, argument0);
writeint(argument1, argument0);
}
setpos(argument1, argument0);
writeint(_last, argument0);
writeint(0, argument0);
writeint(argument2, argument0);
//----------------------------------------------------------
tloc = database_table_select(id, name)
var _this, _name, _cname;
_cname = string_lower(argument1);
setpos(12, argument0);
_this = readint(argument0);
while (_this != 0)
{
setpos(_this + 20, argument0);
_name = readstring(argument0);
if (_name == _cname) break;
setpos(_this + 4, argument0);
_this = readint(argument0);
}
return _this;As you can see, I'll be using 39dll....BUT...I am going to probably implement it directly into the 39dll itself and rerelease a new dll for all of this. I have the file format here if you understand formats:
header:
0 int version
4 int EOF+1 pointer
8 int tables
12 table* first
16 table* last
20 int freespace
24 free* first
28 free* last
32 32-byte expansion
table:
0 table* prev
4 table* next
8 int columns
12 column* first
16 column* last
20 zstring name
column:
0 column* prev
4 column* next
8 int type
12 int typelength
16 int flags
20 entry* first
24 entry* last
28 entry* orderfirst
32 entry* orderlast
36 entry* default
40 int incrementer
44 zstring name
entry:
0 column* parent
4 entry* prev
8 entry* next
12 entry* orderprev
16 entry* ordernext
20 entry* columnprev
24 entry* columnnext
28 ? data
free:
0 free* prev
4 free* next
8 int size
Similar to SQL, types can be: date, string, integer, ID (auto increment), etc. Flags can be: auto-incremented (ID is automatically set for this), ordered ascending/descending/none, not null, defaulted, etc. The entries are laid out in a grid fashion, this allows columns to be added without having to rewrite the entire file or be renamed/sorted, etc. etc. (you only have to change pointers). Let me know if this is something you'd be interested in working on with me.
Edited by sabriath, 28 May 2010 - 01:16 AM.