Exemple #1
0
void ProfileDB::listCapabilities(string statePattern) {
	vector<Profile*> profiles;
	set<string> aggregateCapabilities;
	getProfiles("*", profiles);
	for (size_t i = 0; i < profiles.size(); i++) {
		Profile* profile = profiles.at(i);
		set<string> capabilities = profile->getCapabilities();
		for (set<string>::iterator capabilityIt = capabilities.begin(); capabilityIt
		        != capabilities.end(); capabilityIt++) {
			Capability capability = profile->getCapability(*capabilityIt);
			if (capability.matchCapability(statePattern)) {
				aggregateCapabilities.insert(*capabilityIt);
			}
		}
	}

	ostringstream output;
	XMLWriter writer = XMLWriter(&output);
	writer.start();
	writer.startTag("db");
	writer.setAttr("version", "1.0");
	writer.setAttr("id", "main");
	for (set<string>::iterator capabilityIt = aggregateCapabilities.begin(); capabilityIt
	        != aggregateCapabilities.end(); capabilityIt++) {
		writer.startTag(ELEMENT_CAPABILITY);
		writer.setAttr(ATTR_NAME, *capabilityIt);
		writer.endTag();
	}
	writer.endTag();
	writer.end();
	writer.dump();
}
Exemple #2
0
void EditSceneValue::slotValueChanged(int value)
{
  if (m_updateValue == false)
    {
      return;
    }

  m_updateValue = false;

  Capability* c = m_channel->searchCapability(value);
  ASSERT(c != NULL);

  for (int i = 0; i < m_presetCombo->count(); i++)
    {
      if (m_presetCombo->text(i) == c->name())
	{
	  m_presetCombo->setCurrentItem(i);
	  break;
	}
    }

  m_value = value;

  m_updateValue = true;
}
Exemple #3
0
	void HandleList(std::string& out, LocalUser* user, bool show_all, bool show_values, bool minus_prefix = false) const
	{
		Ext show_caps = (show_all ? ~0 : capext.get(user));

		for (CapMap::const_iterator i = caps.begin(); i != caps.end(); ++i)
		{
			Capability* cap = i->second;
			if (!(show_caps & cap->GetMask()))
				continue;

			if ((show_all) && (!cap->OnList(user)))
				continue;

			if (minus_prefix)
				out.push_back('-');
			out.append(cap->GetName());

			if (show_values)
			{
				const std::string* capvalue = cap->GetValue(user);
				if ((capvalue) && (!capvalue->empty()) && (capvalue->find(' ') == std::string::npos))
				{
					out.push_back('=');
					out.append(*capvalue, 0, MAX_VALUE_LENGTH);
				}
			}
			out.push_back(' ');
		}
	}
