EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
CorpRegistryBound Class Reference

#include "CorpRegistryBound.h"

Inheritance diagram for CorpRegistryBound:
Collaboration diagram for CorpRegistryBound:

Public Member Functions

 PyCallable_Make_Dispatcher (CorpRegistryBound) CorpRegistryBound(PyServiceMgr *mgr
 
virtual ~CorpRegistryBound ()
 
virtual void Release ()
 
 PyCallable_DECL_CALL (GetEveOwners)
 
 PyCallable_DECL_CALL (GetCorporation)
 
 PyCallable_DECL_CALL (GetCorporations)
 
 PyCallable_DECL_CALL (GetInfoWindowDataForChar)
 
 PyCallable_DECL_CALL (GetLockedItemLocations)
 
 PyCallable_DECL_CALL (AddCorporation)
 
 PyCallable_DECL_CALL (GetSuggestedTickerNames)
 
 PyCallable_DECL_CALL (GetOffices)
 
 PyCallable_DECL_CALL (GetStations)
 
 PyCallable_DECL_CALL (CreateRecruitmentAd)
 
 PyCallable_DECL_CALL (UpdateRecruitmentAd)
 
 PyCallable_DECL_CALL (DeleteRecruitmentAd)
 
 PyCallable_DECL_CALL (GetRecruiters)
 
 PyCallable_DECL_CALL (GetRecruitmentAdsForCorporation)
 
 PyCallable_DECL_CALL (GetMyApplications)
 
 PyCallable_DECL_CALL (InsertApplication)
 
 PyCallable_DECL_CALL (GetApplications)
 
 PyCallable_DECL_CALL (UpdateApplicationOffer)
 
 PyCallable_DECL_CALL (DeleteApplication)
 
 PyCallable_DECL_CALL (UpdateDivisionNames)
 
 PyCallable_DECL_CALL (UpdateCorporation)
 
 PyCallable_DECL_CALL (UpdateLogo)
 
 PyCallable_DECL_CALL (SetAccountKey)
 
 PyCallable_DECL_CALL (GetMember)
 
 PyCallable_DECL_CALL (GetMembers)
 
 PyCallable_DECL_CALL (MoveCompanyShares)
 
 PyCallable_DECL_CALL (MovePrivateShares)
 
 PyCallable_DECL_CALL (GetSharesByShareholder)
 
 PyCallable_DECL_CALL (GetShareholders)
 
 PyCallable_DECL_CALL (PayoutDividend)
 
 PyCallable_DECL_CALL (CanViewVotes)
 
 PyCallable_DECL_CALL (InsertVoteCase)
 
 PyCallable_DECL_CALL (GetVotes)
 
 PyCallable_DECL_CALL (CanVote)
 
 PyCallable_DECL_CALL (InsertVote)
 
 PyCallable_DECL_CALL (GetVoteCasesByCorporation)
 
 PyCallable_DECL_CALL (GetVoteCaseOptions)
 
 PyCallable_DECL_CALL (GetSanctionedActionsByCorporation)
 
 PyCallable_DECL_CALL (GetRoleGroups)
 
 PyCallable_DECL_CALL (GetRoles)
 
 PyCallable_DECL_CALL (CreateLabel)
 
 PyCallable_DECL_CALL (GetLabels)
 
 PyCallable_DECL_CALL (DeleteLabel)
 
 PyCallable_DECL_CALL (EditLabel)
 
 PyCallable_DECL_CALL (AssignLabels)
 
 PyCallable_DECL_CALL (RemoveLabels)
 
 PyCallable_DECL_CALL (GetTitles)
 
 PyCallable_DECL_CALL (UpdateTitle)
 
 PyCallable_DECL_CALL (UpdateTitles)
 
 PyCallable_DECL_CALL (DeleteTitle)
 
 PyCallable_DECL_CALL (AddBulletin)
 
 PyCallable_DECL_CALL (GetBulletins)
 
 PyCallable_DECL_CALL (DeleteBulletin)
 
 PyCallable_DECL_CALL (GetLocationalRoles)
 
 PyCallable_DECL_CALL (GetRecentKillsAndLosses)
 
 PyCallable_DECL_CALL (UpdateMember)
 
 PyCallable_DECL_CALL (ExecuteActions)
 
 PyCallable_DECL_CALL (GetCorporateContacts)
 
 PyCallable_DECL_CALL (AddCorporateContact)
 
 PyCallable_DECL_CALL (EditContactsRelationshipID)
 
 PyCallable_DECL_CALL (RemoveCorporateContacts)
 
 PyCallable_DECL_CALL (EditCorporateContact)
 
 PyCallable_DECL_CALL (CreateAlliance)
 
 PyCallable_DECL_CALL (ApplyToJoinAlliance)
 
 PyCallable_DECL_CALL (DeleteAllianceApplication)
 
 PyCallable_DECL_CALL (GetAllianceApplications)
 
 PyCallable_DECL_CALL (GetSuggestedAllianceShortNames)
 
 PyCallable_DECL_CALL (GetMemberTrackingInfo)
 
 PyCallable_DECL_CALL (GetMembersPaged)
 
 PyCallable_DECL_CALL (GetMembersByIds)
 
 PyCallable_DECL_CALL (GetMemberIDsWithMoreThanAvgShares)
 
 PyCallable_DECL_CALL (GetMemberIDsByQuery)
 
 PyCallable_DECL_CALL (GetMemberTrackingInfoSimple)
 
 PyCallable_DECL_CALL (GetRentalDetailsPlayer)
 
 PyCallable_DECL_CALL (GetRentalDetailsCorp)
 
 PyCallable_DECL_CALL (UpdateCorporationAbilities)
 
 PyCallable_DECL_CALL (UpdateStationManagementSettings)
 
 PyCallable_DECL_CALL (GetNumberOfPotentialCEOs)
 
 PyCallable_DECL_CALL (CanLeaveCurrentCorporation)
 
- Public Member Functions inherited from PyBoundObject
 PyBoundObject (PyServiceMgr *mgr)
 
virtual ~PyBoundObject ()
 
uint32 nodeID () const
 
uint32 bindID () const
 
std::string GetBindStr () const
 
const char * GetName () const
 
virtual PyResult Call (const std::string &method, PyCallArgs &args)
 
- Public Member Functions inherited from PyCallable
 PyCallable ()
 
virtual ~PyCallable ()
 

Public Attributes

CorporationDBdb
 
CorporationDB uint32 corpID
 

Protected Member Functions

bool GetSearchValues (int8 op, PyRep *rep, std::ostringstream &query)
 
uint8 GetQueryType (std::string queryType)
 
- Protected Member Functions inherited from PyBoundObject
void _SetNodeBindID (uint32 nodeID, uint32 bindID)
 
- Protected Member Functions inherited from PyCallable
void _SetCallDispatcher (CallDispatcher *d)
 

Static Protected Member Functions

static void FillOCApplicationChange (OnCorporationApplicationChanged &OCAC, const Corp::ApplicationInfo &Old, const Corp::ApplicationInfo &New)
 

Protected Attributes

CorporationDBm_db
 
Dispatcher *const m_dispatch
 
uint32 m_corpID
 
- Protected Attributes inherited from PyBoundObject
PyServiceMgr *const m_manager
 
std::string m_strBoundObjectName
 

Detailed Description

Definition at line 14 of file CorpRegistryBound.h.

Constructor & Destructor Documentation

virtual CorpRegistryBound::~CorpRegistryBound ( )
inlinevirtual

Definition at line 21 of file CorpRegistryBound.h.

References m_dispatch.

21 { delete m_dispatch; }
Dispatcher *const m_dispatch

Member Function Documentation

void CorpRegistryBound::FillOCApplicationChange ( OnCorporationApplicationChanged &  OCAC,
const Corp::ApplicationInfo Old,
const Corp::ApplicationInfo New 
)
staticprotected

Definition at line 1728 of file CorpRegistryBound.cpp.

References Corp::ApplicationInfo::appID, Corp::ApplicationInfo::appText, Corp::ApplicationInfo::charID, Corp::ApplicationInfo::corpID, Corp::ApplicationInfo::lastCID, PyStatic, Corp::ApplicationInfo::status, and Corp::ApplicationInfo::valid.

1729 {
1730  // ? (PyRep*)new PyInt(x) : PyStatic.NewNone();
1731  if (Old.valid) {
1732  OCAC.applicationIDOld = new PyInt(Old.appID);
1733  //OCAC.applicationDateTimeOld = new PyLong(Old.appTime);
1734  OCAC.applicationTextOld = new PyString(Old.appText);
1735  OCAC.characterIDOld = new PyInt(Old.charID);
1736  OCAC.corporationIDOld = new PyInt(Old.corpID);
1737  //OCAC.deletedOld = new PyInt(Old.deleted);
1738  //OCAC.grantableRolesOld = new PyLong(Old.grantRole);
1739  if (Old.lastCID) {
1740  OCAC.lastCorpUpdaterIDOld = new PyInt(Old.lastCID);
1741  } else {
1742  OCAC.lastCorpUpdaterIDOld = PyStatic.NewNone();
1743  }
1744  //OCAC.rolesOld = new PyLong(Old.role);
1745  OCAC.statusOld = new PyInt(Old.status);
1746  } else {
1747  OCAC.applicationIDOld = PyStatic.NewNone();
1748  //OCAC.applicationDateTimeOld = PyStatic.NewNone();
1749  OCAC.applicationTextOld = PyStatic.NewNone();
1750  OCAC.characterIDOld = PyStatic.NewNone();
1751  OCAC.corporationIDOld = PyStatic.NewNone();
1752  //OCAC.deletedOld = PyStatic.NewNone();
1753  //OCAC.grantableRolesOld = PyStatic.NewNone();
1754  OCAC.lastCorpUpdaterIDOld = PyStatic.NewNone();
1755  //OCAC.rolesOld = PyStatic.NewNone();
1756  OCAC.statusOld = PyStatic.NewNone();
1757  }
1758 
1759  if (New.valid) {
1760  OCAC.applicationIDNew = new PyInt(New.appID);
1761  //OCAC.applicationDateTimeNew = new PyLong(New.appTime);
1762  OCAC.applicationTextNew = new PyString(New.appText);
1763  OCAC.characterIDNew = new PyInt(New.charID);
1764  OCAC.corporationIDNew = new PyInt(New.corpID);
1765  //OCAC.deletedNew = new PyInt(New.deleted);
1766  //OCAC.grantableRolesNew = new PyLong(New.grantRole);
1767  if (New.lastCID) {
1768  OCAC.lastCorpUpdaterIDNew = new PyInt(New.lastCID);
1769  } else {
1770  OCAC.lastCorpUpdaterIDNew = PyStatic.NewNone();
1771  }
1772  //OCAC.rolesNew = new PyLong(New.role);
1773  OCAC.statusNew = new PyInt(New.status);
1774  } else {
1775  OCAC.applicationIDNew = PyStatic.NewNone();
1776  //OCAC.applicationDateTimeNew = PyStatic.NewNone();
1777  OCAC.applicationTextNew = PyStatic.NewNone();
1778  OCAC.characterIDNew = PyStatic.NewNone();
1779  OCAC.corporationIDNew = PyStatic.NewNone();
1780  //OCAC.deletedNew = PyStatic.NewNone();
1781  //OCAC.grantableRolesNew = PyStatic.NewNone();
1782  OCAC.lastCorpUpdaterIDNew = PyStatic.NewNone();
1783  //OCAC.rolesNew = PyStatic.NewNone();
1784  OCAC.statusNew = PyStatic.NewNone();
1785  }
1786 }
Python string.
Definition: PyRep.h:430
std::string appText
Definition: CorpData.h:68
Python integer.
Definition: PyRep.h:231
#define PyStatic
Definition: PyRep.h:1209
uint8 CorpRegistryBound::GetQueryType ( std::string  queryType)
protected

Definition at line 1308 of file CorpRegistryBound.cpp.

References _log, Corp::QueryType::BaseID, Corp::QueryType::CharID, Corp::QueryType::Roles, Corp::QueryType::StartDateTime, and Corp::QueryType::TitleMask.

1309 {
1310  if (queryType.compare("roles") == 0) {
1311  return Corp::QueryType::Roles;
1312  } else if (queryType.compare("rolesAtHQ") == 0) {
1313  return Corp::QueryType::Roles;
1314  } else if (queryType.compare("rolesAtBase") == 0) {
1315  return Corp::QueryType::Roles;
1316  } else if (queryType.compare("rolesAtOther") == 0) {
1317  return Corp::QueryType::Roles;
1318  } else if (queryType.compare("grantableRoles") == 0) {
1319  return Corp::QueryType::Roles;
1320  } else if (queryType.compare("grantableRolesAtHQ") == 0) {
1321  return Corp::QueryType::Roles;
1322  } else if (queryType.compare("grantableRolesAtBase") == 0) {
1323  return Corp::QueryType::Roles;
1324  } else if (queryType.compare("grantableRolesAtOther") == 0) {
1325  return Corp::QueryType::Roles;
1326  } else if (queryType.compare("baseID") == 0) {
1327  return Corp::QueryType::BaseID;
1328  } else if (queryType.compare("startDateTime") == 0) {
1330  } else if (queryType.compare("characterID") == 0) { //this is actually string. check searchOp for details
1331  return Corp::QueryType::CharID;
1332  } else if (queryType.compare("titleMask") == 0) {
1334  }
1335 
1336  _log(CORP__ERROR, "CorpRegistryBound::GetQueryType() - Invalid QueryType: %s", queryType.c_str());
1337  return 0;
1338 }
#define _log(type, fmt,...)
Definition: logsys.h:124
startDateTime FROM chrCharacters WHERE bool CorpRegistryBound::GetSearchValues ( int8  op,
PyRep rep,
std::ostringstream &  query 
)
protected

Definition at line 1241 of file CorpRegistryBound.cpp.

References _log, Corp::SearchOp::EQUAL, Corp::SearchOp::GREATER, Corp::SearchOp::GREATER_OR_EQUAL, Corp::SearchOp::HAS_BIT, PyRep::IntegerValue(), Corp::SearchOp::LESS, Corp::SearchOp::LESS_OR_EQUAL, Corp::SearchOp::NOT_EQUAL, Corp::SearchOp::NOT_HAS_BIT, Corp::SearchOp::STR_CONTAINS, Corp::SearchOp::STR_ENDS_WITH, Corp::SearchOp::STR_IS, Corp::SearchOp::STR_LIKE, Corp::SearchOp::STR_STARTS_WITH, and PyRep::StringContent().

1242 {
1243  using namespace Corp;
1244  switch (op) {
1245  case SearchOp::EQUAL: {
1246  query << " = ";
1247  query << PyRep::IntegerValue(rep);
1248  } break;
1249  case SearchOp::GREATER: {
1250  query << " > ";
1251  query << PyRep::IntegerValue(rep);
1252  } break;
1254  query << " >= ";
1255  query << PyRep::IntegerValue(rep);
1256  } break;
1257  case SearchOp::LESS: {
1258  query << " < ";
1259  query << PyRep::IntegerValue(rep);
1260  } break;
1261  case SearchOp::LESS_OR_EQUAL: {
1262  query << " <= ";
1263  query << PyRep::IntegerValue(rep);
1264  } break;
1265  case SearchOp::NOT_EQUAL: {
1266  query << " != ";
1267  query << PyRep::IntegerValue(rep);
1268  } break;
1269  case SearchOp::HAS_BIT: {
1270  query << " &";
1271  query << PyRep::IntegerValue(rep);
1272  query << " = ";
1273  query << PyRep::IntegerValue(rep);
1274  } break;
1275  case SearchOp::NOT_HAS_BIT: {
1276  query << " ~";
1277  query << PyRep::IntegerValue(rep);
1278  query << " = ";
1279  query << PyRep::IntegerValue(rep);
1280  } break;
1282  case SearchOp::STR_LIKE: {
1283  query << "%";
1284  query << PyRep::StringContent(rep);
1285  query << "% ";
1286  } break;
1288  query << PyRep::StringContent(rep);
1289  query << "%";
1290  } break;
1291  case SearchOp::STR_ENDS_WITH: {
1292  query << "%";
1293  query << PyRep::StringContent(rep);
1294  } break;
1295  case SearchOp::STR_IS: {
1296  query << " = ";
1297  query << PyRep::StringContent(rep);
1298  } break;
1299  default: {
1300  _log(CORP__ERROR, "CorpRegistryBound::GetSearchValues() sent invalid searchOp %i", op);
1301  return false;
1302  };
1303  }
1304  return true;
1305 }
static std::string StringContent(PyRep *pRep)
Definition: PyRep.cpp:103
#define _log(type, fmt,...)
Definition: logsys.h:124
Definition: EVE_Corp.h:15
static int64 IntegerValue(PyRep *pRep)
Definition: PyRep.cpp:118

