import "CodeObject"
-static void UnusedFunction()
+static __attribute__((unused)) void UnusedFunction()
{
- int a;
- Module b;
+ int a = 0;
+ Module b = 0;
a.OnGetString(0,0,0);
a.OnFree();
a.OnCopy(null);
}
}
+/*
any_object GetPropValue(Property prop, Instance object)
{
if(object)
// TOFIX: How to swiftly handle classes with base data type?
else if(type == class(double) || !strcmp(type.dataTypeString, "double"))
{
+ // NOTE: must return double by reference
double d = ((double(*)(void *))(void *)prop.Get)(object);
return d;
}
else if(type == class(float) || !strcmp(type.dataTypeString, "float"))
{
+ // NOTE: must return float by reference
float f =((float(*)(void *))(void *)prop.Get)(object);
return f;
}
else
return 0;
}
-
+*/
void CopyProperty(Property prop, Instance dest, Instance src)
{
Class type = prop.dataTypeClass;
#ifdef _DEBUG
if(prop._class.module.application == __thisModule &&
prop.dataTypeClass.module.application == ((Designer)GetActiveDesigner()).codeEditor.privateModule)
- printf($"Warning");
+ printf("Warning");
#endif
}
bool NotifySelect(DropBox control, DataRow row, Modifiers keyFlags)
{
- ObjectInfo selected = (ObjectInfo)(row ? row.tag : null);
+ ObjectInfo selected = (ObjectInfo)(row ? (void *)(intptr)row.tag : null);
ToolBox toolBox = ((IDEWorkSpace)parent).toolBox;
if(codeEditor && selected)
if(selected && selected.instance && codeEditor)
{
Class _class;
- int c = 0;
int rowHeight = methods.rowHeight;
propertyValue.userData = (void *)selected.instance;
CodeObject object = control.GetData(methodName);
Menu menu { };
PopupMenu popupMenu;
- MenuItem item;
if(object.overriden == 0)
{
MenuItem { menu, $"Override", o, enter, bold = true, NotifySelect = OverrideMethodSelected };
for(compatible = object.compatible.first; compatible; compatible = compatible.next)
{
ClassFunction function = compatible.data;
- MenuItem { attachMenu, function.declarator.symbol.string, id = (int64)function, NotifySelect = AttachMethodSelected };
+ MenuItem { attachMenu, function.declarator.symbol.string, id = (int64)(intptr)function, NotifySelect = AttachMethodSelected };
}
}
}
ClassFunction function = compatible.data;
if(function != object.function)
{
- MenuItem { attachMenu, function.declarator.symbol.string, id = (int64)function, NotifySelect = ReattachMethodSelected };
+ MenuItem { attachMenu, function.declarator.symbol.string, id = (int64)(intptr)function, NotifySelect = ReattachMethodSelected };
}
}
}
void ListProperties(bool clear)
{
DataRow row = dropBox.currentRow;
- ObjectInfo selected = row ? (ObjectInfo)row.tag : null;
+ ObjectInfo selected = row ? (ObjectInfo)(intptr)row.tag : null;
//int scroll = 0;
bool categorized = this.categorized.checked;
// Fill up the properties
while(_class != selected.instance._class)
{
- BitMember bitMember = null;
Class lastClass = _class;
Property propIt;
if(clear)
{
- row = categorized ? category.row.FindRow((int64)prop) : properties.FindRow((int64)prop);
+ row = categorized ? category.row.FindRow((int64)(intptr)prop) : properties.FindRow((int64)(intptr)prop);
if(!row)
row = categorized ? category.row.AddRow() : properties.AddRow();
- row.tag = (int64)prop;
+ row.tag = (int64)(intptr)prop;
}
else
- row = categorized ? category.row.FindRow((int64)prop) : properties.FindRow((int64)prop);
+ row = categorized ? category.row.FindRow((int64)(intptr)prop) : properties.FindRow((int64)(intptr)prop);
row.SetData(propertyName, prop.name);
row.SetData(propertyValue, info);
if(clear)
{
subRow = row.AddRow();
- subRow.tag = (int64)subProp;
+ subRow.tag = (int64)(intptr)subProp;
}
else
- subRow = row.FindRow((int64)subProp);
+ subRow = row.FindRow((int64)(intptr)subProp);
subRow.SetData(propertyName, subProp.name);
subRow.SetData(propertyValue, info);
if(clear)
{
subRow = row.AddRow();
- subRow.tag = (int64)member;
+ subRow.tag = (int64)(intptr)member;
}
else
- subRow = row.FindRow((int64)member);
+ subRow = row.FindRow((int64)(intptr)member);
subRow.SetData(propertyName, member.name);
subRow.SetData(propertyValue, info);
if(clear)
{
subRow = row.AddRow();
- subRow.tag = (int64)subMember;
+ subRow.tag = (int64)(intptr)subMember;
}
else
- subRow = row.FindRow((int64)subMember);
+ subRow = row.FindRow((int64)(intptr)subMember);
subRow.SetData(propertyName, subMember.name);
subRow.SetData(propertyValue, info);
DataRow row;
const char * name = prop.category ? prop.category : $"Misc";
Category category = categories.FindName(name, false);
- row = category ? (categorized ? category.row.FindRow((int64)prop) : properties.FindRow((int64)prop)) : null;
+ row = category ? (categorized ? category.row.FindRow((int64)(intptr)prop) : properties.FindRow((int64)(intptr)prop)) : null;
properties.currentRow = row;
found = true;
break;
row = (DataRow)dropBox.AddRowAfter(after);
- row.tag = (int64)object;
+ row.tag = (int64)(intptr)object;
codeObject =
{
};
if(type != typeClass)
- bitmap = (char *)eClass_GetProperty(object.instance._class, "icon");
+ bitmap = (char *)(intptr)eClass_GetProperty(object.instance._class, "icon");
if(bitmap)
{
codeObject.bitmap = { bitmap };
void DeleteObject(ObjectInfo object)
{
- DataRow row = dropBox.FindRow((int64)object);
+ DataRow row = dropBox.FindRow((int64)(intptr)object);
if(row)
{
CodeObject codeObject = row.GetData(null);
{
if(this)
{
- DataRow row = dropBox.FindRow((int64)object);
+ DataRow row = dropBox.FindRow((int64)(intptr)object);
this.object = object ? object.instance : null;
propertyValue.userData = object ? (void *)object.instance : null;
dropBox.SelectRow(row);
void RenameObject(ObjectInfo object, const char * name)
{
- DataRow row = dropBox.FindRow((int64)object);
+ DataRow row = dropBox.FindRow((int64)(intptr)object);
CodeObject codeObject = row.GetData(null);
// Isn't this useless? Shouldn't it be after?
codeObject.name = name;
BitMember bitMember = (BitMember) member;
if(subDataType)
{
- DataValue value = { 0 };
+ DataValue value { 0 };
value.ui = ((uint (*)(void *))(void *)prop.Get)(object);
value.ui &= ~ (uint)bitMember.mask;
value.ui |= *(uint32 *)setValue << bitMember.pos;
bool AttachMethodSelected(MenuItem selection, Modifiers mods)
{
- ClassFunction function = (ClassFunction)selection.id;
+ ClassFunction function = (ClassFunction)(intptr)selection.id;
codeEditor.AttachMethod(attachMethod, function);
return true;
}
bool ReattachMethodSelected(MenuItem selection, Modifiers mods)
{
- ClassFunction function = (ClassFunction)selection.id;
- CodeObject object = methods.GetData(methodName);
+ ClassFunction function = (ClassFunction)(intptr)selection.id;
codeEditor.ReAttachMethod(attachMethod, function);
return true;
}
bool OverrideMethodSelected(MenuItem selection, Modifiers mods)
{
- ClassFunction function = (ClassFunction)selection.id;
CodeObject object = methods.GetData(methodName);
if(object)
codeEditor.AddMethod(object.method);
bool GotoMethodSelected(MenuItem selection, Modifiers mods)
{
- ClassFunction function = (ClassFunction)selection.id;
CodeObject object = methods.GetData(methodName);
if(object)
codeEditor.GoToMethod(object.method.name);
bool DetachMethodSelected(MenuItem selection, Modifiers mods)
{
- ClassFunction function = (ClassFunction)selection.id;
CodeObject object = methods.GetData(methodName);
if(object)
codeEditor.DetachMethod(object.method, object.function, object.overriden);
bool DeleteMethodSelected(MenuItem selection, Modifiers mods)
{
- ClassFunction function = (ClassFunction)selection.id;
CodeObject object = methods.GetData(methodName);
if(object)
object.deleteBtn.NotifyClicked(this, object.deleteBtn, 0,0,0);
bool AddMethodClicked(Button button, int x, int y, Modifiers mods)
{
- DataRow row = (DataRow)button.id;
+ DataRow row = (DataRow)(intptr)button.id;
CodeObject object = row.GetData(methodName);
codeEditor.AddMethod(object.method);
return true;
void CreateButtons(CodeObject codeObject, int y, int h, DataRow row)
{
- BitmapResource bitmap;
-
if(codeObject.overriden)
{
if(codeObject.overriden == 1)
bitmap = { ":actions/delete.png", alphaBlend = true },
anchor = { right = 16, top = y },
size = { 16, h },
- id = (int64)row;
+ id = (int64)(intptr)row;
bool NotifyClicked(Button button, int x, int y, Modifiers mods)
{
- CodeObject codeObject = ((DataRow)button.id).GetData(null);
+ CodeObject codeObject = ((DataRow)(intptr)button.id).GetData(null);
bool confirmation = !Code_IsFunctionEmpty(codeObject.function, codeObject.method, codeEditor.selected);
if(confirmation)
bitmap = { ":actions/detach.png" },
anchor = { right = 0, top = y },
size = { 16, h },
- id = (int64)row;
+ id = (int64)(intptr)row;
bool NotifyClicked(Button button, int x, int y, Modifiers mods)
{
- DataRow row = (DataRow)button.id;
+ DataRow row = (DataRow)(intptr)button.id;
CodeObject object = row.GetData(methodName);
codeEditor.DetachMethod(object.method, object.function, object.overriden);
bitmap = { ":actions/attach.png" },
anchor = { right = 0, top = y },
size = { 16, h },
- id = (int64)row;
+ id = (int64)(intptr)row;
bool NotifyPushed(Button button, int x, int y, Modifiers mods)
{
// Create menu
- DataRow row = (DataRow)button.id;
+ DataRow row = (DataRow)(intptr)button.id;
CodeObject object = row.GetData(methodName);
OldLink compatible;
PopupMenu popupMenu;
for(compatible = object.compatible.first; compatible; compatible = compatible.next)
{
ClassFunction function = compatible.data;
- MenuItem { menu, function.declarator.symbol.string, id = (int64)function, NotifySelect = AttachMethodSelected };
+ MenuItem { menu, function.declarator.symbol.string, id = (int64)(intptr)function, NotifySelect = AttachMethodSelected };
}
attachMethod = object.method;
if(dataType.type == bitClass)
{
BitMember bitMember = (BitMember)member;
- bitValue = (valueData.i & bitMember.mask) >> bitMember.pos;
+ bitValue = (valueData.ui64 & bitMember.mask) >> bitMember.pos;
+ // TOCHECK: endian safe?
dataPtr = &bitValue;
}
else
}
else
{
- bool freeDataForm = false, freeDataTest = false;
+ //bool freeDataForm = false, freeDataTest = false;
// Because contents property is broken for mutiline EditBox at the moment
if(!strcmp(prop.name, "contents") && !strcmp(prop._class.name, "EditBox") && ((EditBox)object).multiLine)
{
if(dataType.type == bitClass)
{
BitMember bitMember = (BitMember)member;
- bitValue = (valueData.i & bitMember.mask) >> bitMember.pos;
+ bitValue = (valueData.ui64 & bitMember.mask) >> bitMember.pos;
+ // TOCHECK: endian safe?
dataPtr = &bitValue;
}
else
bool result = false;
void * dataPtr, * data = null, * subData = null;
void * propObject = null;
- DataValue valueData = { 0 }, valueSubData = { 0 };
- uint bitValue;
+ DataValue valueData { 0 };
+ DataValue valueSubData { 0 };
+ uint64 bitValue;
if(!mainDataType)
mainDataType = prop.dataTypeClass = eSystem_FindClass(((Designer)GetActiveDesigner()).codeEditor.privateModule, prop.dataTypeString);
if(this.subMember || this.subProperty)
{
- Class _class;
Instance current = (Instance)((void *(*)(void *))(void *)prop.Get)(object);
propObject = valueData.p = eInstance_New(dataType);
CopyInstanceData(dataType, propObject, current);
if(subDataType)
{
if(dataType.type == bitClass)
+ {
+ BitMember bitMember = (BitMember)member;
+ bitValue = (valueData.ui64 & bitMember.mask) >> bitMember.pos;
+ // TOCHECK: endian safe?
dataPtr = &bitValue;
+ }
else
dataPtr = (byte *)dataPtr + member.offset + this.extraOffset;
}
if(mainDataType.type == bitClass && this.subMember)
{
BitMember bitMember = (BitMember)this.subMember;
- valueData.ui &= ~ (uint)bitMember.mask;
- valueData.ui |= bitValue << bitMember.pos;
+ valueData.ui64 &= ~bitMember.mask;
+ valueData.ui64 |= bitValue << bitMember.pos;
}
if(this.subProperty)
{