TANY W_CALLBACK KpiVBXValuePropIN(OBJECTID self, LPSTR ap) { WORD wType = OBJECT_TYPE(self); ATOMID idWidget = KppGetItemName(wType, self); HWND hWnd = KpsGetWindowFromWidget(idWidget); TANY res; res.type = T_ATOM; if (IsWindow(hWnd)) { LPVBXINFO lpVBXInfo = GetVBXInfo(hWnd); LPMODEL lpModel = GetControlModel(lpVBXInfo); if (!lpVBXInfo->hCtl || !lpModel) return res; if (OBJECT_TYPE(self) == OBJECT) self = Kpp_Get_Super(OBJECT, self); res.data.atom = SetValueProp(CLASS, self, lpModel); } else res.data.atom = lpIDs->idNull; return res; }
static CLBRITEM FindNextInLevel(float fRow, LPBRTABLE lpLevel, WORD wSize, BOOL bUp, LPBRTABLE lpParentLevel, float fTopRow, float fBottomRow, OBJECTID idFocus, BRDATA lpBrData, LEVEL_TYPE level) { CLBRITEM lpItem, lpNode = NULL; float fNextRow = bUp ? 0 : FLT_MAX; OBJECTID idSelParent = Kpp_Get_Super(OBJECT_TYPE(BrSelection.idObj), BrSelection.idObj); for (lpItem = (CLBRITEM) lpLevel; lpItem && NEXT_BRITEM(lpItem) != END_OF_LEVEL; lpItem = (CLBRITEM) MOVE_TO_NEXT_ITEM(lpItem, wSize)) { float fItemRow = GET_Y_REL(lpItem); OBJECTID idObj = ITEMID_BRITEM(lpItem); WORD wType = OBJECT_TYPE(idObj); OBJECTID idParent = Kpp_Get_Super(wType, idObj); if (bUp && fItemRow < fRow && fItemRow > fNextRow || !bUp && fItemRow > fRow && fItemRow < fNextRow && (fItemRow - fTopRow > (float) -1.0 && fBottomRow - fItemRow > (float) 0.0 || idParent == idSelParent)) { CLBRITEM lpUpItem, lpParent = NULL; for (lpUpItem = (CLBRITEM) lpParentLevel; lpUpItem && NEXT_BRITEM(lpUpItem) != END_OF_LEVEL; lpUpItem = (CLBRITEM) MOVE_TO_NEXT_ITEM(lpUpItem, wSize)) if (ITEMID_BRITEM(lpUpItem) == idParent) { lpParent = lpUpItem; break; } if (lpParent && (ARE_INSTANCES_VISIBLE(BRITEM_FLAGS(lpParent)) && wType == OBJECT || ARE_SUBCLASSES_VISIBLE(BRITEM_FLAGS(lpParent)) && wType == CLASS) && (idFocus == lpIDs->idRootClass || Kpp_Is_AKindOf(TYPE_BRITEM(lpItem), ITEMID_BRITEM(lpItem), idFocus))) { lpNode = lpItem; if (BrSelection.idObj != ITEMID_BRITEM(lpItem)) fNextRow = fItemRow; } } } return lpNode; }
static enum pc_location classify_pc (unsigned long pc, SCHEME_OBJECT ** r_block_addr, unsigned int * r_index) { #ifdef CC_SUPPORT_P if (PC_ALIGNED_P (pc)) { if (HEAP_ADDRESS_P ((SCHEME_OBJECT *) pc)) { SCHEME_OBJECT * block_addr = (find_heap_address (pc)); if (block_addr == 0) return (pcl_unknown); if (r_block_addr != 0) (*r_block_addr) = block_addr; return (pcl_heap); } if (ADDRESS_IN_CONSTANT_P ((SCHEME_OBJECT *) pc)) { SCHEME_OBJECT * block_addr = (find_constant_address (pc)); if (block_addr == 0) return (pcl_unknown); if (r_block_addr != 0) (*r_block_addr) = block_addr; return (pcl_constant); } if (ADDRESS_UCODE_P (pc)) { int index = (pc_to_builtin_index (pc)); if (index >= 0) { if (r_index != 0) (*r_index) = index; return (pcl_builtin); } index = (pc_to_utility_index (pc)); if (index >= 0) { if (r_index != 0) (*r_index) = index; return (pcl_utility); } if ((OBJECT_TYPE (GET_PRIMITIVE)) == TC_PRIMITIVE) return (pcl_primitive); } } #else if ((ADDRESS_UCODE_P (pc)) && ((OBJECT_TYPE (GET_PRIMITIVE)) == TC_PRIMITIVE)) return (pcl_primitive); #endif return (pcl_unknown); }
int PEXPORT KpcCountSubClasses(OBJECTID idClass) { if (OBJECT_TYPE(idClass) == CLASS) return (int) KppCountSubClasses(idClass, IMMEDIATE); return kpc_error(); }
ATOMID PEXPORT KpcResetSlotOption(OBJECTID idObj, ATOMID slot, ATOMID option) { ATOMID res = kpc_reset_slot_option(NULL, OBJECT_TYPE(idObj), idObj, slot, option); return res ? res : kpc_error(); }
LISTID PEXPORT _psl(OBJECTID idObj, ATOMID slot, LISTID idList) { if (!Kpp_Set_SlotValue(OBJECT_TYPE(idObj), idObj, slot, idList, EXPLIST)) return (LISTID) kpc_error(); return idList; }
static BOOL multi_ap(va_list ap, char *types) { if (types) { switch (types[0]) { case T_OBJECT: if (types[2]) return TRUE; else { OBJECTID idObj = va_arg(ap, OBJECTID); ATOMID idSlot = va_arg(ap, ATOMID); return Kpp_GetOption(OBJECT_TYPE(idObj), idObj, idSlot, OPT_CARD); } case T_ANY: { TANY u = va_arg(ap, TANY); return u.type == T_LIST; } default: return types[1] != '\0'; } } else return FALSE; }
ATOMID CEXPORT KpcMakeSlot(OBJECTID idObj, ATOMID name, HANDLE hResInst, char *types, ...) { va_list ap; WORD wType = OBJECT_TYPE(idObj); BOOL bRemote = KppIsRemoteObject(wType, idObj); ITEMID idSlot; if (bRemote) idSlot = KppKrpMakeSlotCB(idObj, name, lpIDs->idNull, EXPATOM); else idSlot = Kpp_Make_Slot(wType, idObj, name); if (!idSlot) return NULL; va_start(ap, types); if (types) { if (multi_ap(ap, types)) Kpp_SetOption(wType, idObj, name, OPT_CARD, OPT_MULTI); kpc_set_value(wType, idObj, name, hResInst, types, ap); va_end(ap); } return name; }
static CLBRITEM FindTopInLevel(OBJECTID idObj, LPBRTABLE lpLevel, WORD wSize, BOOL bInstVisible, BOOL bClassVisible, float fTopRow, float fBottomRow, BRDATA lpBrData, LEVEL_TYPE lLevel) { int top = 32767; CLBRITEM lpItem, lpNode = NULL; for (lpItem = (CLBRITEM) lpLevel; lpItem && NEXT_BRITEM(lpItem) != END_OF_LEVEL; lpItem = (CLBRITEM) MOVE_TO_NEXT_ITEM(lpItem, wSize)) if (IsChildItem((LPBRTABLE) lpItem, idObj, OBJECT_TYPE(idObj))) { float fChildRow = GET_Y_REL(lpItem); RECT rect; GetItemRect(lpBrData, (LPBRTABLE) lpItem, lLevel, &rect); if (rect.top < top && (TYPE_BRITEM(lpItem) == OBJECT && bInstVisible || TYPE_BRITEM(lpItem) == CLASS && bClassVisible) && fChildRow - fTopRow > (float) -1.0 && fBottomRow - fChildRow > (float) 0.0) { top = rect.top; lpNode = lpItem; } } return lpNode; }
long EXPORT RenameSelectionProc(HWND hWnd, WORD wMsg, WORD wParam, long lParam) { switch (wMsg) { case WM_GETDLGCODE: return DLGC_WANTALLKEYS; case WM_KEYDOWN: case WM_CHAR: if (wParam != VK_RETURN && wParam != VK_UP & wParam != VK_DOWN) break; SetFocus(GetParent(hWnd)); return TRUE; case WM_KILLFOCUS: { HWND hParent = GetParent(hWnd); GetWindowText(hWnd, return_buffer, RET_BUFFER_LEN); ShowWindow(hWnd, SW_HIDE); SendMessage(hParent, WM_PAINT, 0, 0L); Kpp_RenameItem(OBJECT_TYPE(BrSelection.idObj), BrSelection.idObj, KppAddAtom(return_buffer)); if (wParam) MoveAroundBrowser(hParent, wParam, 0, NULLID); break; } } return CallWindowProc(lpOrigEditProc, hWnd, wMsg, wParam, lParam); }
BOOL DeleteSelectedItem(LPBRTABLE lpItem, LPSTR lpData) { OBJECTID idObj = ITEMID_BRITEM(lpItem); WORD wType = OBJECT_TYPE(idObj); #ifndef RUNTIME BOOL bConfirm = LOWORD(lpData); if (BRITEM_FLAGS(lpItem) & SELECTED_ITEM && (bConfirm ? KpeDeleteItem(HIWORD(lpData), wType, idObj) : Kpp_DeleteCO(wType, idObj))) { BrSelection.wCount--; if (idObj == BrSelection.idObj) BrSelection.idObj = NULLID; return TRUE; } #else if (BRITEM_FLAGS(lpItem) & SELECTED_ITEM && Kpp_DeleteCO(wType, idObj)) { BrSelection.wCount--; if (idObj == BrSelection.idObj) BrSelection.idObj = NULLID; return TRUE; } #endif return FALSE; }
ATOMID PEXPORT KpcRenameSlot(OBJECTID idObj, ATOMID slot, ATOMID name) { if (Kpp_Rename_Slot(OBJECT_TYPE(idObj), idObj, slot, name)) return name; return kpc_error(); }
TANY PEXPORT KpcGetSlotOption(OBJECTID idObj, ATOMID slot, ATOMID option) { BOOL bList = (option == lpIDs->idPossValue || option == lpIDs->idPossClass || option == lpIDs->idWidgets); ATOMID idValue = kpc_get_slot_option(NULL, OBJECT_TYPE(idObj), idObj, slot, option); TANY res; if (!idValue) { kpc_error(); return NULTANY; } if (bList) { res.type = T_LIST; res.data.list = idValue; } else { res.type = T_ATOM; res.data.atom = idValue; } return res; }
int PEXPORT KpcCountAllInstances(OBJECTID idClass) { if (OBJECT_TYPE(idClass) == CLASS) return (int) KppCountInstances(idClass, ALL); return kpc_error(); }
static long lb_selmeth(char *text) { char *sp = strchr(text, ':'); ATOMID idObjName, idName; OBJECTID idObj; LPOBJECT lpObj; sp[0] = '\0'; idObjName = KppAddAtom(text); idName = KppAddAtom(sp + 1); idObj = KppGetItemFromName(OBJCLA, idObjName, (LPSTR *) &lpObj); if (idObj && !(FLAGS(lpObj) & REMOTE)) { WORD wType = OBJECT_TYPE(idObj); METHODID idMethod = KppGetElemPair(METHODS(lpObj), idName); KppReleaseItem(wType, idObj); return MAKELONG(idObj, idMethod); } return 0L; }
BOOL PEXPORT KppDeleteBuffer(OBJECTID idObject, ATOMID idSlot) { ATOMID idBuffer; GLOBALHANDLE hBuffer; idBuffer = Kpp_Get_SlotValue (OBJECT_TYPE(idObject), idObject, idSlot); if (!idBuffer) return ERROR; if (!KappaGetInt (idBuffer, hBuffer)) return ERROR; GLOBALUNLOCK (hBuffer); GLOBALFREE (hBuffer); return kpc_reset_value (OBJECT_TYPE (idObject), idObject, idSlot); }
static ATOMID GetApSV(va_list *ap, char **types) { OBJECTID idObj = va_arg(*ap, OBJECTID); ATOMID idSlot = va_arg(*ap, ATOMID); ++(*types); return Kpp_Get_SlotValue(OBJECT_TYPE(idObj), idObj, idSlot); }
OBJECTID PEXPORT KpcGetOwner(OBJECTID idObj, ATOMID slot) { OBJECTID idOwner = Kpp_Get_SlotOwner(OBJECT_TYPE(idObj), idObj, slot); if (!idOwner) return kpc_error(); return idOwner; }
BOOL PEXPORT KpcDeleteHierarchy(ATOMID idName) { WORD wType; OBJECTID idClass = KppGetObjectId(idName, &wType); BOOL bRes = kpc_delete_hierarchy(OBJECT_TYPE(idClass), idClass); return bRes ? TRUE : kpc_error(); }
BOOL PEXPORT KpcResetValue(OBJECTID idObj, ATOMID slot) { WORD wType = OBJECT_TYPE(idObj); if (!Kpp_Get_LocalSlot(wType, idObj, slot)) return FALSE; return kpc_reset_value(wType, idObj, slot) || kpc_error(); }
LISTID PEXPORT KpcSetNthElem(OBJECTID idObj, ATOMID slot, int i, ATOMID value) { WORD wType = OBJECT_TYPE(idObj); LISTID idList = Kpp_Get_SlotListValue(wType, idObj, slot); BOOL bBAChange = kpc_check_for_monitor(wType, idObj, slot, &idList); LISTID res = kpc_set_nth_elem(idList, wType, idObj, slot, i, value, bBAChange); return res ? res : kpc_error(); }
ATOMID PEXPORT KpcMakeSlotF(OBJECTID idObj, ATOMID name) { WORD wType = OBJECT_TYPE(idObj); ITEMID idSlot = Kpp_Make_Slot(wType, idObj, name); if (idSlot == NULLID) return NULL; return name; }
LISTID PEXPORT KpcRemoveFromList(OBJECTID idObj, ATOMID slot, ATOMID value) { WORD wType = OBJECT_TYPE(idObj); LISTID idList = Kpp_Get_SlotListValue(wType, idObj, slot); BOOL bBAChange = kpc_check_for_monitor(wType, idObj, slot, &idList); int i = KppGetElemPos(idList, value); LISTID res = kpc_remove_nth_elem(idList, wType, idObj, slot, i, bBAChange); return res ? res : kpc_error(); }
LPSTR PEXPORT KpcGetSlotComment(char *buf, OBJECTID idObj, ATOMID slot) { ATOMID comment = Kpp_Get_SlotDesc(OBJECT_TYPE(idObj), idObj, slot); if (comment && comment != lpIDs->idNull) KppGetAtomName(comment, buf, RET_BUFFER_LEN); else buf[0] = '\0'; return buf; }
LPSTR PEXPORT KpcGetMethodComment(char *buf, OBJECTID idObj, ATOMID name) { ATOMID comment = Kpp_Get_MethodDesc(OBJECT_TYPE(idObj), idObj, name); if (!comment) buf[0] = '\0'; else KppGetAtomName(comment, buf, RET_BUFFER_LEN); return buf; }
LISTID PEXPORT KpcGetInstanceList(OBJECTID idClass, OBJECTID idObj, ATOMID slot) { if (OBJECT_TYPE(idClass) == CLASS) { LISTID idNewList = kpc_get_instance_list(idClass); if (idNewList) { WORD wRes = Kpp_Set_SlotValue(OBJECT_TYPE(idObj), idObj, slot, idNewList, EXPLIST); return wRes ? idNewList : kpc_error(); } return kpc_error(); } return KpcObjError(hInstThisDll, IDE_MUSTBECLASS, idClass); }
OBJECTID PEXPORT KpcMakeClass(ATOMID name, OBJECTID idClass) { if (!idClass) idClass = lpIDs->idRootClass; if (OBJECT_TYPE(idClass) == CLASS) { OBJECTID class = Kpp_MakeClass(name, idClass); return class ? class : kpc_error(); }
int PEXPORT KpcGetDepth(OBJECTID idClass) { if (OBJECT_TYPE(idClass) == CLASS) { WORD wCount = 0; KppGetClassDepth(idClass, (LPSTR) &wCount); return (int) wCount; } return kpc_error(); }
OBJECTID PEXPORT KpcGetParent(OBJECTID idObj) { WORD wType = OBJECT_TYPE(idObj); OBJECTID idClass; if (KppIsRemoteObject(wType, idObj)) idClass = KppKrpGetParentCB(idObj); else idClass = Kpp_Get_Super(wType, idObj); return idClass ? idClass : kpc_error(); }
ATOMID PEXPORT KpcSetSlotOptionF(OBJECTID idObj, ATOMID slot, ATOMID option, ATOMID idValue) { ATOMID idRes; if (option == lpIDs->idMultiple || option == lpIDs->idSingle) idValue = NULLID; idRes = kpc_set_slot_option(NULL, OBJECT_TYPE(idObj), idObj, slot, option, idValue); return idRes ? idRes : kpc_error(); }