KSquare Utilities
KKMLL::FileDesc Class Reference

Provides a detailed description of the attributes of a dataset. More...

#include <FileDesc.h>

Public Types

typedef FileDesc *const FileDescConstPtr
 
typedef FileDescFileDescPtr
 

Public Member Functions

 FileDesc ()
 
void AddAAttribute (const KKB::KKStr &_name, KKMLL::AttributeType _type, bool &alreadyExists)
 
void AddAAttribute (const KKMLL::Attribute &attribute)
 
void AddANominalValue (kkint32 fieldNum, const KKStr &nominalValue, bool &alreadyExist, RunLog &log)
 
void AddANominalValue (const KKStr &nominalValue, bool &alreadyExist, RunLog &log)
 
void AddANominalValue (const KKStr &attributeName, const KKStr &nominalValue, bool &alreadyExist, RunLog &log)
 
void AddAttributes (const KKMLL::AttributeList &attributes)
 
void AddClasses (const MLClassList &classesToAdd)
 
bool AllFieldsAreNumeric () const
 Allows the user to quickly determine if there are no nominal fields. More...
 
const KKMLL::AttributeListAttributes () const
 
const AttributeTypeVectorAttributeVector () const
 
kkint32 Cardinality (kkint32 fieldNum) const
 
const VectorInt32CardinalityVector () const
 
const MLClassListClasses () const
 
const KKStrClassNameAttribute () const
 
void ClassNameAttribute (const KKStr &_classNameAttribute)
 
const KKMLL::AttributePtrCreateAAttributeTable () const
 
AttributeTypeVector CreateAttributeTypeTable () const
 
VectorInt32 CreateCardinalityTable () const
 
void DisplayAttributeMappings ()
 
const KKStrFieldName (kkint32 fieldNum) const
 
const KKStrFileName () const
 
void FileName (const KKStr &_fileName)
 
const KKMLL::AttributeGetAAttribute (kkint32 fieldNum) const
 
kkint32 GetFieldNumFromAttributeName (const KKStr &attributeName) const
 
MLClassPtr GetMLClassPtr (const KKStr &className)
 
const KKStrGetNominalValue (kkint32 fieldNum, kkint32 code) const
 
const KKMLL::AttributePtr LookUpByName (const KKStr &attributeName) const
 
MLClassPtr LookUpMLClassByName (const KKStr &className)
 
kkint32 LookUpNominalCode (kkint32 fieldNum, const KKStr &nominalValue) const
 
MLClassPtr LookUpUnKnownMLClass ()
 
kkint32 MemoryConsumedEstimated () const
 
kkuint32 NumOfFields () const
 
bool operator!= (const FileDesc &rightSize) const
 Returns true if file description on the right size is NOT identical. More...
 
bool operator== (const FileDesc &rightSize) const
 Returns true if file description on the right size is identical. More...
 
void ReadXML (XmlStream &s, XmlTagConstPtr tag, VolConstBool &cancelFlag, RunLog &log)
 
bool SameExceptForSymbolicData (const FileDesc &otherFd, RunLog &log) const
 
kkint32 SparseMinFeatureNum () const
 
void SparseMinFeatureNum (kkint32 _sparseMinFeatureNum)
 
KKMLL::AttributeType Type (kkint32 fieldNum) const
 
KKStr TypeStr (kkint32 fieldNum) const
 
kkint16 Version () const
 
void Version (kkint16 _version)
 
void WriteXML (const KKStr &varName, std::ostream &o) const
 

Static Public Member Functions

static void FinalCleanUp ()
 Clean up function, call just before exiting the application. More...
 
static bool FinalCleanUpRanAlready ()
 
static FileDescPtr GetExistingFileDesc (FileDescPtr fileDesc)
 Returns a pointer to an existing instance of 'fileDesc' if it exists, otherwise will use one being passed in. More...
 
static FileDescPtr MergeSymbolicFields (const FileDesc &left, const FileDesc &right, RunLog &log)
 Merges the Symbolic fields of two different 'FileDesc' instances producing a new instance of 'FileDesc'. More...
 
static FileDescPtr NewContinuousDataOnly (VectorKKStr &_fieldNames)
 Creates a simple FileDesc that consists of continuous data only. More...
 

Protected Member Functions

 ~FileDesc ()
 

Friends

class KKQueue< FileDesc >
 

Detailed Description

Provides a detailed description of the attributes of a dataset.

Author
Kurt Kramer

Describes the different fields of a dataset. There will be one instance of this class for each type of Dataset that you have in an application. From this object you can get information such as number of attributes, Attribute types, weather they are nominal, continuous. If nominal what are the accepted values. *

Never delete an instance of a FileDesc object.

Only one FileDesc object can exist for any Dataset. Example the Forest-Cover dataset. You can split the data into many files and manage them separately but you will only have one instance of a FileDesc object that they will all refer to. See "GetExistingFileDesc" method below. You would initially create an instance of FileDesc and then use "GetExistingFileDesc" to make sure that it is unique. This typically happens in the FeatureFileIO derived classes.

See also
GetExistingFileDesc
FeatureVectorList
FeatureFileIo

Definition at line 72 of file FileDesc.h.

Member Typedef Documentation

Definition at line 77 of file FileDesc.h.

Definition at line 75 of file FileDesc.h.

Constructor & Destructor Documentation

FileDesc::~FileDesc ( )
protected

Definition at line 96 of file FileDesc.cpp.

97 {
98  kkint32 ZED = 7887;
99 }
__int32 kkint32
Definition: KKBaseTypes.h:88

Member Function Documentation

void FileDesc::AddAAttribute ( const KKB::KKStr _name,
KKMLL::AttributeType  _type,
bool &  alreadyExists 
)

Definition at line 169 of file FileDesc.cpp.

References KKMLL::Numeric, and KKMLL::Attribute::Type().

Referenced by KKMLL::FeatureEncoder2::CreateEncodedFileDesc(), KKMLL::FeatureEncoder::CreateEncodedFileDesc(), KKMLL::GrayScaleImagesFVProducer::DefineFileDescStatic(), KKMLL::FeatureFileIOColumn::GetFileDesc(), KKMLL::FeatureFileIOUCI::GetFileDesc(), KKMLL::FeatureFileIOSparse::GetFileDesc(), and NewContinuousDataOnly().

