/*
* Copyright © 2024 Nathan Coulter. All rights reserved.
*
*/
/*
* You may distribute and/or modify this program under the terms of the GNU
* Affero General Public License as published by the Free Software Foundation,
* either version 3 of the License, or (at your option) any later version.
* See the file "COPYING" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
/*
*----------------------------------------------------------------------
* Tcl_NewObjInterface
*----------------------------------------------------------------------
*/
#include "tcl.h"
#include "tclInt.h"
Tcl_ObjInterface *
Tcl_NewObjInterface() {
ObjInterface * ifacePtr;
ifacePtr = (ObjInterface *)Tcl_Alloc(sizeof(ObjInterface));
memset(ifacePtr ,0 ,sizeof(ObjInterface));
return (Tcl_ObjInterface *)ifacePtr;
}
Tcl_ObjType *
Tcl_NewObjType(
) {
ObjectType *objTypePtr;
objTypePtr = (ObjectType *)Tcl_Alloc(sizeof(ObjectType));
return (Tcl_ObjType *)objTypePtr;
}
int
Tcl_ObjInterfaceSetFnListAll(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListAllProc fnPtr
) {
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.all = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListAppend(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListAppendProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.append = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListAppendList(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListAppendlistProc fnPtr
) {
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.appendlist = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListContains(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListContainsProc fnPtr
) {
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.contains = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListIndex(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListIndexProc fnPtr
) {
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.index = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListIndexEnd(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListIndexEndProc fnPtr
) {
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.indexEnd = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListIsSorted(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListIsSortedProc fnPtr
) {
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.isSorted = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListLength(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListlengthProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.length = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListRange(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListRangeProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.range = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListRangeEnd(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListRangeEndProc fnPtr
) {
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.rangeEnd = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListReplace(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListReplaceProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.replace = fnPtr;
return TCL_OK;
}
int Tcl_ObjInterfaceSetFnListReplaceList(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListReplaceListProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.replaceList = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListReverse(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListReverseProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.reverse = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListSet(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListSetProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.set = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnListSetDeep(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceListSetDeepProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->list.setDeep = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnStringIndex(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceStringIndexProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->string.index = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnStringIndexEnd(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceStringIndexEndProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->string.indexEnd = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnStringIsEmpty(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceStringIsEmptyProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->string.isEmpty = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnStringLength(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceStringLengthProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->string.length = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnStringRange(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceStringRangeProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->string.range = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetFnStringRangeEnd(
Tcl_ObjInterface *objInterfacePtr
,Tcl_ObjInterfaceStringRangeEndProc fnPtr)
{
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->string.rangeEnd = fnPtr;
return TCL_OK;
}
int
Tcl_ObjInterfaceSetVersion(
Tcl_ObjInterface *objInterfacePtr
,int version
) {
ObjInterface *oiPtr = (ObjInterface *)objInterfacePtr;
oiPtr->version = version;
return TCL_OK;
}
int
Tcl_ObjTypeSetFreeInternalRepProc(
Tcl_ObjType *otPtr
,Tcl_FreeInternalRepProc *freeIntRepProc
) {
otPtr->freeIntRepProc = freeIntRepProc;
return TCL_OK;
}
int
Tcl_ObjTypeSetDupInternalRepProc(
Tcl_ObjType *otPtr
,Tcl_DupInternalRepProc *dupIntRepProc)
{
otPtr->dupIntRepProc = dupIntRepProc;
return TCL_OK;
}
int
Tcl_ObjTypeSetInterface(
Tcl_ObjType *objTypePtr
,Tcl_ObjInterface * objInterfacePtr)
{
ObjectType *otPtr = (ObjectType *)objTypePtr;
otPtr->ifPtr = objInterfacePtr;
return TCL_OK;
}
int
Tcl_ObjTypeSetUpdateStringProc(
Tcl_ObjType *otPtr
,Tcl_UpdateStringProc *updateStringProc)
{
otPtr->updateStringProc = updateStringProc;
return TCL_OK;
}
int
Tcl_ObjTypeSetSetFromAnyProc(
Tcl_ObjType *otPtr
,Tcl_SetFromAnyProc *setFromAnyProc)
{
otPtr->setFromAnyProc = setFromAnyProc;
return TCL_OK;
}
int
Tcl_ObjTypeSetName(
Tcl_ObjType *otPtr
,char *name)
{
otPtr->name = name;
return TCL_OK;
}
int
Tcl_ObjTypeSetVersion(
Tcl_ObjType *otPtr
,int version)
{
otPtr->version = version;
return TCL_OK;
}