[ROOT]  doc  DocFrag  SELECT Assembly, DocFragType, Description.FirstLine()   <  SKIP 298  >   <  TAKE 192  >   

192 items

DocFragIdAssemblyDocFragTypeDescription.FirstLine()
ARCCore.PK.GetObligatoryValuesForEntityTypeARCCoreClassMemberReturns all obligatory values (based on -IsObligatory-)
ARCQuery.FunctionKeyIntARCQueryClassRounds a double value to the nearest integer (uses .NET data type Int64 (long)).
ARCAPI.DataStorageARCAPIClassThe all-in-memory global application data storage.
ARCCore.PK.EqualsARCCoreClassMemberNote that ToString is only based on __enum, meaning that two enum members / enum values with same name but different type, like CustomerP.Name and OrderP.Name, will be considered equal.
ARCQuery.FunctionKeyInt.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
ARCAPI.DataStorage.CreateARCAPIClassMemberCreates a -DataStorage- instance with default parameters.
ARCCore.PK.TryGetPARCCoreClassMemberMade virtual 13 Jan 2022. Possibly the same could be done for all other methods here since _properties is Protected anyway.
ARCQuery.FunctionKeyInt.SyntaxHelpARCQueryClassMember'Int()'
ARCAPI.DataStorage..ctorARCAPIClassMemberThis method will:
ARCCore.PK..ctorARCCoreClassMemberConstructor with 'object _enum' is necessary in order for ToString to work.
ARCQuery.FunctionKeyLengthARCQueryClassReturns length of (string) value of field, like 4 for 'John'.
ARCAPI.DataStorage.StorageARCAPIClassMemberThe actual storage.
ARCCore.PK.TypeARCCoreClassMemberReturns type from -PKTypeAttribute-'s -Type-.
ARCQuery.FunctionKeyLength.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
ARCAPI.DataStorage.ControllerStorageARCAPIClassMemberUsually (but not always) a branch of -Storage- (like Storage["log"]["{nodeId}"]["Controller"]).
ARCCore.PK.CardinalityARCCoreClassMemberReturns cardinality from -PKTypeAttribute-'s -Cardinality-.
ARCQuery.FunctionKeyLength.SyntaxHelpARCQueryClassMember'Length()'
ARCAPI.DataStorage.DocLinksARCAPIClassMemberNote that may be null.
ARCCore.PK.CorrespondingClassARCCoreClassMemberReturns -CorrespondingClass- based on -__enum-.
ARCQuery.FunctionKeyMonthARCQueryClassExtracts month component from field like '2020-12-09' becoming '12'.
ARCAPI.DataStorage.LockARCAPIClassMemberLocking object for thread-safe access from simultaneous API requests.
ARCCore.PK.ValidatorAndParserARCCoreClassMemberValidates and parses a value.
ARCQuery.FunctionKeyMonth.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
ARCAPI.DataStorage.ExternalReceiverARCAPIClassMemberTypically used by -AddController-.
ARCCore.PK.CleanerARCCoreClassMemberCleanup of values, to be used before value is attempted validated.
ARCQuery.FunctionKeyMonth.SyntaxHelpARCQueryClassMember'Month()'
ARCAPI.DataStorage.DoNotStoreInternallyARCAPIClassMemberTypically used by -AddController-.
ARCCore.PK.AllEnumsARCCoreClassMemberAll enums for the whole application.
ARCQuery.FunctionKeyQuarterARCQueryClassExtracts quarter component from datetime field like '2020-12-09' becoming 'Q4'.
ARCAPI.BaseControllerPARCAPIEnumDescribes class -BaseController-.
ARCCore.PK.AllPKEnumsARCCoreClassMemberAll -PropertyKeyEnum--tagged enums for the whole application.
ARCQuery.FunctionKeyQuarter.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
ARCAPI.BaseControllerP.CountRequestARCAPIEnumMemberNumber of calls to -APIMethod- since application initialization
ARCCore.PK.__enumARCCoreClassMemberThis information is also found as EnumMember.
ARCQuery.FunctionKeyQuarter.SyntaxHelpARCQueryClassMember'Quarter()'
ARCAPI.BaseControllerP.CountExceptionARCAPIEnumMemberNumber of exceptions at call to -APIMethod- since application initialization
ARCCore.PKHTMLAttributeARCCoreClassContains pointer to HTML encoder for a property.
ARCQuery.FunctionKeyShortARCQueryClass'Smart' way of showing time. Removes unnecessary information.
ARCAPI.BaseControllerP.LogLevelARCAPIEnumMember 
ARCCore.PKHTMLAttribute.EncodeARCCoreClassMemberEncodes the given string to HTML format through the static method implemented in class -Encoder-.
ARCQuery.FunctionKeyShort.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
ARCAPI.ResponseFormatARCAPIEnumThe response format, HTML or JSON, for an API request.
ARCCore.PKHTMLAttribute.InitializeARCCoreClassMemberTo be overridden in sub-classes, but do note that sub-classes are supposed to call base.Initialize() at end of their own initialization.
ARCQuery.FunctionKeyShort.SyntaxHelpARCQueryClassMember'Short()'
ARCAPI.ResponseFormat.JSONARCAPIEnumMember 
ARCCore.PKHTMLAttribute.TryRemovePARCCoreClassMemberShould probably never be used.
ARCQuery.FunctionKeyTMBARCQueryClassTMB = Thousands, Millions, Billions.
ARCAPI.ResponseFormat.HTMLARCAPIEnumMember 
ARCCore.PKHTMLAttribute.EncoderARCCoreClassMemberSee -Encoder-.
ARCQuery.FunctionKeyTMB.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
Assembly AgoBrowse Assembly 
ARCCore.PKHTMLAttribute.IsDefaultARCCoreClassMemberDoes not have a corresponding -BaseAttributeP- since all attributes relevant for querying (for instance in the documentation) will be IsDefault = FALSE anyway. (if we had included it in -BaseAttributeP- it would just have led to a lot of confusing IsDefault = FALSE key-values showing up.)
ARCQuery.FunctionKeyTMB.SyntaxHelpARCQueryClassMember'TMB()'
AgoBrowse.ProgramAgoBrowseClass 
ARCCore.IHTMLEncoderARCCoreClassPseudo-interface signifying that implementing class has a static metod called 'Encode' for encoding a string to HTML.
ARCQuery.FunctionKeyTotalHoursARCQueryClassConverts a timespan to total hours (as an integer).
AgoBrowse.Program.InitStreamProcessorAgoBrowseClassMemberInitializes stream processor.
ARCCore.PKLogAttributeARCCoreClassExplains how logging of changes to a property should be done.
ARCQuery.FunctionKeyTotalHours.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
AgoBrowse.RootAgoBrowseClassContains the user friendly welcome text (front page) for the application.
ARCCore.PKLogAttribute.InitializeARCCoreClassMemberTo be overridden in sub-classes, but do note that sub-classes are supposed to call base.Initialize() at end of their own initialization.
ARCQuery.FunctionKeyTotalHours.SyntaxHelpARCQueryClassMember'TotalHours()'
AgoBrowse.Root.ToHTMLSimpleSingleAgoBrowseClassMemberAlternative ('override') to -ToHTMLSimpleSingle-.
ARCCore.PKLogAttribute.TryRemovePARCCoreClassMemberShould probably never be used.
ARCQuery.FunctionKeyTotalMinutesARCQueryClassConverts a timespan to total minutes (as an integer).
AgoBrowse.Root.TryGetPAgoBrowseClassMemberMade virtual 13 Jan 2022. Possibly the same could be done for all other methods here since _properties is Protected anyway.
ARCCore.PKLogAttribute.DoNotLogAtAllARCCoreClassMemberSee -DoNotLogAtAll-.
ARCQuery.FunctionKeyTotalMinutes.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
AgoBrowse.Root.TryGetVAgoBrowseClassMemberNote that 'normally' this method would be irrelevant for a -PRich- object because we will usually be an entity object (like 'Customer') not having an intrinsic value ourselves per se (because we will instead be containing a list of values).
ARCCore.PKLogAttribute.IsDefaultARCCoreClassMemberDoes not have a corresponding -BaseAttributeP- since all attributes relevant for querying (for instance in the documentation) will be IsDefault = FALSE anyway. (if we had included it in -BaseAttributeP- it would just have led to a lot of confusing IsDefault = FALSE key-values showing up.)
ARCQuery.FunctionKeyTotalMinutes.SyntaxHelpARCQueryClassMember'TotalMinutes()'
AgoBrowse.Root.ToStringAgoBrowseClassMemberTODO: Decide on what we actually want with ToString for this class.
ARCCore.PKRelAttributeARCCoreClassDescribes relationships between entities (between tables in RDBMS terms).
ARCQuery.FunctionKeyTypeARCQueryClassReturns the type of a property.
AgoBrowse.Controllers.CompileControllerAgoBrowseClassCompiles a hierarchical 'picture book' from the requested position in the -DataStorage-.
ARCCore.PKRelAttribute.InitializeARCCoreClassMemberTo be overridden in sub-classes, but do note that sub-classes are supposed to call base.Initialize() at end of their own initialization.
ARCQuery.FunctionKeyType.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
AgoBrowse.Controllers.CompileController.APIMethodAgoBrowseClassMemberThe (only) API method that this controller supports.
ARCCore.PKRelAttribute.TryRemovePARCCoreClassMemberShould probably never be used.
ARCQuery.FunctionKeyType.SyntaxHelpARCQueryClassMember'Type()'
AgoBrowse.Controllers.CompileController.CompileAgoBrowseClassMemberCompiles a hierarchical 'picture book' from the given parameter.
ARCCore.PKRelAttribute.ForeignEntityARCCoreClassMemberSee -ForeignEntity-.
ARCQuery.FunctionKeyWeekARCQueryClassExtract week-number from field according to ISO 8601.
AgoBrowse.Controllers.CompileController.ToStringAgoBrowseClassMemberTODO: Decide on what we actually want with ToString for this class.
ARCCore.PKRelAttribute.OppositeTermARCCoreClassMemberSee -OppositeTerm-.
ARCQuery.FunctionKeyWeek.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
AgoBrowse.Controllers.ControllerFacadeAgoBrowseClassFacade for entry into the desired -RQController-.
ARCCore.PKRelAttribute.EnforceReferentialIntegrityARCCoreClassMemberSee -EnforceReferentialIntegrity-.
ARCQuery.FunctionKeyWeek.SyntaxHelpARCQueryClassMember'Week()'
AgoBrowse.Controllers.ControllerFacade.CatchAll Overload2AgoBrowseClassMemberCatches all HTTP GET requests to this API.
ARCCore.PKRelAttribute.IsDefaultARCCoreClassMemberDoes not have a corresponding -BaseAttributeP- since all attributes relevant for querying (for instance in the documentation) will be IsDefault = FALSE anyway. (if we had included it in -BaseAttributeP- it would just have led to a lot of confusing IsDefault = FALSE key-values showing up.)
ARCQuery.FunctionKeyYearARCQueryClassExtracts Year-component from field.
AgoBrowse.Controllers.ControllerFacade.CatchAll Overload1AgoBrowseClassMemberCatches all HTTP POST requests to this API.
ARCCore.PKTypeAttributeARCCoreClassContains the most basic essential information about a property key, like its description, -Type-, -Cardinality-, -IsObligatory- and -DefaultValue-.
ARCQuery.FunctionKeyYear.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
Namespace ARCCore NamespaceA necessary library (.DLL in Windows terms) that every -ARNodeType- should link to.
ARCCore.PKTypeAttribute.InitializeARCCoreClassMemberTo be overridden in sub-classes, but do note that sub-classes are supposed to call base.Initialize() at end of their own initialization.
ARCQuery.FunctionKeyYear.SyntaxHelpARCQueryClassMember'Year()'
Namespace ARCDoc NamespaceA library supporting documentation and demonstrating usage of AgoRapide.
ARCCore.PKTypeAttribute.StandardValidatorAndParserARCCoreClassMemberReturns validator and parser for well known types like string, int, long, bool, DateTime, TimeSpan, Type, Uri.
ARCQuery.FunctionKeyYearMonthARCQueryClassExtracts Year + Month component from field like 2020-06.
Namespace ARCQuery NamespaceARCQuery provides a query language that mimicks SQL but is usable through HTTP as GET URLs.
ARCCore.PKTypeAttribute.StandardCleanerARCCoreClassMemberReturns a cleaner for well known types like bool
ARCQuery.FunctionKeyYearMonth.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
Namespace ARCAPI NamespaceA library providing an API on top of the -PropertyStream-.
ARCCore.PKTypeAttribute.TryRemovePARCCoreClassMemberShould probably never be used.
ARCQuery.FunctionKeyYearMonth.SyntaxHelpARCQueryClassMember'YearMonth()'
Namespace AgoBrowse Namespace 
ARCCore.PKTypeAttribute.TypeARCCoreClassMemberSee -Type-.
ARCQuery.FunctionKeyYearQuarterARCQueryClassExtracts Year + Quarter component from field like 2020Q1.
Namespace AgoBrowse.Controllers Namespace 
ARCCore.PKTypeAttribute.CardinalityARCCoreClassMemberSee -Cardinality-.
ARCQuery.FunctionKeyYearQuarter.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
ARCCore.PKTypeAttribute.DefaultValueARCCoreClassMemberSee -DefaultValue-.
ARCQuery.FunctionKeyYearQuarter.SyntaxHelpARCQueryClassMember'YearQuarter()'
ARCCore.PKTypeAttribute.IsObligatoryARCCoreClassMemberSee -IsObligatory-.
ARCQuery.FunctionKeyYearWeekARCQueryClassExtract year and week number from field according to ISO 8601 like '2021-51'
ARCCore.PKTypeAttribute.IsDefaultARCCoreClassMemberDoes not have a corresponding -BaseAttributeP- since all attributes relevant for querying (for instance in the documentation) will be IsDefault = FALSE anyway. (if we had included it in -BaseAttributeP- it would just have led to a lot of confusing IsDefault = FALSE key-values showing up.)
ARCQuery.FunctionKeyYearWeek.TryGetPARCQueryClassMemberNOTE: The in-parameter is a property, not an entity.
ARCCore.IPARCCoreClassIP = IProperty.
ARCQuery.FunctionKeyYearWeek.SyntaxHelpARCQueryClassMember'YearWeek()'
ARCCore.IP.TryGetV Overload2ARCCoreClassMemberThe actual value of the property. Mostly relevant for single-value properties like -PValue-.
ARCQuery.NewKeyARCQueryClassA function creating new keys (new fields) that can be used against all object types in AgoRapide (against all entities).
ARCCore.IP.IncARCCoreClassMemberIncrements given property key by 1. Sets to 1 if not found. Uses long, not integer.
ARCQuery.NewKey.AddParserARCQueryClassMemberAdds an -ApplicationSpecificCode- parser.
ARCCore.IP.DecARCCoreClassMemberDecrements given property key by 1. Sets to -1 if not found. Uses long, not integer.
ARCQuery.NewKey.TryParseARCQueryClassMemberFind parsers from -Parsers- based on first word in query.
ARCCore.IP.LogARCCoreClassMemberThe 'final' overload of -Log- that is called by the other overloads.
ARCQuery.NewKey.TryParseSingleWordARCQueryClassMemberRecommended parser to use for functions without parameters.
ARCCore.IP.LogExecuteTimeARCCoreClassMemberTimes the execution of the given function and logs details about elapsed time.
ARCQuery.NewKey.TryGetPARCQueryClassMemberThe outwards facing executor, understanding use of -FunctionKeys-.
ARCCore.IP.HandleExceptionARCCoreClassMemberNote that most relevant to use for -PConcurrent-.
ARCQuery.NewKey.TryGetPInternalARCQueryClassMemberThe internal executor, containing the specific functionality for how to evaluate the key.
ARCCore.IP.TryParseDtrARCCoreClassMemberParses a PropertyStreamLine- beginning with -dtr-.
ARCQuery.NewKey.ToStringARCQueryClassMemberThe ToString representation is the one relevant when used as key, like in -IK- or when selecting like 'SELECT {fieldName}'.
ARCCore.IP.InitializeARCCoreClassMemberNote that has a default implementation (doing nothing).
ARCQuery.NewKey.FunctionKeysARCQueryClassMemberAll -FunctionKey-s chained at end of compound key (but before an eventual -QuantileKey-).
ARCCore.IP.AssertIntegrityARCCoreClassMemberSee -TryAssertIntegrity-.
ARCQuery.NewKey.QuantileKeyARCQueryClassMemberEventual final -QuantileKey- at end of compound key.
ARCCore.IP.TryAssertIntegrityARCCoreClassMemberAsserts the integrity of this entity.
ARCQuery.NewKey.ParsersARCQueryClassMemberInstances of all the relevant sub classes of -NewKey-.
ARCCore.IP.ToStringARCCoreClassMemberThe ToString()-implementation in the classes implementing this interface is supposed to give a short concise representation of the object for debugging and logging purposes, that is, intended for human consumption. The most 'important' implementation is probably the one in -PRich- (-ToString-) because that one is often the basis for your entity classes like 'Customer', 'Order' and so on
ARCQuery.NewKeyCountPARCQueryClassReturns the number of properties for a given entity object.
ARCCore.IP.TrySetPPARCCoreClassMemberSetPP = set property of property. Sets property of entity contained within this class.
ARCQuery.NewKeyCountP.TryGetPInternalARCQueryClassMemberThe internal executor, containing the specific functionality for how to evaluate the key.
ARCCore.IP.GetKeysEqualToValueARCCoreClassMemberReturns properties which themselves again have key and value equal to the given key and value.
ARCQuery.NewKeyCountP.ToStringARCQueryClassMemberThe ToString representation is the one relevant when used as key, like in -IK- or when selecting like 'SELECT {fieldName}'.
ARCCore.IP.OnTrySetPARCCoreClassMemberEvent handler to be called by -TrySetP- before it changes a property value (but AFTER it has done any validity checks, that is, after it has 'decided' to return TRUE, in other words, event handler should be called when change is guaranteed to go through, but before it actually has been done).
ARCQuery.NewKeyCountP.TryGetPARCQueryClassMemberThe outwards facing executor, understanding use of -FunctionKeys-.
ARCCore.IP.TryGetPARCCoreClassMemberGets a single property for this object
ARCQuery.NewKeyCountP.SyntaxHelpARCQueryClassMember'CountP()'
ARCCore.IP.ToPropertyStreamARCCoreClassMemberTurns object into a -PropertyStream-
ARCQuery.NewKeyCountP.FunctionKeysARCQueryClassMemberAll -FunctionKey-s chained at end of compound key (but before an eventual -QuantileKey-).
ARCCore.IP.ToJSONSerializeableARCCoreClassMemberPrepares the data into a format acceptable for System.Text.Json.JsonSerializer.Serialize.
ARCQuery.NewKeyCountP.QuantileKeyARCQueryClassMemberEventual final -QuantileKey- at end of compound key.
ARCCore.IP.GetValueForJSONSerializerARCCoreClassMemberPractical approach to serializing of -IP- based values to JSON.
ARCQuery.NewKeyCountPRecARCQueryClassReturns the number of properties for a given entity object.
ARCCore.IP.TrySetPARCCoreClassMemberSet property regardless of whether exists or not.
ARCQuery.NewKeyCountPRec.TryGetPInternalARCQueryClassMemberThe internal executor, containing the specific functionality for how to evaluate the key.
ARCCore.IP.TryGetV Overload1ARCCoreClassMemberThe actual 'unpacking' of the object.
ARCQuery.NewKeyCountPRec.CountPRecARCQueryClassMemberCounts recursively the number of properties for a given entity object.
ARCCore.IP.DeepCopyARCCoreClassMemberCreates a deep copy of this object instance, that is, a copy with all new object instances (except for immutable objects).
ARCQuery.NewKeyCountPRec.ToStringARCQueryClassMemberThe ToString representation is the one relevant when used as key, like in -IK- or when selecting like 'SELECT {fieldName}'.
ARCCore.IP.AddPV Overload2ARCCoreClassMemberNOTE: The different AddPV / AddP overloads should only be used if you want an assertion against the
ARCQuery.NewKeyCountPRec.TryGetPARCQueryClassMemberThe outwards facing executor, understanding use of -FunctionKeys-.
ARCCore.IP.AddPV Overload1ARCCoreClassMemberAdds a property value (as a -PValue-) for this objectThrows -KeyAlreadyExistsException- when relevant.
ARCQuery.NewKeyCountPRec.SyntaxHelpARCQueryClassMember'CountPRec()'
ARCCore.IP.AddPARCCoreClassMemberAdds a property for this object.
ARCQuery.NewKeyCountPRec.FunctionKeysARCQueryClassMemberAll -FunctionKey-s chained at end of compound key (but before an eventual -QuantileKey-).
ARCCore.IP.AddOrUpdatePARCCoreClassMemberDuplicates functionality of SetP.
ARCQuery.NewKeyCountPRec.QuantileKeyARCQueryClassMemberEventual final -QuantileKey- at end of compound key.
ARCCore.IP.GetOrAddPVARCCoreClassMemberGets value. If not set then value will be added
ARCQuery.NewKeyGetTypeARCQueryClassReturns the internal C# object type of the given object.
ARCCore.IP.GetPVARCCoreClassMemberGets a single property's value for this object. Returns default value if not successful.
ARCQuery.NewKeyGetType.TryGetPInternalARCQueryClassMemberThe internal executor, containing the specific functionality for how to evaluate the key.
ARCCore.IP.TryGetPVARCCoreClassMemberGets a single property's value for the given property key.
ARCQuery.NewKeyGetType.ToStringARCQueryClassMemberThe ToString representation is the one relevant when used as key, like in -IK- or when selecting like 'SELECT {fieldName}'.
ARCCore.IP.IsValidARCCoreClassMemberNote that by default all properties are 'valid' but because of -NoRealDeletion-, we must have a mechanism for invalidating properties. This property returns FALSE if property has been invalidated and timestamp for invalidation is not '0001-01-01'.
ARCQuery.NewKeyGetType.TryGetPARCQueryClassMemberThe outwards facing executor, understanding use of -FunctionKeys-.
ARCCore.IP.ItemARCCoreClassMemberOffers string-based direct indexing.
ARCQuery.NewKeyGetType.SyntaxHelpARCQueryClassMember'GetType()'
ARCCore.IP.KeysARCCoreClassMemberReturns all the keys for this instance.
ARCQuery.NewKeyGetType.FunctionKeysARCQueryClassMemberAll -FunctionKey-s chained at end of compound key (but before an eventual -QuantileKey-).
ARCCore.IP.ValuesARCCoreClassMemberReturns all the values (all the properties) for this instance.
ARCQuery.NewKeyGetType.QuantileKeyARCQueryClassMemberEventual final -QuantileKey- at end of compound key.
ARCCore.IP.LoggerARCCoreClassMemberDescribes a logger.
ARCQuery.NewKeyToPropertyStreamARCQueryClassReturns the -PropertyStream- representation of the given object.
ARCCore.IP.AllIPDerivedTypesARCCoreClassMemberAll relevant -IP--derived types for the whole application.
ARCQuery.NewKeyToPropertyStream.TryGetPInternalARCQueryClassMemberThe internal executor, containing the specific functionality for how to evaluate the key.
ARCCore.IP.AllIPDerivedTypesWithPKEnumARCCoreClassMemberAll relevant -IP--derived types for the whole application for which the also is defined a -PropertyKeyEnum-.
ARCQuery.NewKeyToPropertyStream.ToStringARCQueryClassMemberThe ToString representation is the one relevant when used as key, like in -IK- or when selecting like 'SELECT {fieldName}'.
ARCCore.IP.AllIPDerivedTypesWithPKEnumApplicationSpecificARCCoreClassMemberAll relevant -IP--derived types for the -ApplicationSpecificCode- part of the application for which also is defined a -PropertyKeyEnum-.

Generated 2025-12-07 02:42:15.855 UTC