173 {
174  alreadyExists = false;
175  AttributePtr existingAttribute = attributes.LookUpByName (_name);
176  if (existingAttribute)
177  {
178  // This is a very bad error, it should not be able to happen
179  alreadyExists = true;
180  return;
181  }
182 
183  curAttribute = new Attribute (_name, _type, attributes.QueueSize ());
184  attributes.PushOnBack (curAttribute);
185  attributeVector.push_back (curAttribute->Type ());
186 
187  kkint32 card = 0;
188  if (curAttribute->Type () == AttributeType::Numeric)
189  card = INT_MAX;
190  cardinalityVector.push_back (card);
191 } /* AddAAttribute */
const AttributePtr LookUpByName(const KKStr &attributeName) const
Definition: Attribute.cpp:370
void PushOnBack(AttributePtr attribute)
Definition: Attribute.cpp:384
__int32 kkint32
Definition: KKBaseTypes.h:88
describes a single Feature, Type and possible values.
Definition: Attribute.h:74
AttributeType Type() const
Definition: Attribute.h:133
kkint32 QueueSize() const
Definition: KKQueue.h:313
#define INT_MAX
Adapted by Kurt Kramer be a &#39;class&#39; definition so as to make it more usable in th ePices software wor...
Definition: UsfCasCor.h:186
void FileDesc::AddAAttribute ( const KKMLL::Attribute attribute)

Definition at line 140 of file FileDesc.cpp.

References KKMLL::Numeric, and KKMLL::Attribute::Type().

Referenced by MergeSymbolicFields().

141 {
142  attributes.PushOnBack (new Attribute (attribute));
143  attributeVector.push_back (attribute.Type ());
144 
145  kkint32 card = 0;
146  if (attribute.Type () == AttributeType::Numeric)
147  card = 999999999;
148 
149  cardinalityVector.push_back (card);
150 } /* AddAAttribute */
void PushOnBack(AttributePtr attribute)
Definition: Attribute.cpp:384
__int32 kkint32
Definition: KKBaseTypes.h:88
describes a single Feature, Type and possible values.
Definition: Attribute.h:74
AttributeType Type() const
Definition: Attribute.h:133
void FileDesc::AddANominalValue ( kkint32  fieldNum,
const KKStr nominalValue,
bool &  alreadyExist,
RunLog log 
)

Definition at line 220 of file FileDesc.cpp.

References KKMLL::Nominal, KKMLL::Symbolic, and Type().

Referenced by MergeSymbolicFields().

226 {
227  ValidateFieldNum (fieldNum, "AddANominalValue");
228  AttributeType t = Type (fieldNum);
229  if ((t == AttributeType::Nominal) ||
231  )
232  {
233  attributes[fieldNum].AddANominalValue (nominalValue, alreadyExist);
234  if (!alreadyExist)
235  cardinalityVector[fieldNum]++;
236  }
237 } /* AddANominalValue */
KKMLL::AttributeType Type(kkint32 fieldNum) const
Definition: FileDesc.cpp:370
AttributeType
Definition: Attribute.h:36
void FileDesc::AddANominalValue ( const KKStr nominalValue,
bool &  alreadyExist,
RunLog log 
)

Definition at line 242 of file FileDesc.cpp.

References KKMLL::Attribute::AddANominalValue(), KKB::KKStr::Concat(), and KKB::KKException::KKException().

Referenced by AddANominalValue(), and KKMLL::FeatureFileIODstWeb::GetFileDesc().

246 {
247  if (!curAttribute)
248  {
249  // This should never happen, means that there has not been a nominal feature added yet.
250  KKStr errMsg = "FileDesc::AddANominalValue ***ERROR*** No Current Attribute Set.";
251  log.Level (-1) << endl << errMsg << endl << endl;
252  throw KKException (errMsg);
253  }
254 
255  alreadyExist = false;
256  curAttribute->AddANominalValue (nominalValue, alreadyExist);
257  if (!alreadyExist)
258  cardinalityVector[curAttribute->FieldNum ()]++;
259 } /* AddANominalValue */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
void AddANominalValue(const KKStr &nominalValue, bool &alreadyExists)
Adds a allowable Nominal value to the Nominal or Symbolic field that this attribute represents...
Definition: Attribute.cpp:123
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
kkint32 FieldNum() const
Definition: Attribute.h:106
void FileDesc::AddANominalValue ( const KKStr attributeName,
const KKStr nominalValue,
bool &  alreadyExist,
RunLog log 
)

Definition at line 264 of file FileDesc.cpp.

References AddANominalValue(), KKB::KKStr::Concat(), KKB::KKException::KKException(), and KKB::KKStr::KKStr().

269 {
270  curAttribute = attributes.LookUpByName (attributeName);
271  if (!curAttribute)
272  {
273  KKStr errMsg (128);
274  errMsg << "FileDesc::AddANominalValue ***ERROR***, Invalid Attribute[" << attributeName << "].";
275  log.Level (-1) << endl << errMsg << endl << endl;
276  throw KKException (errMsg);
277  }
278 
279  AddANominalValue (nominalValue, alreadyExist, log);
280 } /* AddANominalValue */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
const AttributePtr LookUpByName(const KKStr &attributeName) const
Definition: Attribute.cpp:370
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
void AddANominalValue(kkint32 fieldNum, const KKStr &nominalValue, bool &alreadyExist, RunLog &log)
Definition: FileDesc.cpp:220
void FileDesc::AddAttributes ( const KKMLL::AttributeList attributes)

Definition at line 156 of file FileDesc.cpp.

157 {
159  for (idx = attributes.begin (); idx != attributes.end (); ++idx)
160  {
161  AddAAttribute (**idx);
162  }
163 }
void AddAAttribute(const KKB::KKStr &_name, KKMLL::AttributeType _type, bool &alreadyExists)
Definition: FileDesc.cpp:169
std::vector< Attribute * >::const_iterator const_iterator
Definition: KKQueue.h:89
void FileDesc::AddClasses ( const MLClassList classesToAdd)

Definition at line 196 of file FileDesc.cpp.

Referenced by KKMLL::FeatureFileIOC45::GetFileDesc(), and ReadXML().

197 {
199  for (idx = classesToAdd.begin (); idx != classesToAdd.end (); idx++)
200  {
201  MLClassPtr ic = *idx;
202  if (classes.PtrToIdx (ic) < 0)
203  classes.AddMLClass (ic);
204  }
205 } /* AddClasses */
std::vector< MLClass * >::const_iterator const_iterator
Definition: KKQueue.h:89
Represents a "Class" in the Machine Learning Sense.
Definition: MLClass.h:52
kkint32 PtrToIdx(EntryConstPtr _entry) const
Definition: KKQueue.h:761
virtual void AddMLClass(MLClassPtr _mlClass)
Definition: MLClass.cpp:756
bool FileDesc::AllFieldsAreNumeric ( ) const

Allows the user to quickly determine if there are no nominal fields.

Example use is in CrossValidation application, by using this method it can quickly determine if it is worth while using encoding.

Definition at line 706 of file FileDesc.cpp.

References KKMLL::Ignore, KKMLL::Numeric, NumOfFields(), and Type().

Referenced by KKMLL::FeatureVectorList::AllFieldsAreNumeric().