Here is the call graph for this function:

CorpRegistryBound::PyCallable_DECL_CALL ( GetEveOwners  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetCorporation  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetCorporations  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetInfoWindowDataForChar  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetLockedItemLocations  )
CorpRegistryBound::PyCallable_DECL_CALL ( AddCorporation  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetSuggestedTickerNames  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetOffices  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetStations  )
CorpRegistryBound::PyCallable_DECL_CALL ( CreateRecruitmentAd  )
CorpRegistryBound::PyCallable_DECL_CALL ( UpdateRecruitmentAd  )
CorpRegistryBound::PyCallable_DECL_CALL ( DeleteRecruitmentAd  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetRecruiters  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetRecruitmentAdsForCorporation  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetMyApplications  )
CorpRegistryBound::PyCallable_DECL_CALL ( InsertApplication  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetApplications  )
CorpRegistryBound::PyCallable_DECL_CALL ( UpdateApplicationOffer  )
CorpRegistryBound::PyCallable_DECL_CALL ( DeleteApplication  )
CorpRegistryBound::PyCallable_DECL_CALL ( UpdateDivisionNames  )
CorpRegistryBound::PyCallable_DECL_CALL ( UpdateCorporation  )
CorpRegistryBound::PyCallable_DECL_CALL ( UpdateLogo  )
CorpRegistryBound::PyCallable_DECL_CALL ( SetAccountKey  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetMember  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetMembers  )
CorpRegistryBound::PyCallable_DECL_CALL ( MoveCompanyShares  )
CorpRegistryBound::PyCallable_DECL_CALL ( MovePrivateShares  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetSharesByShareholder  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetShareholders  )
CorpRegistryBound::PyCallable_DECL_CALL ( PayoutDividend  )
CorpRegistryBound::PyCallable_DECL_CALL ( CanViewVotes  )
CorpRegistryBound::PyCallable_DECL_CALL ( InsertVoteCase  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetVotes  )
CorpRegistryBound::PyCallable_DECL_CALL ( CanVote  )
CorpRegistryBound::PyCallable_DECL_CALL ( InsertVote  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetVoteCasesByCorporation  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetVoteCaseOptions  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetSanctionedActionsByCorporation  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetRoleGroups  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetRoles  )
CorpRegistryBound::PyCallable_DECL_CALL ( CreateLabel  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetLabels  )
CorpRegistryBound::PyCallable_DECL_CALL ( DeleteLabel  )
CorpRegistryBound::PyCallable_DECL_CALL ( EditLabel  )
CorpRegistryBound::PyCallable_DECL_CALL ( AssignLabels  )
CorpRegistryBound::PyCallable_DECL_CALL ( RemoveLabels  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetTitles  )
CorpRegistryBound::PyCallable_DECL_CALL ( UpdateTitle  )
CorpRegistryBound::PyCallable_DECL_CALL ( UpdateTitles  )
CorpRegistryBound::PyCallable_DECL_CALL ( DeleteTitle  )
CorpRegistryBound::PyCallable_DECL_CALL ( AddBulletin  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetBulletins  )
CorpRegistryBound::PyCallable_DECL_CALL ( DeleteBulletin  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetLocationalRoles  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetRecentKillsAndLosses  )
CorpRegistryBound::PyCallable_DECL_CALL ( UpdateMember  )
CorpRegistryBound::PyCallable_DECL_CALL ( ExecuteActions  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetCorporateContacts  )
CorpRegistryBound::PyCallable_DECL_CALL ( AddCorporateContact  )
CorpRegistryBound::PyCallable_DECL_CALL ( EditContactsRelationshipID  )
CorpRegistryBound::PyCallable_DECL_CALL ( RemoveCorporateContacts  )
CorpRegistryBound::PyCallable_DECL_CALL ( EditCorporateContact  )
CorpRegistryBound::PyCallable_DECL_CALL ( CreateAlliance  )
CorpRegistryBound::PyCallable_DECL_CALL ( ApplyToJoinAlliance  )
CorpRegistryBound::PyCallable_DECL_CALL ( DeleteAllianceApplication  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetAllianceApplications  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetSuggestedAllianceShortNames  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetMemberTrackingInfo  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetMembersPaged  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetMembersByIds  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetMemberIDsWithMoreThanAvgShares  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetMemberIDsByQuery  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetMemberTrackingInfoSimple  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetRentalDetailsPlayer  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetRentalDetailsCorp  )
CorpRegistryBound::PyCallable_DECL_CALL ( UpdateCorporationAbilities  )
CorpRegistryBound::PyCallable_DECL_CALL ( UpdateStationManagementSettings  )
CorpRegistryBound::PyCallable_DECL_CALL ( GetNumberOfPotentialCEOs  )
CorpRegistryBound::PyCallable_DECL_CALL ( CanLeaveCurrentCorporation  )
CorpRegistryBound::PyCallable_Make_Dispatcher ( CorpRegistryBound  )
virtual void CorpRegistryBound::Release ( )
inlinevirtual

Implements PyBoundObject.

Definition at line 22 of file CorpRegistryBound.h.

22  {
23  //I hate this statement
24  delete this;
25  }

Member Data Documentation

CorporationDB uint32 CorpRegistryBound::corpID

Definition at line 20 of file CorpRegistryBound.h.

CorporationDB& CorpRegistryBound::db

Definition at line 20 of file CorpRegistryBound.h.

uint32 CorpRegistryBound::m_corpID
protected

Definition at line 133 of file CorpRegistryBound.h.

CorporationDB& CorpRegistryBound::m_db
protected

Definition at line 129 of file CorpRegistryBound.h.

Dispatcher* const CorpRegistryBound::m_dispatch
protected

Definition at line 131 of file CorpRegistryBound.h.

Referenced by ~CorpRegistryBound().


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