- Not converting identifiers to constants from ProcessExpressionType(), only from ComputeExpression()
void __ecereDestroyModuleInstances_System()
{
-(__ecereNameSpace__ecere__com__eInstance_DecRef(__ecereNameSpace__ecere__sys__sysErrorMessages), __ecereNameSpace__ecere__sys__sysErrorMessages = 0);
-(__ecereNameSpace__ecere__com__eInstance_DecRef(__ecereNameSpace__ecere__sys__guiErrorMessages), __ecereNameSpace__ecere__sys__guiErrorMessages = 0);
(__ecereNameSpace__ecere__com__eInstance_DecRef(__ecereNameSpace__ecere__sys__errorMessages), __ecereNameSpace__ecere__sys__errorMessages = 0);
+(__ecereNameSpace__ecere__com__eInstance_DecRef(__ecereNameSpace__ecere__sys__guiErrorMessages), __ecereNameSpace__ecere__sys__guiErrorMessages = 0);
+(__ecereNameSpace__ecere__com__eInstance_DecRef(__ecereNameSpace__ecere__sys__sysErrorMessages), __ecereNameSpace__ecere__sys__sysErrorMessages = 0);
}
inCompiler = b;
}
+unsigned int inDebugger = 0;
+
+void SetInDebugger(unsigned int b)
+{
+inDebugger = b;
+}
+
struct Context * curContext;
struct Context * globalContext;
if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
__ecereClass_DBIndexItem = class;
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetInCompiler", "void SetInCompiler(bool b)", SetInCompiler, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetInDebugger", "void SetInDebugger(bool b)", SetInDebugger, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetPrivateModule", "void SetPrivateModule(ecere::com::Module module)", SetPrivateModule, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetPrivateModule", "ecere::com::Module GetPrivateModule(void)", GetPrivateModule, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetMainModule", "void SetMainModule(ModuleImport moduleImport)", SetMainModule, module, 1);
inSymbolGen = b;
}
+unsigned int inDocumentor = 0;
+
+void SetInDocumentor(unsigned int b)
+{
+inDocumentor = b;
+}
+
struct __ecereNameSpace__ecere__sys__OldList * precompDefines;
void SetPrecompDefines(struct __ecereNameSpace__ecere__sys__OldList * list)
unsigned int skipLoad = 0;
struct __ecereNameSpace__ecere__com__Instance * list = (((void *)0));
-if(!inCompiler && !inPreCompiler && !inSymbolGen)
+if(!inCompiler && !inPreCompiler && !inSymbolGen && !inDocumentor)
{
struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, loadedModules), it);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetEcereImported", "bool GetEcereImported(void)", GetEcereImported, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetInPreCompiler", "void SetInPreCompiler(bool b)", SetInPreCompiler, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetInSymbolGen", "void SetInSymbolGen(bool b)", SetInSymbolGen, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetInDocumentor", "void SetInDocumentor(bool b)", SetInDocumentor, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetPrecompDefines", "void SetPrecompDefines(ecere::sys::OldList * list)", SetPrecompDefines, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("DummyMethod", "bool DummyMethod(void)", DummyMethod, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("LoadSymbols", "bool LoadSymbols(const char * fileName, ecere::com::ImportType importType, bool loadDllOnly)", LoadSymbols, module, 1);
long long data;
} __attribute__ ((gcc_struct));
+extern unsigned int inPreCompiler;
+
+extern unsigned int inDebugger;
+
extern void FreeExpContents(struct Expression * exp);
struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
}
if(value)
{
-FreeExpContents(sourceExp);
FreeType(sourceExp->expType);
sourceExp->isConstant = 1;
sourceExp->expType = MkClassType(baseClass->fullName);
+if(inCompiler || inPreCompiler || inDebugger)
{
char constant[256];
+FreeExpContents(sourceExp);
sourceExp->type = 2;
if(!strcmp(baseClass->dataTypeString, "int") || !strcmp(baseClass->dataTypeString, "int64") || !strcmp(baseClass->dataTypeString, "short") || !strcmp(baseClass->dataTypeString, "char"))
sprintf(constant, ((__runtimePlatform == 1) ? "%I64d" : "%lld"), value->data);
}
if(value)
{
-FreeExpContents(sourceExp);
FreeType(sourceExp->expType);
sourceExp->isConstant = 1;
sourceExp->expType = MkClassType(_class->fullName);
+if(inCompiler || inPreCompiler || inDebugger)
{
+FreeExpContents(sourceExp);
sourceExp->type = 2;
if(_class->dataTypeString && (!strcmp(_class->dataTypeString, "int") || !strcmp(_class->dataTypeString, "int64") || !strcmp(_class->dataTypeString, "short") || !strcmp(_class->dataTypeString, "char")))
sourceExp->__anon1.__anon1.constant = PrintInt64(value->data);
}
if(value)
{
+exp->isConstant = 1;
+if(inCompiler || inPreCompiler || inDebugger)
+{
char constant[256];
FreeExpContents(exp);
exp->type = 2;
-exp->isConstant = 1;
if(!strcmp(baseClass->dataTypeString, "int") || !strcmp(baseClass->dataTypeString, "int64") || !strcmp(baseClass->dataTypeString, "char") || !strcmp(baseClass->dataTypeString, "short"))
sprintf(constant, ((__runtimePlatform == 1) ? "%I64d" : "%lld"), value->data);
else
sprintf(constant, ((__runtimePlatform == 1) ? "0x%I64X" : "0x%llX"), value->data);
exp->__anon1.__anon1.constant = __ecereNameSpace__ecere__sys__CopyString(constant);
+}
exp->expType = MkClassType(baseClass->fullName);
break;
}
bool inCompiler = false;
public void SetInCompiler(bool b) { inCompiler = b; }
+bool inDebugger = false;
+public void SetInDebugger(bool b) { inDebugger = b; }
+
Context curContext;
Context globalContext;
OldList * excludedSymbols;
}
if(value)
{
- FreeExpContents(sourceExp);
FreeType(sourceExp.expType);
sourceExp.isConstant = true;
sourceExp.expType = MkClassType(baseClass.fullName);
- //if(inCompiler)
+ if(inCompiler || inPreCompiler || inDebugger)
{
char constant[256];
+ FreeExpContents(sourceExp);
+
sourceExp.type = constantExp;
if(!strcmp(baseClass.dataTypeString, "int") || !strcmp(baseClass.dataTypeString, "int64") || !strcmp(baseClass.dataTypeString, "short") || !strcmp(baseClass.dataTypeString, "char"))
sprintf(constant, FORMAT64D, value.data);
}
if(value)
{
- FreeExpContents(sourceExp);
FreeType(sourceExp.expType);
sourceExp.isConstant = true;
sourceExp.expType = MkClassType(_class.fullName);
- //if(inCompiler)
+ if(inCompiler || inPreCompiler || inDebugger)
{
+ FreeExpContents(sourceExp);
+
sourceExp.type = constantExp;
if(_class.dataTypeString && (!strcmp(_class.dataTypeString, "int") || !strcmp(_class.dataTypeString, "int64") || !strcmp(_class.dataTypeString, "short") || !strcmp(_class.dataTypeString, "char"))) // _class cannot be null here!
sourceExp.constant = PrintInt64(value.data);
switch(exp.type)
{
+ case identifierExp:
+ {
+ Identifier id = exp.identifier;
+ if(id && exp.isConstant && !inCompiler && !inPreCompiler && !inDebugger)
+ {
+ Class c = (exp.expType && exp.expType.kind == classType && exp.expType._class) ? exp.expType._class.registered : null;
+ if(c && c.type == enumClass)
+ {
+ Class enumClass = eSystem_FindClass(privateModule, "enum");
+ if(enumClass)
+ {
+ NamedLink64 value;
+ EnumClassData e = ACCESS_CLASSDATA(c, enumClass);
+ for(value = e.values.first; value; value = value.next)
+ {
+ if(!strcmp(value.name, id.string))
+ break;
+ }
+ if(value)
+ {
+ const String dts = c.dataTypeString;
+ FreeExpContents(exp);
+ exp.type = constantExp;
+ exp.constant = (dts && (!strcmp(dts, "int") || !strcmp(dts, "int64") || !strcmp(dts, "short") || !strcmp(dts, "char"))) ? PrintInt64(value.data) : PrintUInt64(value.data);
+ }
+ }
+ }
+ }
+ break;
+ }
case instanceExp:
{
ComputeInstantiation(exp);
}
if(value)
{
- char constant[256];
-
- FreeExpContents(exp);
-
- exp.type = constantExp;
exp.isConstant = true;
- if(!strcmp(baseClass.dataTypeString, "int") || !strcmp(baseClass.dataTypeString, "int64") || !strcmp(baseClass.dataTypeString, "char") || !strcmp(baseClass.dataTypeString, "short"))
- sprintf(constant, FORMAT64D, value.data);
- else
- sprintf(constant, FORMAT64HEX, value.data);
- exp.constant = CopyString(constant);
+ if(inCompiler || inPreCompiler || inDebugger)
+ {
+ char constant[256];
+ FreeExpContents(exp);
+
+ exp.type = constantExp;
+ if(!strcmp(baseClass.dataTypeString, "int") || !strcmp(baseClass.dataTypeString, "int64") || !strcmp(baseClass.dataTypeString, "char") || !strcmp(baseClass.dataTypeString, "short"))
+ sprintf(constant, FORMAT64D, value.data);
+ else
+ sprintf(constant, FORMAT64HEX, value.data);
+ exp.constant = CopyString(constant);
+ }
//for(;_class.base && _class.base.type != systemClass; _class = _class.base);
exp.expType = MkClassType(baseClass.fullName);
break;
expString[0] = 0;
PrintExpression(exp, expString);
+ SetInDebugger(true);
+
SetThisClass(null);
if(codeEditor && activeFrame)
DebugFindCtxTree(codeEditor.ast, activeFrame.line, 0);
break;
}
}
+
+ SetInDebugger(false);
}
else
snprintf(watchmsg, sizeof(watchmsg), $"Invalid expression: \"%s\"", wh.expression);