707 {
708  for (kkint32 fieldNum = 0; fieldNum < (kkint32)NumOfFields (); fieldNum++)
709  {
710  AttributeType t = Type (fieldNum);
711  if ((t != AttributeType::Numeric) && (t != AttributeType::Ignore))
712  return false;
713  }
714 
715 
716  return true;
717 } /* AllFieldsAreNumeric */
__int32 kkint32
Definition: KKBaseTypes.h:88
kkuint32 NumOfFields() const
Definition: FileDesc.h:197
KKMLL::AttributeType Type(kkint32 fieldNum) const
Definition: FileDesc.cpp:370
AttributeType
Definition: Attribute.h:36
const KKMLL::AttributeList& KKMLL::FileDesc::Attributes ( ) const
inline

Definition at line 114 of file FileDesc.h.

114 {return attributes;};
const AttributeTypeVector& KKMLL::FileDesc::AttributeVector ( ) const
inline

Definition at line 115 of file FileDesc.h.

Referenced by KKMLL::FeatureNumList::AllFeatures(), and KKMLL::FeatureEncoder2::FeatureEncoder2().

115 {return attributeVector;};
kkint32 FileDesc::Cardinality ( kkint32  fieldNum) const

Definition at line 341 of file FileDesc.cpp.

References KKMLL::Attribute::Cardinality(), KKB::KKStr::Concat(), KKMLL::Ignore, KKB::KKException::KKException(), KKMLL::Nominal, KKMLL::Numeric, KKB::operator<<(), KKMLL::Symbolic, and KKMLL::Attribute::Type().

Referenced by KKMLL::FeatureVectorList::FeatureCardinality(), MergeSymbolicFields(), KKMLL::ModelParam::NumOfFeaturesAfterEncoding(), KKMLL::SVMparam::NumOfFeaturesAfterEncoding(), and KKMLL::FeatureVectorList::ReSyncSymbolicData().

342 {
343  ValidateFieldNum (fieldNum, "Type");
344 
345  AttributePtr a = attributes.IdxToPtr (fieldNum);
346 
347  if (!a)
348  {
349  KKStr errMsg;
350  errMsg << "FileDesc::Cardinality ***ERROR*** Could not locate attribute[" << fieldNum << "]";
351  cerr << errMsg;
352  throw KKException (errMsg);
353  }
354 
355  switch (a->Type ())
356  {
357  case AttributeType::Ignore: return a->Cardinality ();
358  case AttributeType::Nominal: return a->Cardinality ();
359  case AttributeType::Numeric: return INT_MAX;
360  case AttributeType::Symbolic: return a->Cardinality ();
361 
362  default: return INT_MAX;
363  }
364 
365  return INT_MAX;
366 } /* Cardinality */
EntryPtr IdxToPtr(kkuint32 idx) const
Definition: KKQueue.h:732
describes a single Feature, Type and possible values.
Definition: Attribute.h:74
AttributeType Type() const
Definition: Attribute.h:133
kkint32 Cardinality() const
Returns back the cardinality of the attribute; the number of possible values it can take...
Definition: Attribute.cpp:173
#define INT_MAX
Adapted by Kurt Kramer be a &#39;class&#39; definition so as to make it more usable in th ePices software wor...
Definition: UsfCasCor.h:186
const VectorInt32& KKMLL::FileDesc::CardinalityVector ( ) const
inline

Definition at line 116 of file FileDesc.h.

Referenced by KKMLL::FeatureEncoder2::FeatureEncoder2().

116 {return cardinalityVector;}
const MLClassList& KKMLL::FileDesc::Classes ( ) const
inline

Definition at line 117 of file FileDesc.h.

117 {return classes;}
const KKStr& KKMLL::FileDesc::ClassNameAttribute ( ) const
inline

ClassNameAttribute added to support dstWeb data files.

Definition at line 118 of file FileDesc.h.

Referenced by KKMLL::FeatureFileIODstWeb::LoadFile().

void KKMLL::FileDesc::ClassNameAttribute ( const KKStr _classNameAttribute)
inline

Definition at line 123 of file FileDesc.h.

References KKB::KKStr::operator=().

123 {classNameAttribute = _classNameAttribute;}
const AttributePtr * FileDesc::CreateAAttributeTable ( ) const

Caller will be responsible for deleting

Definition at line 408 of file FileDesc.cpp.

Referenced by KKMLL::FeatureFileIODstWeb::LoadFile(), KKMLL::FeatureFileIOC45::LoadFile(), KKMLL::FeatureFileIORoberts::SaveFile(), and KKMLL::FeatureFileIOC45::SaveFile().

409 {
410  AttributePtr* table = new AttributePtr[attributes.QueueSize ()];
411 
412  for (kkint32 x = 0; x < attributes.QueueSize (); x++)
413  table[x] = attributes.IdxToPtr (x);
414 
415  return table;
416 } /* CreateAAttributeTable */
__int32 kkint32
Definition: KKBaseTypes.h:88
EntryPtr IdxToPtr(kkuint32 idx) const
Definition: KKQueue.h:732
describes a single Feature, Type and possible values.
Definition: Attribute.h:74
kkint32 QueueSize() const
Definition: KKQueue.h:313
AttributeTypeVector FileDesc::CreateAttributeTypeTable ( ) const

Definition at line 419 of file FileDesc.cpp.

Referenced by KKMLL::FeatureVectorList::CreateAttributeTypeTable(), KKMLL::NormalizationParms::NormalizationParms(), KKMLL::NormalizationParms::ReadXML(), KKMLL::SVMModel::ReadXML(), and KKMLL::SVMModel::SVMModel().

420 {
421  kkint32 x;
422  AttributeTypeVector attributeTypes (attributes.size (), AttributeType::NULLAttribute);
423  for (x = 0; x < attributes.QueueSize (); x++)
424  attributeTypes[x] = attributes[x].Type ();
425  return attributeTypes;
426 } /* CreateAttributeTypeTable () */
__int32 kkint32
Definition: KKBaseTypes.h:88
KKMLL::AttributeType Type(kkint32 fieldNum) const
Definition: FileDesc.cpp:370
kkint32 QueueSize() const
Definition: KKQueue.h:313
VectorInt32 FileDesc::CreateCardinalityTable ( ) const

Definition at line 430 of file FileDesc.cpp.

Referenced by KKMLL::FeatureVectorList::CreateCardinalityTable(), KKMLL::SVMModel::ReadXML(), and KKMLL::SVMModel::SVMModel().

431 {
432  kkint32 x;
433  VectorInt32 cardinalityTable (attributes.QueueSize (), 0);
434  for (x = 0; x < attributes.QueueSize (); x++)
435  cardinalityTable[x] = attributes[x].Cardinality ();
436  return cardinalityTable;
437 } /* CreateCardinalityTable */
__int32 kkint32
Definition: KKBaseTypes.h:88
std::vector< kkint32 > VectorInt32
Vector of signed 32 bit integers.
Definition: KKBaseTypes.h:144
kkint32 QueueSize() const
Definition: KKQueue.h:313
kkint32 Cardinality(kkint32 fieldNum) const
Definition: FileDesc.cpp:341
void FileDesc::DisplayAttributeMappings ( )

