theKernel 10.0 NHI1 - theKernel - theLink - theConfig - theSq3Lite - theCompiler - theBrain - theGuard
c - tcl - cs - py - rb - jv - cc
Loading...
Searching...
No Matches
MkBufferStreamC_TOR_C_API

MkBufferStreamC - various functions to create and destroy a MkBufferStreamCMore...

+ Collaboration diagram for MkBufferStreamC_TOR_C_API:

Macros

#define MkBufferStreamCreateLOCAL_T(cls, name, size)
 Constructs a MkBufferStreamC instance as L)ocal S)torage …
 
#define MkBufferStreamCreateSTATIC_T(cls, name)
 Constructs a MkBufferStreamC instance as S)tatic S)torage …
 
#define MkBufferStreamCreateTLS_T(cls, name)
 Constructs a MkBufferStreamC instance as T)hread L)ocal S)torage …
 

Functions

MK_BUS MkBufferStreamCreate_RT (MK_RT mkrt, MK_TYP type, MK_NUM const size)
 create and initialize an MkBufferStreamC instance …
 
MK_BUS MkBufferStreamCreate64_RT (MK_RT mkrt, MK_NUM const size)
 call the BufferStreamCreate with default type MkBufferStream64S (64 byte) …
 
MK_BUS MkBufferStreamCreate256_RT (MK_RT mkrt, MK_NUM const size)
 call the BufferStreamCreate with default type MkBufferStream256S (256 byte) …
 
MK_BUS MkBufferStreamCreate1024_RT (MK_RT mkrt, MK_NUM const size)
 call the BufferStreamCreate with default type MkBufferStream1024S (1024 byte) …
 
MK_BUS MkBufferStreamCreate16384_RT (MK_RT mkrt, MK_NUM const size)
 call the BufferStreamCreate with default type MkBufferStream16384S (16384 byte) …
 
MK_BUS MkBufferStreamCreateTLS_RT (MK_RT mkrt, MK_STRN const tlsName, bool const resetB)
 same as BufferStreamCreate but require no cleanup …
 
void MkBufferStreamCreateLOCAL_T (MK_MACRO_TYP cls, MK_MACRO_TYP name, MK_NUM const size)
 
void MkBufferStreamCreateSTATIC_T (MK_MACRO_TYP cls, MK_MACRO_TYP name)
 
void MkBufferStreamCreateTLS_T (MK_MACRO_TYP cls, MK_MACRO_TYP name)
 
void MkBufferStreamFree_RT (MK_RT mkrt, MK_BUS const bus)
 init and free a MkBufferStreamS reference
 
void MkBufferStreamInit_RT (MK_RT mkrt, MK_BUS const bus, MK_TYP type, MK_NUM const size)
 init and free a MkBufferStreamS reference
 
void MkBufferStreamDelete_RT (MK_RT mkrt, MK_BUS const bus)
 Destructor - delete a MkBufferStreamC instance …
 
MK_BUS MkBufferStreamMerge_RT (MK_RT mkrt, MK_BUS const bus)
 Merge-Constructor - create a new MkBufferStreamC as a merge from an existing object …
 
MK_BUS MkBufferStreamDup_RT (MK_RT mkrt, MK_BUSN const src)
 Dup-Constructor - create a new MkBufferStreamC instance as copy from an existing MkBufferStreamC instance …
 

MkBufferStreamC - MkBufferStreamC_TOR_C_API - overload

#define MkBufferStreamCreate_1(size)
 
#define MkBufferStreamMerge_NULL(...)
 
#define MkBufferStreamMerge(...)
 
#define MkBufferStreamDup_NULL(...)
 
#define MkBufferStreamDup(...)
 
#define MkBufferStreamCreate_NULL(...)
 
#define MkBufferStreamCreate(...)
 
#define MkBufferStreamCreate_1(size)
 
#define MkBufferStreamCreate_0()
 
#define MkBufferStreamCreate1024_NULL(...)
 
#define MkBufferStreamCreate1024(...)
 
#define MkBufferStreamCreate1024_0()
 
#define MkBufferStreamCreate16384_NULL(...)
 
#define MkBufferStreamCreate16384(...)
 
#define MkBufferStreamCreate16384_0()
 
#define MkBufferStreamCreate256_NULL(...)
 
