if(!__ecereNameSpace__ecere__moduleMaps)
__ecereNameSpace__ecere__moduleMaps = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__const_String___);
{
-struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map((void *)&it, __ecereNameSpace__ecere__moduleMaps), it);
+struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, __ecereNameSpace__ecere__moduleMaps), it);
if(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index((void *)&it, (uint64)(name), 0x0))
(__ecereNameSpace__ecere__com__eInstance_DecRef(((void * )(__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)&it)))), __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data((void *)&it, 0));
})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, translated, 1, len + 1);
if(len)
{
-struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map((void *)&it, textMap), it);
+struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, textMap), it);
if(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index((void *)&it, (uint64)(original), 0x0))
(__ecereNameSpace__ecere__com__eSystem_Delete(translated), translated = 0);
void __ecereNameSpace__ecere__UnloadTranslatedStrings(const char * name)
{
-struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map((void *)&it, __ecereNameSpace__ecere__moduleMaps), it);
+struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, __ecereNameSpace__ecere__moduleMaps), it);
if(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index((void *)&it, (uint64)(name), 0x0))
{
__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_imports, mainModule);
{
struct __ecereNameSpace__ecere__com__Instance * intlStrings = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_ContextStringPair__ecere__com__List_TPL_String___);
-struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map((void *)&it, intlStrings), it);
+struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, intlStrings), it);
for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc; c++)
{
__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\n");
{
-struct __ecereNameSpace__ecere__com__MapIterator i = (i.container = (void *)0, i.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map((void *)&i, (intlStrings)), i);
+struct __ecereNameSpace__ecere__com__MapIterator i = (i.container = (void *)0, i.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&i, (intlStrings)), i);
while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next((void *)&i))
{
-struct ContextStringPair pair = (*(struct ContextStringPair *)__ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_key((void *)&i));
+struct ContextStringPair pair = (*(struct ContextStringPair *)__ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_key(&i));
struct __ecereNameSpace__ecere__com__Instance * comments = ((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)&i));
{
{
struct TemplatedType * copy;
-for(copy = (struct TemplatedType *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&baseClass->ctx->templateTypes); copy; copy = (struct TemplatedType *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(copy))
+for(copy = (struct TemplatedType *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&baseClass->ctx->templateTypes); copy; copy = (struct TemplatedType *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next((void *)copy))
{
struct TemplatedType * type = (type = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplatedType), type->key = copy->key, type->param = copy->param, type);
filePrefix = "./";
__ecereNameSpace__ecere__sys__GetSlashPathBuffer(srcFileFixed, srcFile);
{
-struct __ecereNameSpace__ecere__com__MapIterator s = (s.container = (void *)0, s.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map((void *)&s, (intlStrings)), s);
+struct __ecereNameSpace__ecere__com__MapIterator s = (s.container = (void *)0, s.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&s, (intlStrings)), s);
while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next((void *)&s))
{
-struct ContextStringPair pair = (*(struct ContextStringPair *)__ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_key((void *)&s));
+struct ContextStringPair pair = (*(struct ContextStringPair *)__ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_key(&s));
{
struct __ecereNameSpace__ecere__com__Iterator l =
{
struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, loadedModules), it);
-if(!__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&it, (uint64)(name), 0x0))
+if(!__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index((void *)&it, (uint64)(name), 0x0))
{
struct __ecereNameSpace__ecere__com__Instance * firstModule = __ecereNameSpace__ecere__com__eModule_LoadStrict(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application, name, importAccess);
skipLoad = 0x1;
}
else
-list = ((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&it));
+list = ((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)&it));
}
if(!skipLoad)
{
}
for(; (data = (struct GlobalData *)globalDataList->functions.root); )
{
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalDataList->functions, data);
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalDataList->functions, (void *)data);
if(data->symbol)
FreeSymbol(data->symbol);
FreeType(data->dataType);
struct Type * ReplaceThisClassType(struct __ecereNameSpace__ecere__com__Class * _class)
{
+struct Type * type;
+
if(thisClassParams && _class->templateParams.count && !_class->templateClass)
{
unsigned int first = 0x1;
className[len++] = '>';
className[len++] = '\0';
}
-return MkClassType(className);
+type = MkClassType(className);
}
else
{
-return MkClassType(_class->fullName);
+type = MkClassType(_class->fullName);
}
+return type;
}
void ReplaceThisClassSpecifiers(struct __ecereNameSpace__ecere__sys__OldList * specs, struct __ecereNameSpace__ecere__com__Class * _class)
}
if(!exp->__anon1.member.exp->destType)
{
+if(method && !method->_class->symbol)
+method->_class->symbol = FindClass(method->_class->fullName);
exp->__anon1.member.exp->destType = __extension__ ({
struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
-__ecereInstance1->refCount = 1, __ecereInstance1->kind = 8, __ecereInstance1->__anon1._class = _class->symbol, __ecereInstance1;
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 8, __ecereInstance1->__anon1._class = prop ? prop->_class->symbol : method ? method->_class->symbol : _class->symbol, __ecereInstance1;
});
}
if(prop)
sc = sc->templateClass;
if(dc->templateClass)
dc = dc->templateClass;
-if(dc->base && (sc != dc || sc->base->type == 1))
+if(dc->base && sc != dc)
{
e->__anon1.cast.exp = CopyExpContents(e);
e->type = 11;
bool declaredWithStruct:1;
bool typedByReference:1; // Originally typed by reference, regardless of class type
bool casted:1;
+ // bool wasThisClass:1;
// TODO: Add _Complex & _Imaginary support
// bool complex:1, imaginary:1;
Type ReplaceThisClassType(Class _class)
{
+ Type type;
if(thisClassParams && _class.templateParams.count && !_class.templateClass)
{
bool first = true;
className[len++] = '>';
className[len++] = '\0';
}
- return MkClassType(className);
- //return ProcessTypeString(className, false);
+ type = MkClassType(className);
+ //type = ProcessTypeString(className, false);
}
else
{
- return MkClassType(_class.fullName);
- //return ProcessTypeString(_class.fullName, false);
+ type = MkClassType(_class.fullName);
+ //type = ProcessTypeString(_class.fullName, false);
}
+ //type.wasThisClass = true;
+ return type;
}
void ReplaceThisClassSpecifiers(OldList specs, Class _class)
functionType = ProcessType(specs, decl);
functionType.refCount = 0;
FinishTemplatesContext(context);
+
+ // Mark parameters that were 'thisclass'
+ /*{
+ Type p, op;
+ for(p = functionType.params.first, op = methodType.method.dataType.params.first; p && op; p = p.next, op = op.next)
+ p.wasThisClass = op.kind == thisClassType;
+ }*/
}
FreeList(specs, FreeSpecifier);
if(!exp.member.exp.destType)
{
+ if(method && !method._class.symbol)
+ method._class.symbol = FindClass(method._class.fullName);
+
exp.member.exp.destType = Type
{
refCount = 1;
kind = classType;
- _class = _class.symbol;
+ _class = prop ? prop._class.symbol : method ? method._class.symbol : _class.symbol;
+ // wasThisClass = type ? type.wasThisClass : false;
};
}
Class dc = dest._class.registered;
if(sc.templateClass) sc = sc.templateClass;
if(dc.templateClass) dc = dc.templateClass;
- if(dc.base && (sc != dc || sc.base.type == structClass))
+ if(dc.base && sc != dc)
{
e.cast.exp = CopyExpContents(e);
e.type = castExp;