Definition at line 617 of file FileDesc.cpp.

References KKMLL::Attribute::Cardinality(), KKMLL::Attribute::GetNominalCode(), KKMLL::Attribute::GetNominalValue(), KKMLL::Ignore, KKMLL::Nominal, KKMLL::NULLAttribute, KKMLL::Numeric, NumOfFields(), KKMLL::Ordinal, KKMLL::Symbolic, and KKMLL::Attribute::Type().

618 {
619  kkuint32 i;
620  kkint32 j;
621  AttributePtr a;
622 
623  for (i = 0; i < NumOfFields(); i++)
624  {
625  a = attributes.IdxToPtr (i);
626  cout << i << ": ";
627 
628  if (a->Type() == AttributeType::Nominal)
629  {
630  for (j = 0; j<a->Cardinality (); j++)
631  {
632  if (j != a->GetNominalCode( a->GetNominalValue(j) ))
633  {
634  cout << " Code does not match ";
635  }
636  cout << j << ":" << a->GetNominalValue(j) << " ";
637  }
638  }
639 
640  else if (a->Type() == AttributeType::Symbolic)
641  {
642  cout << "Symbolic (";
643  for (j = 0; j<a->Cardinality (); j++)
644  {
645  if (j != a->GetNominalCode ( a->GetNominalValue(j) ))
646  {
647  cout << " Code does not match ";
648  }
649  cout << j << ":" << a->GetNominalValue(j) << " ";
650  }
651 
652  cout << ")";
653  }
654 
655 
656  else if (a->Type() == AttributeType::Ignore)
657  {
658  cout << "ignore";
659  }
660 
661  else if (a->Type() == AttributeType::Numeric)
662  {
663  cout << "numeric";
664  }
665 
666  else if (a->Type() == AttributeType::Ordinal)
667  {
668  cout << "ordinal";
669  }
670 
671  else if (a->Type() == AttributeType::NULLAttribute)
672  {
673  cout << "NULL";
674  }
675  cout << endl;
676  }
677 } /* DisplayAttributeMappings */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
__int32 kkint32
Definition: KKBaseTypes.h:88
const KKStr & GetNominalValue(kkint32 code) const
Returns the nominal value for the given ordinal value.
Definition: Attribute.cpp:143
kkuint32 NumOfFields() const
Definition: FileDesc.h:197
kkint32 GetNominalCode(const KKStr &nominalValue) const
Definition: Attribute.cpp:185
EntryPtr IdxToPtr(kkuint32 idx) const
Definition: KKQueue.h:732
unsigned __int32 kkuint32
Definition: KKBaseTypes.h:89
describes a single Feature, Type and possible values.
Definition: Attribute.h:74
AttributeType Type() const
Definition: Attribute.h:133
kkint32 Cardinality() const
Returns back the cardinality of the attribute; the number of possible values it can take...
Definition: Attribute.cpp:173
const KKStr & FileDesc::FieldName ( kkint32  fieldNum) const
const KKStr& KKMLL::FileDesc::FileName ( ) const
inline

Definition at line 119 of file FileDesc.h.

Referenced by SameExceptForSymbolicData().

119 {return fileName;}
void KKMLL::FileDesc::FileName ( const KKStr _fileName)
inline

Definition at line 124 of file FileDesc.h.

References KKB::KKStr::operator=().

124 {fileName = _fileName;}
void FileDesc::FinalCleanUp ( )
static

Clean up function, call just before exiting the application.

Before you terminate your application you should call this method. It will clean up the FileDesc objects that were created during the runtime of your application.

Definition at line 57 of file FileDesc.cpp.

References KKB::GoalKeeper::Destroy(), KKB::GoalKeeper::EndBlock(), and KKB::GoalKeeper::StartBlock().

Referenced by KKMLL::MLClass::FinalCleanUp().

58 {
59  if (finalCleanUpRanAlready)
60  return;
61 
62  FileDesc::CreateBlocker ();
63  blocker->StartBlock ();
64  if (!finalCleanUpRanAlready)
65  {
66  if (exisitingDescriptions)
67  {
68  delete exisitingDescriptions;
69  exisitingDescriptions = NULL;
70  }
71  finalCleanUpRanAlready = true;
72  }
73  blocker->EndBlock ();
74 
75  GoalKeeper::Destroy (blocker); blocker = NULL;
76 } /* FinalCleanUp */
void StartBlock()
Initiates a Block as long as another thread has not already locked this object.
Definition: GoalKeeper.cpp:214
void EndBlock()
Ends the block and allows other threads to pass through StatBlock.
Definition: GoalKeeper.cpp:295
static bool KKMLL::FileDesc::FinalCleanUpRanAlready ( )
inlinestatic

Definition at line 88 of file FileDesc.h.

Referenced by KKMLL::MLClass::FinalCleanUp().

88 {return finalCleanUpRanAlready;}
const Attribute & FileDesc::GetAAttribute ( kkint32  fieldNum) const

Definition at line 210 of file FileDesc.cpp.

Referenced by KKMLL::FeatureEncoder::FeatureEncoder(), and MergeSymbolicFields().

211 {
212  ValidateFieldNum (fieldNum, "GetAAttribute");
213  const Attribute& a = attributes [fieldNum];
214  return a;
215 } /* GetAAttribute */
describes a single Feature, Type and possible values.
Definition: Attribute.h:74
FileDescPtr FileDesc::GetExistingFileDesc ( FileDescPtr  fileDesc)
static

Returns a pointer to an existing instance of 'fileDesc' if it exists, otherwise will use one being passed in.

First looks to see if a the same FileDesc is already in the existing list

in that case will return back the same pointer.

> Second Will look for a existing FileDesc that is the same as the 'fileDesc'
being passed in.
if one is found them
fileDesc is deleted
exiting one will be returned.
else
fileDesc will be added to existinList (exisitingDescriptions) and returned.
and returned.
Parameters
[in]fileDescPointer to a FileDesc object that you want to look and see if one that is identical already exists.
Returns
pointer to the 'FileDesc' instance that the caller should be using.

Definition at line 555 of file FileDesc.cpp.

References KKB::KKStr::Concat(), KKB::GoalKeeper::EndBlock(), KKMLL::FileDescList::FileDescList(), KKB::KKException::KKException(), and KKB::GoalKeeper::StartBlock().

Referenced by KKMLL::FeatureEncoder2::CreateEncodedFileDesc(), KKMLL::GrayScaleImagesFVProducer::DefineFileDescStatic(), KKMLL::FeatureVectorProducer::FileDesc(), KKMLL::FeatureFileIOC45::LoadFeatureFile(), KKMLL::FeatureFileIO::LoadFeatureFile(), MergeSymbolicFields(), NewContinuousDataOnly(), and KKMLL::XmlElementFileDesc::XmlElementFileDesc().