Exemple #4
0
void State::enable(const GLenum capability, const int index)
{   
    Capability* cap = getCapability(capability);
    cap->enable(index);
    if (m_mode == ImmediateMode)
        cap->apply();
}
Exemple #5
0
void State::disable(const GLenum capability)
{
    Capability* cap = getCapability(capability);
    cap->disable();
    if (m_mode == ImmediateMode)
        cap->apply();
}
unsigned long
Generic_obj_space<SPACE>::v_delete(Page_number virt, Size size,
                                   unsigned long page_attribs = L4_fpage::CRWSD)
{
  (void)size;
  assert (size.value() == 1);

  Entry *c;
  if (Optimize_local
      && mem_space() == Mem_space::current_mem_space(current_cpu()))
    {
      c = cap_virt(virt.value());
      if (!c)
	return 0;

      Capability cap = Mem_layout::read_special_safe((Capability*)c);
      if (!cap.valid())
	return 0;
    }
  else
    c = get_cap(virt.value());

  if (c && c->valid())
    {
      if (page_attribs & L4_fpage::R)
        c->invalidate();
      else
        c->del_rights(page_attribs & L4_fpage::CWSD);
    }

  return 0;
}
Exemple #7
0
void State::enable(GLenum capability)
{
    Capability* cap = getCapability(capability);
    cap->enable();
    if (m_mode == ImmediateMode)
        cap->apply();
}
bool
Generic_obj_space<SPACE>::v_lookup(Addr const &virt, Phys_addr *phys = 0,
                                   Size *size = 0, unsigned *attribs = 0)
{
  if (size) size->set_value(1);
  Entry *cap;

  if (Optimize_local
      && mem_space() == Mem_space::current_mem_space(current_cpu()))
    cap = cap_virt(virt.value());
  else
    cap = get_cap(virt.value());

  if (EXPECT_FALSE(!cap))
    {
      if (size) size->set_value(Caps_per_page);
      return false;
    }

  if (Optimize_local)
    {
      Capability c = Mem_layout::read_special_safe((Capability*)cap);

      if (phys) *phys = c.obj();
      if (c.valid() && attribs) *attribs = c.rights();
      return c.valid();
    }
  else
    {
      Obj::set_entry(virt, cap);
      if (phys) *phys = cap->obj();
      if (cap->valid() && attribs) *attribs = cap->rights();
      return cap->valid();
    }
}
Exemple #9
0
void State::disable(GLenum capability, int index)
{
    Capability* cap = getCapability(capability);
    cap->disable(index);
    if (m_mode == ImmediateMode)
        cap->apply();
}
Obj_space_virt<SPACE>::v_delete(V_pfn virt, Order size,
                                   L4_fpage::Rights page_attribs)
{
  (void)size;
  assert (size == Order(0));

  Entry *c;
  if (Optimize_local
      && SPACE::mem_space(this) == Mem_space::current_mem_space(current_cpu()))
    {
      c = cap_virt(virt);
      if (!c)
	return L4_fpage::Rights(0);

      Capability cap = Mem_layout::read_special_safe((Capability*)c);
      if (!cap.valid())
	return L4_fpage::Rights(0);
    }
  else
    c = get_cap(virt);

  if (c && c->valid())
    {
      if (page_attribs & L4_fpage::Rights::R())
        c->invalidate();
      else
        c->del_rights(page_attribs & L4_fpage::Rights::CWSD());
    }

  return L4_fpage::Rights(0);
}
Exemple #11
0
	~ManagerImpl()
	{
		for (CapMap::iterator i = caps.begin(); i != caps.end(); ++i)
		{
			Capability* cap = i->second;
			cap->Unregister();
		}
	}
Kobject_iface *
Generic_obj_space<SPACE>::lookup_local(Address virt, unsigned char *rights = 0)
{
  virt &= ~(~0UL << Whole_space);
  Capability *c = reinterpret_cast<Capability*>(cap_virt(virt));
  Capability cap = Mem_layout::read_special_safe(c);
  if (rights) *rights = cap.rights();
  return cap.obj();
}
Kobject_iface *
Obj_space_virt<SPACE>::lookup_local(Cap_index virt, L4_fpage::Rights *rights)
{
  virt &= Cap_index(~(~0UL << Whole_space));
  Capability *c = reinterpret_cast<Capability*>(cap_virt(virt));
  Capability cap = Mem_layout::read_special_safe(c);
  if (rights) *rights = L4_fpage::Rights(cap.rights());
  return cap.obj();
}
Exemple #14
0
/**
 * Install a capability.
 *
 * @param capability -- A capability.
 */
void Strine_::InstallCapability(Capability const& capability)
{
    Strine strine(shared_from_this());
    capability.Install(strine);

    this->capabilities.push_back(capability.Identifier());

    // Re-install all builtins.
    GlobalEnvironment_::InstallBuiltins( this->global_environment
                                       , this->builtins_table);
}
Exemple #15
0
    static Capability get_capability (const ::Deployment::Capability &src)
    {
      DANCE_TRACE ("Capability_Handler::get_capability - reverse");

      Capability retval (ACE_TEXT_CHAR_TO_TCHAR (src.name.in ()));
#if 0
      for (CORBA::ULong i = 0; i < src.resourceType.length (); ++i)
        retval.add_resourceType (src.resourceType[i].in ());

      for (CORBA::ULong i = 0; i < src.property.length (); ++i)
        retval.add_property (SatisfierProperty_Handler::get_sat_property (
          src.property[i]));
#endif
      return retval;
    }