#define MkBufferStreamCreate256(...)
 
#define MkBufferStreamCreate256_0()
 
#define MkBufferStreamCreate64_NULL(...)
 
#define MkBufferStreamCreate64(...)
 
#define MkBufferStreamCreate64_0()
 
#define MkBufferStreamDelete(x)
 
#define MkBufferStreamCreateTLS_NULL(...)
 
#define MkBufferStreamCreateTLS(...)
 
#define MkBufferStreamCreateTLS_1(tlsName)
 
#define MkBufferStreamFree_NULL(...)
 
#define MkBufferStreamFree(...)
 
#define MkBufferStreamInit_NULL(...)
 
#define MkBufferStreamInit(...)
 
#define MkBufferStreamInit_2(bus, size)
 
#define MkBufferStreamInit_1(bus)
 

Detailed Description

MkBufferStreamC - various functions to create and destroy a MkBufferStreamC

Macro Definition Documentation

◆ MkBufferStreamCreate

#define MkBufferStreamCreate ( ...)
Value:
MK_BUS MkBufferStreamCreate_RT(MK_RT mkrt, MK_TYP type, MK_NUM const size)
create and initialize an MkBufferStreamC instance …
#define MK_RT_CALL

Definition at line 824 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate1024

#define MkBufferStreamCreate1024 ( ...)
Value:
MK_BUS MkBufferStreamCreate1024_RT(MK_RT mkrt, MK_NUM const size)
call the BufferStreamCreate with default type MkBufferStream1024S (1024 byte) …

Definition at line 828 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate1024_0

#define MkBufferStreamCreate1024_0 ( )
Value:
#define MkBufferStreamCreate1024(...)

Definition at line 829 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate1024_NULL

#define MkBufferStreamCreate1024_NULL ( ...)
Value:

Definition at line 827 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate16384

#define MkBufferStreamCreate16384 ( ...)
Value:
MK_BUS MkBufferStreamCreate16384_RT(MK_RT mkrt, MK_NUM const size)
call the BufferStreamCreate with default type MkBufferStream16384S (16384 byte) …

Definition at line 831 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate16384_0

#define MkBufferStreamCreate16384_0 ( )
Value:
#define MkBufferStreamCreate16384(...)

Definition at line 832 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate16384_NULL

#define MkBufferStreamCreate16384_NULL ( ...)
Value:

Definition at line 830 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate256

#define MkBufferStreamCreate256 ( ...)
Value:
MK_BUS MkBufferStreamCreate256_RT(MK_RT mkrt, MK_NUM const size)
call the BufferStreamCreate with default type MkBufferStream256S (256 byte) …

Definition at line 834 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate256_0

#define MkBufferStreamCreate256_0 ( )
Value:
#define MkBufferStreamCreate256(...)

Definition at line 835 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate256_NULL

#define MkBufferStreamCreate256_NULL ( ...)
Value:

Definition at line 833 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate64

#define MkBufferStreamCreate64 ( ...)
Value:
MK_BUS MkBufferStreamCreate64_RT(MK_RT mkrt, MK_NUM const size)
call the BufferStreamCreate with default type MkBufferStream64S (64 byte) …

Definition at line 837 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate64_0

#define MkBufferStreamCreate64_0 ( )
Value:
#define MkBufferStreamCreate64(...)

Definition at line 838 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate64_NULL

#define MkBufferStreamCreate64_NULL ( ...)
Value:

Definition at line 836 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate_0

#define MkBufferStreamCreate_0 ( )
Value:
#define MkBufferStreamCreate(...)

Definition at line 826 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate_1 [1/2]

#define MkBufferStreamCreate_1 ( size)
Value:

Definition at line 825 of file kernel_overload_mk.h.

◆ MkBufferStreamCreate_1 [2/2]

#define MkBufferStreamCreate_1 ( size)
Value:

Definition at line 8014 of file LibMkKernel_mk.h.

◆ MkBufferStreamCreate_NULL

#define MkBufferStreamCreate_NULL ( ...)
Value:

Definition at line 823 of file kernel_overload_mk.h.

◆ MkBufferStreamCreateLOCAL_T