556 {
557  if (fileDesc == NULL)
558  {
559  KKStr errMsg = "FileDesc::GetExistingFileDesc ***ERROR*** (fileDesc == NULL).";
560  cerr << endl << errMsg << endl << endl;
561  throw KKException (errMsg);
562  }
563  FileDescPtr result = NULL;
564 
565  CreateBlocker ();
566 
567  blocker->StartBlock ();
568 
569  if (!exisitingDescriptions)
570  {
571  exisitingDescriptions = new FileDescList (true);
572  exisitingDescriptions->PushOnBack (fileDesc);
573  result = fileDesc;
574  finalCleanUpRanAlready = false;
575  atexit (FileDesc::FinalCleanUp);
576  }
577 
578  else
579  {
580  for (auto existingFileDesc: *exisitingDescriptions)
581  {
582  if (existingFileDesc == fileDesc)
583  {
584  result = existingFileDesc;
585  break;
586  }
587  else if (existingFileDesc == NULL)
588  {
589  continue;
590  }
591  else if ((*existingFileDesc) == (*fileDesc))
592  {
593  // Looks like we already have a compatible "FileDesc" instance.
594  // In this case this is the one the user will want.
595  delete fileDesc;
596  result = existingFileDesc;
597  break;
598  }
599  }
600 
601  if (!result)
602  {
603  exisitingDescriptions->PushOnBack (fileDesc);
604  result = fileDesc;
605  }
606  }
607 
608  blocker->EndBlock ();
609 
610  return result;
611 } /* GetExistingFileDesc */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
Provides a detailed description of the attributes of a dataset.
Definition: FileDesc.h:72
static void FinalCleanUp()
Clean up function, call just before exiting the application.
Definition: FileDesc.cpp:57
void StartBlock()
Initiates a Block as long as another thread has not already locked this object.
Definition: GoalKeeper.cpp:214
void EndBlock()
Ends the block and allows other threads to pass through StatBlock.
Definition: GoalKeeper.cpp:295
virtual void PushOnBack(EntryPtr _entry)
Definition: KKQueue.h:398
Container class file &#39;FileDesc&#39; instances.
Definition: FileDesc.cpp:42
kkint32 FileDesc::GetFieldNumFromAttributeName ( const KKStr attributeName) const

Definition at line 690 of file FileDesc.cpp.

References KKMLL::Attribute::FieldNum().

Referenced by KKMLL::FeatureFileIODstWeb::LoadFile().

691 {
692  AttributePtr a = attributes.LookUpByName (attributeName);
693  if (!a)
694  return -1;
695  else
696  return a->FieldNum ();
697 } /* GetFieldNumFromAttributeName */
const AttributePtr LookUpByName(const KKStr &attributeName) const
Definition: Attribute.cpp:370
describes a single Feature, Type and possible values.
Definition: Attribute.h:74
kkint32 FieldNum() const
Definition: Attribute.h:106
MLClassPtr FileDesc::GetMLClassPtr ( const KKStr className)

Definition at line 298 of file FileDesc.cpp.

299 {
300  return classes.GetMLClassPtr (className);
301 }
virtual MLClassPtr GetMLClassPtr(const KKStr &_name)
return pointer to instance with &#39;_name&#39;; if none exists, create one and add to list.
Definition: MLClass.cpp:861
const KKStr & FileDesc::GetNominalValue ( kkint32  fieldNum,
kkint32  code 
) const

Definition at line 395 of file FileDesc.cpp.

Referenced by KKMLL::FeatureEncoder2::CreateEncodedFileDesc(), KKMLL::FeatureEncoder::CreateEncodedFileDesc(), MergeSymbolicFields(), and KKMLL::FeatureVectorList::ReSyncSymbolicData().

398 {
399  ValidateFieldNum (fieldNum, "GetNominalValue");
400  return attributes[fieldNum].GetNominalValue (code);
401 } /* GetNominalValue */
const AttributePtr FileDesc::LookUpByName ( const KKStr attributeName) const

Definition at line 682 of file FileDesc.cpp.

683 {
684  return attributes.LookUpByName (attributeName);
685 } /* LookUpByName */
const AttributePtr LookUpByName(const KKStr &attributeName) const
Definition: Attribute.cpp:370
MLClassPtr FileDesc::LookUpMLClassByName ( const KKStr className)

Definition at line 284 of file FileDesc.cpp.

Referenced by KKMLL::FeatureFileIOC45::LoadFile().

285 {
286  return classes.LookUpByName (className);
287 }
virtual MLClassPtr LookUpByName(const KKStr &_name) const
Returns a pointer of MLClass object with name (_name); if none in list will then return NULL...
Definition: MLClass.cpp:830
kkint32 FileDesc::LookUpNominalCode ( kkint32  fieldNum,
const KKStr nominalValue 
) const

Definition at line 321 of file FileDesc.cpp.

References KKMLL::Attribute::GetNominalCode(), KKMLL::Nominal, KKMLL::Symbolic, and KKMLL::Attribute::Type().

Referenced by MergeSymbolicFields(), and KKMLL::FeatureVectorList::ReSyncSymbolicData().

324 {
325  ValidateFieldNum (fieldNum, "LookUpNominalCode");
326  const Attribute& a = attributes[fieldNum];
327  if ((a.Type () != AttributeType::Nominal) &&
328  (a.Type () != AttributeType::Symbolic)
329  )
330  {
331  return -1;
332  }
333 
334  return a.GetNominalCode (nominalValue);
335 } /* LookUpNominalCode */
kkint32 GetNominalCode(const KKStr &nominalValue) const
Definition: Attribute.cpp:185
describes a single Feature, Type and possible values.
Definition: Attribute.h:74
AttributeType Type() const
Definition: Attribute.h:133
MLClassPtr FileDesc::LookUpUnKnownMLClass ( )

Definition at line 291 of file FileDesc.cpp.

Referenced by KKMLL::FeatureFileIOC45::LoadFile().

292 {
293  return classes.GetUnKnownClass ();
294 }
MLClassPtr GetUnKnownClass()
Return a pointer to the MLClass object that represents the unknown Class in the list.
Definition: MLClass.cpp:893
kkint32 FileDesc::MemoryConsumedEstimated ( ) const

Definition at line 102 of file FileDesc.cpp.