Exemple #16
0
static bool parseProfileInfo(ProfileType profileType, Profile* p, const SETTINGS& s, const char* filename,
        RuntimeInfo& pi) {
	bool hasBbMajor = false, hasBbMinor = false;
	pi.isBlackberry = false;
	pi.hasLimitedResourceSize = false;
	pi.isCldc10 = false;
	pi.iconSize = "default";
	int iconX = -1;
	int iconY = -1;
	if (profileType == DEVICE_BASED) {
		ifstream file(filename);
		setName(file, filename);
		if (!file.good())
			return false;
		while (file.good()) {
			string line;
			getline(file, line);
			if (line.find("#define MA_PROF_BUG_RESOURCE_SIZE_LIMITED") == 0) {
				pi.hasLimitedResourceSize = true;
			}
			hasBbMajor |= parseIntProp(line, "MA_PROF_BLACKBERRY_VERSION",
			        pi.blackberryVersion);
			hasBbMinor |= parseIntProp(line,
			        "MA_PROF_BLACKBERRY_VERSION_MINOR", pi.blackberryMinor);
			if (line.find("#define MA_PROF_SUPPORT_CLDC_10") == 0) {
				pi.isCldc10 = true;
			}
			parseIntProp(line, "MA_PROF_CONST_ICONSIZE_X", iconX);
			parseIntProp(line, "MA_PROF_CONST_ICONSIZE_Y", iconY);
		}
		//pi.isBlackberry = (hasBbMajor && hasBbMinor);	//rapc is not available.
	} else {
		Capability iconSize = p->getCapability("IconSize");
		if (iconSize.getValue().length() > 0) {
			pi.iconSize = iconSize.getValue().c_str();
		}
		pi.isBlackberry = p->getFamily() == "BlackBerry";
		if (pi.isBlackberry) {
			Capability major = p->getCapability("Version/Major");
			Capability minor = p->getCapability("Version/Minor");
			sscanf(major.getValue().c_str(), "%i", &pi.blackberryVersion);
			sscanf(minor.getValue().c_str(), "%i", &pi.blackberryMinor);
		}
		Capability cldc = p->getCapability("CLDC");
		pi.isCldc10 = (cldc.getValue() == "1.0");
	}
	if (iconX > 0 && iconY > 0) {
		char buf[32];
		sprintf(buf, "%ix%i", iconX, iconY);
		pi.iconSize = buf;
	}
	return true;
}
inline
Kobject_iface *
Obj_space_phys<SPACE>::lookup_local(Cap_index virt, L4_fpage::Rights *rights)
{
  Entry *c = get_cap(virt);

  if (EXPECT_FALSE(!c))
    return 0;

  Capability cap = *c;

  if (rights)
    *rights = L4_fpage::Rights(cap.rights());

  return cap.obj();
}
inline
Kobject_iface *
Generic_obj_space<SPACE>::lookup_local(Address virt, unsigned char *rights = 0)
{
  Entry *c = get_cap(virt);

  if (EXPECT_FALSE(!c))
    return 0;

  Capability cap = *c;

  if (rights)
    *rights = cap.rights();

  return cap.obj();
}
Obj_space_phys<SPACE>::v_delete(V_pfn virt, Page_order size,
                                   L4_fpage::Rights page_attribs = L4_fpage::Rights::FULL())
{
  (void)size;
  assert (size == Page_order(0));
  Capability *c = get_cap(virt);

  if (c && c->valid())
    {
      if (page_attribs & L4_fpage::Rights::R())
        c->invalidate();
      else
	c->del_rights(page_attribs);
    }

  return L4_fpage::Rights(0);
}
Exemple #20
0
void AdvancedSceneEditor::invokePresetMenu(const QPoint &pos)
{
  QPopupMenu* menu = new QPopupMenu;

  menu->insertItem("Preset");
  menu->insertSeparator();

  int i = 0;
  for (Capability* c = m_currentChannel->capabilities()->first(); c != NULL; 
       c = m_currentChannel->capabilities()->next())
    {
      menu->insertItem(c->name(), i++);
    }

  if (i > 0)
    {
      connect(menu, SIGNAL(activated(int)), this, SLOT(slotPresetMenuActivated(int)));
    }
Exemple #21
0
void EditSceneValue::slotPresetComboActivated(const QString &text)
{
  if (m_updateValue == false)
    {
      return;
    }

  m_updateValue = false;

  Capability* c = m_channel->searchCapability(text);
  ASSERT(c != NULL);

  int value = (int) floor((c->lo() + c->hi()) / 2);
  m_valueSpin->setValue(value);
  m_value = value;

  m_updateValue = true;
}
unsigned long
Generic_obj_space<SPACE>::v_delete(Page_number virt, Size size,
                                   unsigned long page_attribs = L4_fpage::RWX)
{
  (void)size;
  assert (size.value() == 1);
  Capability *c = get_cap(virt.value());

  if (c && c->valid())
    {
      if (page_attribs & L4_fpage::R)
        c->invalidate();
      else
	c->del_rights(page_attribs & L4_fpage::WX);
    }

  return 0;
}
Exemple #23
0
int XattrHelper::dumpXattr(Xattr & xattr)
{
	if(xattr.m_attrName.compare( "security.capability") == 0)
	{
		Capability cap;
		if(CapabilityHelper::rawDataToCapability(xattr.m_attrValue,cap)!=-1)
		{
			cap.dump();
		}
	}
	else
	{
		std::string str(&xattr.m_attrValue[0],xattr.m_attrValue.size());
		xattr.dump();
		std::cout << "Value String ( " << str << " )"<< std::endl;
	}
	return 0;
}
Obj_space_phys<SPACE>::v_lookup(V_pfn const &virt, Phys_addr *phys,
                                Page_order *size, Attr *attribs)
{
  if (size) *size = Page_order(0);
  Entry *cap = get_cap(virt);

  if (EXPECT_FALSE(!cap))
    {
      if (size) *size = Page_order(Obj::Caps_per_page_ld2);
      return false;
    }

  Capability c = *cap;

  Obj::set_entry(virt, cap);
  if (phys) *phys = c.obj();
  if (c.valid() && attribs) *attribs = cap->rights();
  return c.valid();
}
Exemple #25
0
void Profile::toXML(XMLWriter& writer, bool includeCapabilities) {
	writer.startTag(ELEMENT_PLATFORM);
	writer.setAttr(ATTR_FAMILY, fFamily);
	writer.setAttr(ATTR_VARIANT, fVariant);
	writer.setAttr(ATTR_RUNTIME, fRuntime);
	if (fIsAbstract) {
		writer.setAttr(ATTR_ABSTRACT, "true");
	}

	if (includeCapabilities) {
		set<string> capabilities = Profile::getCapabilities();
		for (set<string>::iterator capability = capabilities.begin(); capability
		        != capabilities.end(); capability++) {
			Capability value = getCapability(*capability);
			value.toXML(writer);
		}
	}
	writer.endTag();
}
Exemple #26
0
EditSceneValue::EditSceneValue(QWidget* parent, LogicalChannel* ch,
			       SceneValue &currentValue)
  : UI_EditSceneValue(parent, "", true)
{
  ASSERT(ch != NULL);

  m_channel = ch;
  m_updateValue = true;

  for (Capability* c = m_channel->capabilities()->first(); 
       c != NULL; c = m_channel->capabilities()->next())
    {
      m_presetCombo->insertItem(c->name());
    }

  m_typeCombo->insertItem("Fade");
  m_typeCombo->insertItem("Set");
  m_typeCombo->insertItem("NoSet");

  if (currentValue.type == Scene::Fade)
    {
      m_typeCombo->setCurrentItem(0);
      m_type = QString("Fade");
    }
  else if (currentValue.type == Scene::Set)
    {
      m_typeCombo->setCurrentItem(1);
      m_type = QString("Set");
    }
  else
    {
      m_typeCombo->setCurrentItem(2);
      m_type = QString("NoSet");
    }

  connect(m_valueSpin, SIGNAL(valueChanged(int)), 
	  this, SLOT(slotValueChanged(int)));
  connect(m_presetCombo, SIGNAL(activated(const QString &)), 
	  this, SLOT(slotPresetComboActivated(const QString &)));

  m_valueSpin->setValue(currentValue.value);
  m_value = currentValue.value;
}
bool
Generic_obj_space<SPACE>::v_lookup(Addr const &virt, Phys_addr *phys = 0,
                                   Size *size = 0, unsigned *attribs = 0)
{
  if (size) *size = Size::create(1);
  Entry *cap = get_cap(virt.value());

  if (EXPECT_FALSE(!cap))
    {
      if (size) *size = Size::create(Caps_per_page);
      return false;
    }

  Capability c = *cap;

  Obj::set_entry(virt, cap);
  if (phys) *phys = c.obj();
  if (c.valid() && attribs) *attribs = cap->rights();
  return c.valid();
}
Exemple #28
0
	bool HandleReq(LocalUser* user, const std::string& reqlist)
	{
		Ext usercaps = capext.get(user);
		irc::spacesepstream ss(reqlist);
		for (std::string capname; ss.GetToken(capname); )
		{
			bool remove = (capname[0] == '-');
			if (remove)
				capname.erase(capname.begin());

			Capability* cap = ManagerImpl::Find(capname);
			if ((!cap) || (!CanRequest(user, usercaps, cap, !remove)))
				return false;

			if (remove)
				usercaps = cap->DelFromMask(usercaps);
			else
				usercaps = cap->AddToMask(usercaps);
		}

		capext.set(user, usercaps);
		return true;
	}
Obj_space_virt<SPACE>::v_lookup(V_pfn const &virt, Phys_addr *phys,
                                   Page_order *size, Attr *attribs)
{
  if (size) *size = Order(0);
  Entry *cap;

  if (Optimize_local
      && SPACE::mem_space(this) == Mem_space::current_mem_space(current_cpu()))
    cap = cap_virt(virt);
  else
    cap = get_cap(virt);

  if (EXPECT_FALSE(!cap))
    {
      if (size) *size = Order(Obj::Caps_per_page_ld2);
      return false;
    }

  if (Optimize_local)
    {
      Capability c = Mem_layout::read_special_safe((Capability*)cap);

      if (phys) *phys = c.obj();
      if (c.valid() && attribs)
        *attribs = Attr(c.rights());
      return c.valid();
    }
  else
    {
      Obj::set_entry(virt, cap);
      if (phys) *phys = cap->obj();
      if (cap->valid() && attribs)
        *attribs = Attr(cap->rights());
      return cap->valid();
    }
}
Exemple #30
0
void ConsoleChannel::contextMenuEvent(QContextMenuEvent* e)
{
  QString s;
  QString t;
  Capability* c = NULL;

  Device* device = _app->doc()->device(m_deviceID);
  assert(device);
  
  LogicalChannel* ch = device->deviceClass()->channels()->at(m_channel);
  
  QPopupMenu* menu = new QPopupMenu();
  menu->insertItem(ch->name(), KMenuTitle);
  menu->setItemEnabled(KMenuTitle, false);
  menu->insertSeparator();

  QPtrListIterator<Capability> it(*ch->capabilities());

  QPopupMenu* valueMenu = NULL;

  while (it.current())
    {
      c = it.current();

      // Set the value range and name as menu item's name
      s.sprintf("%.3d - %.3d:", c->lo(), c->hi());
      s += c->name();

      // Create a submenu for ranges that contain more than one value
      if (c->hi() - c->lo() > 0)
	{
	  valueMenu = new QPopupMenu(menu);
	  connect(valueMenu, SIGNAL(activated(int)),
		  this, SLOT(slotContextMenuActivated(int)));

	  for (int i = c->lo(); i <= c->hi(); i++)
	    {
	      t.sprintf("%.3d", i);
	      valueMenu->insertItem(t, i);
	    }
	  menu->insertItem(s, valueMenu);
	}
      else
	{