==== Description ====
Since I started programing with dark basic it always bothered me that you can't have
propper classes and objects as parameters and so on. So recently I tried to get something
together to compensate a little bit for this lack of features.
What I came up with are "VObjects". Variable objects.
==== VObject ( vo ) ====
The basic idea is to have objects with variable attributes so they can serve different
purposes. The attributes support all the datatypes dbp can handle.
Integer, Double Integer, Float, Double Float, String, Word, DWord, Byte
Also a Variant Datatype I implemented.
Attributes of a vo can be read via index, name or first/next.
==== Variant ====
In the context of my vobject system I implemented a variant datatype that supports
all the components of this system including filtering and sorting.
Regarding the sorting: Not all aspects of the variant are tested yet.
The variant supports all datatypes dbp can handle:
Integer, Double Integer, Float, Double Float, String, Word, DWord, Byte
Variants values can be get and set via the default functions.
==== VObject List ( vol ) ====
VObjects can be filtered and sorted in lists.
Filtering
Max Filter Statements per List: 254
Syntax: [Datatype][Attribute][Operator][Value or Attribute]
Operators:
Equal - "="
Smaller - "<"
Smaller/Equal - "<=", "=<"
Unequal - "!=", "=!"
Bigger - ">"
Bigger/Equal - ">=", "=>"
Exists - "?"
Examples:
"integer PosX >= 10"
"float Rotation >= 3.5; float Rotation <= 10.5"
"string Name = John"
"integer Size => 10; byte flag != 3"
"byte flag?"
Sorting
Max Sorter Statements per List: 254
Syntax: [Sorttype][Attribute] | [Attribute][Sorttype]
Examples:
"asc Priority"
"desc Difference; Distance asc"
Code examples:
SET DISPLAY MODE 800, 800, 32
SET WINDOW ON
SYNC ON
SYNC RATE 0
GOSUB vo_init
vol = create_some_vo()
vo = vol_first_vo(vol)
WHILE vo > 0
PRINT vo; " var1: '"; vo_get_string(vo, "var1"); "' var2: '"; vo_get_byte(vo, "var2"); "' var3: '"; vo_get_integer(vo, "var3"); "'"
vo = vol_next_vo(vol)
ENDWHILE
SYNC: SYNC
NICE WAIT KEY
END
FUNCTION create_some_vo()
LOCAL nvo AS DWORD
LOCAL vo AS DWORD
LOCAL vol AS DWORD
FOR nvo = 0 TO 29
vo = vo_create("vo")
vo_add_string(vo, "var1", STR$(cy)) `6 states
vo_add_byte(vo, "var2", cx) `4 states
vo_add_variant(vo, "var3", cz, 0, 0.0, 0.0, 0, 0, 0, "") `10 states
vo_add_byte(vo, "flag", 3)
INC cy, 100: IF cy = 600 THEN cy = 0
INC cx, 10: IF cx = 40 THEN cx = 0
INC cz, 1000: IF cz = 10000 THEN cz = 0
NEXT nvo
EXITFUNCTION vol_create_s("vol", "byte flag = 3", "asc var1; var2 desc; var3 asc", vo_FALSE, vo_TRUE, vo_FALSE, vo_TRUE)
ENDFUNCTION vo_FALSE
==== Object Monitoring ====
With the help of shared memory I was able to create an external application that can stream over
the objects created in the vobject system. It should work with all applications that use my
vobject system. Well, at least as long as there are no changes made with the shared memory values.
I will rework this feature and use a network connection instead of shared memory.
==== Concept ====
The different objects:
Objetcts:
VObject vo the basic vobjects
VObject Attribute voa attribute object `-> linked in vo
VObject Text vot text object `-> linked in vo, voa, vol, vof, vos
VObject List vol basic list object
VObject Filter vof filter object `-> linked in vol
VObject Sorter vos sorter object `-> linked in vol
"Libraries":
VObject Shared Memory vosm provides functions to stream vo, voa, vot, vol, vof and vos objects to another application
VObject Shared Memory GUI vosm_gui Provides functionality of a gui to monitor objects ( included in monitor source code )
I'm doing all the operations directly inside the memory ... so don't expect the use of types here.
This turned out to be pretty efficiently and fast.
The Text values for VObjects are stored outside of the object so I can have fixed values for the string values inside of the VObjects.
Text values with the same Text share the same vot in memory.
When strings are involved I'm not comparing the strings but the memory that holds them.
==== Other examples ====
Simple start of a button-management for a gui.
This isn't optimized but working! Runs with ~3000 FPS for me.
SET DISPLAY MODE 800, 600, 32
SET WINDOW ON
SYNC ON
SYNC RATE 0
BACKDROP ON
GOSUB vo_init
D3D_INIT
D3D_FONT 1, "Arial", 10, 0, 0, 0
running = vo_TRUE
buttons = vol_create_s("Buttons", "byte IsButton = 1", "", vo_FALSE, vo_TRUE, vo_FALSE, vo_FALSE)
create_button("Button1", "Test1", 50, 50, 100, 30)
create_button("Button2", "Test2", 250, 50, 100, 30)
create_button("Button1", "Test1", 50, 100, 100, 30)
WHILE running
button = vol_first_vo(buttons)
WHILE button > 0
render_button(button)
button = vol_next_vo(buttons)
ENDWHILE
IF KEYSTATE(28)
running = 0
ENDIF
TEXT 10, 10, STR$(SCREEN FPS())
SYNC
ENDWHILE
END
FUNCTION render_button(button AS DWORD)
IF vo_exist(button)
D3D_BOX vo_get_word(button, "Left"), vo_get_word(button, "Top"), vo_get_word(button, "Right"), vo_get_word(button, "Bottom"), D3D_RGBA(128, 128, 128, 255)
D3D_STARTTEXT
D3D_TEXT 1, vo_get_word(button, "Left") + 5, vo_get_word(button, "Top") + 5, 0, vo_get_string(button, "Caption")
D3D_ENDTEXT
ENDIF
ENDFUNCTION
FUNCTION create_button(Name$ AS STRING, Caption$ AS STRING, PosX AS WORD, PosY AS WORD, SizeX AS WORD, SizeY AS WORD)
LOCAL button AS DWORD
LOCAL vol AS DWORD
IF SizeX > 0 AND SizeY > 0
button = vo_create(Name$)
vo_add_word(button, "Left", PosX)
vo_add_word(button, "Top", PosY)
vo_add_word(button, "Right", PosX + SizeX)
vo_add_word(button, "Bottom", PosY + SizeY)
vo_add_string(button, "Caption", Caption$)
vo_add_byte(button, "IsButton", vo_TRUE)
EXITFUNCTION button
ENDIF
ENDFUNCTION vo_FALSE
requires:
D3D Funcs
Get available resolutions
SET DISPLAY MODE 800, 600, 32
SET WINDOW ON
SYNC ON
SYNC RATE 0
GOSUB vo_init
time = TIMER()
vol = get_resolutions() `<- Get a vol ( List ) with all resolutions
vo = vol_first_vo(vol) `Cycle through resolutions and print them
WHILE vo > 0
PRINT vo_get_word(vo, "width"); "x"; vo_get_word(vo, "height"); "x"; vo_get_byte(vo, "depth")
vo = vol_next_vo(vol)
ENDWHILE
time2 = TIMER() - time
PRINT "Done in "; time2; " ms." `Print commands are included in this time!
SYNC: SYNC
WAIT KEY
GOSUB vo_deinit
END
FUNCTION get_resolutions()
`This function creates a vo for each available resolution
`but it will actually return a vol object
LOCAL res AS DWORD
LOCAL vo AS DWORD
LOCAL vol AS DWORD
PERFORM CHECKLIST FOR DISPLAY MODES
IF CHECKLIST QUANTITY() > 0
FOR res = 1 TO CHECKLIST QUANTITY()
vo = vo_create("res" + STR$(res))
vo_add_word(vo, "width", CHECKLIST VALUE A(res))
vo_add_word(vo, "height", CHECKLIST VALUE B(res))
vo_add_byte(vo, "depth", CHECKLIST VALUE C(res))
vo_add_byte(vo, "IsResolution", 1)
NEXT res
`Create a list containing all vo objects with the attribute "IsResolution"
EXITFUNCTION vol_create_s("resolutions", "byte IsResolution = 1", "", vo_TRUE, vo_FALSE, vo_FALSE, vo_FALSE)
ENDIF
ENDFUNCTION vo_FALSE
==== Functions ====
VObject ( vo )
dword vo = vo_create(Name$ AS STRING)
dword vo = vo_create_b(Name$ AS STRING, Buffer AS DWORD, BufferStep AS DWORD)
dword vo = vo_create_sp(StrPtr AS DWORD, StrSize AS DWORD)
dword vo = vo_create_spb(StrPtr AS DWORD, StrSize AS DWORD, Buffer AS DWORD, BufferStep AS DWORD)
dword Count = vo_clear(bForce AS BOOLEAN)
boolean Deleted = vo_delete(vo AS DWORD, bForce AS BOOLEAN)
boolean Deleted = vo_hdelete(vo AS DWORD)
boolean Deleted = vo_sdelete(vo AS DWORD)
boolean Exists = vo_exist(vo AS DWORD)
dword vo = vo_id_create()
boolean Increased = vo_inc(vo AS DWORD, sInc AS DWORD)
boolean Add = vo_add(vo AS DWORD)
boolean Finish = vo_add_finish(vo AS DWORD, voa AS DWORD)
dword voa = vo_add_integer(vo AS DWORD, Name$ AS STRING, Value AS INTEGER)
dword voa = vo_add_double_integer(vo AS DWORD, Name$ AS STRING, Value AS DOUBLE INTEGER)
dword voa = vo_add_float(vo AS DWORD, Name$ AS STRING, Value# AS FLOAT)
dword voa = vo_add_double_float(vo AS DWORD, Name$ AS STRING, Value# AS DOUBLE FLOAT)
dword voa = vo_add_word(vo AS DWORD, Name$ AS STRING, Value AS WORD)
dword voa = vo_add_dword(vo AS DWORD, Name$ AS STRING, Value AS DWORD)
dword voa = vo_add_byte(vo AS DWORD, Name$ AS STRING, Value AS BYTE)
dword voa = vo_add_string(vo AS DWORD, Name$ AS STRING, Value$ AS STRING)
dword voa = vo_add_variant(vo AS DWORD, Name$ AS STRING, iValue AS INTEGER, diValue AS DOUBLE INTEGER, fValue# AS FLOAT, dfValue# AS FLOAT, wValue AS WORD, dwValue AS DWORD, bValue AS BYTE, Value$ AS STRING)
dword voa = vo_get_nth_voa(vo AS DWORD, Attr AS WORD)
dword voa = vo_get_voa_v(vo AS DWORD, vot AS DWORD)
dword voa = vo_get_voa_s(vo AS DWORD, Name$ AS STRING)
dword voa = vo_get_voa_sp(vo AS DWORD, StrPtr AS DWORD, StrSize AS DWORD)
dword voa = vo_voa(vo AS DWORD)
dword voa = vo_first_voa(vo AS DWORD)
dword voa = vo_next_voa(vo AS DWORD)
dword voa = vo_prev_voa(vo AS DWORD)
dword voa = vo_last_voa(vo AS DWORD)
integer Value = vo_get_nth_integer(vo AS DWORD, Attr AS WORD)
double integer Value = vo_get_nth_double_integer(vo AS DWORD, Attr AS WORD)
float Value = vo_get_nth_float(vo AS DWORD, Attr AS WORD)
double float Value = vo_get_nth_double_float(vo AS DWORD, Attr AS WORD)
word Value = vo_get_nth_word(vo AS DWORD, Attr AS WORD)
dword Value = vo_get_nth_dword(vo AS DWORD, Attr AS WORD)
byte Value = vo_get_nth_byte(vo AS DWORD, Attr AS WORD)
string Value = vo_get_nth_string(vo AS DWORD, Attr AS WORD)
boolean Success = vo_set_nth_integer(vo AS DWORD, Attr AS WORD, Value AS INTEGER)
boolean Success = vo_set_nth_double_integer(vo AS DWORD, Attr AS WORD, Value AS DOUBLE INTEGER)
boolean Success = vo_set_nth_float(vo AS DWORD, Attr AS WORD, Value# AS FLOAT)
boolean Success = vo_set_nth_double_float(vo AS DWORD, Attr AS WORD, Value# AS DOUBLE FLOAT)
boolean Success = vo_set_nth_word(vo AS DWORD, Attr AS WORD, Value AS WORD)
boolean Success = vo_set_nth_dword(vo AS DWORD, Attr AS WORD, Value AS DWORD)
boolean Success = vo_set_nth_byte(vo AS DWORD, Attr AS WORD, Value AS BYTE)
boolean Success = vo_set_nth_string(vo AS DWORD, Attr AS WORD, Value$ AS STRING)
integer Value = vo_get_integer(vo AS DWORD, Name$ AS STRING)
double integer Value = vo_get_double_integer(vo AS DWORD, Name$ AS STRING)
float Value = vo_get_float(vo AS DWORD, Name$ AS STRING)
double float Value = vo_get_double_float(vo AS DWORD, Name$ AS STRING)
word Value = vo_get_word(vo AS DWORD, Name$ AS STRING)
dword Value = vo_get_dword(vo AS DWORD, Name$ AS STRING)
byte Value = vo_get_byte(vo AS DWORD, Name$ AS STRING)
string Value = vo_get_string(vo AS DWORD, Name$ AS STRING)
dword vot = vo_get_string_vot(vo AS DWORD, Name$ AS STRING)
boolean Success = vo_set_integer(vo AS DWORD, Name$ AS STRING, Value AS INTEGER)
boolean Success = vo_set_double_integer(vo AS DWORD, Name$ AS STRING, Value AS DOUBLE INTEGER)
boolean Success = vo_set_float(vo AS DWORD, Name$ AS STRING, Value AS FLOAT)
boolean Success = vo_set_double_float(vo AS DWORD, Name$ AS STRING, Value AS DOUBLE FLOAT)
boolean Success = vo_set_word(vo AS DWORD, Name$ AS STRING, Value AS WORD)
boolean Success = vo_set_dword(vo AS DWORD, Name$ AS STRING, Value AS DWORD)
boolean Success = vo_set_byte(vo AS DWORD, Name$ AS STRING, Value AS BYTE)
boolean Success = vo_set_string(vo AS DWORD, Name$ AS STRING, Value$ AS STRING)
boolean Success = vo_set_string_v(vo AS DWORD, Name$ AS STRING, vot AS DWORD)
boolean Success = vo_debug(Path$ AS STRING)
dword vot = vo_get_name_vot(vo AS DWORD) `1.02
vo_set_name_vot(vo AS DWORD, vot AS DWORD) `1.02
dword Size = vo_get_size(vo AS DWORD) `1.02
vo_set_size(vo AS DWORD, Size AS DWORD) `1.02
dword mSize = vo_get_msize(vo AS DWORD) `1.02
vo_set_msize(vo AS DWORD, mSize AS DWORD) `1.02
dword mSizeStep = vo_get_msize_step(vo AS DWORD) `1.02
vo_set_msize_step(vo AS DWORD, mSizeStep AS DWORD) `1.02
word AttrCount = vo_get_attr_count(vo AS DWORD) `1.02
vo_set_attr_count(vo AS DWORD, AttrCount AS WORD) `1.02
word Attr = vo_get_attr(vo AS DWORD) `1.02
vo_set_attr(vo AS DWORD, Attr AS WORD) `1.02
dword Ptr = vo_get_attr_ptr(vo AS DWORD) `1.02
vo_set_attr_ptr(vo AS DWORD, AttrPtr AS DWORD) `1.02
byte Active = vo_get_active(vo AS DWORD) `1.02
vo_set_active(vo AS DWORD, Active AS BYTE) `1.02
VObject Text ( vot )
dword vot = vot_create_s(String$ AS STRING)
dword vot = vot_create_sp(StringPtr AS DWORD, StringSize AS DWORD)
dword vot = vot_get_s(String$ AS STRING)
dword vot = vot_get_sp(StringPtr AS DWORD, StringSize AS DWORD)
dword Count = vot_clear(bForce AS BOOLEAN)
boolean Deleted = vot_delete(vot AS DWORD, bForce AS BOOLEAN)
boolean Deleted = vot_sdelete(vot AS DWORD)
boolean Deleted = vot_hdelete(vot AS DWORD)
boolean Exists = vot_exist(vot AS DWORD)
dword vot = vot_id_create()
boolean Success = vot_debug(Path$ AS STRING)
dword Count = vot_get_count(vot AS DWORD) `1.02
vot_set_count(vot AS DWORD, Count AS DWORD) `1.02
dword Size = vot_get_size(vot AS DWORD) `1.02
vot_set_size(vot AS DWORD, Size AS DWORD) `1.02
dword Size = vot_get_string_size(vot AS DWORD) `1.02
vot_set_string_size(vot AS DWORD, StringSize AS DWORD) `1.02
string Value$ = vot_get_string$(vot AS DWORD) `1.02
dword Ptr = vot_get_string_ptr(vot AS DWORD) `1.02
VObject Attribute ( voa )
dword voa = voa_create(Name$ AS STRING, Datatype AS BYTE)
dword Count = voa_clear(bForce AS BOOLEAN)
boolean Deleted = voa_delete(voa AS DWORD, bForce AS BOOLEAN)
boolean Deleted = voa_hdelete(voa AS DWORD)
boolean Deleted = voa_sdelete(voa AS DWORD)
boolean Exists = voa_exist(voa AS DWORD)
boolean Identical = voa_compare(voa AS DWORD, vof AS DWORD, voa2 AS DWORD)
boolean Identical = voa_compare_integer(voa AS DWORD, vof AS DWORD, voa2 AS DWORD)
boolean Identical = voa_compare_double_integer(voa AS DWORD, vof AS DWORD, voa2 AS DWORD)
boolean Identical = voa_compare_float(voa AS DWORD, vof AS DWORD, voa2 AS DWORD)
boolean Identical = voa_compare_double_float(voa AS DWORD, vof AS DWORD, voa2 AS DWORD)
boolean Identical = voa_compare_word(voa AS DWORD, vof AS DWORD, voa2 AS DWORD)
boolean Identical = voa_compare_dword(voa AS DWORD, vof AS DWORD, voa2 AS DWORD)
boolean Identical = voa_compare_byte(voa AS DWORD, vof AS DWORD, voa2 AS DWORD)
boolean Identical = voa_compare_string_vot(voa AS DWORD, vof AS DWORD, voa2 AS DWORD)
dword voa = voa_id_create()
dword voa = voa_create_integer(Name$ AS STRING, Value AS INTEGER)
dword voa = voa_create_double_integer(Name$ AS STRING, Value AS DOUBLE INTEGER)
dword voa = voa_create_float(Name$ AS STRING, Value# AS FLOAT)
dword voa = voa_create_double_float(Name$ AS STRING, Value# AS DOUBLE FLOAT)
dword voa = voa_create_word(Name$ AS STRING, Value AS WORD)
dword voa = voa_create_dword(Name$ AS STRING, Value AS DWORD)
dword voa = voa_create_byte(Name$ AS STRING, Value AS BYTE)
dword voa = voa_create_string(Name$ AS STRING, Value$ AS STRING)
dword voa = voa_create_variant(Name$ AS STRING, iValue AS INTEGER, diValue AS DOUBLE INTEGER, fValue# AS FLOAT, dfValue# AS FLOAT, wValue AS WORD, dwValue AS DWORD, bValue AS BYTE, Value$ AS STRING)
byte Datatype = voa_variant_datatype(iValue AS INTEGER, diValue AS DOUBLE INTEGER, fValue# AS FLOAT, dfValue# AS FLOAT, wValue AS WORD, dwValue AS DWORD, bValue AS BYTE, Value$ AS STRING)
boolean Fits = voa_datatype_fits(voa AS DWORD, Datatype AS BYTE)
string Value = voa_get_value_as_string(voa AS DWORD) `1.01
integer Value = voa_get_integer(voa AS DWORD)
double integer Value = voa_get_double_integer(voa AS DWORD)
float Value = voa_get_float(voa AS DWORD)
double float Value = voa_get_double_float(voa AS DWORD)
word Value = voa_get_word(voa AS DWORD)
dword Value = voa_get_dword(voa AS DWORD)
byte Value = voa_get_byte(voa AS DWORD)
string Value = voa_get_string$(voa AS DWORD)
dword vot = voa_get_string_vot(voa AS DWORD)
boolean Success = voa_set_integer(voa AS DWORD, Value AS INTEGER)
boolean Success = voa_set_double_integer(voa AS DWORD, Value AS DOUBLE INTEGER)
boolean Success = voa_set_float(voa AS DWORD, Value AS FLOAT)
boolean Success = voa_set_double_float(voa AS DWORD, Value AS DOUBLE FLOAT)
boolean Success = voa_set_word(voa AS DWORD, Value AS WORD)
boolean Success = voa_set_dword(voa AS DWORD, Value AS DWORD)
boolean Success = voa_set_byte(voa AS DWORD, Value AS BYTE)
boolean Success = voa_set_string_s(voa AS DWORD, Value$ AS STRING)
boolean Success = voa_set_string_v(voa AS DWORD, vot AS DWORD)
boolean Success = voa_debug(Path$ AS STRING)
dword vot = voa_get_name_vot(voa AS DWORD) `1.02
voa_set_name_vot(voa AS DWORD, vot AS DWORD) `1.02
byte Datatype = voa_get_datatype(voa AS DWORD) `1.02
voa_set_datatype(voa AS DWORD, Datatype AS BYTE) `1.02
byte cDatatype = voa_get_cdatatype(voa AS DWORD) `1.02
voa_set_cdatatype(voa AS DWORD, cDatatype AS BYTE) `1.02
VObject List ( vol )
dword vol = vol_create_s(Name$ AS STRING, Filterlist$ AS STRING, Sorterlist$ AS STRING, bRefresh AS BOOLEAN, bAutorefresh AS BOOLEAN, bSort AS BOOLEAN, bAutosort AS BOOLEAN)
dword vol = vol_create_sb(Name$ AS STRING, Filterlist$ AS STRING, Sorterlist$ AS STRING, bRefresh AS BOOLEAN, bAutorefresh AS BOOLEAN, bSort AS BOOLEAN, bAutosort AS BOOLEAN, Buffer AS DWORD, BufferStep AS DWORD)
boolean Increased = vol_inc(vol AS DWORD, sInc AS DWORD)
boolean Success = vol_filter(vol AS DWORD)
boolean Success = vol_sort(vol AS DWORD)
boolean Success = vol_rec_sort(vol AS DWORD, vo_start as DWORD, vo_count AS DWORD, nvos AS DWORD)
boolean Exists = vol_exist(vol AS DWORD)
dword vol = vol_id_create()
dword Count = vol_clear(bForce AS BOOLEAN)
boolean Deleted = vol_delete(vol AS DWORD, bForce AS BOOLEAN)
boolean Deleted = vol_hdelete(vol AS DWORD)
boolean Deleted = vol_sdelete(vol AS DWORD)
dword vo = vol_get_vo_s(vol AS DWORD, Name$ AS STRING) `1.02
dword vo = vol_get_vo_sp(vol AS DWORD, StrPtr AS DWORD, StrSize AS DWORD) `1.02
dword Ptr = vol_get_nth_vo_ptr(vol AS DWORD, nvo AS DWORD)
dword vo = vol_get_nth_vo(vol AS DWORD, nvo AS DWORD)
boolean Success = vol_set_nth_vo(vol AS DWORD, nvo AS DWORD, vo AS DWORD)
dword vo = vol_vo(vol AS DWORD)
dword vo = vol_first_vo(vol AS DWORD)
dword vo = vol_next_vo(vol AS DWORD)
dword vo = vol_prev_vo(vol AS DWORD)
dword vo = vol_last_vo(vol AS DWORD)
dword Count = vol_set_sorter(vol AS DWORD, Sorterlist$ AS STRING)
dword vos = vol_get_nth_vos(vol AS DWORD, nvos AS BYTE)
dword vos = vol_vos(vol AS DWORD)
dword vos = vol_first_vos(vol AS DWORD)
dword vos = vol_next_vos(vol AS DWORD)
dword vos = vol_prev_vos(vol AS DWORD)
dword vos = vol_last_vos(vol AS DWORD)
dword Count = vol_set_filter(vol AS DWORD, Filterlist$ AS STRING)
dword vof = vol_get_nth_vof(vol AS DWORD, nvof AS BYTE)
dword vof = vol_vof(vol AS DWORD)
dword vof = vol_first_vof(vol AS DWORD)
dword vof = vol_next_vof(vol AS DWORD)
dword vof = vol_prev_vof(vol AS DWORD)
dword vof = vol_last_vof(vol AS DWORD)
boolean Success = vol_debug(Path$ AS STRING)
dword Count = vol_set_dirty()
boolean Success = vol_clean(vol AS DWORD)
dword vot = vol_get_name_vot(vol AS DWORD) `1.02
vol_set_name_vot(vol AS DWORD, vot AS DWORD) `1.02
dword Count = vol_get_vof_count(vol AS DWORD) `1.02
vol_set_vof_count(vol AS DWORD, vofcount AS BYTE) `1.02
byte nvof = vol_get_vof(vol AS DWORD) `1.02
vol_set_vof(vol AS DWORD, nvof AS BYTE) `1.02
dword Ptr = vol_get_vof_start(vol AS DWORD) `1.02
vol_set_vof_start(vol AS DWORD, vofstart AS DWORD) `1.02
byte Count = vol_get_vos_count(vol AS DWORD) `1.02
vol_set_vos_count(vol AS DWORD, voscount AS BYTE) `1.02
byte nvos = vol_get_vos(vol AS DWORD) `1.02
vol_set_vos(vol AS DWORD, nvos AS BYTE) `1.02
dword Ptr = vol_get_vos_start(vol AS DWORD) `1.02
vol_set_vos_start(vol AS DWORD, vosstart AS DWORD) `1.02
dword Count = vol_get_entry_count(vol AS DWORD) `1.02
vol_set_entry_count(vol AS DWORD, EntryCount AS DWORD) `1.02
dword Ptr = vol_get_entry_start(vol AS DWORD) `1.02
vol_set_entry_start(vol AS DWORD, EntryStart AS DWORD) `1.02
byte State = vol_get_state(vol AS DWORD) `1.02
vol_set_state(vol AS DWORD, State AS BYTE) `1.02
byte Autofilter = vol_get_autofilter(vol AS DWORD) `1.02
vol_set_autofilter(vol AS DWORD, AutoFilter AS BYTE) `1.02
byte AutoSort = vol_get_autosort(vol AS DWORD) `1.02
vol_set_autosort(vol AS DWORD, AutoSort AS BYTE) `1.02
byte Dirty = vol_get_dirty(vol AS DWORD) `1.02
vol_set_dirty(vol AS DWORD, Dirty AS BYTE) `1.02
byte Cleaning = vol_get_cleaning(vol AS DWORD) `1.02
vol_set_cleaning(vol AS DWORD, Cleaning AS BYTE) `1.02
dword Size = vol_get_size(vol AS DWORD) `1.02
vol_set_size(vol AS DWORD, Size AS DWORD) `1.02
dword mSize = vol_get_msize(vol AS DWORD) `1.02
vol_set_msize(vol AS DWORD, mSize AS DWORD) `1.02
dword mSizeStep = vol_get_msize_step(vol AS DWORD) `1.02
vol_set_msize_step(vol AS DWORD, mSizeStep AS DWORD) `1.02
VObject Filter ( vof )
dword vof = vof_create_s(Filter$ AS STRING)
dword Count = vof_clear(bForce AS BOOLEAN)
boolean Deleted = vof_delete(vof AS DWORD, bForce AS BOOLEAN)
boolean Deleted = vof_hdelete(vof AS DWORD)
boolean Deleted = vof_sdelete(vof AS DWORD)
boolean Exists = vof_exist(vof AS DWORD)
dword vof = vof_create_id()
boolean Success = vof_debug(Path$ AS STRING)
boolean Passed = vof_apply(vof AS DWORD, vo AS DWORD)
boolean Passed = vof_apply_integer(vof AS DWORD, voa AS DWORD)
boolean Passed = vof_apply_double_integer(vof AS DWORD, voa AS DWORD)
boolean Passed = vof_apply_float(vof AS DWORD, voa AS DWORD)
boolean Passed = vof_apply_double_float(vof AS DWORD, voa AS DWORD)
boolean Passed = vof_apply_word(vof AS DWORD, voa AS DWORD)
boolean Passed = vof_apply_dword(vof AS DWORD, voa AS DWORD)
boolean Passed = vof_apply_byte(vof AS DWORD, voa AS DWORD)
boolean Passed = vof_apply_string(vof AS DWORD, voa AS DWORD)
integer Value = vof_get_value_integer(vof AS DWORD)
double integer Value = vof_get_value_double_integer(vof AS DWORD)
float Value = vof_get_value_float(vof AS DWORD)
double float Value = vof_get_value_double_float(vof AS DWORD)
word Value = vof_get_value_word(vof AS DWORD)
dword Value = vof_get_value_dword(vof AS DWORD)
byte Value = vof_get_value_byte(vof AS DWORD)
dword vot = vof_get_value_string_vot(vof AS DWORD)
boolean Valid = vof_parse(Filter$ AS STRING)
byte Datatype = vof_get_datatype(vof AS DWORD) `1.02
vof_set_datatype(vof AS DWORD, Datatype AS BYTE) `1.02
dword vot = vof_get_element1(vof AS DWORD) `1.02
vof_set_element1(vof AS DWORD, Element1 AS DWORD) `1.02
byte Operator = vof_get_operator(vof AS DWORD) `1.02
vof_set_operator(vof AS DWORD, Operator AS BYTE) `1.02
byte Element2Type = vof_get_element2_type(vof AS DWORD) `1.02
vof_set_element2_type(vof AS DWORD, Element2Type AS BYTE) `1.02
VObject Sorter ( vos )
dword vos = vos_create(Sorter$ AS STRING)
dword Count = vos_clear(bForce AS BOOLEAN)
boolean Deleted = vos_delete(vos AS DWORD, bForce AS BOOLEAN)
boolean Deleted = vos_hdelete(vos AS DWORD)
boolean Deleted = vos_sdelete(vos AS DWORD)
dword vos = vos_create_id()
boolean Exists = vos_exist(vos AS DWORD)
boolean Success = vos_debug(Path$ AS STRING)
boolean Valid = vos_parse(Sorter$ AS STRING)
dword vot = vos_get_element(vos AS DWORD) `1.02
vos_set_element(vos AS DWORD, Element AS DWORD) `1.02
byte Sorttype = vos_get_sorttype(vos AS DWORD) `1.02
vos_set_sorttype(vos AS DWORD, Sorttype AS BYTE) `1.02
VObject Shared Memory ( vosm )
dword Count = vosm_make_request(Request AS BYTE)
byte Success = vosm_recieve()
byte Success = vosm_recieve_vo()
byte Success = vosm_recieve_vot()
byte Success = vosm_recieve_voa()
byte Success = vosm_recieve_vof()
byte Success = vosm_recieve_vos()
byte Success = vosm_recieve_vol()
byte Request = vosm_check_request()
byte Success = vosm_stream_sequence_vo(vo AS DWORD)
byte Success = vosm_stream_sequence_vot(vot AS DWORD)
byte Success = vosm_stream_sequence_voa(voa AS DWORD)
byte Success = vosm_stream_sequence_vos(vos AS DWORD)
byte Success = vosm_stream_sequence_vof(vof AS DWORD)
byte Success = vosm_stream_sequence_vol(vol AS DWORD)
byte Success = vosm_stream_vo(vo AS DWORD)
byte Success = vosm_stream_vot(vot AS DWORD)
byte Success = vosm_stream_voa(voa AS DWORD)
byte Success = vosm_stream_vof(vof AS DWORD)
byte Success = vosm_stream_vos(vos AS DWORD)
byte Success = vosm_stream_vol(vol AS DWORD)
VObject Shared Memory GUI ( vosm_gui )
Nothing = vosm_gui_monitor()
Nothing = vosm_gui()
Nothing = vosm_gui_update_request()
dword Count = vosm_gui_update_vol_list()
dword Count = vosm_gui_update_vo_list(vol AS DWORD)
Common
byte Sorttype = Sorttype_size(Sorttype AS BYTE)
boolean Valid = Sorttype_valid(Sorttype AS BYTE)
string Sorttype = Sorttype_string$(Sorttype AS BYTE)
dword Size = Datatype_size(Datatype AS BYTE)
string Datatype = Datatype_string$(Datatype AS BYTE)
boolean Valid = Datatype_valid(Datatype AS BYTE)
string Operator = Operator_string$(Operator AS BYTE)
dword Size = Operator_size(Operator AS BYTE)
boolean Valid = Operator_valid(Operator AS BYTE)
boolean Numeric = IsNumeric( sText$ )
==== Issues ====
- No known issues atm.
==== TO DO ====
- Feature: Save/Load vo, vol, complete execution.
- Feature: Parent/Child behaviour of vo obects.
- Remove vos and vof objects from vol object.
- More Power! More performance is always good.
==== Changelog ====
1.02
- Added several functions to set standard attribute of the different objects.
- Fixed memory leak in filter process.
- Fixed infinite loop in autofilter/sort process.
- Fixed crash in deinit process.
1.01
- Added mechanic to stream objects to external monitor application
- Added function 'string Value = voa_get_value_as_string(voa AS DWORD)'
- Fixed bug in the filter algorithm
- Fixed crash when creating vol objects
1.0
- Sorting feature implemented
- Functions to set attribute values added
- Auto-refresh/sort feature for lists working now
==== Downloads ====
-
1.02 Download The monitor application doesn't seem to work with this anymore XD. However, as I said: I will rework this feature anyways.
-
1.01 Download Monitor Source Compiled Monitor
-
1.0 Download
Requirements:
-
Matrix1Utils
Monitor requirements:
-
BBB Gui Plugin
==== Donate ====
If you like what I did here I would appreciate a little
donation
.