103 {
104  kkint32 memoryConsumedEstimated = sizeof (FileDesc) +
105  attributes.MemoryConsumedEstimated () +
106  sizeof (AttributeType) * attributeVector.size () +
107  sizeof (kkint32) * cardinalityVector.size () +
108  classes.MemoryConsumedEstimated () +
109  classNameAttribute.MemoryConsumedEstimated ();
110 
111  return memoryConsumedEstimated;
112 }
kkint32 MemoryConsumedEstimated() const
Definition: KKStr.cpp:766
__int32 kkint32
Definition: KKBaseTypes.h:88
kkint32 MemoryConsumedEstimated() const
Definition: MLClass.cpp:616
kkint32 MemoryConsumedEstimated() const
Definition: Attribute.cpp:346
AttributeType
Definition: Attribute.h:36
FileDescPtr FileDesc::MergeSymbolicFields ( const FileDesc left,
const FileDesc right,
RunLog log 
)
static

Merges the Symbolic fields of two different 'FileDesc' instances producing a new instance of 'FileDesc'.

This method will only work if both instances have the same number of fields, their names must be the same(NOT case sensitive), and each field in both instances must be the same type. If all these conditions are not 'true' will return NULL. The fields that are of 'Symbolic' will have their values merged together.

See also
KKMLL:Attribute

Definition at line 723 of file FileDesc.cpp.

References AddAAttribute(), AddANominalValue(), Cardinality(), KKB::KKStr::Concat(), FieldName(), FileDesc(), GetAAttribute(), GetExistingFileDesc(), GetNominalValue(), LookUpNominalCode(), NumOfFields(), KKB::KKStr::operator!=(), SameExceptForSymbolicData(), KKMLL::Symbolic, and Type().

Referenced by KKMLL::FeatureVectorList::SynchronizeSymbolicData().

727 {
728  if (!left.SameExceptForSymbolicData (right, log))
729  {
730  log.Level (-1) << endl
731  << "FileDesc::MergeSymbolicFields There are more differences between file descriptions besides symbolic data." << endl
732  << " File[" << left.fileName << "] File[" << right.fileName << "]" << endl
733  << endl;
734 
735  return NULL;
736  }
737 
738  FileDescPtr f = new FileDesc ();
739 
740  kkint32 numOfFields = left.NumOfFields ();
741 
742  kkint32 fieldNum = 0;
743 
744  for (fieldNum = 0; fieldNum < numOfFields; fieldNum++)
745  {
746  const KKStr& lName = left.FieldName (fieldNum);
747  const KKStr& rName = right.FieldName (fieldNum);
748 
749  if (lName != rName)
750  {
751  log.Level (-1) << endl
752  << "FileDesc::MergeSymbolicFields Field Name mis-match" << endl
753  << " File[" << left.fileName << "] Name[" << lName << "] File[" << right.fileName << "] Name[" << rName << "]" << endl
754  << endl;
755 
756  return NULL;
757  }
758 
759  AttributeType lType = left.Type (fieldNum);
760  AttributeType rType = right.Type (fieldNum);
761 
762  if (lType != rType)
763  {
764  log.Level (-1) << endl
765  << "FileDesc::MergeSymbolicFields Field Type mis-match" << endl
766  << " File[" << left.fileName << "] Name[" << lName << "] File[" << right.fileName << "] Name[" << rName << "]" << endl
767  << endl;
768 
769  return NULL;
770  }
771 
772  f->AddAAttribute (left.GetAAttribute (fieldNum));
773  if (lType != AttributeType::Symbolic)
774  {
775  continue;
776  }
777 
778  // We can merge in Nominal Values for this field.
779 
780  kkint32 z;
781  for (z = 0; z < right.Cardinality (fieldNum); z++)
782  {
783  const KKStr& rightNomName = right.GetNominalValue (fieldNum, z);
784  kkint32 lCode = f->LookUpNominalCode (fieldNum, rightNomName);
785  if (lCode < 0)
786  {
787  bool alreadyExists = false;
788  f->AddANominalValue (fieldNum, rightNomName, alreadyExists, log);
789  lCode = f->LookUpNominalCode (fieldNum, rightNomName);
790  }
791  }
792  }
793 
794  return GetExistingFileDesc (f);
795 } /* MergeSymbolicFields */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
Provides a detailed description of the attributes of a dataset.
Definition: FileDesc.h:72
static FileDescPtr GetExistingFileDesc(FileDescPtr fileDesc)
Returns a pointer to an existing instance of &#39;fileDesc&#39; if it exists, otherwise will use one being pa...
Definition: FileDesc.cpp:555
__int32 kkint32
Definition: KKBaseTypes.h:88
kkuint32 NumOfFields() const
Definition: FileDesc.h:197
void AddAAttribute(const KKB::KKStr &_name, KKMLL::AttributeType _type, bool &alreadyExists)
Definition: FileDesc.cpp:169
KKMLL::AttributeType Type(kkint32 fieldNum) const
Definition: FileDesc.cpp:370
bool SameExceptForSymbolicData(const FileDesc &otherFd, RunLog &log) const
Definition: FileDesc.cpp:472
const KKStr & FieldName(kkint32 fieldNum) const
Definition: FileDesc.cpp:387
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
kkint32 LookUpNominalCode(kkint32 fieldNum, const KKStr &nominalValue) const
Definition: FileDesc.cpp:321
void AddANominalValue(kkint32 fieldNum, const KKStr &nominalValue, bool &alreadyExist, RunLog &log)
Definition: FileDesc.cpp:220
const KKStr & GetNominalValue(kkint32 fieldNum, kkint32 code) const
Definition: FileDesc.cpp:395
AttributeType
Definition: Attribute.h:36
kkint32 Cardinality(kkint32 fieldNum) const
Definition: FileDesc.cpp:341
const KKMLL::Attribute & GetAAttribute(kkint32 fieldNum) const
Definition: FileDesc.cpp:210
FileDescPtr FileDesc::NewContinuousDataOnly ( VectorKKStr _fieldNames)
static

Creates a simple FileDesc that consists of continuous data only.

Creates a file description that will consist of continuous fields only. The vector '_fieldNames' will provide the list of field names.

Parameters
[in]_logLogging file to use.
[in]_fieldNamesName of fields; one entry for each field.

Definition at line 116 of file FileDesc.cpp.

References AddAAttribute(), KKB::KKStr::Concat(), FileDesc(), GetExistingFileDesc(), KKMLL::Numeric, and KKB::StrFormatInt().

Referenced by KKMLL::FeatureEncoder::FeatureEncoder(), and KKMLL::FeatureEncoder2::FeatureEncoder2().

