///
///
import { MessageResponses } from "../../util/observe";
import { CPPObject } from "../../core/runtime/objects";
import { AtomicType, CompleteObjectType, PointerType, BoundedArrayType, ArrayElemType, CompleteClassType } from "../../core/compilation/types";
import { BoundReferenceEntity, UnboundReferenceEntity, NamedEntity } from "../../core/compilation/entities";
import { MemoryOutlet } from "./MemoryOutlet";
export declare abstract class MemoryObjectOutlet {
readonly object: CPPObject;
protected readonly memoryOutlet: MemoryOutlet;
protected readonly element: JQuery;
abstract readonly objElem: JQuery;
private svgElem?;
private svg?;
_act: MessageResponses;
readonly names: readonly string[];
constructor(element: JQuery, object: CPPObject, memoryOutlet: MemoryOutlet, name: string | undefined);
disconnect(): void;
protected abstract updateObject(): void;
protected valueRead(): void;
protected valueWritten(): void;
protected onReferenceBoundToMe(refEntity: BoundReferenceEntity): void;
protected onReferenceUnbound(refEntity: BoundReferenceEntity): void;
protected abstract onNamesUpdate(): void;
protected deallocated(): void;
protected leaked(): void;
protected unleaked(): void;
protected validitySet(isValid: boolean): void;
protected callReceived(): void;
protected callEnded(): void;
protected findOutlet(callback: (t: this) => void): void;
protected useSVG(): void;
}
export declare class SingleMemoryObject extends MemoryObjectOutlet {
protected readonly addrElem: JQuery;
readonly objElem: JQuery;
protected readonly namesElem: JQuery;
constructor(element: JQuery, object: CPPObject, memoryOutlet: MemoryOutlet);
protected onNamesUpdate(): void;
protected updateObject(): void;
}
export declare class PointerMemoryObjectOutlet = PointerType> extends SingleMemoryObject {
readonly pointedObject?: CPPObject;
private readonly ptdArrayElem;
private arrow?;
private pointedObjectListener;
constructor(element: JQuery, object: CPPObject, memoryOutlet: MemoryOutlet);
protected updateObject(): void;
private onAtomicObjectInitialized;
}
export declare class ReferenceMemoryOutlet {
readonly entity: (UnboundReferenceEntity | BoundReferenceEntity) & NamedEntity;
readonly object?: CPPObject;
private readonly element;
private readonly addrElem;
private readonly objElem;
constructor(element: JQuery, entity: UnboundReferenceEntity & NamedEntity);
bind(object: CPPObject): void;
}
export declare class ArrayMemoryObjectOutlet extends MemoryObjectOutlet> {
readonly addrElem: JQuery;
readonly objElem: JQuery;
protected readonly namesElem: JQuery;
readonly elemOutlets: MemoryObjectOutlet[];
readonly onePast: JQuery;
constructor(element: JQuery, object: CPPObject>, memoryOutlet: MemoryOutlet);
protected updateObject(): void;
protected onNamesUpdate(): void;
}
export declare class ArrayElemMemoryObjectOutlet extends MemoryObjectOutlet {
readonly objElem: JQuery;
constructor(element: JQuery, object: CPPObject, memoryOutlet: MemoryOutlet);
protected updateObject(): void;
protected onNamesUpdate(): void;
}
export declare class ClassMemoryObjectOutlet extends MemoryObjectOutlet {
readonly objElem: JQuery;
private readonly addrElem?;
protected readonly namesElem: JQuery;
constructor(element: JQuery, object: CPPObject, memoryOutlet: MemoryOutlet);
protected updateObject(): void;
protected onNamesUpdate(): void;
}
export declare class StringMemoryObject extends MemoryObjectOutlet {
protected readonly addrElem: JQuery;
readonly objElem: JQuery;
protected readonly namesElem: JQuery;
constructor(element: JQuery, object: CPPObject, memoryOutlet: MemoryOutlet);
protected updateObject(): void;
protected onNamesUpdate(): void;
}
export declare class InlinePointedArrayOutlet extends MemoryObjectOutlet {
readonly objElem: JQuery;
private arrayOutlet?;
constructor(element: JQuery, object: CPPObject, memoryOutlet: MemoryOutlet);
private setArrayOutlet;
protected updateObject(): void;
protected onNamesUpdate(): void;
}
export declare class VectorMemoryObject extends MemoryObjectOutlet {
readonly objElem: JQuery;
protected readonly namesElem: JQuery;
constructor(element: JQuery, object: CPPObject, memoryOutlet: MemoryOutlet);
protected updateObject(): void;
protected onNamesUpdate(): void;
}
export declare function createMemoryObjectOutlet(elem: JQuery, obj: CPPObject, memoryOutlet: MemoryOutlet): ArrayMemoryObjectOutlet | StringMemoryObject | VectorMemoryObject | ClassMemoryObjectOutlet | SingleMemoryObject;