#define MkBufferStreamCreateLOCAL_T ( cls,
name,
size )
Value:
cls##R name##R = {0}; \
struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
MkBufferStreamInit(name,cls##_TT,size)
The ABSTRACT-CLASS MkBufferStreamS is used for package-based serialized IO …

Constructs a MkBufferStreamC instance as L)ocal S)torage …

Parameters
[in]clsA subclass of MkBufferStreamS with predefined ILS storage → MkBufferStream16384S, MkBufferStream256S, MkBufferStream64S and MkBufferStream1024S
namethe name of the new MkBufferStreamS instance
sizethe minimum ILS storage to provide, if size exceed the predefined-storage from cls than heap-storage will be use.
See also
MkBufferStreamC_TOR_C_API
8076#define MkBufferStreamCreateLOCAL_T(cls,name,size) \
8077 cls##R name##R = {0}; \
8078 struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
8079 MkBufferStreamInit(name,cls##_TT,size)

Definition at line 8076 of file LibMkKernel_mk.h.

8076#define MkBufferStreamCreateLOCAL_T(cls,name,size) \
8077 cls##R name##R = {0}; \
8078 struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
8079 MkBufferStreamInit(name,cls##_TT,size)

◆ MkBufferStreamCreateSTATIC_T

#define MkBufferStreamCreateSTATIC_T ( cls,
name )
Value:
static cls##R name##R = {0}; \
struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
if (__MkCheckX(cls,&name##R)) { \
MkBufferStreamReset(name); \
} else { \
MkBufferStreamInit(name,cls##TT,0); \
} \
#define __MkCheckX(cls, x)

Constructs a MkBufferStreamC instance as S)tatic S)torage …

Parameters
[in]clsA subclass of MkBufferStreamS with predefined ILS storage → MkBufferStream16384S, MkBufferStream256S, MkBufferStream64S and MkBufferStream1024S
namethe name of the new MkBufferStreamS instance
See also
MkBufferStreamC_TOR_C_API
8092#define MkBufferStreamCreateSTATIC_T(cls,name) \
8093 static cls##R name##R = {0}; \
8094 struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
8095 if (__MkCheckX(cls,&name##R)) { \
8096 MkBufferStreamReset(name); \
8097 } else { \
8098 MkBufferStreamInit(name,cls##TT,0); \
8099 } \

Definition at line 8092 of file LibMkKernel_mk.h.

8092#define MkBufferStreamCreateSTATIC_T(cls,name) \
8093 static cls##R name##R = {0}; \
8094 struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
8095 if (__MkCheckX(cls,&name##R)) { \
8096 MkBufferStreamReset(name); \
8097 } else { \
8098 MkBufferStreamInit(name,cls##TT,0); \
8099 } \
8100// [MkBufferStreamCreateSTATIC_T]

◆ MkBufferStreamCreateTLS

#define MkBufferStreamCreateTLS ( ...)
Value:
MK_BUS MkBufferStreamCreateTLS_RT(MK_RT mkrt, MK_STRN const tlsName, bool const resetB)
same as BufferStreamCreate but require no cleanup …

Definition at line 845 of file kernel_overload_mk.h.

◆ MkBufferStreamCreateTLS_1

#define MkBufferStreamCreateTLS_1 ( tlsName)
Value:
#define MkBufferStreamCreateTLS(...)

Definition at line 846 of file kernel_overload_mk.h.

◆ MkBufferStreamCreateTLS_NULL

#define MkBufferStreamCreateTLS_NULL ( ...)
Value:

Definition at line 844 of file kernel_overload_mk.h.

◆ MkBufferStreamCreateTLS_T

#define MkBufferStreamCreateTLS_T ( cls,
name )
Value:
static MkThreadLocal cls##R name##R = {0}; \
struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
if (__MkCheckX(cls,&name##R)) { \
MkBufferStreamReset(name); \
} else { \
MkBufferStreamInit(name,cls##_TT,0); \
} \
#define MkThreadLocal

Constructs a MkBufferStreamC instance as T)hread L)ocal S)torage …

Parameters
[in]clsA subclass of MkBufferStreamS with predefined ILS storage → MkBufferStream16384S, MkBufferStream256S, MkBufferStream64S and MkBufferStream1024S
namethe name of the new MkBufferStreamS instance
See also
MkBufferStreamC_TOR_C_API
8112#define MkBufferStreamCreateTLS_T(cls,name) \
8113 static MkThreadLocal cls##R name##R = {0}; \
8114 struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
8115 if (__MkCheckX(cls,&name##R)) { \
8116 MkBufferStreamReset(name); \
8117 } else { \
8118 MkBufferStreamInit(name,cls##_TT,0); \
8119 } \

Definition at line 8112 of file LibMkKernel_mk.h.

8112#define MkBufferStreamCreateTLS_T(cls,name) \
8113 static MkThreadLocal cls##R name##R = {0}; \
8114 struct MkBufferStreamS * const name = cls##_X2bus(&name##R); \
8115 if (__MkCheckX(cls,&name##R)) { \
8116 MkBufferStreamReset(name); \
8117 } else { \
8118 MkBufferStreamInit(name,cls##_TT,0); \
8119 } \
8120// [MkBufferStreamCreateTLS_T]

◆ MkBufferStreamDelete

#define MkBufferStreamDelete ( x)
Value:
void MkBufferStreamDelete_RT(MK_RT mkrt, MK_BUS const bus)
Destructor - delete a MkBufferStreamC instance …
#define MkObjectDeleteToNull(fct, NS, x)

Definition at line 841 of file kernel_overload_mk.h.

◆ MkBufferStreamDup

#define MkBufferStreamDup ( ...)
Value:
MK_BUS MkBufferStreamDup_RT(MK_RT mkrt, MK_BUSN const src)
Dup-Constructor - create a new MkBufferStreamC instance as copy from an existing MkBufferStreamC inst...

Definition at line 820 of file kernel_overload_mk.h.

◆ MkBufferStreamDup_NULL

#define MkBufferStreamDup_NULL ( ...)
Value:

Definition at line 819 of file kernel_overload_mk.h.

◆ MkBufferStreamFree

#define MkBufferStreamFree ( ...)
Value:
void MkBufferStreamFree_RT(MK_RT mkrt, MK_BUS const bus)
init and free a MkBufferStreamS reference

Definition at line 850 of file kernel_overload_mk.h.

◆ MkBufferStreamFree_NULL

#define MkBufferStreamFree_NULL ( ...)
Value:

Definition at line 849 of file kernel_overload_mk.h.

◆ MkBufferStreamInit

#define MkBufferStreamInit ( ...)
Value:
void MkBufferStreamInit_RT(MK_RT mkrt, MK_BUS const bus, MK_TYP type, MK_NUM const size)
init and free a MkBufferStreamS reference

Definition at line 852 of file kernel_overload_mk.h.

◆ MkBufferStreamInit_1

#define MkBufferStreamInit_1 ( bus)
Value:
MkBufferStreamInit(bus,NULL,0)
#define MkBufferStreamInit(...)

Definition at line 854 of file kernel_overload_mk.h.

◆ MkBufferStreamInit_2

#define MkBufferStreamInit_2 ( bus,
size )
Value:
MkBufferStreamInit(bus,NULL,size)

Definition at line 853 of file kernel_overload_mk.h.

◆ MkBufferStreamInit_NULL

#define MkBufferStreamInit_NULL ( ...)
Value:

Definition at line 851 of file kernel_overload_mk.h.

◆ MkBufferStreamMerge

#define MkBufferStreamMerge ( ...)
Value:
MK_BUS MkBufferStreamMerge_RT(MK_RT mkrt, MK_BUS const bus)
Merge-Constructor - create a new MkBufferStreamC as a merge from an existing object …

Definition at line 816 of file kernel_overload_mk.h.

◆ MkBufferStreamMerge_NULL

#define MkBufferStreamMerge_NULL ( ...)
Value:

Definition at line 815 of file kernel_overload_mk.h.

Function Documentation

◆ MkBufferStreamCreate1024_RT()

MK_BUS MkBufferStreamCreate1024_RT ( MK_RT mkrt,
MK_NUM const size )

call the BufferStreamCreate with default type MkBufferStream1024S (1024 byte) …

◆ MkBufferStreamCreate16384_RT()

MK_BUS MkBufferStreamCreate16384_RT ( MK_RT mkrt,
MK_NUM const size )

call the BufferStreamCreate with default type MkBufferStream16384S (16384 byte) …

◆ MkBufferStreamCreate256_RT()

MK_BUS MkBufferStreamCreate256_RT ( MK_RT mkrt,
MK_NUM const size )

call the BufferStreamCreate with default type MkBufferStream256S (256 byte) …

◆ MkBufferStreamCreate64_RT()

MK_BUS MkBufferStreamCreate64_RT ( MK_RT mkrt,
MK_NUM const size )

call the BufferStreamCreate with default type MkBufferStream64S (64 byte) …

◆ MkBufferStreamCreate_RT()

MK_BUS MkBufferStreamCreate_RT ( MK_RT mkrt,
MK_TYP type,
MK_NUM const size )

create and initialize an MkBufferStreamC instance …

The new instance belongs to the caller and may have to be released if necessary. A manual release using BufferStreamDelete is always possible, but the instance can no longer be used afterwards.

Parameters
[in]mkrtthe MkRuntimeS instance to work on - the runtime argument, used by MK_RT_CALL (C-only)
[in]typeA type defined as MkTypeS with a TT postfix (default: MkBufferStream1024S, possible: MkBufferStream16384S, MkBufferStream256S, MkBufferStream64S and MkBufferStream1024S)
[in]sizeThe initial size of the instance-local-storage. The MkBufferStreamC has dynamic-memory-management, the size value is just a hint to provide enought memory for future tasks. The real size created is the maximum of type-ILS-size and size . (default: 0 = use the type-ILS-size)
Returns
The newly created MkBufferStreamC instance, the instance is owned by the caller

◆ MkBufferStreamCreateLOCAL_T()

void MkBufferStreamCreateLOCAL_T ( MK_MACRO_TYP cls,
MK_MACRO_TYP name,
MK_NUM const size )

◆ MkBufferStreamCreateSTATIC_T()

void MkBufferStreamCreateSTATIC_T ( MK_MACRO_TYP cls,
MK_MACRO_TYP name )

◆ MkBufferStreamCreateTLS_RT()

MK_BUS MkBufferStreamCreateTLS_RT ( MK_RT mkrt,
MK_STRN const tlsName,
bool const resetB )

same as BufferStreamCreate but require no cleanup …

  • A TLS-instance only exists ONCE per thread and ONCE per tlsName in memory.
  • The memory will be reused and must not be freed.
  • If resetB is false (default) than no reset is done

Example from perfserver.c performance test with TLS storage

static enum MkErrorE
Ot_BUST ( MQ_SERVICE_CALL_ARGS )
{
  MK_BUS bus = MkBufferStreamCreateTLS_1( "perfserver-BUST" );

  while (MqReadItemExists(mqctx)) {
    MkBufferStreamWriteBUF(bus,MqReadBUF_e(mqctx));
  }

  MkBufferStreamPosToStart(bus);

  MqSendSTART_E (mqctx);
  while (MkBufferStreamReadItemExists(bus)) {
    MqSendBUF_E (mqctx, MkBufferStreamReadBUF_e (bus));
  }

error:
  return MqSendRETURN (mqctx);
}
Parameters
[in]mkrtthe MkRuntimeS instance to work on - the runtime argument, used by MK_RT_CALL (C-only)
[in]tlsNameAn per-thread unique name (string) to identify the reuse-able instance-storage. if tlsName is MK_NULL or "" than a MK_NULL is returned
[in]resetBshould the new object be reset?
Returns
the new MkBufferStreamC instance, the instance belongs to the TLS-function and does not need to be deleted.
Note
This function is intended as a replacement for MkBufferStreamCreateTLS_T for non-C programming languages.
Attention
for usage of the TLS-storage read more at StorageCreateTLS

◆ MkBufferStreamCreateTLS_T()

void MkBufferStreamCreateTLS_T ( MK_MACRO_TYP cls,
MK_MACRO_TYP name )

◆ MkBufferStreamDelete_RT()

void MkBufferStreamDelete_RT ( MK_RT mkrt,
MK_BUS const bus )

Destructor - delete a MkBufferStreamC instance …

There are two different ways to delete an instance:

ObjectDisposeto free the internal data but keep the outher shell alive - this is called a SOFT-DELETE
ObjectDelete to delete the outher shell including the internal data - this is called a HARD-DELETE
Attention
  1. The internal memory will be freed and the object-pointer will be set to NULL. If the object-pointer is already NULL nothing will be done.
  2. For a programming language without HARD-Delete support, the "Delete" method is assigned to a SOFT-Delete.
  3. For a programming language without garbage collection, a SOFT-delete without a HARD-delete causes a small memory loss (C++: ~32 bytes).
  4. After a SOFT-delete, the outher shell is still alive, but cannot be used. Any access to this shell generates an HDL-null-exception, but this exception can be caught. This is important for C++ as it prevents a core dump.
  5. On HARD-delete read more at MkSelfDeleteForce
See also
BufferStreamCreate BufferStreamDup

◆ MkBufferStreamDup_RT()

MK_BUS MkBufferStreamDup_RT ( MK_RT mkrt,
MK_BUSN const src )

Dup-Constructor - create a new MkBufferStreamC instance as copy from an existing MkBufferStreamC instance …

The new instance belongs to the caller and may have to be released if necessary. A manual release using BufferStreamDelete is always possible, but the instance can no longer be used afterwards.

Returns
The newly created MkBufferStreamC instance, the instance is owned by the caller
See also
MkObjDup MkBufferStreamDelete

◆ MkBufferStreamFree_RT()

void MkBufferStreamFree_RT ( MK_RT mkrt,
MK_BUS const bus )

init and free a MkBufferStreamS reference

To proper use a reference the storage have to be be initialised with '\0'.
The type argiment is a MkTypeS cast from a MkBufferStreamS subclass:

Example: create a local buffer-stream instance of type MkBufferStream1024S

struct MkBufferStream1024S busR = {0};
struct MkBufferStream1024S * const bus = &busR;
... do some work
#define MkBufferStream1024C_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
#define MkBufferStreamFree(...)
the final class of MkBufferStreamS with 1024 byte ILS-Size …
struct MkBufferStreamS bus

Or to create a more compact code use the template :

MkBufferStreamCreateLOCAL_T(MkBufferStream1024,bus,0};
...
MkBufferStreamFree(bus);
#define MkBufferStreamCreateLOCAL_T(cls, name, size)
Constructs a MkBufferStreamC instance as L)ocal S)torage …
Parameters
[in]mkrtthe MkRuntimeS instance to work on - the runtime argument, used by MK_RT_CALL (C-only)
[in]busthe MkBufferStreamS instance to work on

◆ MkBufferStreamInit_RT()

void MkBufferStreamInit_RT ( MK_RT mkrt,
MK_BUS const bus,
MK_TYP type,
MK_NUM const size )

init and free a MkBufferStreamS reference

To proper use a reference the storage have to be be initialised with '\0'.
The type argiment is a MkTypeS cast from a MkBufferStreamS subclass:

Example: create a local buffer-stream instance of type MkBufferStream1024S

struct MkBufferStream1024S busR = {0};
struct MkBufferStream1024S * const bus = &busR;
... do some work

Or to create a more compact code use the template :

MkBufferStreamCreateLOCAL_T(MkBufferStream1024,bus,0};
...
MkBufferStreamFree(bus);
Parameters
[in]mkrtthe MkRuntimeS instance to work on - the runtime argument, used by MK_RT_CALL (C-only)
[in]busthe MkBufferStreamS instance to work on
[in]typethe MkTypeS instance to work on - class-type with base MkBufferStreamS - (default = MK_NULL = MkBufferStreamS)
[in]sizeThe size of bus argument

◆ MkBufferStreamMerge_RT()

MK_BUS MkBufferStreamMerge_RT ( MK_RT mkrt,
MK_BUS const bus )

Merge-Constructor - create a new MkBufferStreamC as a merge from an existing object …

The Merge-Constructor create a new instance and merge all internal data from the src into the new instance. After the Merge-Constructor the BufferStreamResetFull is called for the merge-source bus.

One usage of the Merge-Constructor is to get a lightweight-copy of a Thread-Local-Storage object for external usage.

Parameters
[in]mkrtthe MkRuntimeS instance to work on - the runtime argument, used by MK_RT_CALL (C-only)
[in]busthe MkBufferStreamS instance to work on - (nonnull)
Returns
The new instance or MK_NULL on error or if no Merge-Constructor is available
Attention
The new instance have to be deleted with BufferStreamDelete
See also
BufferStreamDup BufferStreamResetFull BufferStreamDelete