117 {
118  bool alreadyExists = false;
119  FileDescPtr newFileDesc = new FileDesc ();
120  for (kkint32 fieldNum = 0; fieldNum < (kkint32)_fieldNames.size (); fieldNum++)
121  {
122  kkint32 seqNum = 0;
123  do
124  {
125  KKStr fieldName = _fieldNames[fieldNum];
126  if (seqNum > 0)
127  fieldName << "_" << StrFormatInt (seqNum, "000");
128 
129  newFileDesc->AddAAttribute (fieldName, AttributeType::Numeric, alreadyExists);
130  seqNum++;
131  }
132  while (alreadyExists);
133  }
134 
135  return GetExistingFileDesc (newFileDesc);
136 } /* NewContinuousDataOnly */
Provides a detailed description of the attributes of a dataset.
Definition: FileDesc.h:72
static FileDescPtr GetExistingFileDesc(FileDescPtr fileDesc)
Returns a pointer to an existing instance of &#39;fileDesc&#39; if it exists, otherwise will use one being pa...
Definition: FileDesc.cpp:555
__int32 kkint32
Definition: KKBaseTypes.h:88
void AddAAttribute(const KKB::KKStr &_name, KKMLL::AttributeType _type, bool &alreadyExists)
Definition: FileDesc.cpp:169
KKStr StrFormatInt(kkint32 val, const char *mask)
Definition: KKStr.cpp:5004
bool FileDesc::operator!= ( const FileDesc rightSize) const

Returns true if file description on the right size is NOT identical.

If both FileDesc instances have different number of fields, or any one of the fields has a different name(NOT case sensitive), or one of the fields is of a different type.

Definition at line 456 of file FileDesc.cpp.

457 {
458  if ((NumOfFields () != rightSide.NumOfFields ()) ||
459  (Version () != rightSide.Version ()) ||
460  (attributes != rightSide.attributes)
461  )
462  return true;
463 
464  return false;
465 } /* operator== */
kkuint32 NumOfFields() const
Definition: FileDesc.h:197
kkint16 Version() const
Definition: FileDesc.h:121
bool FileDesc::operator== ( const FileDesc rightSize) const

Returns true if file description on the right size is identical.

Both FileDesc instances must have the same number of fields, the fields must have the same names(NOT case sensitive), and the fields must have matching types(ex numerical, ordinal, etc).

Definition at line 443 of file FileDesc.cpp.

Referenced by KKMLL::FeatureFileIO::FeatureDataReSink().

444 {
445  if ((NumOfFields () != rightSide.NumOfFields ()) ||
446  (Version () != rightSide.Version ()) ||
447  (attributes != rightSide.attributes)
448  )
449  return false;
450 
451  return true;
452 } /* operator== */
kkuint32 NumOfFields() const
Definition: FileDesc.h:197
kkint16 Version() const
Definition: FileDesc.h:121
void FileDesc::ReadXML ( XmlStream s,
XmlTagConstPtr  tag,
VolConstBool cancelFlag,
RunLog log 
)

Definition at line 800 of file FileDesc.cpp.

References AddClasses(), KKB::KKStr::Concat(), KKB::KKStr::EqualIgnoreCase(), KKB::XmlStream::GetNextToken(), KKB::XmlElement::SectionName(), SparseMinFeatureNum(), KKB::XmlToken::tokElement, KKB::XmlToken::TokenType(), KKMLL::XmlElementMLClassNameList::Value(), KKB::XmlElement::VarName(), and Version().

Referenced by KKMLL::XmlElementFileDesc::XmlElementFileDesc().

805 {
806  XmlTokenPtr t = s.GetNextToken (cancelFlag, log);
807  while (t && (!cancelFlag))
808  {
809  if (t->TokenType () == XmlToken::TokenTypes::tokElement)
810  {
811  XmlElementPtr e = dynamic_cast<XmlElementPtr> (t);
812  const KKStr& className = e->SectionName ();
813  const KKStr& varName = e->VarName ();
814  if (varName.EqualIgnoreCase ("FileName"))
815  {
816  XmlElementKKStrPtr eKKStr = dynamic_cast<XmlElementKKStrPtr>(e);
817  if (eKKStr)
818  FileName (*(eKKStr->Value ()));
819  }
820 
821  else if (varName.EqualIgnoreCase ("Attributes"))
822  {
823  XmlElementAttributeListPtr eAttributes = dynamic_cast<XmlElementAttributeListPtr>(e);
824  if (eAttributes && (eAttributes->Value ()))
825  AddAttributes (*(eAttributes->Value ()));
826  }
827 
828  else if (varName.EqualIgnoreCase ("Classes"))
829  {
831  if (eCLasses && (eCLasses->Value ()))
832  AddClasses (*(eCLasses->Value ()));
833  }
834 
835  else if (varName.EqualIgnoreCase ("ClassNameAttribute"))
836  {
837  XmlElementKKStrPtr eKKStr = dynamic_cast<XmlElementKKStrPtr>(e);
838  if (eKKStr)
839  ClassNameAttribute (*(eKKStr->Value ()));
840  }
841 
842  else if (varName.EqualIgnoreCase ("Version"))
843  {
844  XmlElementInt32Ptr eKKInt32 = dynamic_cast<XmlElementInt32Ptr>(e);
845  if (eKKInt32)
846  Version ((kkint16)eKKInt32->Value ());
847  }
848 
849  else if (varName.EqualIgnoreCase ("SparseMinFeatureNum"))
850  {
851  XmlElementInt32Ptr eKKInt32 = dynamic_cast<XmlElementInt32Ptr>(e);
852  if (eKKInt32)
853  SparseMinFeatureNum (eKKInt32->Value ());
854  }
855  else
856  {
857  log.Level (-1) << endl
858  << "XmlElementFileDesc ***ERROR*** Unexpected Element <" << className << ", VarName=" << varName.QuotedStr () << ">" << endl
859  << endl;
860  }
861  }
862 
863  delete t;
864  t = s.GetNextToken (cancelFlag, log);
865  }
866 
867  delete t;
868  t = NULL;
869 } /* ReadXML */
__int16 kkint16
16 bit signed integer.
Definition: KKBaseTypes.h:85
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
T *const Value() const
Definition: XmlStream.h:441
kkint32 SparseMinFeatureNum() const
Definition: FileDesc.h:120
kkint32 Value() const
Definition: XmlStream.h:906
void AddClasses(const MLClassList &classesToAdd)
Definition: FileDesc.cpp:196
bool EqualIgnoreCase(const KKStr &s2) const
Definition: KKStr.cpp:1250
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
void AddAttributes(const KKMLL::AttributeList &attributes)
Definition: FileDesc.cpp:156
const KKStr & FileName() const
Definition: FileDesc.h:119
MLClassListPtr Value() const
Definition: MLClass.cpp:1484
const KKStr & ClassNameAttribute() const
Definition: FileDesc.h:118
virtual const KKStr & VarName() const
Definition: XmlStream.cpp:794
virtual const KKStr & SectionName() const
Definition: XmlStream.cpp:785
virtual TokenTypes TokenType()=0
virtual XmlTokenPtr GetNextToken(VolConstBool &cancelFlag, RunLog &log)
Definition: XmlStream.cpp:116
Will only write the ClassName rather than complete MLClass instances.
Definition: MLClass.h:580
kkint16 Version() const
Definition: FileDesc.h:121
KKStr QuotedStr() const
Returns a quoted version of string where special characters Line-Feed, Carriage Return, and Tab, are encoded as escape sequences.
Definition: KKStr.cpp:2890
bool FileDesc::SameExceptForSymbolicData ( const FileDesc otherFd,
RunLog log 
) const

Definition at line 472 of file FileDesc.cpp.

References KKB::KKStr::Concat(), FieldName(), FileName(), NumOfFields(), KKB::KKStr::operator!=(), and Type().

Referenced by MergeSymbolicFields(), KKMLL::FeatureVectorList::SameExceptForSymbolicData(), and KKMLL::FeatureVectorList::SynchronizeSymbolicData().

475 {
476  bool same = true;
477 
478  if (NumOfFields () != otherFd.NumOfFields ())
479  {
480  log.Level (-1) << endl
481  << "FileDesc::SameExceptForSymbolicData Field count mis-match" << endl
482  << " File[" << fileName << "] count[" << otherFd.NumOfFields () << "] File[" << otherFd.fileName << "] Count[" << otherFd.NumOfFields () << "]" << endl
483  << endl;
484 
485  return false;
486  }
487 
488  kkint32 numOfFields = NumOfFields ();
489  kkint32 fieldNum = 0;
490 
491  const KKStr& rightFileName = otherFd.FileName ();
492 
493  for (fieldNum = 0; fieldNum < numOfFields; fieldNum++)
494  {
495  const KKStr& lName = FieldName (fieldNum);
496  const KKStr& rName = otherFd.FieldName (fieldNum);
497 
498  if (lName != rName)
499  {
500  log.Level (-1) << endl
501  << "FileDesc::SameExceptForSymbolicData Field Name mis-match" << endl
502  << " File[" << fileName << "] Name[" << lName << "] File[" << rightFileName << "] Name[" << rName << "]" << endl
503  << endl;
504 
505  same = false;
506  }
507 
508  else
509  {
510  AttributeType lType = Type (fieldNum);
511  AttributeType rType = otherFd.Type (fieldNum);
512 
513  if (lType != rType)
514  {
515  log.Level (-1) << endl
516  << "FileDesc::SameExceptForSymbolicData Field Type mis-match" << endl
517  << " File[" << fileName << "] Name[" << lName << "] File[" << rightFileName << "] Name[" << rName << "]" << endl
518  << endl;
519 
520  same = false;
521  }
522  }
523  }
524 
525  return same;
526 } /* SameExceptForSymbolicData */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
__int32 kkint32
Definition: KKBaseTypes.h:88
kkuint32 NumOfFields() const
Definition: FileDesc.h:197
KKMLL::AttributeType Type(kkint32 fieldNum) const
Definition: FileDesc.cpp:370
const KKStr & FieldName(kkint32 fieldNum) const
Definition: FileDesc.cpp:387
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
const KKStr & FileName() const
Definition: FileDesc.h:119
AttributeType
Definition: Attribute.h:36
kkint32 KKMLL::FileDesc::SparseMinFeatureNum ( ) const
inline

Definition at line 120 of file FileDesc.h.

Referenced by KKMLL::FeatureFileIOSparse::LoadFile(), and KKMLL::FeatureFileIOSparse::SaveFile().

120 {return sparseMinFeatureNum;}
void KKMLL::FileDesc::SparseMinFeatureNum ( kkint32  _sparseMinFeatureNum)
inline

Definition at line 125 of file FileDesc.h.

Referenced by KKMLL::FeatureFileIOSparse::GetFileDesc(), and ReadXML().

125 {sparseMinFeatureNum = _sparseMinFeatureNum;}
KKStr FileDesc::TypeStr ( kkint32  fieldNum) const

Definition at line 378 of file FileDesc.cpp.

Referenced by KKMLL::FeatureEncoder2::CreateEncodedFileDesc(), and KKMLL::FeatureEncoder::CreateEncodedFileDesc().

379 {
380  ValidateFieldNum (fieldNum, "TypeStr");
381  return AttributeTypeToStr (attributes[fieldNum].Type ());
382 } /* TypeStr */
KKMLL::AttributeType Type(kkint32 fieldNum) const
Definition: FileDesc.cpp:370
const KKStr & AttributeTypeToStr(AttributeType type)
Definition: Attribute.cpp:422
kkint16 KKMLL::FileDesc::Version ( ) const
inline

Definition at line 121 of file FileDesc.h.

121 {return version;}
void KKMLL::FileDesc::Version ( kkint16  _version)
inline

Definition at line 126 of file FileDesc.h.

Referenced by KKMLL::GrayScaleImagesFVProducer::DefineFileDescStatic(), and ReadXML().

126 {version = _version;}
void FileDesc::WriteXML ( const KKStr varName,
std::ostream &  o 
) const

Definition at line 875 of file FileDesc.cpp.

References KKB::XmlTag::AddAtribute(), KKB::KKStr::Empty(), KKB::XmlTag::tagEnd, KKB::XmlTag::tagStart, KKB::XmlTag::WriteXML(), and KKB::XmlTag::XmlTag().

Referenced by KKMLL::Model::WriteModelXMLFields(), KKMLL::FeatureEncoder::WriteXML(), SVM289_MFS::Svm_Model::WriteXML(), KKMLL::SVMModel::WriteXML(), and KKMLL::XmlElementFileDesc::WriteXML().

880 {
881  XmlTag startTag ("FileDesc", XmlTag::TagTypes::tagStart);
882  if (!varName.Empty ())
883  startTag.AddAtribute ("VarName", varName);
884  startTag.WriteXML (o);
885  o << endl;
886 
887  if (!fileName.Empty ())
888  XmlElementKKStr::WriteXML (fileName, "FileName", o);
889 
890  XmlElementAttributeList::WriteXML (attributes, "Attributes", o);
891 
892  XmlElementMLClassNameList::WriteXML (classes, "Classes", o);
893 
894  if (!ClassNameAttribute ().Empty ())
895  XmlElementKKStr::WriteXML (ClassNameAttribute (), "ClassNameAttribute", o);
896 
897  XmlElementInt32::WriteXML (version, "Version", o);
898 
899  if (sparseMinFeatureNum != 0)
900  XmlElementInt32::WriteXML (sparseMinFeatureNum, "SparseMinFeatureNum", o);
901 
902  XmlTag endTag ("FileDesc", XmlTag::TagTypes::tagEnd);
903  endTag.WriteXML (o);
904  o << endl;
905 }
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
static void WriteXML(const MLClassList &mlClassList, const KKStr &varName, std::ostream &o)
Definition: MLClass.cpp:1499
static void WriteXML(const T &t, const KKStr &varName, std::ostream &o)
Definition: XmlStream.h:451
bool Empty() const
Definition: KKStr.h:241
const KKStr & ClassNameAttribute() const
Definition: FileDesc.h:118

Friends And Related Function Documentation

friend class KKQueue< FileDesc >
friend

Definition at line 107 of file FileDesc.h.


The documentation for this class was generated from the following files: